Posso ovviare alla mancanza di Internet mediante l'utilizzo iniziale di ESP32 forniti di moduli LoRa (Trasmissioni/Ricezioni a lungo raggio) e poi ESP32 WiFi e Smartphone con App. Telegram
La programmazione seguirà i seguenti Step per verficare le singole fasi:
Punto 1- Programma di Trasmissione dati (distanza e contatore) con scheda ESP32 HELTEC
Punto 2- Programma di Ricezione dati (distanza e contatore) con scheda ESP32 TTGO
Punto 3- Programma del Punto 2 modificato per l'invio dati (distanza e contatore) all'ESP32 con WiFi
Punto 4- Programma del Punto 3 modificato per l'invio dati (distanza e contatore) allo smartphone con App. TELEGRAM
N.B .
se l'ESP32 non riconosce la porta USB forse dipende da cavo USB che è di solo alimentazione
controllare sempre la massa (GND)
Ecco la configurazione:
1° ESP32 HELTEC + LoRa → Trasmette i dati via LoRa
2° ESP32 + LoRa → Riceve i dati via LoRa e li trasmette tramite collegamento seriale (PIN to PIN) al 3° ESP32 +WiFi
3° ESP32 + WiFi trasmette i dati sulla rete per "raggiungere" lo smartphone munito di APP. TELEGRAM
PIN IN OUT ESP32 HELTEC V2
// FILE: TRASMISSIONE_CONTATORE_CON_SCHEDA_HELTEC_NO_SUE-FUNZIONI_31_8_2025
// SX1276 V2 Lora ESP32 LX6 Dual-Core
// Impostata SCHEDA TTGO LoRa32-OLED v2.1.6
// SCHEDA UTILIZZATA HELTEC LORA V2
// PROGRAMMA FUNZIONANTE
// IDE:Arduino 1.8.14
#include <SPI.h>
#include <LoRa.h>
#include <Wire.h>
#include "SSD1306.h"
#define SCK 5 // GPIO5 -- SX1278's SCK
#define MISO 19 // GPIO19 -- SX1278's MISO
#define MOSI 27 // GPIO27 -- SX1278's MOSI
#define SS 18 // GPIO18 -- SX1278's CS
#define RST 14 // GPIO14 -- SX1278's RESET
#define DI0 26 // GPIO26 -- SX1278's IRQ(Interrupt Request)
#define BAND 433E6
unsigned int counter = 0;
SSD1306 display(0x3c, 4, 15);
String rssi = "RSSI --";
String packSize = "--";
String packet ;
void setup() {
pinMode(16,OUTPUT);
digitalWrite(16, LOW); // set GPIO16 low to reset OLED
delay(50);
digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high
Serial.begin(115200);
while (!Serial);
Serial.println();
Serial.println("LoRa Sender Test");
SPI.begin(SCK,MISO,MOSI,SS);
LoRa.setPins(SS,RST,DI0);
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
//LoRa.onReceive(cbk);
// LoRa.receive();
Serial.println("init ok");
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
delay(1500);
}
void loop() {
display.clear();
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Sending packet: ");
display.drawString(90, 0, String(counter));
Serial.println(String(counter));
display.display();
// send packet
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(2, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Il programma funziona correttamente ..... avanti il prossimo
Utilizzo del modulo ESP32 LoRa TTGO momentaneamente sprovvisto dell'ESP32 LoRa HELTEC
1️⃣ ESP32 TTGO + LoRa (Ricezione LoRa → Invio via UART) tramite una seriale supplementare
#include <SPI.h>
#include <LoRa.h>
#define LORA_SCK 5
#define LORA_MISO 19
#define LORA_MOSI 27
#define LORA_CS 18
#define LORA_RST 14
#define LORA_IRQ 26
// UART verso l'altro ESP32
#define TX_PIN 17
#define RX_PIN 16
HardwareSerial SerialLoRa(1);
void setup() {
Serial.begin(115200);
// Inizializzo UART verso l'ESP32 WiFi
SerialLoRa.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);
// Inizializzo SPI e LoRa
SPI.begin(LORA_SCK, LORA_MISO, LORA_MOSI, LORA_CS);
LoRa.setPins(LORA_CS, LORA_RST, LORA_IRQ);
if (!LoRa.begin(433E6)) { // Frequenza LoRa, es. 433 MHz
Serial.println("Errore inizializzazione LoRa!");
while (1);
}
Serial.println("LoRa inizializzato!");
}
void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
String ricevuto = "";
while (LoRa.available()) {
ricevuto += (char)LoRa.read();
}
Serial.print("Ricevuto via LoRa: ");
Serial.println(ricevuto);
// Invio al secondo ESP32 via UART
SerialLoRa.println(ricevuto);
}
}
diagramma di collegamento completo
DA VERIFICARE.......
TRASMISSIONE - RICEZIONE
Primo STEP Trasmissione dati dall'ESP32 LoRa (1) all'ESP32 LoRa (2)
Applicazioni personali nel campo naturalistico:
Trasmissione/Ricezione di una distanza.
N.B. E' necessario sempre inserire un contatore per verificare il corretto invio dei dati.
Trasmissione dati punto a punto.
Primo test:(distanza di circa 5 km.)
Si utilizzano i medesimi programmi utilizzati per il controllo dello stagno del Giardino di Flora Appennica.
Trasmittente con Sensore ad ultrasuoni puntato verso il comignolo .
TRASMISSIONE - RICEZIONE
Primo STEP Trasmissione dati dall'ESP32 LoRa (1) all'ESP32 LoRa (2)
Applicazioni personali nel campo naturalistico:
Trasmissione/Ricezione di una distanza con contatore.
N.B. E' necessario sempre inserire un contatore per verificare il corretto invio dei dati.