1
0
mirror of https://github.com/hatlabs/SH-ESP32-vedirect.git synced 2025-05-15 14:40:13 -07:00

Basic implementation

This commit is contained in:
Matti Airas 2021-04-12 15:11:56 +03:00
commit 91c7e22392
3 changed files with 114 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch

33
platformio.ini Normal file
View File

@ -0,0 +1,33 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[platformio]
default_envs =
esp32dev
[env]
framework = arduino
lib_ldf_mode = deep
monitor_speed = 115200
lib_deps =
/Users/mairas/src/SK/SensESP
Adafruit SSD1306
[espressif32_base]
platform = espressif32
build_unflags = -Werror=reorder
board_build.partitions = min_spiffs.csv
monitor_filters = esp32_exception_decoder
[env:esp32dev]
extends = espressif32_base
board = esp32dev
build_flags =
-D LED_BUILTIN=2

76
src/main.cpp Normal file
View File

@ -0,0 +1,76 @@
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Arduino.h>
#include "sensesp_app.h"
#include "sensesp_app_builder.h"
#include "signalk/signalk_output.h"
// SDA and SCL pins on SH-ESP32
#define SDA_PIN 16
#define SCL_PIN 17
// Opto in pin on SH-ESP32
#define OPTO_IN_PIN 35
// OLED display width and height, in pixels
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// define temperature display units
#define TEMP_DISPLAY_FUNC KelvinToCelsius
//#define TEMP_DISPLAY_FUNC KelvinToFahrenheit
TwoWire* i2c;
Adafruit_SSD1306* display;
/// Clear a text row on an Adafruit graphics display
void ClearRow(int row) { display->fillRect(0, 8 * row, SCREEN_WIDTH, 8, 0); }
/**
* @brief Send Engine Dynamic Parameter data
*
* Send engine temperature data using the Engine Dynamic Parameter PGN.
* All unused fields that are sent with undefined value except the status
* bit fields are sent as zero. Hopefully we're not resetting anybody's engine
* warnings...
*/
ReactESP app([]() {
// Some initialization boilerplate when in debug mode...
#ifndef SERIAL_DEBUG_DISABLED
SetupSerialDebug(115200);
#endif
SensESPAppBuilder builder;
sensesp_app = builder.set_hostname("nmea1_test")
->set_standard_sensors(NONE)
->get_app();
// initialize the display
i2c = new TwoWire(0);
i2c->begin(SDA_PIN, SCL_PIN);
display = new Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, i2c, -1);
if (!display->begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
debugW("SSD1306 allocation failed");
}
delay(100);
display->setRotation(2);
display->clearDisplay();
display->setTextSize(1);
display->setTextColor(SSD1306_WHITE);
display->setCursor(0, 0);
display->printf("Host: %s", sensesp_app->get_hostname().c_str());
display->display();
// initialize Serial1 on the opto_in pin
Serial1.begin(4800, SERIAL_8N1, OPTO_IN_PIN, -1, true);
app.onAvailable(Serial1, []() {
Serial.write(Serial1.read());
});
sensesp_app->enable();
});