Inhoudsopgave:
- Stap 1: Vereiste componenten
- Stap 2: Taal & Protocol
- Stap 3: Eclipse Mosquitto MQTT Broker
- Stap 4: Gegevensstroom in het hele project
- Stap 5: Aansluiting van sensoren met de NodeMCU
- Stap 6: Aansluiting van de dompelpomp met de ESP8266
- Stap 7: Mosquitto Broker installeren en Python-programma uitvoeren in Raspberry Pi
- Stap 8: Hoe MQTT werkt?
- Stap 9: Programmeren van NodeMCU en ESP8266
- Stap 10: Een webpagina ontwerpen en verbinding maken met de SQL-database
- Stap 11: Voltooi het werken
Video: Green House-automatisering: 11 stappen
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Kasautomatisering is een project waarbij drie parameters van een kas, namelijk bodemvocht, temperatuur en vochtigheid, door de gebruiker op afstand worden gecontroleerd door simpelweg een webbrowser te gebruiken.
Stap 1: Vereiste componenten
Enkele essentiële componenten die vereist zijn, worden hieronder vermeld:
1. Raspberry PI-model B
2. NodeMCU-ontwikkelbord
3. ESP8266 Wifi-module
4. Vochtsensor
5. DHT11 temperatuur- en vochtigheidssensor
6. 5V enkelkanaals relais
7. 5V onderwaterpomp
8. Broodplank
9. Broodplank voedingsmodule
Stap 2: Taal & Protocol
- C Taal wordt gebruikt voor de microcontrollers.
- MQTT Messaging: MQTT staat voor MQ Telemetry Transport. Het is een uiterst eenvoudig en lichtgewicht berichtenprotocol voor publiceren/abonneren, ontworpen voor beperkte apparaten en netwerken met lage bandbreedte, hoge latentie of onbetrouwbare netwerken. De ontwerpprincipes zijn om de netwerkbandbreedte en de vereisten voor apparaatbronnen te minimaliseren en tegelijkertijd te proberen de betrouwbaarheid en een zekere mate van leveringszekerheid te garanderen. Deze principes blijken het protocol ook ideaal te maken voor de opkomende "machine-to-machine" (M2M) of "Internet of Things"-wereld van verbonden apparaten, en voor mobiele toepassingen waar bandbreedte en batterijvermogen een premie zijn.
- Python-programma wordt gebruikt voor het automatiseren van de waterstroom en databaseconnectiviteit.
Stap 3: Eclipse Mosquitto MQTT Broker
Hier gebruikte ik de Mosquitto MQTT Broker voor de gemakkelijke berichtcommunicatie tussen de knooppunten.
Eclipse Mosquitto is een open source (EPL/EDL gelicentieerde) berichtenmakelaar die de MQTT-protocolversies 5.0, 3.1.1 en 3.1 implementeert. Mosquitto is lichtgewicht en geschikt voor gebruik op alle apparaten, van low power single board computers tot volledige servers.
Het MQTT-protocol biedt een lichtgewicht methode om berichten uit te voeren met behulp van een publish/subscribe-model. Dit maakt het geschikt voor Internet of Things-berichten zoals met low power sensoren of mobiele apparaten zoals telefoons, embedded computers of microcontrollers.
Het Mosquitto-project biedt ook een C-bibliotheek voor het implementeren van MQTT-clients, en de zeer populaire mosquitto_pub en mosquitto_sub opdrachtregel MQTT-clients.
Stap 4: Gegevensstroom in het hele project
In de bovenstaande afbeelding zijn de knooppunten:
- KnooppuntMCU
- Framboos PI
- ESP8266
NodeMCU is het sensorgedeelte van het Green House en de ESP8266 is het aandrijfgedeelte dat het water levert wanneer de grond water nodig heeft volgens de sensoren.
Raspberry PI bevat de Mosquitto Broker en een Python-client die de berichten van de MQTT Broker onderschrijft en de gegevens opslaat in een SQL-server.
Stap 5: Aansluiting van sensoren met de NodeMCU
De DHT11 temperatuur- en vochtigheidssensor en de watervochtigheidssensor kunnen werken op 3,3 volt.
NodeMCU kan niet meer dan 3,3 volt leveren. De sensoren kunnen dus rechtstreeks worden aangesloten op het NodeMCU-microcontrollerbord.
Stap 6: Aansluiting van de dompelpomp met de ESP8266
Een dompelpomp wordt gebruikt om het water te leveren wanneer dat nodig is.
Waterpomp heeft 5 volt voeding nodig voor zijn werking.
Een enkelkanaals relais is nodig om de motor aan te sluiten. Wanneer de GPIO2-pin van de ESP8266 wordt geactiveerd, wordt het relais ingeschakeld en levert het automatisch water met behulp van de dompelpomp.
Hier wordt externe voeding geleverd aan ESP8266-bord, relais en de dompelpomp.
Mijn volledige hardwareverbinding staat in bovenstaande afbeelding.
Stap 7: Mosquitto Broker installeren en Python-programma uitvoeren in Raspberry Pi
Hieronder volgen de stappen voor het installeren van de Mosquitto-makelaar in Raspberry PI
Open de terminal en typ de volgende opdrachten:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mug
sudo apt-get install mug-clients
Het zou automatisch de mug moeten starten.
De service die ik moest gebruiken stoppen en starten
sudo service stop mug
sudo service start mug
De meeste sites die ik ontdekte, gebruikten het formaat.
sudo /etc/init.d/mosquitto stop
Stap 8: Hoe MQTT werkt?
MQTT is een van de meest gebruikte protocollen in IoT-projecten. Het staat voor Message Queuing Telemetry Transport.
Bovendien is het ontworpen als een lichtgewicht berichtenprotocol dat gebruikmaakt van publicatie-/abonneerbewerkingen om gegevens uit te wisselen tussen clients en de server. Bovendien maken het kleine formaat, het lage stroomverbruik, de minimale datapakketten en het gemak van implementatie het protocol ideaal voor de "machine-to-machine" of "Internet of Things"-wereld.
Net als elk ander internetprotocol is MQTT gebaseerd op clients en een server. Evenzo is de server de man die verantwoordelijk is voor het afhandelen van de verzoeken van de klant om gegevens tussen elkaar te ontvangen of te verzenden. De MQTT-server wordt een broker genoemd en de clients zijn gewoon de aangesloten apparaten. Dus:
* Wanneer een apparaat (een client) gegevens naar de broker wil sturen, noemen we deze bewerking een "publiceren".
* Wanneer een apparaat (een klant) gegevens van de broker wil ontvangen, noemen we deze handeling een “subscribe”.
Stap 9: Programmeren van NodeMCU en ESP8266
Hieronder vindt u de broncode voor NodeMCU en ESP8266 Microcontroller-kaart:
Stap 10: Een webpagina ontwerpen en verbinding maken met de SQL-database
Webpagina is ontworpen met behulp van HTML, CSS en PHP-taal.
PHP wordt gebruikt om de sensormetingen uit de database te extraheren en op de HTML-pagina weer te geven.
Een python-programma wordt gebruikt als hart van dit project.
Werken die het python-programma doet, zijn als volgt.
- Het abonneert zich op een onderwerp waarin de sensor de sensormetingen verzendt.
- Het publiceert de opdracht waterpomp aan/uit naar de MQTT-makelaar.
- Het slaat de sensoruitlezing op in een SQL-database.
Hier is in mijn geval het python-programma en de SQL-database aanwezig in een laptop. De webpagina die via een lokale host loopt.
Hieronder volgt de broncode van mijn python-programma.
Stap 11: Voltooi het werken
Hieronder volgen de stappen waarin het proces verloopt.
- NodeMCU werkt als detectiegedeelte en leest de temperatuur, vochtigheid en het bodemvochtgehalte.
- Het stuurt de metingen naar de MQTT-makelaar met een onderwerp "Onderwerp 1"
- Op een laptop draait het python-programma en schrijft het zich in voor een onderwerp "Topic 1" met de MQTT-broker.
- Wanneer de NodeMCU de metingen verzendt, stuurt de Mosquitto MQTT Broker de gegevens onmiddellijk naar het python-programma.
- Python-programma berekent vervolgens of er water nodig is in het Groene Huis. Vervolgens slaat het de metingen op in de SQL-database.
- Als er water nodig is in het Groene Huis, publiceert het python-programma een aan/uit-bericht van de waterpomp naar de Mosquitto MQTT-makelaar met een onderwerp "Onderwerp 2"
- ESP8266 werkt als een actuator. Het schrijft zich in in het onderwerp "Topic 2" in welk onderwerp het python-programma het bericht publiceert. Wanneer het python-programma een bericht publiceert, wordt het bericht onmiddellijk overgebracht naar de ESP8266. Volgens het aan/uit-bericht heeft het de dompelpomp aan/uitgezet.
- Laatste fase om de live metingen op de webpagina weer te geven. De webpagina haalt de gegevens op uit de SQL-database waarin het python-programma de gegevens direct opslaat en geeft de meetwaarden op de pagina weer.