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