MONITORAGGIO dello STAGNO del GFA con i moduli LoRa
Monitoraggio dello stagno del Giardino della Flora Appenninica di CAPRACOTTA
Monitoraggio,didattico, di un bacino naturale di contenimento per la raccolta delle acque piovane al fine di ridurre i fenomeni torrenziali distruttivi.
Miglioramenti desunti dal link:Circolo Didattico Capracotta: Monitoraggio dei parametri naturali ed ambientali di uno stagno
Rilevamento altezza di sicurezza dello stagno.
La trasmissione DATI con i moduli XBEE è contenuta nel raggio di azione max di 1.5 km(senza ostacoli).
La trasmissione DATI con i moduli LoRa è contenuta nel raggio di azione max di 5 km(senza ostacoli).
Con opportune antenne, applicate ai moduli LoRa, posso raggiungere un raggio di azione max di circa 16 km.
Come modulo Trasmittente e ricevente utilizzerò:
Per le sue caratteristiche Link: LoRa: Modulo SX1276 V2 Lora ESP32 LX6
IMPORTANTE: I GPIO con asterisco sono solo di INPUT es.: GPIO38* - GPIO36* - ecc..
Supporto del trasmettitore stampato con l'ANYCUBIC Mega S
Supporto del ricevitore stampato con l'ANYCUBIC Mega S
N.B. I Sensori alimentati dal modulo LoRa devono essere del tipo a 3.3 Vcc.
Il modulo sensore ad ultrasuoni HC-SR04-P : il campo di alimentazione è compreso tra 3.3v e 5v a differenza dell' HC-SR04 che è alimentato solo da 5v.
Collegamenti Trasmittente - Sensore ad ultrasuoni HC-SR04 P:
Pin 12 dell'ESP32 (Verde) al pin TRIG
Pin 13 dell'ESP32 (Blu) al pin ECHO
Il modulo sensore di umidità e temperatura DHT11 : il campo di alimentazione è compreso tra 3.3v e 5v
Out ==> Pin 17 dell'ESP32
Trasmissione dati punto a punto.
1° Test di simulazione :Visualizzazione della distanza con il sensore ad ultrasuoni su Monitor P.C ed OLED :
// Test di simulazione facsimile Arduino con la trasmissione DATI
#include "heltec.h"
#include "Ultrasonic.h"
Ultrasonic ultrasonic(12,13); //Trig==> 12 Echo==> 13
String distanza;
#define BAND 866E6 //BANDA EUROPEA
void setup () {
Heltec.begin(true, true, true, true, BAND);
Serial.begin(9600);
}
void loop () {
Heltec.display->clear();
Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
Heltec.display->setFont(ArialMT_Plain_10);
Heltec.display->drawString(0, 0, "Distanza cm.: "); //COMPARE SULLA TRASMITTENTE
Heltec.display->drawString(31, 10, String(distanza)); //COMPARE SULLA TRASMITTENTE
// SPOSTATO A DX DI 31 PIXEL ED IN BASSO DI 10 PIXEL
Heltec.display->display();
LoRa.beginPacket();
Serial.print("Dist. cm.:");
Serial.println(distanza);
distanza=ultrasonic.read();
LoRa.setTxPower(20,RF_PACONFIG_PASELECT_PABOOST); // MAX POTENZA
LoRa.print(distanza);
LoRa.endPacket();
digitalWrite(25, HIGH);
delay(400);
digitalWrite(25, LOW);
delay(400);
}
ECCO IL RISULTATO:
....................................................................................................................................................................................
2° Test di simulazione su ESP32 - HELTEC:Temperatura e Umidità ambientale su Monitor P.C.:
// Test di simulazione facsimile Arduino
#include "DHT.h"
//Uso del PIN 17 dell’ ESP32 dell’Heltec
#define DHTPIN 17
#define DHTTYPE DHT11
//creatae una instanza del sensore DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(115200);
Serial.println("DHT11 sensor!");
//Abilito la lettura dal sensore
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Lettura fallita dal sensore!!!!");
return;
}
// Stampo il risultato sul Monitor P.C.
Serial.print("Umidità: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" *C ");
delay(2000);
}
ECCO IL RISULTATO:
.......................................................................................................................................................................
Programma completo di Trasmissione dati:
#include "heltec.h"
#include "Ultrasonic.h"
Ultrasonic ultrasonic(12,13);// 12 Trigg. e 13 Echo
int distanza;
int cont =0;
#include "DHT.h"
//Uso del PIN 17 dell’ ESP32 dell’Heltec
#define DHTPIN 17
#define DHTTYPE DHT11
//creatae una instanza del sensore DHT11
DHT dht(DHTPIN, DHTTYPE);
#define BAND 866E6 //BANDA EUROPEA
void setup () {
dht.begin();
Heltec.begin(true, true, true, true, BAND);
Serial.begin(9600);
LoRa.setTxPower(20,RF_PACONFIG_PASELECT_PABOOST);// MAX POTENZA
}
void loop () {
float h = dht.readHumidity();
float t = dht.readTemperature();
delay(4000);
distanza=ultrasonic.read();
Heltec.display->clear();
Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
Heltec.display->setFont(ArialMT_Plain_10);
Heltec.display->drawString(0, 0, "Giardino Flora Appenninica");
Heltec.display->drawString(0, 12, " C A P R A C O T T A ");
Heltec.display->drawString(0, 26, "Dist. cm. ");
Heltec.display->drawString(42, 26, String(distanza));
Heltec.display->drawString(76, 26, "Cnt.");
Heltec.display->drawString(102, 26, String(cont));
Heltec.display->drawString(0, 40, "Temp. Gradi: ");
Heltec.display->drawString(96, 40, String(t));
Heltec.display->drawString(0, 54, "Umidità’ %: ");
Heltec.display->drawString(96, 54, String(h));
Heltec.display->display();
//***************************************
LoRa.beginPacket();
LoRa.print(( "Dist. cm. ")+String(distanza)+(" "));
LoRa.println(("cont. ")+String(cont));
LoRa.println(("Temp. Gradi ")+String(t));
LoRa.println(("Umidità % ")+String(h));
LoRa.endPacket();
//******************************************
digitalWrite(25, HIGH);
delay(400);
digitalWrite(25, LOW);
delay(400);
cont++;
}
Modulo trasmettitore provvisorio:
Viene utilizzato un contatore per verificare il corretto funzionamento della trasmissione e ricezione.
Programma di Ricezione dati: (Modulo ricevitore)
Adesso utilizzo anche una sonda impermeabile per rilevare la temperatura dei liquidi : DS18B20
Utilizzo lo stesso programma installato su Arduino.
Collegamento simile a quello effettuato con Arduino, ma a 5 volt.
E' necessaria una resistenza di PULL UP da 4.7 k ohm.
Rilevamento pratico:
.........................................
CONTINUA.....