Bangun Stasiun Cuaca Pribadi Tepat dengan Arduino, ESP8266, dan ThingSpeak
Komponen dan Perlengkapan
Adafruit BMP180
×
1
Sensor Suhu & Kelembaban DHT11 (4 pin)
×
1
LDR
Resistor Tergantung Cahaya
×
1
Espressif ESP8266 ESP-01
×
1
Arduino Nano R3
×
1
Resistor 4.75k ohm
×
1
Resistor 51K
×
1
Modul Daya Step-Down LM2596 DC-DC Buck Converter
×
1
DC jack
×
1
Saklar
×
1
Adaptor dinding 12v-2A
×
1
PCB
×
1
Header Pria 40 Posisi 1 Baris (0.1")
×
1
Header Wanita 8 Posisi 1 Baris (0.1")
×
5
Kotak plastik
×
1
Alat dan Mesin yang Diperlukan
Pencabut kabel
Pistol lem panas (umum)
Pemoleng (umum)
Obeng
Bekas
digunakan untuk kerajinan tangan
Aplikasi dan Layanan Online
Arduino IDE
ThingSpeak API
Tentang Proyek Ini
Intro: Buat Stasiun Cuaca Pribadi
Duduk di kamar Anda Anda mulai berkeringat atau merasa dingin; Anda bertanya-tanya berapa suhu di kamar Anda? atau berapa kelembabannya? Hal ini pernah terjadi pada saya beberapa waktu lalu.
Ini mengarah pada munculnya Stasiun Cuaca Pribadi, yang memantau suhu, kelembaban, tekanan, dan intensitas cahaya kamar Anda dan mengunggahnya ke saluran pribadi di thingspeak.com.
Mari kita mulai.
Langkah 1: Video singkat
Ini adalah video kecil yang meringkas segalanya dalam 5 menit.
Klik di sini untuk menonton di youtube.
Langkah 2: Komponen elektronik yang diperlukan untuk Stasiun Cuaca Pribadi
Deskripsi: Kami akan menggunakan DHT11 untuk merasakan kelembaban, BMP180 untuk merasakan suhu dan tekanan, dan Resistor Tergantung Cahaya (LDR) untuk mendapatkan ide kasar tentang intensitas cahaya. Arduino nano akan mengumpulkan data dari sensor ini dan mengirimkannya ke ESP8266 untuk diunggah ke saluran pribadi Anda di thingspeak.com. Kami akan menyediakan daya Arduino nano dari adaptor dinding 12V-2A, sensor dan ESP8266 akan menerima tegangan yang diturunkan dari konverter buck berbasis LM2596.
Daftar komponen:
Sensor tekanan dan suhu BMP180,
Sensor kelembaban DHT11,
Resistor Tergantung Cahaya (LDR),
Modul wifi ESP8266(firmware siap),
Arduino nano,
2 Resistor- 51 KOhm dan 4.7 KOhm,
Konverter buck LM2596,
DC jack,
Saklar dan
Adaptor dinding 12V-2A.
Langkah 3: Alat dan item tambahan yang diperlukan untuk Stasiun Cuaca Pribadi
Deskripsi: Kami akan menggunakan pencabut kabel untuk mencabut kabel, bekas untuk menghaluskan potongan/lubang pada kotak pelindung, pistol lem panas untuk menempatkan komponen di dalam kotak pelindung, obeng untuk menutup tutup kotak pelindung dan pemoleng dengan kabel solder untuk merakit rangkaian pada papan rangkaian umum(GCB). Kotak plastik 4x4x2 inci bertindak sebagai kotak pelindung. Kami juga akan membutuhkan strip berg pria dan wanita bersama dengan konektor wanita untuk perakitan yang tepat pada GCB.
Daftar Alat:
Pencabut kabel,
Bekas,
Pistol lem panas,
Obeng dan
Pemoleng dan kabel solder.
Daftar Item Tambahan:
Kotak plastik 4x4x2 inci (Saya menggunakan dimensi ini, dimensi terdekat lainnya juga baik),
Papan rangkaian umum,
strip berg pria dan wanita dan
konektor wanita.
Langkah 4: Persyaratan perangkat lunak
Deskripsi: Untuk melihat nilai data sensor, kami akan membutuhkan saluran pribadi di thingspeak.com. Kami akan membutuhkan Arduino IDE untuk menulis kode arduino untuk arduino nano. (Saya asumsikan Anda memiliki PC/laptop dan router wifi dengan akses internet)
Daftar persyaratan perangkat lunak:
Saluran pribadi di Thingspeak.com dan
Arduino IDE (Versi terbaru disarankan).
Anda dapat mengunduh versi terbaru Arduino IDE dari arduino.cc. Sekarang mari buat saluran pribadi di thingspeak.com.
Langkah 5: Membuat saluran pribadi di Thingspeak.com
Untuk membuat saluran pribadi di thingspeak.com ikuti langkah-langkah ini:
Buka browser web Anda dan pergi ke thingspeak.com dan klik tab 'Sign Up' di sudut kanan atas, (Gambar no.1)
Isi detail dan klik 'Buat akun', (Gambar no.2)
Sekarang klik tab 'Saluran Baru', (Gambar no.3)
Lengkapi detail untuk saluran dan aktifkan 4 bidang (karena kita akan mengirim 4 nilai sensor), gulir ke bawah dan klik tab 'Simpan Saluran', (Gambar no.4/5)
Di halaman ini klik tab 'Kunci API' dan catat 'Kunci API Tulis' Anda.
Itu saja, sekarang Anda memiliki saluran ThingSpeak pribadi Anda.
Sekarang mari kita gabungkan semua komponen elektronik.
Langkah 6: Skematik untuk Stasiun Cuaca Pribadi
Di sini saya melampirkan gambar skematik untuk Stasiun Cuaca Pribadi. Saya juga melampirkan file fritzing yang sama. Koneksi cukup sederhana.
BMP180 terhubung ke port I2C arduino nano.
LDR terhubung dalam pola pembagi tegangan dengan resistor 51 KOhm dan simpulan terhubung ke pin A1 arduino nano.
Pin data DHT11 ditarik tinggi dengan resistor 4.7 KOhm dan terhubung ke pin A0 arduino nano.
TX dan RX ESP8266 terhubung ke D10 dan D11 arduino nano masing-masing. CH_PD ESP8266 terhubung ke rel 3.3V.
Sesuaikan output modul LM2596 menjadi 3.3V dengan memutar potensiometer pada modul ini. Hubungkan output modul ini ke Vcc dan Gnd BMP180, DHT11, LDR dan ESP8266 masing-masing.
Input modul LM2596 berasal dari adaptor dinding 12V-2A yang juga terhubung ke Vin dan Gnd Arduino nano.
Kami perlu merakit rangkaian ini pada Papan Rangkaian Umum. Mari kita lakukan.
Langkah 7: Merakit rangkaian pada Papan Rangkaian Umum (GCB)
Alat perangkat keras dan item tambahan dari langkah 3 sekarang digunakan.
Gunakan strip berg wanita untuk penempatan Arduino nano dan ESP8288 pada GCB,
Gunakan pemoleng dan kabel solder untuk menghubungkannya secara listrik ke papan,
Gunakan konektor wanita untuk memperpanjang jangkauan semua sensor dan modul LM2596 karena mereka akan menempel pada tutup dan dinding kotak pelindung,
Gunakan strip berg pria untuk membuat titik koneksi untuk ekstensi wanita yang dibuat di atas,
Realisasikan skematik rangkaian pada GCB menggunakan kabel (cabut menggunakan pencabut kabel), atau rel kabel solder yang dilebarkan dan akhirnya,
Periksa apakah ada kortir sebelum menyediakan daya pada rangkaian menggunakan multimeter.
Sekarang semua perangkat keras ditempatkan pada GCB, mari kita lihat kode.
Langkah 8: Kode
Kode untuk Stasiun Cuaca Pribadi cukup sederhana. Saya telah memberikan komentar pada kode dengan benar untuk kemudahan portabilitas. Sebelum Anda memprogram kode perhatikan hal-hal berikut.
Pastikan semua perpustakaan terinstal,
Ganti tanda hubung dengan SSID titik akses Anda (router wifi) pada baris 14 kode,
Ganti tanda hubung dengan PASSWORD jaringan wifi Anda pada baris 15 kode,
Ganti tanda hubung dengan kunci API tulis saluran pribadi ThingSpeak Anda pada baris 17 dan
Saat memprogram Arduino nano pastikan sumber daya 12V DC Anda dalam keadaan OFF.
Ini adalah tautan ke github (Stasiun Cuaca Pribadi) untuk mengunduh kode dan perpustakaan yang saya gunakan.
Sekarang kami memiliki perangkat keras dan perangkat lunak yang siap, satu-satunya yang tersisa adalah kemasan.
Langkah 9: Persiapan kotak pelindung
Sekarang kami perlu membuat lubang dengan berbagai bentuk dan ukuran pada kotak 4x4x2 inci. Kami perlu membuat lubang untuk DC jack dan saklar pada dinding kotak pelindung mana pun yang Anda sukai. Kami juga perlu membuat lubang untuk sensor pada tutup kotak pelindung.
Saya melampirkan gambar yang menunjukkan dimensi lubang yang kami perlukan pada kotak pelindung.
Gunakan blangkon panas untuk memotong plastik.
Gunakan bekas untuk menghaluskan lubang.
Sekarang kotak pelindung Anda siap menampung rangkaian Anda.
Langkah 10: Menutup tutup
Masukkan GCB yang sudah Anda rakit ke dalam kotak pelindung.
Tempatkan saklar dan DC jack di lubang pada dinding; sensor di lubang pada tutup. Akhiri posisi mereka dan gunakan pistol lem panas untuk memasangnya. Terakhir gunakan obeng untuk menutup tutup.
Itu dia, Stasiun Cuaca Pribadi Anda. Nyalakan sumber daya dan lihat suhu, kelembaban, tekanan dan intensitas cahaya kamar Anda dari mana saja di dunia melalui smartphone/PC/Laptop/Tablet Anda pada saluran pribadi ThingSpeak Anda.
Itu saja untuk Proyek ini. Beri komentar jika ada keraguan. Terima kasih telah membaca.
Kode
Kode
KodeArduino
#include <SoftwareSerial.h> #include <Wire.h> #include <dht.h> #include <Adafruit_BMP085.h> #define DEBUG 0 // change value to 1 to enable debuging using serial monitor #define dht_pin A0 // defining pin A0 for DHT sensor #define lightSensor A1 // defining pin A1 as input pin for LDR voltage divider dht DHT; Adafruit_BMP085 bmp; SoftwareSerial esp8266Module(10, 11); // RX, TX String network = "----"; // your access point SSID String password = "-------------"; // your wifi Access Point password #define IP "184.106.153.149" // IP address of thingspeak.com String GET = "GET /update?key=----------------"; // replace with your channel key void setup() { if(DEBUG){ Serial.begin(9600); // Setting hardware serial baud rate to 9600 } esp8266Module.begin(9600); // Setting softserial baud rate to 9600 if (!bmp.begin()) { if(DEBUG){ Serial.println("Could not find a valid BMP085 sensor, check wiring!"); } while (1) {} } delay(2000); } void loop() { setupEsp8266(); DHT.read11(dht_pin); double humi = DHT.humidity; double bmp_temp = bmp.readTemperature(); double bmp_pressure = bmp.readPressure(); int lightIntensity = analogRead(lightSensor); updateTemp(String(bmp_temp) ,String(lightIntensity),String(bmp_pressure),String(humi)); delay(30000); } //------------------------------------------------------------------- // Following function setup the esp8266, put it in station made and // connect to wifi access point. //------------------------------------------------------------------ void setupEsp8266() { if(DEBUG){ Serial.println("Reseting esp8266"); } esp8266Module.flush(); esp8266Module.println(F("AT+RST")); delay(7000); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("Found OK"); Serial.println("Changing espmode"); } esp8266Module.flush(); changingMode(); delay(5000); esp8266Module.flush(); connectToWiFi(); } else { if(DEBUG){ Serial.println("OK not found"); } } } //------------------------------------------------------------------- // Following function sets esp8266 to station mode //------------------------------------------------------------------- bool changingMode() { esp8266Module.println(F("AT+CWMODE=1")); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("Mode changed"); } return true; } else if(esp8266Module.find("NO CHANGE")){ if(DEBUG){ Serial.println("Already in mode 1"); } return true; } else { if(DEBUG){ Serial.println("Error while changing mode"); } return false; } } //------------------------------------------------------------------- // Following function connects esp8266 to wifi access point //------------------------------------------------------------------- bool connectToWiFi() { if(DEBUG){ Serial.println("inside connectToWiFi"); } String cmd = F("AT+CWJAP=\""); cmd += network; cmd += F("\",\""); cmd += password; cmd += F("\""); esp8266Module.println(cmd); delay(15000); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("Connected to Access Point"); } return true; } else { if(DEBUG){ Serial.println("Could not connect to Access Point"); } return false; } } //------------------------------------------------------------------- // Following function sends sensor data to thingspeak.com //------------------------------------------------------------------- void updateTemp(String voltage1,String voltage2,String voltage3,String voltage4) { String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += IP; cmd += "\",80"; esp8266Module.println(cmd); delay(5000); if(esp8266Module.find("Error")){ if(DEBUG){ Serial.println("ERROR while SENDING"); } return; } cmd = GET + "&field1=" + voltage1 + "&field2=" + voltage2 + "&field3=" + voltage3 + "&field4=" + voltage4 + "\r\n"; esp8266Module.print("AT+CIPSEND="); esp8266Module.println(cmd.length()); delay(15000); if(esp8266Module.find(">")) { esp8266Module.print(cmd); if(DEBUG){ Serial.println("Data sent"); } }else { esp8266Module.println("AT+CIPCLOSE"); if(DEBUG){ Serial.println("Connection closed"); } } }