- Menginstal AWS IOT Device SDK untuk Python di Raspberry Pi:
- Diagram Sirkuit:
- Memprogram Raspberry Pi Anda:
- Menguji program python melalui Shell Window:
- Kerja:
Raspberry Pi selalu menjadi pilihan pertama untuk mengembangkan aplikasi berbasis IoT jika melibatkan beberapa level komputasi. Dengan fleksibilitas python dan komunitas pengembang yang kuat, sangat mudah untuk mengumpulkan, mencatat, menganalisis, atau melaporkan sekumpulan data menggunakan Pi. Dalam tutorial ini kita akan belajar bagaimana memadukan kekuatan Raspberry Pi dengan layanan Amazon AWS untuk mempublikasikan data secara online ke Internet.
Dalam tutorial ini, kita akan menggunakan sensor DHT11 untuk membaca nilai Temperatur dan Kelembaban, kemudian menghubungkan ke layanan AWS IOT dan memperbarui nilai sensor menggunakan AWS IOT SDK. Data ini kemudian dapat divisualisasikan di konsol Amazon IOT untuk memastikan kami mendapatkan data yang dipublikasikan ke internet.
Anda juga dapat menggunakan AWS Elastic Search Service untuk mengambil katup sensor ini dan menyimpannya dalam database lalu menggunakan layanan Dasbor Kibana untuk memvisualisasikan data sensor sebagai grafik yang diplot dengan rapi. Cukup Menarik? !!! Jadi, mari kita mulai…
Prasyarat:
Tutorial ini mengasumsikan bahwa Anda telah membuat akun AWS gratis dan mengetahui dasar-dasar tentang layanan AWS IoT seperti membuat sesuatu, sertifikat, kebijakan, dan mempublikasikan nilai dengan menggunakannya. Jika sebaliknya baca tutorial di bawah ini.
- Memulai dengan Amazon AWS IOT dengan MQTT.fx
Ini juga mengasumsikan bahwa Anda tahu cara menghubungkan sensor LCD dan DHT11 ke Raspberry Pi dan pustaka untuk melakukan hal yang sama sudah diinstal pada Pi Anda. Jika tidak, lanjutkan dengan tutorial di bawah ini.
- Interfacing DHT11 dengan Raspberry Pi
Di akhir tutorial di atas, Anda akan membuat sesuatu di AWS-IOT dan Anda juga harus memiliki alamat broker untuk barang Anda bersama dengan sertifikat yang diperlukan untuk mengakses barang Anda. Kami juga berasumsi bahwa Raspberry pi Anda sudah diatur dengan OS dan terhubung ke internet. Dengan ini, mari kita lanjutkan dengan tutorial. Jika Anda baru mengenal Raspberry Pi, lanjutkan ke Memulai dengan Raspberry pi terlebih dahulu.
Menginstal AWS IOT Device SDK untuk Python di Raspberry Pi:
Untuk menggunakan layanan AWS di Pi, kita dapat menginstal salah satu dari dua SDK. Salah satunya adalah JavaScript SDK yang menggunakan JavaScript sebagai bahasa pemrograman dan yang lainnya adalah Python SDK yang secara jelas menggunakan python sebagai bahasa pemrograman. Di sini kami memilih Python sebagai SDK kami karena kami sedikit lebih nyaman dengan Python daripada JavaScript.
Informasi lengkap tentang AWS IOT SDK tersedia di halaman GitHub-nya.
Langkah 1: Untuk menginstal SDK di Pi Anda, buka terminal dengan mengetik perintah berikut
git clone
Langkah 2: Ini seharusnya menginstal direktori aws di Pi Anda, sekarang arahkan ke dalamnya menggunakan perintah berikut.
cd aws - iot -perangkat- sdk -python
Langkah 3: Di dalam direktori instal file setup menggunakan baris di bawah ini
python setup.py install
Diagram Sirkuit:
Di sisi perangkat keras kami memiliki Raspberry Pi yang terhubung ke Sensor DHT11 dan layar LCD. DHT11 digunakan untuk mendapatkan nilai Temperatur dan Kelembaban dan LCD digunakan untuk menampilkan nilai dan informasi de-bugging. Diagram sirkuit untuk hal yang sama ditunjukkan di bawah ini.
Baik sensor LCD dan DHT11 bekerja dengan suplai + 5V jadi kami menggunakan pin 5V pada Raspberry Pi untuk memberi daya pada keduanya. Sebuah resistor pull up bernilai 1k digunakan pada pin keluaran sensor DHT11, jika anda menggunakan modul anda dapat menghindari resistor ini.
Sebuah pot penghias dari 10k ditambahkan ke pin Vee dari LCD untuk mengontrol tingkat kontras LCD. Selain itu, semua koneksinya cukup lurus ke depan. Tetapi catat pin GPIO mana yang Anda gunakan untuk menghubungkan pin karena kami akan membutuhkannya dalam program kami. Bagan di bawah ini memungkinkan Anda untuk mengetahui nomor pin GPIO.
Gunakan diagram dan buat koneksi Anda sesuai dengan diagram sirkuit. Saya menggunakan papan tempat memotong roti dan kabel jumper untuk membuat koneksi saya. Karena saya menggunakan modul, saya menghubungkannya langsung ke Raspberry Pi. Perangkat keras saya terlihat seperti ini di bawah
Memprogram Raspberry Pi Anda:
Dalam program python kami, kami harus membaca nilai suhu dan kelembaban, menampilkannya di layar LCD dan juga mempublikasikan kedua nilai tersebut ke hal Amazon IOT yang telah kami buat di tutorial sebelumnya. Jadi pastikan Anda telah membuatnya dan Anda memiliki ketiga file kunci dan alamat broker dari hal yang telah Anda buat.
Dalam program python kami, kami harus menautkan tiga file kunci sehingga Raspberry Pi dapat memperoleh akses untuk mempublikasikan nilai pada barang kami. Jadi salin ketiga file kunci dan tempelkan di desktop Raspberry pi Anda karena kami akan membutuhkan alamat jalur mereka di program kami.
Program python lengkap dapat ditemukan di bagian bawah halaman ini, Anda dapat menggunakan program setelah mengedit alamat broker dan direktori path sesuai dengan yang Anda buat. Lebih lanjut di bawah saya telah menjelaskan kode dalam potongan kecil.
Kami mulai dengan mengimpor perpustakaan yang diperlukan untuk proyek kami. Tiga perpustakaan utama adalah AWS SDK, perpustakaan LCD dan Perpustakaan DHT, pastikan Anda telah menginstal ketiga Pi Anda. The waktu dan datetime perpustakaan akan diinstal secara default.
dari AWSIoTPythonSDK.MQTTLib impor AWSIoTMQTTClient #import dari AWS-IOT Perpustakaan waktu impor # Untuk membuat delay dari datetime tanggal impor, datetime #untuk mendapatkan tanggal dan waktu impor Adafruit_CharLCD sebagai LCD #import perpustakaan LCD impor Adafruit_DHT #import DHT Perpustakaan untuk sensor
Pada baris berikutnya kita harus memberikan detail Hal seperti alamat Broker, nama klien dan jalur ke sertifikat dan file kunci. Di sini saya telah menggunakan nama klien sebagai new_Client Anda dapat menggunakan nama yang sama atau apapun pilihan Anda. Alamat broker harus diubah ke alamat hal yang Anda buat dan direktori path juga harus diubah sesuai dengan kebutuhan Anda. Selain 2 hal ini, Anda tidak perlu mengubah apa pun di baris berikut.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ESP.32_Temhing sertifikat" "/ home / pi / Desktop / ESP32_Thing certificate / private.pem.key", "/ home / pi / Desktop / ESP32_Thing certificate / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueing (-1) # Infinite offline Publikasikan antrian myMQTTClient. configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 detik myMQTTClient.configureMQTTOperationTimeout (5) # 5 detik
Selanjutnya kita harus menentukan detail pin dari koneksi kita. Nomor pin GPIO dari setiap pin dialokasikan ke namanya masing-masing. Di sini kami telah menggunakan sensor DHT pada pin 17 dan LCD dalam mode 4-bit. Kode yang sama ditunjukkan di bawah ini
sensor_name = Adafruit_DHT.DHT11 #kami menggunakan sensor DHT11 sensor_pin = 17 #Sensor terhubung ke GPIO17 pada Pi lcd_rs = 7 #RS LCD terhubung ke GPIO 7 pada PI lcd_en = 8 #EN LCD terhubung ke GPIO 8 pada PI lcd_d4 = 25 # D4 LCD terhubung ke GPIO 25 pada PI lcd_d5 = 24 # D5 LCD terhubung ke GPIO 24 pada PI lcd_d6 = 23 # D6 LCD terhubung ke GPIO 23 pada PI lcd_d7 = 18 # D7 LCD terhubung ke GPIO 18 pada PI lcd_backlight = 0 #LED tidak terhubung jadi kita tetapkan ke 0
Kemudian kami menginisialisasi LCD dan menampilkan pesan intro kecil di layar LCD. Setelah itu kami akan mencoba menghubungkan dengan hal AWS menggunakan alamat broker dan file kunci yang dimasukkan di atas. Jika koneksi berhasil maka LCD akan menampilkan “ Connected to AWS thing ” atau akan mencoba selama 10 detik dan jika gagal maka akan muncul pesan Error. Jika Anda menerima pesan kesalahan pastikan Anda telah membuat sesuatu dengan sukses dan telah menautkannya dengan benar dengan kode. Anda selalu dapat kembali ke tutorial sebelumnya untuk melihat apakah Anda telah membuatnya dengan benar di AWS.
if time.time () <connect_time: #try menghubungkan ke AWS selama 10 detik myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) print "MQTT Client connection success!" lcd.message ('Connected to \ n AWS thing') #if connected else: print "Error: Periksa detail AWS Anda di program" lcd.message ('Error: \ nDetail tidak valid') # jika tidak tersambung
Setelah koneksi berhasil dibuat, kami masuk ke loop sementara tak terbatas untuk mempublikasikan nilai waktu, suhu, dan Kelembaban sebagai muatan. Muatan di sini harus selalu berupa string dalam format JSON. Jadi pertama-tama kita membaca tanggal dan waktu saat ini dan menyimpannya dalam variabel dengan menggunakan baris di bawah ini
now = datetime.utcnow () #dapatkan tanggal dan waktu current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #dapatkan waktu saat ini dalam format string
Kemudian kami membaca nilai kelembaban dan suhu dari sensor DHT11 dan menampilkannya di layar LCD. Variabel kelembaban dan suhu akan menahan nilai kelembaban dan suhu masing-masing
kelembaban, suhu = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read dari sensor
dan menyimpan nilai masing-masing dalam varibale suhu dan kelembaban
lcd.clear () #Hapus layar LCD lcd.message ('Temp =%.1f C'% suhu) # Menampilkan nilai suhu lcd.message ('\ nHum =%.1f %%'% kelembaban) #Display nilai Humidity time.sleep (2) #Tunggu selama 2 detik lalu perbarui nilainya
Seperti yang diceritakan sebelumnya, payload harus dalam bentuk string dengan tanda kurung kurawal di sekitarnya kita tambahkan nilai date, time, temperature dan moisture setelah mengubah variabel menjadi string seperti gambar di bawah ini.
#prepare payload dalam format string payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "moisture":' + str (kelembaban) + '}'
Akhirnya setelah payload siap, kami harus mempublikasikannya ke Klien MQTT. Ini dapat dilakukan dengan menggunakan perintah myMQTTclient.publish . Saat mempublikasikan ke sesuatu kita juga harus memberinya nama, di sini saya menamakannya DHT11 / data tetapi Anda dapat menamainya apa pun yang Anda inginkan. Tetapi pastikan Anda mengingat namanya karena kami perlu berlangganan dari barang kami untuk melihat data.
Menguji program python melalui Shell Window:
Setelah program siap, luncurkan menggunakan pilihan Anda. Saya telah menggunakan Python IDE untuk meluncurkan program di jendela shell. Jika semuanya baik-baik saja, Anda harus mendapatkan koneksi pesan berhasil dan semua payload harus ditampilkan di jendela. Anda dapat memeriksa apakah nilai suhu dan kelembapan dibaca dengan benar. Muatan akan diperbarui setiap 5 detik. Jendela shell akan terlihat seperti ini di bawah
Jika Anda memiliki masalah pastikan Anda telah memberikan detail kunci yang benar dan alamat broker, juga periksa apakah hal tersebut dapat dihubungkan dengan menggunakan perangkat lunak MQTT.fx. Jika shell menampilkan koneksi MQTT Client berhasil dan hang di sana, itu berarti sensor DHT11 tidak merespons, periksa apakah Anda telah terhubung ke pin yang benar dan sensor berfungsi.
Kerja:
Setelah Anda meluncurkan program dan mendapatkan detail di atas di jendela shell, itu berarti program merespons dengan benar dan nilainya sedang diunggah ke server Amazon AWS. Anda juga dapat melihat layar LCD untuk memeriksa apakah tertulis Dipublikasikan ke AWS-IoT setiap 5 detik seperti yang ditunjukkan di bawah ini.
Kita bisa masuk ke aplikasi MQTT.fx dan berlangganan topik DHT11 / data . Maka kita harus bisa mendapatkan semua data yang sedang dipublikasikan oleh Raspberry Pi. Data ini juga akan diperbarui setiap 5 detik; layar MQTT Anda akan terlihat seperti ini di bawah
Seperti yang Anda lihat, payload sedang diterima di perangkat lunak MQTT seperti yang disorot dengan warna biru. Anda juga dapat menonton video di bawah ini untuk mengetahui cara kerja proyek tersebut. Karena sekarang kami memiliki data kami di internet, kami dapat menggunakannya dengan alat lain yang disediakan oleh Amazon seperti Pencarian elastis dan Lambda untuk menyimpan data dalam database atau memvisualisasikannya kemudian pada grafik. Ada lebih banyak aplikasi, berdasarkan bagaimana kita harus mendapatkan manfaat dari data tersebut.
Harap Anda memahami tutorial dan menikmati membangun sesuatu yang serupa, jika Anda memiliki masalah dalam menyelesaikan ini, posting di bagian komentar di bawah atau gunakan forum untuk bantuan teknis.