Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

ARTIK + MKR1000 + DHT11 + MQTT

Komponen dan persediaan

Arduino MKR1000
× 2
Sensor Suhu &Kelembaban DHT11 (4 pin)
× 1
LED (generik)
× 2

Aplikasi dan layanan online

Samsung ARTIK Cloud untuk IoT
Arduino IDE

Tentang proyek ini

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:

  • JIKA Suhu Sensor DHT11 A1 lebih dari 32 dan kelembapan lebih dari 34 LALU kirim ke DHT11 Aktor A1 action setValue dengan led_red =1, led_yellow =1‌
  • JIKA Sensor DHT11 Suhu A1 lebih dari 32 dan kelembaban kurang dari 35 LALU kirim ke DHT11 Aktor A1 action setValue dengan led_red =1, led_yellow =0‌
  • JIKA Suhu Sensor DHT11 A1 kurang dari 33 dan kelembapan lebih dari 34 LALU kirim ke DHT11 Aktor A1 action setValue dengan led_red =0, led_yellow =1
  • JIKA Sensor DHT11 A1 kelembaban kurang dari 35 dan suhu kurang dari 33 LALU kirim ke DHT11 Aktor A1 action setValue dengan led_red =0, led_yellow =0‌

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.

.

Kode

  • artik_dht11_sensor.ino
  • artik_led_actor.ino
artik_dht11_sensor.inoC/C++
#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);}
artik_led_actor.inoC/C++
#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

  1. Sensor DHT11 dengan LED dan Speaker Piezo
  2. Arduino Spybot
  3. FlickMote
  4. TV Buatan Sendiri B-Gone
  5. Jam Master
  6. Temukan Saya
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Quadruped
  10. Mkr1000 Pinout:Pilihan Pilihan untuk Proyek IoT