DHT11-sensorgegevens uploaden naar ThingSpeak met Arduino MKR1000
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| DHT11 temperatuur- en vochtigheidssensor (4 pennen) | 1 |
| Arduino MKR1000 | 1 |
Over dit project
Ik had al code ontwikkeld voor de ESP8266 12-E om omgevingsgegevens, verzameld door de DHT11, draadloos naar ThingSpeak te sturen en te visualiseren. Ik moest slechts kleine aanpassingen maken om het werkend te krijgen met de nieuwe Arduino MKR1000.
Stap 1: Hardware-aansluiting
Sluit de data-uitgang van de DHT-sensor aan op pin 1 van de MKR1000 (gelabeld als '1' op de achterkant van het bord).
Stap 2: Bibliotheken installeren
Download de benodigde bibliotheken:
Stap 3: Board-ondersteuning in Arduino IDE
- Open Tools > Board > Boards Manager.
- Zoek naar Arduino SAMD Boards (32-bits ARM Cortex-M0+).
- Installeer versie 1.6.3 (versie 1.6.4 gaf problemen met de MKR1000-installatie).
Stap 4: ThingSpeak configureren
- Maak een gratis account aan op ThingSpeak.com.
- Maak een kanaal aan en label de velden (bijv. veld 1: vochtigheid, veld 2: temperatuur °C, enz.).
- Kopieer de Write API Key en plak deze in de sketch, samen met uw WiFi SSID en wachtwoord.
Stap 5: Uploaden en testen
- Selecteer de juiste COM-poort (MKR1000).
- Compileer en upload de code.
- Open de Seriële Monitor (9600 baud) om de verzonden updates te zien.
Code
De onderstaande sketch combineert de Adafruit DHT-bibliotheek, de WiFi101 WebClient en de ThingSpeak Arduino-sjabloon. Deze is aangepast voor de MKR1000.
/* Deze sketch is een combinatie van Adafruit's DHT-sketch, WiFi101 WebClient en het Arduino-voorbeeld van ThingSpeak.
Gewijzigd door Stephen Borsay voor de MKR1000, vrije gebruik toegestaan. */
#include <SPI.h>
#include <WiFi101.h>
#include "DHT.h"
#define DHTPIN 1 // Datapin aangesloten op pin 1 (5e pin vanaf het einde)
#define DHTTYPE DHT11 // DHT 11 sensor
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
String apiKey = "YourApiKeyHere"; // Jouw ThingSpeak Write API Key
char ssid[] = "YourSSIDHERE"; // Jouw WiFi netwerknaam (SSID)
char pass[] = "YourPasswordHere"; // Jouw WiFi wachtwoord
int keyIndex = 0; // Alleen nodig voor WEP
char server[] = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(9600);
while (!Serial) { ; } // Wacht op seriële poort (native USB)
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield niet aanwezig");
while (true);
}
// Verbinden met WiFi
while (WiFi.status() != WL_CONNECTED) {
Serial.print("Verbinden met SSID: ");
Serial.println(ssid);
WiFi.begin(ssid, pass); // WPA/WPA2
delay(10000);
}
Serial.println("Verbonden met WiFi");
printWifiStatus();
}
void loop() {
delay(2000); // Wacht tussen metingen
// Lees sensorwaarden (als integers om float-conversieproblemen te vermijden)
int h = dht.readHumidity();
int t = dht.readTemperature(); // Celsius
int f = dht.readTemperature(true); // Fahrenheit
// Controleer op leesfouten
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Lezen van DHT-sensor mislukt!");
return;
}
// Bereken heat index
int hif = dht.computeHeatIndex(f, h);
int hic = dht.computeHeatIndex(t, h, false);
// Seriële output
Serial.print("Vochtigheid: "); Serial.print(h); Serial.print(" %\t");
Serial.print("Temperatuur: "); Serial.print(t); Serial.print(" *C ");
Serial.print(f); Serial.print(" *F\t");
Serial.print("Heat index: "); Serial.print(hic); Serial.print(" *C ");
Serial.print(hif); Serial.println(" *F\n");
Serial.println("\nVerbinding met server opbouwen...");
if (client.connect(server, 80)) {
Serial.println("Verbonden met server");
// Bouw data-string voor ThingSpeak (velden 1-5)
String tsData = "field1=" + String(h) +
"&field2=" + String(t) +
"&field3=" + String(f) +
"&field4=" + String(hic) +
"&field5=" + String(hif);
// HTTP POST request
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");
client.print(tsData);
client.stop();
delay(1000);
}
}
void printWifiStatus() {
Serial.print("SSID: "); Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("IP-adres: "); Serial.println(ip);
long rssi = WiFi.RSSI();
Serial.print("Signaalsterkte (RSSI): "); Serial.print(rssi); Serial.println(" dBm");
}
De code is ook beschikbaar op GitHub: MKR1000 DHT ThingSpeak.
Schema
Sluit de datalijn van de DHT-sensor aan op pin 1 van de MKR1000. Voorzien de sensor van 5V en GND vanaf de MKR1000.
Productieproces
- Ontdek Hoe Parts.Cat.Com Onderdeleninkoop Vereenvoudigt En U Tijd & Geld Bespaart
- Shop.Cat.Com: Uw Één-Stop Bron voor Apparatuur, Bijlagen en Gereedschappen
- Cat® Machines Optimaliseren: De Ultieme My.Cat.com Gids
- Compacte DHT temperatuur- en vochtigheidsbreakout voor Raspberry Pi – ATtiny85 & DHT22/DHT11
- Een ThingSpeak Temperatuurmonitor Bouwen met Raspberry Pi & BrickPi
- Bouw je eerste IoT-project met Raspberry Pi, DHT11 en ThingSpeak
- Interview met Philip Cotton, Oprichter van 3Dfilemarket.com, UK 3D-print Onderwijsexpert
- Arduino MKR1000 Pinout: IoT Bord Handleiding
- PicoCoreMX8MM: ultra-compacte ARM-module aangedreven door NXP i.MX 8M Mini
- Kontron onthult COM HPC: een nieuwe high-performance embedded-computing-standaard
- ASTM A551 Klasse DHT Warmtebehandeld Staal – Belangrijkste Eigenschappen & Prestaties