Kelembaban, Suhu, dan Tekanan adalah tiga parameter dasar untuk membangun Stasiun Cuaca dan mengukur kondisi lingkungan. Kami sebelumnya telah membangun Stasiun Cuaca mini menggunakan Arduino dan kali ini kami memperluas stasiun cuaca dengan Raspberry Pi. Proyek berbasis IoT ini bertujuan untuk menampilkan parameter Kelembaban, Suhu dan Tekanan saat ini pada LCD serta di server Internet menggunakan Raspberry Pi, yang menjadikannya sebagai Stasiun Cuaca Raspberry Pi. Anda dapat menginstal pengaturan ini di mana saja dan dapat memantau kondisi cuaca tempat itu dari mana saja di dunia melalui internet, ini tidak hanya akan menampilkan data saat ini tetapi juga dapat menunjukkan nilai-nilai masa lalu dalam bentuk Grafik.
Kami telah menggunakan DHT11 Humidity & temperature sensor untuk merasakan suhu dan modul sensor Pressure BM180 untuk mengukur tekanan barometrik. Termometer skala Celcius dan skala persentase Pengukur kelembaban menampilkan suhu dan kelembaban sekitar melalui layar LCD dan tekanan barometrik ditampilkan dalam milibar atau hPa (hektopascal). Semua data ini dikirim ke server ThingSpeak untuk pemantauan langsung dari mana saja di dunia melalui internet. Periksa Video Demonstrasi dan Program Python, yang diberikan di akhir tutorial ini.
Bekerja dan Pengaturan ThingSpeak:
Proyek berbasis IoT ini memiliki empat bagian. Pertama, sensor DHT11 mendeteksi Data Kelembaban & Suhu dan sensor BM180 mengukur tekanan atmosfer. Kedua, Raspberry Pi membaca keluaran modul sensor DHT11 dengan menggunakan protokol kawat tunggal dan keluaran sensor tekanan BM180 dengan menggunakan protokol I2C dan mengekstrak kedua nilai sensor tersebut menjadi angka yang sesuai dalam persentase (kelembaban), skala Celcius (suhu), hektoPascal atau millibar (tekanan). Ketiga, nilai-nilai ini dikirim ke server ThingSpeak dengan menggunakan Wi-Fi bawaan dari Raspberry Pi 3. Dan akhirnya ThingSpeak menganalisis data tersebut dan menampilkannya dalam bentuk Grafik. LCD juga digunakan untuk menampilkan nilai-nilai ini secara lokal.
ThingSpeak menyediakan alat yang sangat bagus untuk proyek berbasis IoT. Dengan menggunakan situs web ThingSpeak, kami dapat memantau data kami dan mengontrol sistem kami melalui Internet, menggunakan Saluran dan halaman web yang disediakan oleh ThingSpeak. ThingSpeak 'Mengumpulkan' data dari sensor, 'Menganalisis dan Memvisualisasikan' data dan 'Tindakan' dengan memicu reaksi. Kami sebelumnya sudah menjelaskan tentang pengiriman data ke ThingSpeak secara detail, anda bisa cek disana. Di sini kami menjelaskan secara singkat untuk menggunakan ThingSpeak untuk stasiun Cuaca Raspberry Pi ini.
Pertama, Anda perlu membuat akun di situs web ThingSpeak dan membuat 'Saluran baru' di dalamnya. Di saluran baru Anda harus menentukan beberapa bidang untuk data yang ingin Anda pantau, seperti dalam proyek ini kami akan membuat tiga bidang untuk data Kelembaban, Suhu dan Tekanan.
Sekarang klik pada tab 'API keys' dan simpan tombol Write and Read API, di sini kita hanya menggunakan tombol Write. Anda perlu menyalin kunci ini dalam variabel 'key' dalam Kode.
Setelah itu, klik 'Impor / Ekspor Data' dan salin URL Permintaan GET Umpan Saluran, yaitu:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Sekarang kita membutuhkan 'Feed Get Request URL' dalam kode Python kita untuk membuka "api.thingspeak.com" dan kemudian mengirim data menggunakan Permintaan Feed ini sebagai string kueri. Dan Sebelum mengirim data, pengguna perlu memasukkan data suhu, kelembaban, dan tekanan dalam kueri ini. String menggunakan variabel dalam program, periksa Kode di bagian akhir artikel ini.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (tekanan)
Kerja DHT11 didasarkan pada komunikasi serial kawat tunggal untuk mengambil data dari DHT11. Di sini kami telah menggunakan pustaka AdaFruit DHT11 untuk menghubungkan DHT11 dengan Raspberry Pi. Raspberry Pi di sini mengumpulkan data Kelembaban dan suhu dari DHT11 dan tekanan atmosfer dari sensor BMP180 kemudian mengirimkannya ke LCD 16x2 dan server ThingSpeak. ThingSpeak menampilkan Data dalam bentuk Graph seperti di bawah ini:
Anda dapat mempelajari lebih lanjut tentang Sensor DHT11 dan Antarmuka dengan Arduino di sini.
Diagram Sirkuit:
Konfigurasi Raspberry Pi dan Program Python:
Kami menggunakan bahasa Python di sini untuk Program. Sebelum melakukan coding, pengguna perlu mengkonfigurasi Raspberry Pi. Anda dapat memeriksa tutorial kami sebelumnya untuk Memulai dengan Raspberry Pi dan Menginstal & Mengkonfigurasi Raspbian Jessie OS di Pi.
Pertama-tama kita perlu menginstal file Library Sensor Adafruit Python DHT untuk menjalankan proyek ini di Raspberry Pi. Untuk melakukan ini kita perlu mengikuti perintah yang diberikan:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Setelah ini, pengguna perlu mengaktifkan Raspberry Pi I2C dengan masuk ke Konfigurasi Perangkat Lunak RPi Juga:
sudo raspi-config
Lalu pergi ke 'Advance Options', pilih 'I2C' dan 'Enable'.
Bagian pemrograman dari proyek ini memainkan peran yang sangat penting untuk melakukan semua operasi. Pertama-tama, kami menyertakan semua pustaka yang diperlukan, memulai variabel, dan menentukan pin untuk LCD dan DHT11.
import sys import RPi.GPIO sebagai GPIO import os import Adafruit_DHT import urllib2 import smbus import time dari ctypes import c_short #Register Address regCall = 0xAA……………..
Dalam fungsi def main () :, kode di bawah ini digunakan untuk mengirim data ke server dan menampilkannya melalui LCD, secara terus menerus dalam loop sementara .
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." sedangkan True: (humi, temp) = readDHT () (pressure) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, pressure)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (tekanan) cetak finalURL s = urllib2.urlopen (finalURL); cetak humi + "" + temp + "" + tekanan s.close () time.sleep (10)
Untuk LCD, fungsi def lcd_init () digunakan untuk menginisialisasi LCD dalam mode empat bit, fungsi def lcdcmd (ch) digunakan untuk mengirim perintah ke LCD, fungsi def lcddata (ch) digunakan untuk mengirim data ke LCD dan def lcdstring (Str ) berfungsi untuk mengirim data string ke LCD. Anda dapat memeriksa semua fungsi ini dalam Kode yang diberikan setelahnya.
Mengingat fungsi def readDHT () digunakan untuk membaca Sensor DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
Fungsi def readBmp180 digunakan untuk membaca tekanan dari sensor BM180. Sensor BM180 juga dapat memberikan suhu tetapi di sini kami hanya menggunakannya untuk menghitung tekanan.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Membaca data kalibrasi # Mengonversi data byte ke nilai kata AC1 = convert1 (value, 0) AC2 = convert1 (value, 2) AC3 = convert1 (nilai, 4) AC4 = convert2 (nilai, 6)……………………..
Jadi ini adalah Stasiun Cuaca Raspberry Pi dasar, Anda selanjutnya dapat memperluasnya untuk mengukur berbagai parameter terkait cuaca seperti kecepatan angin, suhu tanah, pencahayaan (lux), curah hujan, kualitas udara, dll.