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

Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT

Komponen dan Perlengkapan

Arduino UNO×1
Espressif ESP8266 ESP-01×1
Arduino Proto Shield×1
Sensor Suhu DHT22×1
Sensor Cahaya SeeedGrove×1
Sensor UV SeeedGrove×1
Sensor Barometer SeeedGrove×1
Sensor Debu SeeedGrove×1
Resistor 1k ohm×2
Resistor 10k ohm×1
Resistor 4.75k ohm×1
Kabel jumper (umum)×1

Aplikasi dan Layanan Online

Arduino IDE
ThingSpeak API

Tentang Proyek Ini

Ini adalah generasi pertama stasiun cuaca mini berbasis Arduino saya dengan koneksi Wi-Fi, yang mampu memposting data secara publik online menggunakan platform ThingSpeak.

Stasiun cuaca mengumpulkan data berikut terkait cuaca dan lingkungan menggunakan berbagai sensor:

Tujuannya adalah untuk membuat stasiun cuaca yang kecil dan sederhana, menggunakan perangkat keras open source.

Mari kita mulai dan bersenang-senang!

Komponen Elektronik

Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT

Anda tidak memerlukan alat khusus untuk pemasangan proyek ini. Semua komponen dapat ditemukan online di toko e-commerce favorit Anda.

Rangkaian mendapatkan daya dari port USB (terhubung ke komputer atau charger telepon biasa), tetapi Anda juga dapat menambahkan sumber daya DC eksternal atau baterai terhubung ke colokan daya Arduino.

Kotak untuk rangkaian stasiun cuaca di luar lingkup proyek ini.

Menghubungkan Bagian-bagian

Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT

Hubungkan semua komponen sesuai skematik. Anda akan membutuhkan beberapa kabel jumper untuk menghubungkan setiap sensor ke papan roti. Anda mungkin menggunakan protoshield (untuk rangkaian yang lebih kompak), papan roti biasa, atau mendesain pelindung Arduino Anda sendiri.

Colokkan kabel USB ke papan Arduino Uno dan lanjutkan ke langkah berikutnya.

Kode

Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT

Asumsi Anda telah menginstal Arduino IDE terbaru, unduh dan instal pustaka berikut:

Untuk petunjuk cara menambahkan pustaka ke Arduino IDE, periksa panduan Arduino berikut.

Unduh kode Arduino (weatherBox.ino) yang termasuk di bagian kode. Ganti XXXXX dengan SSID router WiFi Anda, YYYYY dengan kata sandi router, dan ZZZZZ dengan kunci API tulis channel ThingSpeak Anda (lihat cara mendapatkannya pada langkah berikutnya).

Hubungkan papan Arduino ke port USB komputer Anda dan unggah kode.

Konfigurasi ThingSpeak

Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT
Stasiun Cuaca Mini Arduino UNO – Hub Sensor DIY dengan ESP8266 IoT

Tentukan nama dan deskripsi stasiun cuaca Anda. Tetapkan channel berikut dan simpan channel:

Salin kunci API tulis. Digunakan pada langkah sebelumnya dalam kode Arduino. Saat stasiun dinyalakan, nilai sensor akan diunggah ke channel secara berkala. Anda dapat mengonfigurasi visualisasi publik dan pribadi untuk setiap variabel.

Contoh channel publik: https://thingspeak.com/channels/35540

Menggunakan Aplikasi Android

Anda akan dapat memvisualisasikan data stasiun cuaca di browser apa pun. Tetapi Anda juga dapat memeriksanya di smartphone Android Anda dan memvisualisasikannya kapan saja.

Bersenang-senanglah!

Kode

weatherBox.inoArduino
#include <stdlib.h> #include <SoftwareSerial.h> #include <DHT.h> #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP085_U.h> #define SSID "XXXXX" //replace XXXXX by your router SSID #define PASS "YYYYY" //replace YYYYY by your router password #define IP "184.106.153.149" // thingspeak.com IP #define DHT22_PIN 2 String GET = "GET /update?key=ZZZZZ&field1="; //replace ZZZZZ by your ThingSpeak channel write key SoftwareSerial monitor(10, 11); //Serial communication to ESP8266 module (RX, TX) dht DHT; Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085); //Variables int luminancePin = A0; int uvPin = A1; int dustPin = 8; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 30000; unsigned long delay_time = 60000; unsigned long lowpulseoccupancy = 0; float ratio = 0; float concentration = 0; //setup void setup() { //start serial communications Serial.begin(9600); monitor.begin(9600); Serial.println("Initializing..."); //configure Arduino pins pinMode(dustPin, INPUT); //initialize pressure sensor Serial.println("Detecting BMP085 pressure sensor..."); if(!bmp.begin()) { Serial.println("BMP085 sensor wasn't detected. Verify your connections or I2C ADDR!"); while(1); } Serial.println("BMP085 detected!"); //communication with wifi module monitor.flush(); monitor.println("AT"); delay(2000); if(monitor.find("OK")){ Serial.println("Communication with ESP8266 module: OK"); } else { Serial.println("ESP8266 module ERROR"); } //connect wifi router connectWiFi(); Serial.print("Sampling ("); Serial.print(sampletime_ms/1000); Serial.println(" s)..."); //initialize timer starttime = millis(); } void loop(){ //measuring dust particles duration = pulseIn(dustPin, LOW); lowpulseoccupancy = lowpulseoccupancy + duration; //30 seconds cicle if ((millis() - starttime) >= sampletime_ms) { ratio = lowpulseoccupancy/(sampletime_ms*10.0); // percentage (de 0 a 100%) concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // from datsheet lowpulseoccupancy = 0; //read other sensors char buffer[10]; //light sensor float luminance = analogRead(luminancePin); //UV sensor float uv = analogRead(uvPin); uv = uv * 0.0049; //convert values to volts uv = uv * 307; //convert to mW/m² uv = uv/200; //calculate UV index //temperature and humidity int chk = DHT.read22(DHT22_PIN); float humidity = DHT.humidity; float temperature = DHT.temperature; //pressure and temperature1 sensors_event_t event; bmp.getEvent(&event); float pressure = 0; float temperature1 = 0; if (event.pressure) { pressure = event.pressure; bmp.getTemperature(&temperature1); } //convert sensor values to strings String luminanceStr = dtostrf(luminance, 4, 1, buffer); luminanceStr.replace(" ",""); String uvStr = dtostrf(uv, 4, 1, buffer); uvStr.replace(" ",""); String humidityStr = dtostrf(humidity, 4, 1, buffer); humidityStr.replace(" ",""); String temperatureStr = dtostrf(temperature, 4, 1, buffer); temperatureStr.replace(" ",""); String dustStr = dtostrf(concentration, 4, 1, buffer); dustStr.replace(" ",""); String pressureStr = dtostrf(pressure, 4, 1, buffer); pressureStr.replace(" ",""); String temperature1Str = dtostrf(temperature1, 4, 1, buffer); temperature1Str.replace(" ",""); //send data to ThingSpeak updateSensors(luminanceStr, humidityStr, temperatureStr, uvStr, dustStr, pressureStr, temperature1Str); //wait next sampling cycle Serial.print("Wait "); Serial.print(delay_time/1000); Serial.println(" s for next sampling"); Serial.println(); delay(delay_time); //initialize new cycle Serial.println(); Serial.print("Sampling ("); Serial.print(sampletime_ms/1000); Serial.println(" s)..."); starttime = millis(); } } //Send data to ThingSpeak void updateSensors(String luminanceStr, String humidityStr, String temperatureStr, String uvStr, String dustStr, String pressureStr, String temperature1Str) { String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += IP; cmd += "\",80"; monitor.println(cmd); delay(2000); cmd = GET; cmd += luminanceStr; cmd += "&field2="; cmd += humidityStr; cmd += "&field3="; cmd += temperatureStr; cmd += "&field4="; cmd += uvStr; cmd += "&field5="; cmd += dustStr; cmd += "&field6="; cmd += pressureStr; cmd += "&field7="; cmd += temperature1Str; cmd += "\r\n"; delay(1000); int strsize = cmd.length(); monitor.println("AT+CIPSEND=" + String(strsize)); delay(2000); monitor.print(cmd); if(monitor.find("OK")){ Serial.println("Transmission completed with success"); }else{ Serial.println("Transmission failed!"); } } void sendDebug(String cmd){ Serial.print("SEND: "); Serial.println(cmd); monitor.println(cmd); } boolean connectWiFi(){ Serial.println("Connecting wi-fi..."); String cmd ="AT+CWMODE=1"; monitor.println(cmd); delay(2000); monitor.flush(); //clear buffer cmd="AT+CWJAP=\""; cmd+=SSID; cmd+="\","; cmd+=PASS; cmd+="\""; monitor.println(cmd); delay(5000); if(monitor.find("OK")){ Serial.println("Connection succeeded!"); return true; }else{ Serial.println("Connection failed!"); return false; } Serial.println(); } 
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/adafruit/Adafruit-BMP085-Libraryhttps://github.com/adafruit/Adafruit-BMP085-Library

Proses manufaktur

  1. Membangun Stasiun Cuaca Raspberry Pi yang Mengirim Data Cuaca Harian melalui Email
  2. Robot Deteksi Manusia Berbasis Arduino Uno: Integrasi Sensor Langkah demi Langkah
  3. Sensor CO2 K30: Pemantauan Kualitas Udara Indoor dalam Waktu Nyata
  4. Buat Stadiometer Digital: Lacak Tinggi Badan dengan Arduino dan Sensor Laser
  5. Arduino Uno WiFi Web Server: Nyalakan/Matikan LED Melalui Browser
  6. Buat Kalkulator Dasar dengan Arduino UNO – Proyek Mudah
  7. Bangun Menara Sensor dengan Arduino Cloud: Pemantauan Suhu, Gerakan & Gas
  8. Membuat Tampilan Persistence of Vision Portabel dengan Arduino UNO dan ATtiny85
  9. Stasiun Cuaca Arduino Nano: Kit Sensor dan Layar OLED
  10. Stasiun Pemantauan Kesehatan Cerdas: Arduino, Bluetooth, dan Sensor