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

FB tw

Další podobné články