Membangun Termometer IoT dengan Python: Panduan Lengkap
Komponen dan Perlengkapan
MikroE Flip & Click
×
1
Arduino Due
×
1
Particle Photon
×
1
Papan Breakout NodeMCU ESP8266
×
1
SparkFun Photon RedBoard
×
1
MikroE Temp&Hum Click
×
1
MikroE WiFi Plus Click
×
1
Espressif Wemos D1 Mini
×
1
Arduino Zero
×
1
Aplikasi dan Layanan Online
Zerynth Studio
Tentang Proyek Ini
Aplikasi Zerynth
Aplikasi Zerynth adalah aplikasi seluler untuk Android dan iOS yang memungkinkan prototyping cepat dari antarmuka grafis untuk proyek IoT Anda.
Dengan Aplikasi Zerynth Anda dapat mengubah ponsel mana saja menjadi pengontrol dan layar untuk objek pintar dan sistem IoT! Secara khusus, Anda dapat mengelola dan mengontrol perangkat yang terhubung yang diprogram dengan Zerynth, mengaktifkan saluran komunikasi dua arah antara mereka dan ponsel Anda.
Dalam tutorial ini, kita akan melihat cara mengembangkan termometer IoT yang sederhana tetapi canggih, menggunakan mikrokontroler papan tunggal yang didukung Zerynth dan Aplikasi Zerynth sebagai layar jarak jauh.
Bahan yang Diperlukan
Pertama-tama, Anda membutuhkan papan. Anda dapat memilih salah satu dari 32 perangkat mikrokontroler bit yang didukung oleh Zerynth. Kami telah memilih Flip&Click oleh Mikroelektronika, yang berbagi banyak atribut yang sama dengan platform Arduino populer, termasuk 32-bit AT91SAM3X8E oleh Microchip, inti dari Arduino Due.
Untuk mengukur suhu kami telah memilih Temp&Hum Click, yang membawa sensor suhu dan kelembaban relatif HTS221.
Untuk menghubungkan papan ke internet kami telah memilih WiFi PLUS Click, yang menampilkan modul MRF24WB0MA – 2.4GHz, IEEE std. 802.11 – yang sesuai dari Microchip, serta pengontrol pendamping MCW1001 dengan stack TCP/IP bawaan dan manajer koneksi 802.11.
Terakhir tetapi tidak kurang penting, Anda membutuhkan:
Zerynth Studio, IDE kami yang canggih untuk pemrograman terbenam dalam Python yang mengaktifkan IoT. Anda dapat mengunduhnya di sini.
Aplikasi Zerynth. Anda dapat mengunduhnya di sini.
Mengatur Termometer IoT Anda
Flip&Click adalah sepupu dua sisi Arduino. Di satu sisi itu adalah Arduino. Namun di sisi lain, Anda akan menemukan empat soket mikroBUS terbuka untuk apa yang disebut perusahaan sebagai “click boards.” Pada dasarnya, ini adalah modul tambahan yang mirip dengan shield Arduino, tetapi dikecilkan sehingga Anda dapat memasang beberapa pada Flip & click tanpa masalah apa pun. Cukup tambahkan Temp&Hum dan Wifi Plus clicks ke papan, masing-masing di slot A dan B.
Cara Memrogram Termometer IoT menggunakan Python
Kloning Contoh
Setelah Anda menginstal Zerynth Studio dan membuat pengguna Zerynth, Anda dapat mengkloning contoh “Zerynth App Oscilloscope“. Lihat di sini untuk mempelajari cara mengkloning contoh.
Mari kita lihat kode asli dalam file “main.py”: inilah tempat Anda mengembangkan logika skrip Python Anda. Kami akan mulai dari kode asli lalu mengedit skrip untuk mengembangkan proyek spesifik kami.
################################################################################ # IoT Thermometer ################################################################################ from wireless import wifi # this example is based on Particle Photon # change the following line to use a different wifi driver from broadcom.bcm43362 import bcm43362 as wifi_driver import streams import adc # Import the Zerynth APP library from zerynthapp import zerynthapp streams.serial() sleep(1000) print("STARTING...") try: # Device UID and TOKEN can be created in the ADM panel zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", log=True) # connect to the wifi network (Set your SSID and password below) wifi_driver.auto_init() for i in range(0,5): try: wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD") break except Exception as e: print("Can't link",e) else: print("Impossible to link!") while True: sleep(1000) # Start the Zerynth app instance! # Remember to create a template with the files under the "template" folder you just cloned # upload it to the ADM and associate it with the connected device zapp.run() # Read ADC and send values to the ADM while True: sleep(1000) x = (adc.read(A4)*100)//4096 zapp.event({"data":x}) if x>95: # send mobile notification # (there is a limit of one notification per minute per device on the ADM sandbox) zapp.notify("ALARM!","The value is greater than 95!") except Exception as e: print(e)
Dalam contoh sederhana ini, osiloskop grafis divisualisasikan oleh Aplikasi Zerynth dengan data yang datang dari papan yang terhubung. Data diperoleh dari sensor analog oleh pin “analog” A4.
Impor driver wifi dan library sensor yang tepat
Seperti yang Anda lihat dalam komentar, contoh ini didasarkan pada papan Particle Photon dan driver wifi-nya. Karena kita ingin menggunakan WiFi Plus Click, kita harus mengubah baris berikut:
from broadcom.bcm43362 import bcm43362 as wifi_driver
ke
from microchip.mcw1001a import mcw1001a as wifi_driver
dan
wifi_driver.auto_init()
ke
wifi_driver.init(SERIAL2,D24) # slot B
Kemudian, kita ingin menggunakan sensor suhu dari Temp&Hum Click. Jadi, kita harus menambahkan baris berikut untuk mengimpor library dan menyiapkan sensor, seperti yang dapat Anda baca dalam dokumentasi:
# Import the HTS221 library from stm.hts221 import hts221 temp_hum = hts221.HTS221(I2C0, D21) # slot A
Untuk membaca sensor, cukup tulis baris berikut, di mana diperlukan:
tmp, hum = temp_hum.get_temp_humidity() # Read tmp and hum
Siapkan nama SSID dan PASSWORD
Tentu saja, Anda juga harus mengedit nama SSID dan PASSWORD dari jaringan wifi yang ingin Anda hubungkan ke papan, dengan mengedit baris ini:
wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD")
Buat dan siapkan perangkat terhubung
Sekarang kita harus membuat “perangkat terhubung” dan menghubungkan instance “zerynthapp” ke itu. Di bawah ini Anda dapat melihat beberapa tangkapan layar dengan langkah yang diperlukan. Lihat dokumen ini untuk detail teknis lebih lanjut.
Kredensial perangkat (UID dan TOKEN) dapat disalin dan ditempel langsung dari Zerynth Studio (panel ADM). “IP” adalah alamat ip Zerynth ADM. Argumen ini digunakan ketika driver jaringan tidak mendukung resolusi nama host, seperti dalam kasus ini.
Buat, unggah, dan atur template
Melalui Aplikasi Zerynth Anda dapat menjalankan Antarmuka Pengguna Grafis yang responsif dan indah menggunakan HTML, CSS dan JavaScript. Tidak perlu kode Android atau iOS!
Antarmuka grafis setiap perangkat dihosting di sandbox Zerynth ADM dan terdiri dari serangkaian file HTML5, Javascript, CSS dan gambar yang dimuat dan ditampilkan di aplikasi. Menambahkan Library Javascript ADM ke template memungkinkan aplikasi untuk berinteraksi dengan perangkat yang terhubung baik menerima maupun mengirim pesan.
Template dapat ditambahkan dengan mengklik ikon “plus” yang sesuai.
Kemudian unggah template dari folder khusus. Perhatikan bahwa file tempat template didefinisikan disebut “index.html” dan Anda dapat mengeditnya sesuai keinginan. Dalam kasus ini, Anda dapat membiarkannya seperti apa adanya.
Uplink skrip
Setelah beberapa edit, kode harus terlihat seperti ini:
################################################################################ # IoT Thermometer ################################################################################ from wireless import wifi from microchip.mcw1001a import mcw1001a as wifi_driver import streams import adc streams.serial() # Import the Zerynth APP library from zerynthapp import zerynthapp # Import the HTS221 library from stm.hts221 import hts221 temp_hum = hts221.HTS221(I2C0, D21) # slot A sleep(1000) print("STARTING...") try: # Device UID and TOKEN can be created in the ADM panel zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN",ip = "178.22.65.123", log=True) # connect to the wifi network (Set your SSID and password below) wifi_driver.init(SERIAL2,D24) # slot B for i in range(0,5): try: wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD") break except Exception as e: print("Can't link",e) else: print("Impossible to link!") while True: sleep(1000) # Start the Zerynth app instance! # Remember to create a template with the files under the "template" folder you just cloned # upload it to the ADM and associate it with the connected device zapp.run() # Read the sensor and send values to the ADM while True: sleep(1000) tmp, hum = temp_hum.get_temp_humidity() # Read tmp and hum print("Temp is:", tmp, "Humidity is:", hum) try: zapp.event({"data":tmp}) except Exception as e: print(e) if tmp>30: # send mobile notification # (there is a limit of one notification per minute per device on the ADM sandbox) try: zapp.notify("ALARM!","High Temperature!") except Exception as e: print(e) except Exception as e: print(e)
Ingatlah bahwa “DEVICE UID”, “DEVICE TOKEN”, “SSID” dan “PASSWORD” harus diedit untuk cocok dengan parameter Anda sendiri.
Pada titik ini, Anda dapat mengunggah skrip ke perangkat Anda.
Cara melihat dasbor Termometer IoT di Aplikasi Zerynth
Seperti yang Anda baca dalam tutorial yang sangat singkat ini, Anda hanya perlu membuka Aplikasi Zerynth, masuk dan pilih perangkat tertentu untuk melihat dasbor Termometer IoT Anda. Terakhir, Aplikasi Zerynth juga dapat menerima push notifications dari perangkat yang terhubung. Dalam kasus ini, notifikasi akan muncul ketika suhu lebih besar dari ambang!
Jika Anda memiliki pertanyaan jangan ragu untuk membuka diskusi di forum komunitas Zerynth.
Enjoy!
Kode
Termometer IoT
Termometer IoTPython
################################################################################ # Zerynth App Oscilloscope ################################################################################ from wireless import wifi from microchip.mcw1001a import mcw1001a as wifi_driver import streams import adc streams.serial() # Import the Zerynth APP library from zerynthapp import zerynthapp # Import the HTS221 library from stm.hts221 import hts221 temp_hum = hts221.HTS221(I2C0, D21) # slot A sleep(1000) print("STARTING...") try: # Device UID and TOKEN can be created in the ADM panel zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN",ip = "178.22.65.123", log=True) # connect to the wifi network (Set your SSID and password below) wifi_driver.init(SERIAL2,D24) # slot B for i in range(0,5): try: wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD") break except Exception as e: print("Can't link",e) else: print("Impossible to link!") while True: sleep(1000) # Start the Zerynth app instance! # Remember to create a template with the files under the "template" folder you just cloned # upload it to the ADM and associate it with the connected device zapp.run() # Read the sensor and send values to the ADM while True: sleep(1000) tmp, hum = temp_hum.get_temp_humidity() # Read tmp and hum print("Temp is:", tmp, "Humidity is:", hum) try: zapp.event({"data":tmp}) except Exception as e: print(e) if tmp>30: # send mobile notification # (there is a limit of one notification per minute per device on the ADM sandbox) try: zapp.notify("ALARM!","High Temperature!") except Exception as e: print(e) except Exception as e: print(e)