Proses manufaktur
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
|
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:
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:
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
Tentukan nama dan deskripsi stasiun cuaca Anda. Tetapkan saluran berikut dan simpan saluran:
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.
Selamat bersenang-senang!
#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();}
Proses manufaktur
Komponen dan persediaan Arduino UNO Semua jenis Uno dapat digunakan. Saya memiliki Geekcreit Uno yang berfungsi dengan baik. × 1 Breadboard (generik) × 1 Kabel jumper (generik) Diperlukan Pria/Pria × 1 LED (generik) Anda membutuhkan lampu merah, hijau, dan biru
Komponen dan persediaan Arduino UNO × 1 Motor DC 12 V 200 rpm × 2 L293D Motor Drive Shield untuk Arduino Uno × 1 Modul Bluetooth HC-05 × 1 Breadboard (generik) × 1 Kabel jumper (generik) × 1 Aplikasi dan layanan online Arduino
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
Komponen dan persediaan Arduino UNO × 1 Teknologi Microchip ATtiny85 × 1 Kapasitor Pemisah Elektrolitik - 10uF/25V × 1 Kabel Jumper M/M × 1 Tentang proyek ini Saya sedang mengerjakan proyek yang mengharuskan membaca beberapa data sensor di lokasi y