From 7500ef38b805bd5275ca156fbc1dfc02a7aae8e7 Mon Sep 17 00:00:00 2001 From: Cornelio Hopmann Date: Wed, 5 Feb 2020 22:03:22 +0100 Subject: [PATCH 1/6] Experimental: M5Stack Support + Fixed case-sensitie board name (Linux) + Added M5Stack Fire board + WiFi sniffing tested with verbose mode (NO LoRa or GPS) --- platformio.ini | 3 +- src/hal/{m5stack.h => m5core.h} | 8 ++--- src/hal/m5fire.h | 63 +++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 5 deletions(-) rename src/hal/{m5stack.h => m5core.h} (94%) create mode 100644 src/hal/m5fire.h diff --git a/platformio.ini b/platformio.ini index 9cba5684..a775db73 100644 --- a/platformio.ini +++ b/platformio.ini @@ -31,7 +31,8 @@ halfile = generic.h ;halfile = octopus32.h ;halfile = tinypico.h ;halfile = tinypicomatrix.h -;halfile = m5stack.h +;halfile = m5core.h +;halfile = m5fire.h [platformio] ; upload firmware to board with usb cable diff --git a/src/hal/m5stack.h b/src/hal/m5core.h similarity index 94% rename from src/hal/m5stack.h rename to src/hal/m5core.h index 371d725a..1f3371ce 100644 --- a/src/hal/m5stack.h +++ b/src/hal/m5core.h @@ -1,11 +1,11 @@ // clang-format off // upload_speed 921600 -// board M5Stack-Core-ESP32 +// board m5stack-core-esp32 // EXPERIMENTAL VERSION - NOT TESTED ON M5 HARDWARE YET -#ifndef _M5STACK_H -#define _M5STACK_H +#ifndef _M5CORE_H +#define _M5CORE_H #include @@ -57,6 +57,6 @@ #define MY_OLED_RST GPIO_NUM_33 #define MY_OLED_BL GPIO_NUM_32 #define MY_OLED_MOSI GPIO_NUM_23 -#define MY_OLED_MISO GPIO_NUM_23 +#define MY_OLED_MISO GPIO_NUM_19 #endif \ No newline at end of file diff --git a/src/hal/m5fire.h b/src/hal/m5fire.h new file mode 100644 index 00000000..171fa044 --- /dev/null +++ b/src/hal/m5fire.h @@ -0,0 +1,63 @@ +// clang-format off +// upload_speed 921600 +// board m5stack-fire + +// EXPERIMENTAL VERSION - NOT TESTED ON M5 HARDWARE YET + +#ifndef _M5FIRE_H +#define _M5FIRE_H + +#include + +// #define HAS_LORA 1 // comment out if device shall not send data via LoRa or has no M5 RA01 LoRa module + +// Pins for LORA chip SPI interface, reset line and interrupt lines +#define LORA_SCK SCK +#define LORA_CS SS +#define LORA_MISO MISO +#define LORA_MOSI MOSI +#define LORA_RST GPIO_NUM_36 +#define LORA_IRQ GPIO_NUM_26 +#define LORA_IO1 GPIO_NUM_34 // must be externally wired on PCB! +#define LORA_IO2 LMIC_UNUSED_PIN + + +// enable only if you want to store a local paxcount table on the device +#define HAS_SDCARD 1 // this board has an SD-card-reader/writer +// Pins for SD-card +#define SDCARD_CS GPIO_NUM_4 +#define SDCARD_MOSI MOSI +#define SDCARD_MISO MISO +#define SDCARD_SCLK SCK + +// user defined sensors +//#define HAS_SENSORS 1 // comment out if device has user defined sensors + +#define CFG_sx1276_radio 1 // select LoRa chip +#define BOARD_HAS_PSRAM // use if board has external PSRAM +#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature + +//#define HAS_DISPLAY 1 +#define HAS_TFT 1 +//#define DISPLAY_FLIP 1 // use if display is rotated +//#define BAT_MEASURE_ADC ADC1_GPIO35_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_7 +//#define BAT_VOLTAGE_DIVIDER 2 // voltage divider 100k/100k on board + +#define HAS_LED NOT_A_PIN // no on board LED (?) +#define HAS_BUTTON (39) // on board button A + +// GPS settings +#define HAS_GPS 0 // use on board GPS +#define GPS_SERIAL 9600, SERIAL_8N1, RXD2, TXD2 // UBlox NEO 6M RX, TX +// #define GPS_INT GPIO_NUM_35 // 30ns accurary timepulse, to be external wired on pcb: shorten R12! + +// Pins for interface of LC Display +#define MY_OLED_CS GPIO_NUM_14 +#define MY_OLED_DC GPIO_NUM_27 +#define MY_OLED_CLK GPIO_NUM_18 +#define MY_OLED_RST GPIO_NUM_33 +#define MY_OLED_BL GPIO_NUM_32 +#define MY_OLED_MOSI GPIO_NUM_23 +#define MY_OLED_MISO GPIO_NUM_19 + +#endif \ No newline at end of file From 12c53a198740ec0f12e69cc08bb864e7a2ccf169 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Wed, 5 Feb 2020 22:35:54 +0100 Subject: [PATCH 2/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6d978ca..066035bf 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Tutorial (in german language): https://www.heise.de/select/make/2019/1/1551099236518668 -**#36C3 attendees: i am on site (27th - 30th)! You might contact me via twitter @RecumbentTravel** + From d1563e59bb0e452b0dc720036b56479723c6b7af Mon Sep 17 00:00:00 2001 From: Cornelio Hopmann Date: Wed, 5 Feb 2020 23:06:05 +0100 Subject: [PATCH 3/6] Added: RGB LED Support --- src/hal/m5fire.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hal/m5fire.h b/src/hal/m5fire.h index 171fa044..0064799c 100644 --- a/src/hal/m5fire.h +++ b/src/hal/m5fire.h @@ -44,6 +44,7 @@ //#define BAT_VOLTAGE_DIVIDER 2 // voltage divider 100k/100k on board #define HAS_LED NOT_A_PIN // no on board LED (?) +#define HAS_RGB_LED SmartLed rgb_led(LED_SK6812, 10, GPIO_NUM_15) // LED_SK6812 RGB LED on GPIO15 #define HAS_BUTTON (39) // on board button A // GPS settings From f8db28186908761a49b0f14c6e3bd410558e52a0 Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Fri, 7 Feb 2020 22:57:06 +0100 Subject: [PATCH 4/6] OLED display reset now by oledInit() --- src/display.cpp | 14 ++------------ src/ota.cpp | 6 ++---- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index 95bf30a2..9c986f99 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -68,21 +68,11 @@ void init_display(bool verbose) { ESP_LOGV(TAG, "[%0.3f] i2c mutex lock failed", millis() / 1000.0); else { - // is we have display RST line we toggle it to re-initialize display -#ifdef MY_OLED_RST - pinMode(MY_OLED_RST, OUTPUT); - digitalWrite(MY_OLED_RST, 0); // initialization of SSD1306 chip is executed - delay(1); // keep RES low for at least 3us according to SSD1306 datasheet - digitalWrite(MY_OLED_RST, 1); // normal operation -#endif - // init display #ifndef DISPLAY_FLIP - oledInit(OLED_128x64, false, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, false, false, -1, -1, MY_OLED_RST, 400000L); #else - oledInit(OLED_128x64, true, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, true, false, -1, -1, MY_OLED_RST, 400000L); #endif // set display buffer diff --git a/src/ota.cpp b/src/ota.cpp index a9fa8ba2..fb2161ee 100644 --- a/src/ota.cpp +++ b/src/ota.cpp @@ -46,11 +46,9 @@ void start_ota_update() { #ifdef HAS_DISPLAY #ifndef DISPLAY_FLIP - oledInit(OLED_128x64, false, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, false, false, -1, -1, MY_OLED_RST, 400000L); #else - oledInit(OLED_128x64, true, false, -1, -1, - MY_OLED_RST == NOT_A_PIN ? -1 : MY_OLED_RST, 400000L); + oledInit(OLED_128x64, true, false, -1, -1, MY_OLED_RST, 400000L); #endif // set display buffer From 94d4f2f445a4fa57ec5191e23678375a6ea320ff Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Sat, 8 Feb 2020 13:40:28 +0100 Subject: [PATCH 5/6] M5stack support & lib updates --- README.md | 2 +- platformio.ini | 6 +++--- src/paxcounter.conf | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 066035bf..ca90f791 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ This can all be done with a single small and cheap ESP32 board for less than $20 - WeMos: LoLin32 + [LoraNode32 shield](https://github.com/hallard/LoLin32-Lora), LoLin32lite + [LoraNode32-Lite shield](https://github.com/hallard/LoLin32-Lite-Lora) - Adafruit ESP32 Feather + LoRa Wing + OLED Wing, #IoT Octopus32 (Octopus + ESP32 Feather) -- M5Stack: [Basic Core*](https://m5stack.com/collections/m5-core/products/basic-core-iot-development-kit) + [Lora Module RA-01H](https://m5stack.com/collections/m5-module/products/lora-module-868mhz) +- M5Stack: [Basic Core IoT*](https://m5stack.com/collections/m5-core/products/basic-core-iot-development-kit) + [Lora Module RA-01H](https://m5stack.com/collections/m5-module/products/lora-module-868mhz), [Fire IoT*](https://m5stack.com/collections/m5-core/products/fire-iot-development-kit) *) supports microSD-card diff --git a/platformio.ini b/platformio.ini index a775db73..9814aaac 100644 --- a/platformio.ini +++ b/platformio.ini @@ -45,7 +45,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I [common] ; for release_version use max. 10 chars total, use any decimal format like "a.b.c" -release_version = 1.9.89 +release_version = 1.9.90 ; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running! ; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose debug_level = 3 @@ -58,9 +58,9 @@ monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore - https://github.com/mcci-catena/arduino-lmic.git#98a1b35 + https://github.com/mcci-catena/arduino-lmic.git#79accbb lib_deps_display = - ss_oled@3.3.0 ; simple and small OLED lib by Larry Bank + ss_oled@>=3.3.0 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0 QRCode@>=0.0.1 lib_deps_matrix_display = diff --git a/src/paxcounter.conf b/src/paxcounter.conf index 3dc855c9..ac392f24 100644 --- a/src/paxcounter.conf +++ b/src/paxcounter.conf @@ -77,7 +77,7 @@ #define TIME_SYNC_INTERVAL_RETRY 10 // retry time sync after lost sync each .. minutes [default = 10], 0 means off #define TIME_SYNC_COMPILEDATE 0 // set to 1 to use compile date to initialize RTC after power outage [default = 0] #define TIME_SYNC_LORAWAN 0 // set to 1 to use LORA network as time source, 0 means off [default = 0] -#define TIME_SYNC_LORASERVER 1 // set to 1 to use LORA timeserver as time source, 0 means off [default = 0] +#define TIME_SYNC_LORASERVER 0 // set to 1 to use LORA timeserver as time source, 0 means off [default = 0] // settings for syncing time with timeserver applications #define TIME_SYNC_SAMPLES 1 // number of time requests for averaging From 8c9ee719a27b7394258dfce161446a49ababd91b Mon Sep 17 00:00:00 2001 From: Verkehrsrot Date: Mon, 10 Feb 2020 07:57:33 +0100 Subject: [PATCH 6/6] upgrade lib LMIC v3.1.0 --- platformio.ini | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index 9814aaac..aa06e57e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -57,8 +57,7 @@ platform_espressif32 = espressif32@1.11.1 monitor_speed = 115200 upload_speed = 115200 lib_deps_lora = - ;MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore - https://github.com/mcci-catena/arduino-lmic.git#79accbb + MCCI LoRaWAN LMIC library@>=3.1.0 ; MCCI LMIC by Terrill Moore lib_deps_display = ss_oled@>=3.3.0 ; simple and small OLED lib by Larry Bank BitBang_I2C@>=1.3.0