Zapojení a otestování IOT LPWAN SigFox Node UART Modemu s měřičem vlhkosti a teploty - DHT11 na vývojové desce - Arduino
- dnes jsem si připravil poněkud složitější projekt založený na odesílání dat z DHT11 do SigFox sítě a posléze směrování dat na ThingSpeak, avšak věřím že pokud budete následovat mé kroky, i vám se zadaří.
- po zakoupení samotného modemu doporučuji projít jeho instalaci na webu.
- poté si vytvořte profil na Thingspeaku a při vytváření "channelu" napište do kolonek přesně toto :
Pak si pohrajte s nastavením callbacku. Je nutné, abyste nejprve okopírovali text ze záložky API Keys v ThingSpeaku pro "Update a channel feed".
Ten si někam odložíme (třeba do textového editoru) a spojíme ho s kódem:
&field1={device}&field2={customData#cislo1}&field3={customData#cislo2}&field4={customData#cislo3}&field5={rssi}&field6={seqNumber
Výsledný kód pak bude vypadat nějak takto:
https://api.thingspeak.com/update?api_key=Váš-API-klíč&field1={device}&field2={customData#cislo1}&field3={customData#cislo2}&field4={customData#cislo3}&field5={rssi}&field6={seqNumber
Rozhodně kód nekopírujte odsud a nedoplňujte pouze API klíč!
Spojení s modemem
V backend.sigfox.com půjdeme na Device type -> Callbacks -> New
Kolonky vyplňte cca. takto:
Potvrďte tlačítkem "Ok" a nyní zapojte do modemu anténu a spojte ho s Arduinem podle návodu na webu, ke kterému máte link výše.
Do Arduina připojte zároveň i DHT11 podle schématu níže (DHT22 lze také, ale musí se trochu poupravit kód).
A do Arduina nahrajte kód, který je níže:
// Sigfox modem - odesílání dat #include "DHT.h" // připojení potřebné knihovny #include <SoftwareSerial.h> #define DHTTYPE DHT11 #define DHTPIN 2 // nastavení projojovacích pinů #define TX 7 #define RX 8 DHT dht(DHTPIN, DHTTYPE); // inicializace softwarové sériové linky z knihovny SoftwareSerial Sigfox(RX, TX); void setup() { Serial.begin(9600); Serial.println("DHT11 test!"); dht.begin(); pinMode(3, OUTPUT); pinMode(9, INPUT); // zahájení komunikace po sériové lince rychlostí 9600 baud Serial.begin(9600); // zahájení komunikace po softwarové sériové lince rychlostí 9600 baud Sigfox.begin(9600); delay(1000); // odeslání první zprávy odesliData(); } void loop() { // když dostaneme nějaké znaky na softwarové sériové lince, // odešleme je do počítače if (Sigfox.available()) { Serial.write(Sigfox.read()); } // když dostaneme nějaké znaky na počítačové sériové lince, // odešleme je do Sigfox modulu if (Serial.available()) { Sigfox.write(Serial.read()); } // každých 30 minut se provede následující odeslání dat // (30 minut je získáno tak, že načteme počet vteřin od // zapnutí napájení, zjistíme zbytek po dělení 1800 vteřinami // a pokud je tento zbytek 0, máme 30 minutový interval) if ((millis()/1000 % 1800) == 0) { odesliData(); } } void odesliData() { // vytvoření proměnné typu char o velikosti 4 znaků, // do 4 hexa znaků lze uložit číslo typu uint // (velikost 0 až 65535) char zprava[12]; // vytvoření proměnné typu unsigned integer a načtení hodnoty // analogového pinu A0 float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } unsigned int cislo1 = (t); unsigned int cislo2 = (h); unsigned int cislo3 = analogRead(A2); // převod načteného čísla na hexadecimální tvar o 4 znacích sprintf(zprava, "%04X%04X%04X", cislo1, cislo2, cislo3); Serial.print("Odeslani dat do Sigfox site, odesilam: "); Serial.print(cislo1); Serial.print(", "); Serial.print(cislo2); Serial.print(", "); Serial.print(cislo3); Serial.print(", hexa tvar: "); Serial.println(zprava); Sigfox.print("AT$SF="); Sigfox.println(zprava); delay(1000); }
Pokud jste vše správně nastavili, měla by se po nahrání změnit data stavu posledního přijmutí zprávy na hlavní straně "Device" na stránce backend.sigfox.com. a pokud jste dobře nastavili i callback, budete mít na ThingSpeaku data.
Jádro editovaného zdrojového kódu: http://navody.dratek.cz/
Dotazy pište na: adahu04@gmail.com