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ò:

SX1276 V2 Lora ESP32 LX6 Dual-Core 0.96 Pollici Blue OLED

WiFi Kit 32 Modulo CP2012 Scheda di Sviluppo IOT 868MHZ-915MHz

 

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.

Powerbank Solare 26800mAh

 

 

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.....