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

Komponen dan persediaan

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Arduino Proto Shield
atau papan tempat memotong roti biasa
× 1
Sensor Suhu DHT22
× 1
Seed Grove - Sensor Cahaya
× 1
Seed Grove - Sensor UV
× 1
Rumput Benih - Sensor Barometer
× 1
Seed Grove - Sensor Debu
× 1
Resistor 1k ohm
× 2
Resistor 10k ohm
× 1
Resistor 4.75k ohm
× 1
Kabel jumper (generik)
× 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 dapat memposting data publik secara online menggunakan platform ThingSpeak.

Stasiun cuaca mengumpulkan data berikut yang terkait dengan cuaca dan lingkungan menggunakan sensor yang berbeda:

  • Suhu
  • Kelembaban
  • Tekanan atmosfer
  • Intensitas cahaya
  • indeks UV
  • Konsentrasi debu

Tujuannya adalah membuat stasiun cuaca kecil dan sederhana, menggunakan perangkat keras terbuka.

Mari kita mulai dan bersenang-senanglah!

Komponen elektronik

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

Sirkuit ini ditenagai oleh port USB (terhubung ke komputer atau pengisi daya telepon biasa), tetapi Anda juga dapat menambahkan catu daya DC eksternal atau baterai yang terhubung ke soket daya Arduino.

Kasus untuk sirkuit stasiun cuaca berada di luar cakupan proyek ini.

Menghubungkan Bagian

Hubungkan semua komponen sesuai dengan skema. Anda memerlukan beberapa kabel jumper untuk menghubungkan setiap sensor ke papan tempat memotong roti. Anda dapat menggunakan protoshield (untuk sirkuit yang lebih ringkas), papan tempat memotong roti biasa, atau mendesain pelindung Arduino milik Anda sendiri.

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

Kode

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

  • Perpustakaan DHT22
  • Perpustakaan BMP085 Adafruit

Untuk instruksi tentang cara menambahkan library ke Arduino IDE, lihat panduan Arduino berikut.

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

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

Konfigurasi ThingSpeak

  • Buat akun ThingSpeak
  • Buat Saluran baru

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

  • saluran 1 =ringan
  • saluran 2 =kelembaban
  • saluran 3 =suhu (dari DHT22)
  • saluran 4 =indeks UV
  • saluran 5 =konsentrasi debu
  • saluran 6 =tekanan
  • saluran 7 =suhu (dari BMP085)

Salin kunci tulis API. Ini digunakan pada langkah sebelumnya dalam kode Arduino. Saat stasiun dihidupkan, nilai sensor akan diunggah ke saluran secara berkala. Anda dapat mengonfigurasi visualisasi publik dan pribadi dari setiap variabel.

Contoh saluran 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 ponsel pintar berbasis Android dan memvisualisasikannya kapan pun Anda mau.

  • Unduh dan instal aplikasi ThingsView dari Google Play store di perangkat Android Anda
  • Di aplikasi, masukkan nomor ID saluran Anda dan klik tambahkan. Anda akan menemukan ID pada konfigurasi saluran ThingSpeak Anda
  • Nilai saat ini dari setiap variabel akan ditampilkan dalam grafik

Selamat bersenang-senang!

Kode

  • weatherBox.ino
weatherBox.inoArduino
#include #include #include #include #include #include #define SSID "XXXXX " //ganti XXXXX dengan SSID router Anda#define PASS "YYYYY" //ganti YYYYY dengan kata sandi router Anda#define IP "184.106.153.149" // thingspeak.com IP#define DHT22_PIN 2String GET ="GET /update?key=ZZZZZ&field1="; //ganti ZZZZZ dengan saluran ThingSpeak Anda, tulis keySoftwareSerial monitor (10, 11); //Komunikasi serial ke modul ESP8266 (RX, TX)dht DHT;Adafruit_BMP085_Unified bmp =Adafruit_BMP085_Unified(10085);//Variablesint 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;rasio float =0;konsentrasi float =0;//setupvoid setup(){ //mulai komunikasi serial Serial.begin(9600); monitor.begin(9600); Serial.println("Inisialisasi..."); //konfigurasi pin Arduino pinMode(dustPin, INPUT); //inisialisasi sensor tekanan Serial.println("Mendeteksi sensor tekanan BMP085..."); if(!bmp.begin()) { Serial.println("Sensor BMP085 tidak terdeteksi. Verifikasi koneksi Anda atau I2C ADDR!"); sementara(1); } Serial.println("BMP085 terdeteksi!"); //komunikasi dengan modul wifi monitor.flush(); monitor.println("AT"); penundaan(2000); if(monitor.find("OK")){ Serial.println("Komunikasi dengan modul ESP8266:OK"); } else { Serial.println("ESP8266 modul ERROR"); } //hubungkan router wifi connectWiFi(); Serial.print("Sampling ("); Serial.print(sampletime_ms/1000); Serial.println("s)..."); //inisialisasi timer starttime =milis();}void loop(){ //mengukur durasi partikel debu =pulseIn(dustPin, LOW); lowpulseoccupancy =lowpulseoccupancy + durasi; //30 detik siklus if ((milis() - waktu mulai)>=sampletime_ms) { rasio =lowpulseoccupancy/(sampletime_ms*10.0); // persentase (de 0 a 100%) konsentrasi =1.1*pow(rasio,3)-3.8*pow(rasio,2)+520*rasio+0,62; // dari lembar data lowpulseoccupancy =0; //membaca buffer char sensor lainnya[10]; //sensor cahaya float luminance =analogRead(luminancePin); //sensor UV float uv =analogRead(uvPin); uv =uv * 0,0049; //mengubah nilai menjadi volt uv =uv * 307; //konversi ke mW/m² uv =uv/200; //menghitung indeks UV //suhu dan kelembaban int chk =DHT.read22(DHT22_PIN); kelembaban mengambang =DHT.kelembaban; suhu mengambang =DHT.suhu; //tekanan dan suhu1 sensor_event_t event; bmp.getEvent(&acara); tekanan mengambang =0; suhu mengambang1 =0; if (peristiwa.tekanan) { tekanan =peristiwa.tekanan; bmp.getTemperature(&temperature1); } //mengubah nilai sensor menjadi string String luminanceStr =dtostrf(luminance, 4, 1, buffer); luminanceStr.replace(" ",""); String uvStr =dtostrf(uv, 4, 1, penyangga); uvStr.replace(" ",""); String kelembabanStr =dtostrf(kelembaban, 4, 1, penyangga); kelembabanStr.replace(" ",""); String temperatureStr =dtostrf(suhu, 4, 1, buffer); temperatureStr.replace(" ",""); String dustStr =dtostrf(konsentrasi, 4, 1, buffer); dustStr.replace(" ",""); String tekananStr =dtostrf(tekanan, 4, 1, penyangga); pressureStr.replace(" ",""); String temperature1Str =dtostrf(suhu1, 4, 1, buffer); suhu1Str.ganti(" ",""); //kirim data ke ThingSpeak updateSensors(luminanceStr, moistureStr, temperatureStr, uvStr, dustStr, pressureStr, temperature1Str); //tunggu siklus pengambilan sampel berikutnya Serial.print("Tunggu "); Serial.print(delay_time/1000); Serial.println("s untuk pengambilan sampel berikutnya"); Serial.println(); tunda(waktu_tunda); //inisialisasi siklus baru Serial.println(); Serial.print("Sampling ("); Serial.print(sampletime_ms/1000); Serial.println("s)..."); waktu mulai =mili(); }}//Kirim data ke ThingSpeakvoid updateSensors(String luminanceStr, String kelembabanStr, String temperatureStr, String uvStr, String dustStr, String pressureStr, String temperature1Str) { String cmd ="AT+CIPSTART=\"TCP\",\""; cmd +=IP; cmd +="\",80"; monitor.println(cmd); penundaan(2000); cmd =DAPATKAN; cmd +=luminanceStr; cmd +="&bidang2="; cmd +=kelembabanStr; cmd +="&bidang3="; cmd +=suhuStr; cmd +="&field4="; cmd +=uvStr; cmd +="&bidang5="; cmd +=dustStr; cmd +="&bidang6="; cmd +=tekananStr; cmd +="&bidang7="; cmd +=suhu1Str; cmd +="\r\n"; penundaan (1000); int strukuran =cmd.panjang(); monitor.println("AT+CIPSEND=" + String(strsize)); penundaan(2000); monitor.print(cmd); if(monitor.find("OK")){ Serial.println("Transmisi selesai dengan sukses"); }else{ Serial.println("Transmisi gagal!"); }}void sendDebug(String cmd){ Serial.print("KIRIM:"); Serial.println(cmd); monitor.println(cmd);} boolean connectWiFi(){ Serial.println("Menghubungkan wi-fi..."); String cmd="AT+CWMODE=1"; monitor.println(cmd); penundaan(2000); monitor.flush(); //hapus buffer cmd="AT+CWJAP=\""; cmd+=SSID; cmd+="\",\""; cmd+=PASS; cmd+="\""; monitor.println(cmd); penundaan(5000); if(monitor.find("OK")){ Serial.println("Koneksi berhasil!"); kembali benar; }else{ Serial.println("Koneksi gagal!"); kembali salah; } 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. Stasiun Cuaca Raspberry Pi
  2. Sistem Robotika Deteksi Manusia Menggunakan Arduino Uno
  3. Pemantauan CO2 dengan Sensor K30
  4. Berapa Tinggi Anda?
  5. WebServerBlink Menggunakan Arduino Uno WiFi
  6. Kalkulator UNO sederhana
  7. Arduino Cloud Sensor Tower
  8. Kegigihan Visi
  9. Stasiun Cuaca Lokal
  10. Monitoring Health Station