IoT-thermometer met Python
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Apps en online services
|
Over dit project
De Zerynth-app
Zerynth App is een mobiele applicatie voor Android en iOS waarmee snel prototypen mogelijk is van grafische interfaces voor uw IoT-projecten .
Met de Zerynth-app kun je van elke mobiel een controller en display maken voor slimme objecten en IoT-systemen ! U kunt met name de aangesloten apparaten die met Zerynth zijn geprogrammeerd beheren en bedienen, waardoor een bidirectioneel communicatiekanaal tussen hen en uw mobiel mogelijk wordt.
In deze tutorial gaan we zien hoe je een eenvoudige maar krachtige IoT-thermometer ontwikkelt , met behulp van een door Zerynth aangedreven microcontroller met één bord en de Zerynth-app als afstandsbeeldscherm.
Benodigde materialen
Allereerst heb je een bord nodig. U kunt een van de 32-bits microcontroller-apparaten selecteren die door Zerynth worden ondersteund. We hebben gekozen voor de Flip&Click van Mikroelektronika, die veel van dezelfde kenmerken heeft als de populaire Arduino-platforms, waaronder de 32-bits AT91SAM3X8E van Microchip, de kern van Arduino Due.
Om de temperatuur te meten, hebben we de Temp&Hum Click gekozen, die is uitgerust met een HTS221-temperatuur- en relatieve vochtigheidssensor.
Om het bord met internet te verbinden, hebben we de WiFi PLUS Click gekozen, die is uitgerust met MRF24WB0MA - 2,4 GHz, IEEE std. 802.11 – compatibele module van Microchip , evenals MCW1001 begeleidende controller met on-board TCP/IP-stack en 802.11-verbindingsbeheer.
Last but not least, je hebt nodig:
- Zerynth Studio , onze krachtige IDE voor embedded programmering in Python die het IoT mogelijk maakt. Je kunt het hier downloaden.
- Zerynth-app . Je kunt het hier downloaden.
Uw IoT-thermometer in elkaar zetten
Flip&Click is het tweezijdige neefje van Arduino. Aan de ene kant is het een Arduino. Maar aan de andere kant vind je vier open mikroBUS-aansluitingen voor wat het bedrijf 'klikborden' noemt. In wezen zijn dit add-on-modules die lijken op Arduino-schilden, maar verkleind zodat je er zonder problemen een paar tegelijk op de Flip &click kunt passen. Voeg gewoon de Temp&Hum- en Wifi Plus-klikken toe aan het bord, respectievelijk op slot A en B.
De IoT-thermometer programmeren met Python
Kloon het voorbeeld
Nadat u Zerynth Studio heeft geïnstalleerd en een Zerynth-gebruiker heeft gemaakt, kunt u het voorbeeld 'Zerynth App Oscilloscope klonen “. Kijk hier voor meer informatie over het klonen van een voorbeeld.
Laten we eens kijken naar de originele code in de "main.py ”-bestand:hier ontwikkel je de logica van je Python script. We beginnen met de originele code en dan bewerken we het script om ons specifieke project te ontwikkelen.
############################################ ##################################### IoT-thermometer########### ###################################################################### ################### van draadloos import wifi# dit voorbeeld is gebaseerd op Particle Photon# verander de volgende regel om een ander wifi-stuurprogramma te gebruiken van broadcom.bcm43362 import bcm43362 als wifi_driverimport streamsimport adc # Importeer de Zerynth APP-bibliotheekvan zerynthapp import zerynthapp streams.serial() sleep(1000)print("STARTING...") try: # Device UID en TOKEN kunnen worden gemaakt in het ADM-paneel zapp =zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", log=True) # maak verbinding met het wifi-netwerk (Stel hieronder uw SSID en wachtwoord in) wifi_driver.auto_init() for i in range(0,5): try: wifi.link("SSID" ,wifi.WIFI_WPA2,"PASSWORD") break behalve Exception as e: print("Can't link",e) else: print("Impossible to link!") 1000 # Start de Zerynth-app-instantie! # Vergeet niet om een sjabloon te maken met de bestanden in de map "template" die u zojuist hebt gekloond # upload deze naar de ADM en koppel deze aan het aangesloten apparaat zapp.run() # Lees ADC en stuur waarden naar de ADM terwijl True: sleep( 1000) x =(adc.read(A4)*100)//4096 zapp.event({"data":x}) if x>95: # mobiele melding verzenden # (er is een limiet van één per minuut apparaat op de ADM-sandbox) zapp.notify("ALARM!","De waarde is groter dan 95!") behalve uitzondering als e: print(e)
In dit eenvoudige voorbeeld wordt een grafische oscilloscoop gevisualiseerd door de Zerynth-app met gegevens afkomstig van het aangesloten bord. Gegevens worden verkregen van een analoge sensor door de "analoge" pin A4.
Importeer de juiste wifi-driver en sensorbibliotheken
Zoals je kunt zien in de opmerkingen, is dit voorbeeld gebaseerd op het Particle Photon-bord en zijn wifi-stuurprogramma. Omdat we WiFi Plus Click willen gebruiken, moeten we de volgende regels wijzigen:
van broadcom.bcm43362 importeer bcm43362 als wifi_driver
in
van microchip.mcw1001a importeer mcw1001a als wifi_driver
en
wifi_driver.auto_init()
in
wifi_driver.init(SERIAL2,D24) # slot B
Dan willen we de temperatuursensor van de Temp&Hum Click gebruiken. We moeten dus de volgende regels toevoegen om de bibliotheek te importeren en de sensor in te stellen, zoals je kunt lezen in de documentatie:
# Importeer de HTS221-bibliotheek van stm.hts221 import hts221 temp_hum =hts221.HTS221(I2C0, D21) # slot A
Om de sensor te lezen, schrijft u gewoon de volgende regel, waar dit nodig is:
tmp, hum =temp_hum.get_temp_humidity() # Lees tmp en hum
Stel de SSID-naam en het PASWOORD in
Natuurlijk moet je ook de SSID-naam en het PASWOORD van het wifi-netwerk waarmee je het bord wilt verbinden, bewerken door deze regel te bewerken:
wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD")
Een verbonden apparaat maken en instellen
Nu moeten we een "verbonden apparaat" maken en de "zerynthapp" -instantie eraan koppelen. Hieronder zie je enkele screenshots met de nodige stappen. Bekijk dit document voor meer technische details.
De apparaatgegevens (UID en TOKEN ) kan rechtstreeks vanuit Zerynth Studio (ADM-paneel) worden gekopieerd en geplakt. “IP” is het ip-adres van de Zerynth ADM. Dit argument wordt gebruikt wanneer het netwerkstuurprogramma geen hostnaamomzetting ondersteunt, zoals in dit geval.
Maak, upload en stel de sjabloon in
Via de Zerynth-app kun je prachtige responsieve grafische gebruikersinterfaces gebruiken met behulp van HTML , CSS en JavaScript . Geen Android- of iOS-code nodig!
De grafische interface van elk apparaat wordt gehost op de Zerynth ADM-sandbox en bestaat uit een set HTML5-, Javascript-, CSS- en afbeeldingsbestanden die in de app worden geladen en weergegeven. Door de ADM Javascript-bibliotheek aan de sjabloon toe te voegen, kan de app communiceren met het aangesloten apparaat, zowel bij het ontvangen als het verzenden van berichten.
Sjablonen kunnen worden toegevoegd door op het respectieve "plus"-pictogram te klikken.
Upload vervolgens de sjabloon vanuit de speciale map. Merk op dat het bestand waarin de sjabloon is gedefinieerd "index.html . heet ” en u kunt het bewerken zoals u wilt. In dit geval kunt u het laten zoals het is.
Het script uplinken
Na een paar bewerkingen zou de code er als volgt uit moeten zien:
############################################ ##################################### IoT-thermometer########### ###################################################################### ################### van draadloos import wififrom microchip.mcw1001a import mcw1001a as wifi_driverimport streamsimport adc streams.serial() # Importeer de Zerynth APP-bibliotheekvan zerynthapp import zerynthapp # Importeer de HTS221 libraryfrom stm.hts221 import hts221 temp_hum =hts221.HTS221(I2C0, D21) # slot A sleep(1000)print("STARTING...") try: # Device UID en TOKEN kunnen worden gemaakt in het ADM-paneel zapp =zerynthapp. ZerynthApp("DEVICE UID", "DEVICE TOKEN",ip ="178.22.65.123", log=True) # maak verbinding met het wifi-netwerk (stel hieronder uw SSID en wachtwoord in) wifi_driver.init(SERIAL2,D24) # slot B voor i in range(0,5): try: wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD") break behalve Exception as e: koppelen!") while True: sleep(1000) # Start de Zerynth-app-instantie! # Vergeet niet om een sjabloon te maken met de bestanden in de map "template" die u zojuist hebt gekloond # upload deze naar de ADM en koppel deze aan het verbonden apparaat zapp.run() # Lees de sensor en stuur waarden naar de ADM terwijl True: sleep (1000) tmp, hum =temp_hum.get_temp_humidity() # Read tmp and hum print("Temp is:", tmp, "Humidity is:", hum) probeer: {zapp.event Uitzondering als e: print(e) if tmp>
30: # mobiele melding verzenden # (er is een limiet van één melding per minuut per apparaat op de ADM-sandbox) ") behalve Uitzondering als e: print(e) behalve Uitzondering als e: print(e)
Onthoud dat "APPARAAT-UID", "APPARAATTOKEN", "SSID" en "WACHTWOORD" moeten worden bewerkt zodat ze passen bij uw eigen parameters.
Op dit punt kun je het script uplinken naar je apparaat.
Hoe het IoT Thermometer-dashboard op de Zerynth-app te zien
Zoals je in deze zeer korte tutorial kunt lezen, hoef je alleen maar de Zerynth-app te openen, in te loggen en het specifieke apparaat te selecteren om je IoT Thermometer-dashboard te zien. Ten slotte kan de Zerynth-app ook pushmeldingen . ontvangen van de aangesloten apparaten. In dit geval verschijnt er een melding wanneer de temperatuur boven de drempel komt!
Als je vragen hebt, aarzel dan niet om een discussie te openen op het Zerynth-communityforum.
Veel plezier!
Code
- IoT-thermometer
IoT-thermometerPython
############################################### ################################## Zerynth App Oscilloscoop############# ###################################################################### ################# van draadloos import wififrom microchip.mcw1001a import mcw1001a as wifi_driverimport streamsimport adc streams.serial() # Importeer de Zerynth APP-bibliotheekvan zerynthapp import zerynthapp # Importeer de HTS221-bibliotheekvan stm .hts221 import hts221 temp_hum =hts221.HTS221(I2C0, D21) # slot A sleep(1000)print("STARTING...") try: # Device UID en TOKEN kunnen worden gemaakt in het ADM-paneel zapp =zerynthapp.ZerynthApp( "DEVICE UID", "DEVICE TOKEN",ip ="178.22.65.123", log=True) # maak verbinding met het wifi-netwerk (stel hieronder uw SSID en wachtwoord in) wifi_driver.init(SERIAL2,D24) # slot B for i in range(0,5): proberen: wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD") break behalve uitzondering als e: printe: printe:!") terwijl True: sleep(1000) # Start de Zerynth-app-instantie! # Vergeet niet om een sjabloon te maken met de bestanden in de map "template" die u zojuist hebt gekloond # upload deze naar de ADM en koppel deze aan het verbonden apparaat zapp.run() # Lees de sensor en stuur waarden naar de ADM terwijl True: sleep (1000) tmp, hum =temp_hum.get_temp_humidity() # Read tmp and hum print("Temp is:", tmp, "Humidity is:", hum) probeer: {zapp.event Uitzondering als e: print(e) if tmp> 30: # mobiele melding verzenden # (er is een limiet van één melding per minuut per apparaat op de ADM-sandbox) ") behalve Uitzondering als e: print(e) behalve Uitzondering als e: print(e)
Schema's
Productieproces
- Thermometer
- TMP006 Temperature Sensor Python Library met Raspberry pi,
- Python- en Raspberry Pi-temperatuursensor
- Het PSoC 6 Pioneer Board gebruiken met het Pioneer IoT Add-on Shield
- Hoe IoT de wereld om ons heen ontwricht
- Python installeren op Windows [Pycharm IDE]
- Python Bestand en Directory hernoemen met os.rename()
- Facebook Login met Python:FB Login Voorbeeld
- Python-gemiddelde:hoe het GEMIDDELDE van een lijst in Python te vinden?
- Converteer een string naar hoofdlettergebruik met Python
- Python - E-mail verzenden met SMTP