diff --git a/IOT/receiver LoRa/config.ini b/IOT/receiver LoRa/config.ini index 7ba9ac2..da67e06 100644 --- a/IOT/receiver LoRa/config.ini +++ b/IOT/receiver LoRa/config.ini @@ -14,6 +14,65 @@ build_flags = -D MONITOR_SPEED=${config.monitor_speed} ; DO NOT TOUCH --- END +;;; FDRS config + + -D FDRS_DEBUG ; Enable USB-Serial debugging + + + +; Addresses + -D UNIT_MAC=0x01 + -D ESPNOW_NEIGHBOR_1=0x00 + -D ESPNOW_NEIGHBOR_2=0x02 + -D LORA_NEIGHBOR_1=0x00 + -D LORA_NEIGHBOR_2=0x03 + +; Interfaces +; -D USE_ESPNOW + -D USE_LORA +; -D USE_WIFI +; -D USE_ETHERNET + +; Routing is in main.cpp + +; LoRa Configuration + -D RADIOLIB_MODULE=SX1276 + -D LORA_SS=18 + -D LORA_RST=14 + -D LORA_DIO=26 + -D LORA_BUSY=RADIOLIB_NC +; -D USE_SX126X + + -D LORA_TXPWR=17 ; LoRa TX power in dBm (: +2dBm - +17dBm (for SX1276-7) +20dBm (for SX1278)) + + -D CUSTOM_SPI + -D LORA_SPI_SCK=5 + -D LORA_SPI_MISO=19 + -D LORA_SPI_MOSI=27 + + -D LORA_FREQUENCY=433.0 + + +; OLED -- Displays console debugging messages on an SSD1306 I²C OLED +; -D USE_OLED + -D OLED_HEADER=\"FDRS\" + -D OLED_PAGE_SECS=30 + -D OLED_SDA=4 + -D OLED_SCL=15 + -D OLED_RST=16 + +; UART data interface pins (if available) + -D RXD2=13 + -D TXD2=12 + + +; -D USE_LR ; Use ESP-NOW LR mode (ESP32 only) + +; WiFi Credentials +; -D WIFI_SSID=\"Your SSID\" +; -D WIFI_PASS=\"Your Password\" + + ; LoRa pinout -D RADIO_MOSI_PIN=27 -D RADIO_MISO_PIN=19 diff --git a/IOT/receiver LoRa/include/Program.h b/IOT/receiver LoRa/include/Program.h deleted file mode 100644 index c840657..0000000 --- a/IOT/receiver LoRa/include/Program.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef PROGRAM_H -#define PROGRAM_H - -#include -#include -#include -#include - -class Program { -public: - /** - * Program startup - */ - Program(); - - /** - * Program main loop - */ - void loop(); -}; - -#endif diff --git a/IOT/receiver LoRa/include/boards.h b/IOT/receiver LoRa/include/boards.h deleted file mode 100644 index 75fd8db..0000000 --- a/IOT/receiver LoRa/include/boards.h +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include -#include -//#include "utilities.h" - -#ifdef HAS_DISPLAY -#include - -#ifndef DISPLAY_MODEL -#define DISPLAY_MODEL U8G2_SSD1306_128X64_NONAME_F_HW_I2C -#endif - -DISPLAY_MODEL *u8g2; -#endif - -#ifndef OLED_WIRE_PORT -#define OLED_WIRE_PORT Wire -#endif - -SPIClass SDSPI(HSPI); - - -void initBoard() -{ - Serial.begin(115200); - Serial.println("initBoard"); - SPI.begin(RADIO_SCLK_PIN, RADIO_MISO_PIN, RADIO_MOSI_PIN); - Wire.begin(I2C_SDA, I2C_SCL); - -#ifdef HAS_DISPLAY - Wire.beginTransmission(0x3C); - if (Wire.endTransmission() == 0) { - Serial.println("Started OLED"); - u8g2 = new DISPLAY_MODEL(U8G2_R0, U8X8_PIN_NONE); - u8g2->begin(); - u8g2->clearBuffer(); - u8g2->setFlipMode(0); - u8g2->setFontMode(1); // Transparent - u8g2->setDrawColor(1); - u8g2->setFontDirection(0); - u8g2->firstPage(); - do { - u8g2->setFont(u8g2_font_inb19_mr); - u8g2->drawStr(0, 30, "LilyGo"); - u8g2->drawHLine(2, 35, 47); - u8g2->drawHLine(3, 36, 47); - u8g2->drawVLine(45, 32, 12); - u8g2->drawVLine(46, 33, 12); - u8g2->setFont(u8g2_font_inb19_mf); - u8g2->drawStr(58, 60, "LoRa"); - } while ( u8g2->nextPage() ); - u8g2->sendBuffer(); - u8g2->setFont(u8g2_font_fur11_tf); - delay(3000); - } -#endif - - -#ifdef HAS_DISPLAY - if (u8g2) { - u8g2->clearBuffer(); - do { - u8g2->setCursor(0, 16); - u8g2->println( "Waiting to receive data");; - } while ( u8g2->nextPage() ); - } -#endif - -} - diff --git a/IOT/receiver LoRa/include/utilities.h b/IOT/receiver LoRa/include/utilities.h deleted file mode 100644 index deb0968..0000000 --- a/IOT/receiver LoRa/include/utilities.h +++ /dev/null @@ -1,195 +0,0 @@ - -#pragma once - -/* -* arduinoLoRa Library just only support SX1276/Sx1278,Not support SX1262 -* RadioLib Library supports also SX1262/SX1268 see https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series/tree/master/examples/RadioLibExamples -* */ -// #define LILYGO_TBeam_V0_7 -// #define LILYGO_TBeam_V1_X -// #define LILYGO_T3_V1_0 -#define LILYGO_T3_V1_3 -// #define LILYGO_T3_V1_6 -// #define LILYGO_T3_V2_0 -// #define LILYGO_T95_V1_0 - -/* -* if you need to change it, -* please open this note and change to the frequency you need to test -* Option: 433E6,470E6,868E6,915E6 -* */ - -#define LoRa_frequency 433E6 - - -#define UNUSE_PIN (0) - -#if defined(LILYGO_TBeam_V0_7) -#define GPS_RX_PIN 12 -#define GPS_TX_PIN 15 -#define BUTTON_PIN 39 -#define BUTTON_PIN_MASK GPIO_SEL_39 -#define I2C_SDA 21 -#define I2C_SCL 22 - -#define RADIO_SCLK_PIN 5 -#define RADIO_MISO_PIN 19 -#define RADIO_MOSI_PIN 27 -#define RADIO_CS_PIN 18 -#define RADIO_DIO0_PIN 26 -#define RADIO_RST_PIN 23 -#define RADIO_DIO1_PIN 33 -#define RADIO_BUSY_PIN 32 - -#define BOARD_LED 14 -#define LED_ON HIGH -#define LED_OFF LOW - -#define GPS_BAUD_RATE 9600 -#define HAS_GPS -#define HAS_DISPLAY //Optional, bring your own board, no OLED !! - -#elif defined(LILYGO_TBeam_V1_X) - -#define GPS_RX_PIN 34 -#define GPS_TX_PIN 12 -#define BUTTON_PIN 38 -#define BUTTON_PIN_MASK GPIO_SEL_38 -#define I2C_SDA 21 -#define I2C_SCL 22 -#define PMU_IRQ 35 - -#define RADIO_SCLK_PIN 5 -#define RADIO_MISO_PIN 19 -#define RADIO_MOSI_PIN 27 -#define RADIO_CS_PIN 18 -#define RADIO_DIO0_PIN 26 -#define RADIO_RST_PIN 23 -#define RADIO_DIO1_PIN 33 -#define RADIO_BUSY_PIN 32 - -#define BOARD_LED 4 -#define LED_ON LOW -#define LED_OFF HIGH - -#define GPS_BAUD_RATE 9600 -#define HAS_GPS -#define HAS_DISPLAY //Optional, bring your own board, no OLED !! - -#elif defined(LILYGO_T3_V1_0) -#define I2C_SDA 4 -#define I2C_SCL 15 -#define OLED_RST 16 - -#define RADIO_SCLK_PIN 5 -#define RADIO_MISO_PIN 19 -#define RADIO_MOSI_PIN 27 -#define RADIO_CS_PIN 18 -#define RADIO_DIO0_PIN 26 -#define RADIO_RST_PIN 14 -#define RADIO_DIO1_PIN 33 -#define RADIO_BUSY_PIN 32 - -#define HAS_DISPLAY - -#elif defined(LILYGO_T3_V1_3) - -#define I2C_SDA 21 -#define I2C_SCL 22 -#define OLED_RST UNUSE_PIN - -#define RADIO_SCLK_PIN 5 -#define RADIO_MISO_PIN 19 -#define RADIO_MOSI_PIN 27 -#define RADIO_CS_PIN 18 -#define RADIO_DIO0_PIN 26 -#define RADIO_RST_PIN 14 -#define RADIO_DIO1_PIN 33 -#define RADIO_BUSY_PIN 32 - -#define ADC_PIN 35 - -#define HAS_DISPLAY - -#elif defined(LILYGO_T3_V1_6) -#define I2C_SDA 21 -#define I2C_SCL 22 -#define OLED_RST UNUSE_PIN - -#define RADIO_SCLK_PIN 5 -#define RADIO_MISO_PIN 19 -#define RADIO_MOSI_PIN 27 -#define RADIO_CS_PIN 18 -#define RADIO_DIO0_PIN 26 -#define RADIO_RST_PIN 23 -#define RADIO_DIO1_PIN 33 -#define RADIO_BUSY_PIN 32 - -#define SDCARD_MOSI 15 -#define SDCARD_MISO 2 -#define SDCARD_SCLK 14 -#define SDCARD_CS 13 - -#define BOARD_LED 25 -#define LED_ON HIGH - -#define ADC_PIN 35 - -#define HAS_SDCARD -#define HAS_DISPLAY - -#elif defined(LILYGO_T3_V2_0) -#define I2C_SDA 21 -#define I2C_SCL 22 -#define OLED_RST UNUSE_PIN - -#define RADIO_SCLK_PIN 5 -#define RADIO_MISO_PIN 19 -#define RADIO_MOSI_PIN 27 -#define RADIO_CS_PIN 18 -#define RADIO_DIO0_PIN 26 -#define RADIO_RST_PIN 14 -#define RADIO_DIO1_PIN UNUSE_PIN -#define RADIO_BUSY_PIN UNUSE_PIN - -#define SDCARD_MOSI 15 -#define SDCARD_MISO 2 -#define SDCARD_SCLK 14 -#define SDCARD_CS 13 - -#define BOARD_LED 0 -#define LED_ON LOW - -#define HAS_DISPLAY -#define HAS_SDCARD - -#elif defined(LILYGO_T95_V1_0) - -#define I2C_SDA 21 -#define I2C_SCL 22 -#define OLED_RST UNUSE_PIN - -#define RADIO_SCLK_PIN 18 -#define RADIO_MISO_PIN 19 -#define RADIO_MOSI_PIN 23 -#define RADIO_CS_PIN 5 -#define RADIO_DIO0_PIN 26 -#define RADIO_RST_PIN 4 -#define RADIO_DIO1_PIN 33 -#define RADIO_DIO2_PIN 32 -#define RADIO_BUSY_PIN UNUSE_PIN - -#define ADC_PIN 35 -#define HAS_DISPLAY - -#else -#error "For the first use, please define the board version and model in " -#endif - - - - - - - - diff --git a/IOT/receiver LoRa/platformio.ini b/IOT/receiver LoRa/platformio.ini index 0aa4ecc..a8d99e9 100644 --- a/IOT/receiver LoRa/platformio.ini +++ b/IOT/receiver LoRa/platformio.ini @@ -52,8 +52,9 @@ upload_speed = 921600 lib_deps = ; example: ; erropix/ESP32 AnalogWrite@0.2 - sandeepmistry/LoRa@^0.8.0 ;LoRa lib - olikraus/U8g2@^2.34.22 ;Oled Lib + https://github.com/timmbogner/Farm-Data-Relay-System.git ;lib for global system architecture + jgromes/RadioLib@^6.1.0 ;lib for comunication + ; Checker settings check_tool = clangtidy, cppcheck diff --git a/IOT/receiver LoRa/src/Program.cpp b/IOT/receiver LoRa/src/Program.cpp deleted file mode 100644 index 82ff6d8..0000000 --- a/IOT/receiver LoRa/src/Program.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "Program.h" - -Program::Program() { - // Startup - Serial.begin(MONITOR_SPEED); - Serial.println("initBoard"); - SPI.begin(RADIO_SCLK_PIN, RADIO_MISO_PIN, RADIO_MOSI_PIN); //for LoRa module - Wire.begin(I2C_SDA, I2C_SCL);//for oled screen - // When the power is turned on, a delay is required. - delay(1500); - - //init LoRa - LoRa.setPins(RADIO_CS_PIN, RADIO_RST_PIN, RADIO_DIO0_PIN); - if (!LoRa.begin(LoRa_frequency)) { - Serial.println("Starting LoRa failed!"); - while (1); - } -} - -void Program::loop() { - // Loop -} diff --git a/IOT/receiver LoRa/src/main.cpp b/IOT/receiver LoRa/src/main.cpp index 70fe082..a2da022 100644 --- a/IOT/receiver LoRa/src/main.cpp +++ b/IOT/receiver LoRa/src/main.cpp @@ -1,115 +1,24 @@ -// #include "Program.h" - -// Program* program; - -// void setup() { -// program = new Program(); -// } - -// void loop() { -// program->loop(); -// } - - -#include -#include "boards.h" +// FARM DATA RELAY SYSTEM +// +// GATEWAY 2.000 +// +// Developed by Timm Bogner (timmbogner@gmail.com) in Urbana, Illinois, USA. +// #include +#include +#include -void setup() -{ - initBoard(); - // When the power is turned on, a delay is required. - delay(1500); +// Routing +// Options: sendESPNowNbr(1 or 2); sendESPNowPeers(); sendLoRaNbr(1 or 2); broadcastLoRa(); sendSerial(); sendMQTT(); +#define ESPNOWG_ACT sendSerial(); +#define LORAG_ACT sendSerial(); - Serial.println("LoRa Receiver"); - LoRa.setPins(RADIO_CS_PIN, RADIO_RST_PIN, RADIO_DIO0_PIN); - if (!LoRa.begin(LoRa_frequency)) { - Serial.println("Starting LoRa failed!"); - while (1); - } +void setup() { +beginFDRS(); } -void loop() -{ - // try to parse packet - int packetSize = LoRa.parsePacket(); - if (packetSize) { - // received a packet - Serial.print("Received packet '"); - - String recv = ""; - // read packet - while (LoRa.available()) { - recv += (char)LoRa.read(); - } - - Serial.println(recv); - - // print RSSI of packet - Serial.print("' with RSSI "); - Serial.println(LoRa.packetRssi()); -#ifdef HAS_DISPLAY - if (u8g2) { - u8g2->clearBuffer(); - char buf[256]; - u8g2->drawStr(0, 12, "Received OK!"); - u8g2->drawStr(0, 26, recv.c_str()); - snprintf(buf, sizeof(buf), "RSSI:%i", LoRa.packetRssi()); - u8g2->drawStr(0, 40, buf); - snprintf(buf, sizeof(buf), "SNR:%.1f", LoRa.packetSnr()); - u8g2->drawStr(0, 56, buf); - u8g2->sendBuffer(); - } -#endif - } -} - - - -// #define HAS_DISPLAY - -// #include -// #include "boards.h" - -// int counter = 0; - -// void setup() -// { -// initBoard(); -// // When the power is turned on, a delay is required. -// delay(1500); - -// Serial.println("LoRa Sender"); -// LoRa.setPins(RADIO_CS_PIN, RADIO_RST_PIN, RADIO_DIO0_PIN); -// if (!LoRa.begin(LoRa_frequency)) { -// Serial.println("Starting LoRa failed!"); -// while (1); -// } -// } - -// void loop() -// { -// Serial.print("Sending packet: "); -// Serial.println(counter); - -// // send packet -// LoRa.beginPacket(); -// LoRa.print("hello "); -// LoRa.print(counter); -// LoRa.endPacket(); - -// #ifdef HAS_DISPLAY -// if (u8g2) { -// char buf[256]; -// u8g2->clearBuffer(); -// u8g2->drawStr(0, 12, "Transmitting: OK!"); -// snprintf(buf, sizeof(buf), "Sending: %d", counter); -// u8g2->drawStr(0, 30, buf); -// u8g2->sendBuffer(); -// } -// #endif -// counter++; -// delay(10000); -// } +void loop() { +loopFDRS(); +} \ No newline at end of file