Proses manufaktur
| × | 2 | ||||
| × | 1 | ||||
| × | 2 |
| ||||
|
Proyek ini menggunakan dua MKR1000 dengan DHT11 sebagai sensor dan LED sebagai aktuator metafora. Aktuator sebenarnya bisa berupa AC dan kipas langit-langit. Perangkat suhu dan kelembaban DHT11 mengirimkan data ke awan ARTIK. Aturan telah ditetapkan untuk mengirim perintah ke LED Merah dan Kuning.
Siapkan Arduino IDE
Dengan Manajer Perpustakaan Arduino IDE, instal perpustakaan berikut.
Instal WiFi101 (lihat panduan ini)
Instal MQTT oleh Joel Gaehwiler
Instal ArduinoJson
Catatan:Lihat . saya postingan sebelumnya untuk mengetahui detail tentang bekerja dengan awan ARTIK.
Siapkan sensor suhu dan kelembaban DHT11
Buat jenis perangkat (Sensor DHT11 )
Hubungkan perangkat (Sensor DHT11 A1 )
Hubungkan perangkat fisik
.
Siapkan parameter MQTT cloud ARTIK
char mqttCloudServer[] ="api.artik.cloud"; int mqttCloudPort =8883; char mqttCloudClientName[] ="ARTIK-Arduino"; char mqttCloudUsername[] ="[device-id]"; char mqttCloudPassword[] ="[device-token]"; char mqttCloudDataOut[] ="/v1.1/messages/[device-id]"; WiFiSSLClient ipCloudStack; MQTTClient mqttCloudClient;
Mengirim pesan ke awan ARTIK.
void sendToArtikCloud(suhu mengambang, kelembaban mengambang) { loadBuffer(suhu, kelembaban); // memuat nilai saat ini ke dalam buffer mqttCloudClient.publish(mqttCloudDataOut, buf); } void loadBuffer(suhu mengambang, kelembaban mengambang) { StaticJsonBuffer<200> jsonBuffer; JsonObject&dataPair =jsonBuffer.createObject(); dataPair["suhu"] =suhu; dataPair["kelembaban"] =kelembapan; dataPair.printTo(buf, sizeof(buf)); }
Siapkan aktuator suhu dan kelembaban LED
Buat jenis perangkat (Aktor DHT11 )
Hubungkan perangkat (DHT11 Aktor A1 )
Hubungkan perangkat fisik
Siapkan parameter MQTT cloud ARTIK
// ARTIK Cloud MQTT params char mqttCloudServer[] ="api.artik.cloud"; int mqttCloudPort =1883; char mqttCloudClientName[] ="ARTIK-Arduino"; char mqttCloudUsername[] ="[device-id]"; char mqttCloudPassword[] ="[device-token]"; char mqttCloudActionsIn[] ="/v1.1/actions/[device-id]"; WiFiClient ipCloudStack; MQTTClient mqttCloudClient;
Menerima tindakan MQTT.
void messageReceived(String topic, String payload, char * byte, unsigned int length) { Serial.print("topic="); Serial.println(topik); Serial.print("payload="); Serial.println(muatan); Serial.print("byte="); Serial.println(byte); Serial.print("panjang="); Serial.println(panjang); parseBuffer(muatan); }
Parsing dan proses tindakan dari ARTIK cloud.
void parseBuffer(String payload) { StaticJsonBuffer<200> jsonBuffer; String json =muatan; JsonObject&root =jsonBuffer.parseObject(json); const char* nameparam =root["tindakan"][0]["nama"]; const int actionLEDRed =root["actions"][0]["parameters"]["led_red"]; const int actionLEDYellow =root["actions"][0]["parameters"]["led_yellow"]; Serial.print("nama="); Serial.println(namaparam); Serial.print("led_red="); Serial.println(actionLEDRed); Serial.print("led_yellow="); Serial.println(actionLEDYellow); Serial.println(); if (actionLEDRed ==1) { if (savedRedValue !=actionLEDRed) { digitalWrite(LED_RED_PIN, HIGH); saveRedValue =actionLEDRed; } saveRedTime =milis(); } else { if (savedRedValue !=actionLEDRed) { if (millis() - saveRedTime> RED_DELAY) { digitalWrite(LED_RED_PIN, LOW); saveRedValue =actionLEDRed; } } } if (actionLEDYellow ==1) { if (savedYellowValue !=actionLEDYellow) { digitalWrite(LED_YELLOW_PIN, HIGH); saveYellowValue =actionLEDYellow; } saveYellowTime =milis(); } else { if (savedYellowValue !=actionLEDYellow) { if (millis() - saveYellowTime> YELLOW_DELAY) { digitalWrite(LED_YELLOW_PIN, LOW); saveYellowValue =actionLEDYellow; } } } }
Buat Aturan
Ada 4 aturan:
Video Demo
Harap dicatat bahwa Anda harus menunggu suhu memanas (LED menyala) dan mendingin (LED mati). LED merah menyala pada 37 detik dan mati pada 1:13 detik. Video demo hanya menunjukkan perubahan suhu. Saya menggunakan pengering rambut untuk mengubah suhu di sekitar sensor DHT11.
.
#include#include #include #include "DHT.h"#define DHTPIN 2 // pin digital apa yang kita sambungkan#define DHTTYPE DHT11 / / DHT 11DHT dht(DHTPIN, DHTTYPE);const char* _SSID ="[Wi-Fi SSID]";const char* _PASSWORD ="[Kata Sandi Wi-Fi]"; // ARTIK Cloud MQTT paramschar mqttCloudServer[] ="api.artik.cloud";int mqttCloudPort =8883;char mqttCloudClientName[] ="ARTIK-Arduino";char mqttCloudUsername[] ="[device-id]"; char mqttCloudPassword[] ="[device-token]"; char mqttCloudDataOut[] ="/v1.1/messages/[device-id]"; WiFiSSLClient ipCloudStack;MQTTClient mqttCloudClient;char buf[128];float temperature, moisture;int n =0;void getNextSample(float* Temperature, float* Humidity){ // Tunggu beberapa detik di antara pengukuran. penundaan(2000); // Membaca suhu atau kelembapan membutuhkan waktu sekitar 250 milidetik! // Pembacaan sensor mungkin juga 'berumur' hingga 2 detik (sensornya sangat lambat) *Humidity =dht.readHumidity(); // Baca suhu sebagai Celsius (default) *Temperature =dht.readTemperature(); // Baca suhu sebagai Fahrenheit (isFahrenheit =true) // float f =dht.readTemperature(true); //printf("Temp=%.2f, Pres=%.2f, Humi=%.2f\n", Temp_c__f, Pres_hPa__f, Humi_pct__f); Serial.print("Suhu="); Serial.println(*Suhu); Serial.print("Kelembaban="); Serial.println(*Humidity);}pengaturan kosong() { Serial.begin(57600); dht.mulai(); // Pengaturan Wifi WiFi.begin(_SSID, _PASSWORD); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi terhubung"); Serial.print("Alamat IP:"); Serial.println(WiFi.localIP()); mqttCloudClient.begin(mqttCloudServer, mqttCloudPort, ipCloudStack); Serial.println("mulai koneksi ARTIK Cloud"); Serial.println(); while (!mqttCloudClient.connect(mqttCloudClientName, mqttCloudUsername, mqttCloudPassword)) { Serial.print("*"); penundaan (500); }}void messageReceived(String topic, String payload, char * byte, unsigned int length) {}void sendToArtikCloud(float temperature, float kelembaban) { loadBuffer(suhu, kelembaban); // memuat nilai saat ini ke dalam buffer mqttCloudClient.publish(mqttCloudDataOut, buf);}void loadBuffer(suhu mengambang, kelembaban mengambang) { StaticJsonBuffer<200> jsonBuffer; JsonObject&dataPair =jsonBuffer.createObject(); dataPair["suhu"] =suhu; dataPair["kelembaban"] =kelembapan; dataPair.printTo(buf, sizeof(buf));}void loop() { if (++n> 10) { Serial.println("Berhenti."); keluar (0); } mqttCloudClient.loop(); penundaan (1000); getNextSample(&suhu, &kelembaban); Serial.println("Menerbitkan..."); Serial.println(); sendToArtikCloud(suhu, kelembaban); delay(15000);}
#include#include #include #define LED_RED_PIN 11#define LED_YELLOW_PIN 13#define RED_DELAY 5000#define YELLOW_DELAY 10000const char* SSID Wi-Fi =" ]";const char* _PASSWORD ="[Kata Sandi Wi-Fi]"; // ARTIK Cloud MQTT paramschar mqttCloudServer[] ="api.artik.cloud";int mqttCloudPort =1883;char mqttCloudClientName[] ="ARTIK-Arduino";char mqttCloudUsername[] ="[device-id]"; char mqttCloudPassword[] ="[device-token]"; char mqttCloudActionsIn[] ="/v1.1/actions/[device-id]"; WiFiClient ipCloudStack;MQTTClient mqttCloudClient;char buf[128];int saveRedValue, savedYellowValue;unsigned long storedRedTime, storedYellowTime;void setup() { Serial.begin(57600); pinMode(LED_RED_PIN, OUTPUT); pinMode(LED_YELLOW_PIN, OUTPUT); SaveRedValue =SaveYellowValue =0; // Pengaturan Wifi WiFi.begin(_SSID, _PASSWORD); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi terhubung"); Serial.print("Alamat IP:"); Serial.println(WiFi.localIP()); mqttCloudClient.begin(mqttCloudServer, mqttCloudPort, ipCloudStack); Serial.println("mulai koneksi ARTIK Cloud"); Serial.println(); while (!mqttCloudClient.connect(mqttCloudClientName, mqttCloudUsername, mqttCloudPassword)) { Serial.print("*"); penundaan (500); } mqttCloudClient.subscribe(mqttCloudActionsIn);}void messageReceived(String topic, String payload, char * byte, unsigned int length) { Serial.print("topic="); Serial.println(topik); Serial.print("payload="); Serial.println(muatan); Serial.print("byte="); Serial.println(byte); Serial.print("panjang="); Serial.println(panjang); parseBuffer(payload);}void parseBuffer(String payload) { StaticJsonBuffer<200> jsonBuffer; String json =muatan; JsonObject&root =jsonBuffer.parseObject(json); const char* nameparam =root["tindakan"][0]["nama"]; const int actionLEDRed =root["actions"][0]["parameters"]["led_red"]; const int actionLEDYellow =root["actions"][0]["parameters"]["led_yellow"]; Serial.print("nama="); Serial.println(namaparam); Serial.print("led_red="); Serial.println(actionLEDRed); Serial.print("led_yellow="); Serial.println(actionLEDYellow); Serial.println(); if (actionLEDRed ==1) { if (savedRedValue !=actionLEDRed) { digitalWrite(LED_RED_PIN, HIGH); saveRedValue =actionLEDRed; } saveRedTime =milis(); } else { if (savedRedValue !=actionLEDRed) { if (millis() - saveRedTime> RED_DELAY) { digitalWrite(LED_RED_PIN, LOW); saveRedValue =actionLEDRed; } } } if (actionLEDYellow ==1) { if (savedYellowValue !=actionLEDYellow) { digitalWrite(LED_YELLOW_PIN, HIGH); saveYellowValue =actionLEDYellow; } saveYellowTime =milis(); } else { if (savedYellowValue !=actionLEDYellow) { if (millis() - saveYellowTime> YELLOW_DELAY) { digitalWrite(LED_YELLOW_PIN, LOW); saveYellowValue =actionLEDYellow; } } } }loop kosong() { mqttCloudClient.loop(); penundaan (500); }
Proses manufaktur
Komponen dan persediaan Arduino UNO × 1 Resistor 10k ohm × 1 Adafruit LCD Standar - 16x2 Putih di Atas Biru × 1 Breadboard (generik) × 1 Kabel jumper (generik) × 1 Tentang proyek ini Jadi, saya hanya bosan dan sedang menjelajahi hala
Komponen dan persediaan Arduino MKR1000 × 1 Sensor Suhu &Kelembaban DHT11 (4 pin) × 1 Kabel jumper (generik) × 1 Breadboard (generik) × 1 Aplikasi dan layanan online Arduino IDE Google Spreadsheet Tentang proyek ini P
Komponen dan persediaan Arduino UNO × 1 Sensor Suhu &Kelembaban DHT11 (3 pin) × 1 Kabel jumper (generik) × 3 Breadboard (generik) × 1 Kabel USB 2.0 Arduino × 1 Aplikasi dan layanan online Arduino IDE Tentang proyek ini
Dalam Tutorial Arduino ini kita akan mempelajari cara menggunakan sensor DHT11 atau DHT22 untuk mengukur suhu dan kelembaban dengan papan Arduino. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini untuk lebih jelasnya. Ringkasan Sensor ini sangat digemari oleh para peng