Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision
Vorhergehende Überarbeitung
Nächste Überarbeitung
|
Vorhergehende Überarbeitung
|
elektronik:dht11_sensor_mit_arduino_ethernet_shield_und_thingspeak [2016/02/12 22:11] octoate Wort vergessen |
elektronik:dht11_sensor_mit_arduino_ethernet_shield_und_thingspeak [2016/02/12 22:17] octoate [ThingSpeak] Satzbau |
| |
===== Hardware ===== | ===== Hardware ===== |
Die Hardware ist aus den bereits genannten Gründen nichts besonderes. Das Arduino Ethernet Shield wird einfach nur auf den Arduino UNO aufgesteckt und das war es schon. Den DHT11 Sensor verbindet man dann noch mit +5V, GND und - in meinem Fall - mit Pin 7 des Ethernet Shields. Die Folgende Fritzing Skizze zeigt das ganz schön. | Die Hardware ist aus den bereits genannten Gründen nichts besonderes. Das Arduino Ethernet Shield wird einfach nur auf den Arduino UNO aufgesteckt und das war es schon. Den DHT11 Sensor verbindet man dann noch mit +5V, GND und - in meinem Fall - mit Pin 7 des Ethernet Shields. Die folgende Fritzing Skizze zeigt das ganz schön. |
| |
{{:elektronik:arduino_dht11_mit_thingspeak.png?600|}} | {{:elektronik:arduino_dht11_mit_thingspeak.png?600|}} |
| |
===== Software ===== | ===== Software ===== |
Die Software basiert im Prinzip aus drei Komponenten: | Die Software besteht im Prinzip aus drei Teilen: |
* Ethernet Shield initialisieren | * Ethernet Shield initialisieren |
* DHT11 Sensor ansprechen | * DHT11 Sensor ansprechen |
</code> | </code> |
| |
Um die ThingSpeak API nutzen zu können, muss sowohl die Kanalnummer (Channel Number) und der API Key definiert werden. Beides kann auf der ThingSpeak Webseite nach dem Anlegen eines Kanals gefunden werden. Im Quelltext sieht das dann etwa so aus (nein, das sind keine echten Daten ;-)): | Damit man die ThingSpeak API nutzen kann, muss sowohl die Kanalnummer (Channel Number) und der API Key definiert werden. Beides kann auf der ThingSpeak Webseite nach dem Anlegen eines Kanals gefunden werden. Im Quelltext sieht das dann etwa so aus (nein, das sind keine echten Daten ;-)): |
<code c> | <code c> |
unsigned long myChannelNumber = 12345; | unsigned long myChannelNumber = 12345; |
</code> | </code> |
| |
In meinem Fall möchte ich gleichzeitig zwei Werte (Fields) bei ThingSpeak aktualisieren - die Temperatur und die Luftfeuchtigkeit. Im Schritt vorher (siehe "DHT Sensor") haben wir bereits die Werte aus dem Sensor ausgelesen. Die Werte müssen nun nur noch in der API angelegt werden und an ThingSpeak gesendet werden. Das machen wir aber natürlich nur dann, wenn die Sensordaten erfolgreich ausgelesen werden konnten. Mittels der "setField(...)" Methode der ThingSpeak API können die einzelnen Felder (Fields) in einem Kanal (Channel) gesetzt werden. Das Absenden der Daten erfolgt dann mit der Methode "writeFields(...)", die als Übergabeparameter die Kanalnummer (Channel Number) und den API Key bekommt. Da ThingSpeak in der kostenlosen Version nur Aktualisierungen nur in 15 Sekunden Schritten erlaubt, wird am Ende noch ein "dely(20000)" angehängt - das reicht für meine Zwecke auf jeden Fall aus.. | In meinem Fall möchte ich gleichzeitig zwei Werte (Fields) bei ThingSpeak aktualisieren - die Temperatur und die Luftfeuchtigkeit. Im Schritt vorher (siehe "DHT Sensor") haben wir bereits die Werte aus dem Sensor ausgelesen. Die Werte müssen nun nur noch in der API angelegt und an ThingSpeak gesendet werden. Das machen wir aber natürlich nur dann, wenn die Sensordaten erfolgreich ausgelesen werden konnten. Mittels der "setField(...)" Methode der ThingSpeak API können die einzelnen Felder (Fields) in einem Kanal (Channel) gesetzt werden. Das Absenden der Daten erfolgt dann mit der Methode "writeFields(...)", die als Übergabeparameter die Kanalnummer (Channel Number) und den API Key bekommt. Da ThingSpeak in der kostenlosen Version nur Aktualisierungen nur in 15 Sekunden Schritten erlaubt, wird am Ende noch ein "dely(20000)" angehängt - das reicht für meine Zwecke auf jeden Fall aus. |
<code c> | <code c> |
if (chk == DHTLIB_OK) | if (chk == DHTLIB_OK) |