Hoe een eenvoudige desktopventilator te bouwen
Of je hem nu bouwt met 3D-geprinte onderdelen of karton, deze goedkope doe-het-zelf-desktopventilator houdt jou en je apparaten koel.
Een beperkt budget hebben betekent niet noodzakelijk dat u geen geavanceerde doe-het-zelfprojecten kunt uitvoeren. Als u op zoek bent naar een kleine, betaalbare en handige WiFi-module om uw IoT-projecten op te schalen, dan is de ESP-01-module een uitstekende keuze. Het integreren van zo'n module met een lichtgewicht protocol zoals MQTT kan echter lastig zijn, vooral als je nieuw bent in de ontwikkeling van IoT.
Het programmeren van alleen het ESP-01-bord kan een uitdaging zijn in vergelijking met andere modules van de ESP8266-serie. Maar laten we eens kijken naar de basisprincipes van alle hardware- en software-instellingen die u nodig hebt om de module te gaan gebruiken en hoe u MQTT op een eenvoudige en procedurele manier instelt.
Kennismaking met het bestuur
ESP8266 ESP-01 is een kleine en compacte WiFi-module die wordt geleverd met een ESP8266EX-chip, een sterk geïntegreerde SoC die is ontworpen voor IoT-toepassingen.
De module bevat een single-chip draadloze microcontroller met een TCP/IP-protocolstack en kan verbinding maken met een draadloos netwerk of als toegangspunt fungeren. De ESP-01-module heeft ook een 2x4-pins header die toegang biedt tot de GPIO-pinnen, voeding en aarde, en UART-interface.
De hardware instellen
De module is helemaal niet breadboard-vriendelijk. Voor het gemak kunt u een kant-en-klaar uitbreidingsbord kopen of gewoon de ouderwetse manier gebruiken: met hulpdraden en een breadboard.
Er is een speciale programmeur, de ESP8266 seriële modulekaart, die uw programmeerervaring kan vergemakkelijken. Als je liever deze route volgt, heeft DIYHOBI een handige tutorial over hoe je een programma in de ESP-01-module kunt flashen met behulp van een programmer (inclusief de USB naar TTL CH340G Converter Module Adapter).
Maar u kunt de module nog steeds programmeren met behulp van een Arduino-bord. Kijk naar het schakelschema hieronder ter referentie.
Hoewel het er misschien verleidelijk uitziet, raden we over het algemeen niet aan om de module rechtstreeks op de 3,3 V-pin van de Arduino aan te sluiten, omdat er meer stroom nodig is dan de pin levert. Sluit in plaats daarvan de Arduino 5V aan op een 3,3V-spanningsregelaar zoals LM1117/LD117 en voed vervolgens de WiFi-module vanaf de regelaar.
Sluit de VCC- en CH_PD- pinnen van de ESP niet aan op de 5V- pin van de Arduino. Het aansluiten van de module op 5V voeding kan deze beschadigen.
Alle condensatoren zijn 10uF en de weerstand is een weerstand van 1K .
Softwarevereisten
De ESP-01-module wordt vaak gebruikt met het Arduino-platform. Als zodanig is het instellen van de software vrij eenvoudig, vooral als u bekend bent met Arduino C. Als u echter meer bekend bent met Raspberry, zijn er tal van Raspberry Pi IoT-projecten die u kunt proberen.
Dit zijn de basisvereisten:
U moet niet vergeten dat het lokaal hebben van uw eigen MQTT-server u flexibiliteit geeft binnen uw projecten.
De benodigde bibliotheken installeren
Download en installeer eerst de Arduino IDE op uw computer. Eenmaal geïnstalleerd, opent u de Arduino IDE en gaat u naar Bestand > Voorkeuren .
Voer in het veld Additionele Boards Manager-URL's de volgende URL in:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Klik op OK om het venster Voorkeuren te sluiten.
Ga vervolgens naar Tools > Board > Boards Manager .
Zoek vervolgens naar esp8266 en installeer het esp8266-bordpakket - dit bevat alle benodigde bibliotheken voor de ESP-01-module.
Ga naar Sketch > Include Library > Manage Libraries om de PubSubClient-bibliotheek te installeren .
Zoek naar PubSubClient en klik op de bibliotheek om deze te installeren.
Zodra u alle benodigde bibliotheken hebt geïnstalleerd, kunt u beginnen met het programmeren van de ESP-01-module. Een ding om op te merken is echter dat je de Wifi.h kunt gebruiken die in de bibliotheek is opgenomen, of de ESPWifi.h- bibliotheek kunt downloaden en in je schets kunt opnemen.
Een verbinding tot stand brengen tussen ESP-01 en MQTT Broker
Een MQTT-makelaar is een server die fungeert als tussenpersoon tussen MQTT-clients. Hiermee kunnen clients berichten naar en van elkaar verzenden en ontvangen via een publish-subscribe-model.
Om uw ESP-01-module aan te sluiten op een MQTT-broker, moet u het IP-adres en het poortnummer van de broker in uw code opgeven. U moet ook een uniek klant-ID opgeven dat uw ESP-01-module aan de makelaar identificeert.
Voeg eerst de benodigde bibliotheken toe aan de bovenkant van uw schets
#include ESP8266WiFi.h> #include PubSubClient.h>
Definieer vervolgens de wifi- en MQTT-verbindingsdetails.
const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* mqtt_server = "YOUR_MQTT_SERVER";
Vergeet niet de tijdelijke aanduidingen te vervangen door uw eigen wifi- en MQTT-verbindingsgegevens.
Maak daarna een wifi-client aan en maak verbinding met je lokale wifi-netwerk:
WiFiClient espClient; void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } }
Deze functie moet worden aangeroepen in de functie setup() van uw schets.
Vervolgens moet u een MQTT-client maken en verbinding maken met uw MQTT-broker:
PubSubClient client(espClient); void reconnect() { while (!client.connected()) { if (client.connect("ESP01", mqtt_user, mqtt_password)) { // Subscribe to a topic client.subscribe("test/topic"); } else { delay(5000); } } }
Zodra u verbinding heeft gemaakt met uw MQTT-makelaar, kunt u beginnen met het publiceren en abonneren op onderwerpen.
Gegevens publiceren van ESP-01 naar MQTT Broker
Nu u uw ESP01-module met succes hebt verbonden met de MQTT-makelaar, gaan we kijken hoe u gegevens van de ESP-01 naar de makelaar kunt publiceren.
Om gegevens te publiceren, gebruikt u de functie client.publish() om een bericht naar het inTopic- onderwerp te publiceren.
client.publish("inTopic", "Hello from ESP-01");
Hiermee wordt het bericht "Hallo van ESP-01" gepubliceerd in het inTopic- onderwerp.
U kunt ook sensorgegevens van de ESP-01 naar de makelaar publiceren. Als u bijvoorbeeld een temperatuursensor op uw ESP-01 heeft aangesloten, kunt u de temperatuurgegevens naar de makelaar publiceren zoals hieronder weergegeven.
float temperature = 25.5; String temperatureString = String(temperature); char temperatureChar[5]; temperatureString.toCharArray(temperatureChar, 5); client.publish("Temp", temperatureChar);
Hierdoor worden de temperatuurgegevens gepubliceerd in het Temp- onderwerp.
Gegevens kunnen in een lus of met regelmatige tussenpozen worden gepubliceerd, afhankelijk van de vereisten van uw project. Zorg ervoor dat u de makelaar niet overspoelt met te veel gegevens en dat u met redelijke tussenpozen publiceert.
Abonneren op MQTT-onderwerpen en gegevens ontvangen op ESP-01
Gebruik de functie client.subscribe() om u op een onderwerp te abonneren . Voor ons onderstaande geval abonneert de klant zich op het outTopic- onderwerp.
client.subscribe("outTopic");
Als u zich eenmaal op een onderwerp hebt geabonneerd, kunt u berichten ontvangen die voor dat onderwerp zijn gepubliceerd met behulp van de functie client.loop() in de functie loop() in de schets hieronder:
void loop() { if (!client.connected()) { reconnect(); } client.loop(); }
Dit zal continu controleren op nieuwe berichten en de callback-functie uitvoeren wanneer een nieuw bericht is ontvangen.
Definieer een terugbelfunctie zoals hieronder weergegeven om ontvangen berichten af te handelen:
void callback(char* topic, byte* payload, unsigned int length) { // Print the received message Serial.print("Message received on topic: "); Serial.print(topic); Serial.print(". Message: "); for (int i=0;i Serial.print((char)payload[i]); } Serial.println(); }
Deze functie wordt aangeroepen wanneer een nieuw bericht wordt ontvangen over het geabonneerde onderwerp. Het zal het ontvangen bericht naar de seriële monitor afdrukken.
QoS-niveaus (Quality of Service) en beveiligingsfuncties gebruiken
Een van de belangrijkste technieken die worden gebruikt bij het afhandelen van verzoeken, is het gebruik van QoS-niveaus (Quality of Service) voor uw MQTT-berichten. QoS-niveaus bepalen hoe de makelaar en abonnees met uw berichten moeten omgaan. Er zijn drie QoS-niveaus: 0, 1 en 2.
QoS-niveau 0 is het minst betrouwbaar, aangezien berichten slechts één keer worden verzonden en er niet gegarandeerd wordt dat ze bij de abonnee worden afgeleverd. QoS-niveau 1 is betrouwbaarder, omdat berichten minstens één keer worden verzonden en gegarandeerd minstens één keer bij de abonnee worden afgeleverd. QoS-niveau 2 is het meest betrouwbaar, omdat berichten precies één keer worden verzonden en gegarandeerd precies één keer bij de abonnee worden afgeleverd. De manier waarop uw apparaten communiceren, komt overeen met andere veelvoorkomende beveiligingsproblemen en oplossingen voor het Internet of Things (IoT) waarvan u op de hoogte wilt blijven.
Om QoS-niveaus te gebruiken, kunt u het gewenste niveau specificeren bij het publiceren van berichten met behulp van de client.publish() functie:
client.publish("topic", "Hello, world!", 1);
Hierdoor wordt het bericht Hallo wereld! naar het onderwerp onderwerp met QoS niveau 1 .
Een andere geavanceerde techniek is het gebruik van Last Will and Testament (LWT) berichten. LWT-berichten zijn berichten die door de broker worden verzonden wanneer een client onverwachts de verbinding verbreekt. Wij zijn van mening dat dit belangrijk is voor het detecteren van offline apparaten of voor het activeren van acties wanneer een apparaat de verbinding verbreekt.
Om LWT-berichten te gebruiken, kunt u het LWT-bericht specificeren wanneer u verbinding maakt met de broker met behulp van de functie client.setWill() :
client.setWill("status", "offline", 1, true);
Dit zal het LWT - bericht offline zetten op het statusonderwerp met QoS - niveau 1 en de bewaarvlag ingesteld op waar .
Bereid u voor op uw volgende IoT-project
De ESP-01-module is een betaalbare en compacte oplossing voor IoT-projecten, en het gebruik ervan met MQTT kan uw project naar een hoger niveau tillen. Hoewel de initiële installatie ontmoedigend kan zijn, maken de voordelen van MQTT, zoals lichtgewicht communicatie en hoge schaalbaarheid, het een waardevolle investering.
Of je hem nu bouwt met 3D-geprinte onderdelen of karton, deze goedkope doe-het-zelf-desktopventilator houdt jou en je apparaten koel.
Commerciële vriesdroogmachines kunnen duur zijn, dus waarom zou u er niet zelf een bouwen? Ja, het kan echt en we laten je zien hoe.
IoT-apparaten kunnen coole dingen doen, maar een essentieel onderdeel van de vergelijking is hoe ze communiceren. Dat regel je met een ESP-01 module.