Jak zbudować prosty wentylator biurkowy
Niezależnie od tego, czy zbudujesz go z części wydrukowanych w 3D, czy z tektury, ten niedrogi wentylator biurkowy do samodzielnego montażu zapewni chłód Tobie i Twoim urządzeniom.
Ograniczony budżet niekoniecznie oznacza, że nie możesz podejmować się zaawansowanych projektów typu „zrób to sam”. Jeśli szukasz małego, niedrogiego i wygodnego modułu WiFi do skalowania projektów IoT, moduł ESP-01 to doskonały wybór. Jednak integracja takiego modułu z lekkim protokołem, takim jak MQTT, może być trudna, zwłaszcza jeśli nie masz doświadczenia w programowaniu IoT.
Programowanie samej płytki ESP-01 może być wyzwaniem w porównaniu z innymi modułami z serii ESP8266. Przyjrzyjmy się jednak podstawom całej konfiguracji sprzętu i oprogramowania potrzebnej do rozpoczęcia korzystania z modułu, a także jak skonfigurować MQTT w prosty i proceduralny sposób.
Zapoznanie się z tablicą
ESP8266 ESP-01 to mały i kompaktowy moduł WiFi, który jest dostarczany z chipem ESP8266EX, który jest wysoce zintegrowanym SoC przeznaczonym do zastosowań IoT.
Moduł zawiera jednoukładowy bezprzewodowy mikrokontroler ze stosem protokołów TCP/IP i może łączyć się z siecią bezprzewodową lub działać jako punkt dostępowy. Moduł ESP-01 posiada również złącze 2x4 pin, które zapewnia dostęp do pinów GPIO, zasilania i masy oraz interfejsu UART.
Konfigurowanie sprzętu
Moduł w ogóle nie jest przyjazny dla makiet. Dla wygody możesz kupić gotową kartę rozszerzeń lub po prostu zastosować staromodny sposób — używając przewodów połączeniowych i płytki stykowej.
Dostępny jest dedykowany programator, płyta modułu szeregowego ESP8266, która może ułatwić programowanie. Jeśli wolisz pójść tą drogą, DIYHOBI ma przydatny samouczek, jak wgrać program do modułu ESP-01 za pomocą programatora (w tym adaptera modułu konwertera USB na TTL CH340G).
Ale nadal możesz zaprogramować moduł za pomocą płyty Arduino. Spójrz na schemat obwodu poniżej w celach informacyjnych.
Chociaż może to wyglądać kusząco, generalnie nie zalecamy podłączania modułu bezpośrednio do styku 3,3 V Arduino, ponieważ wymaga on więcej prądu niż zapewnia styk. Zamiast tego podłącz Arduino 5 V do regulatora napięcia 3,3 V, takiego jak LM1117/LD117, a następnie zasil moduł WiFi z regulatora.
Nie łącz pinów VCC i CH_PD ESP z pinem 5V Arduino. Podłączenie modułu do zasilania 5V grozi jego uszkodzeniem.
Wszystkie kondensatory mają pojemność 10 uF , a rezystor to rezystor 1 K.
Wymagania Systemowe
Moduł ESP-01 jest powszechnie stosowany z platformą Arduino. W związku z tym konfiguracja oprogramowania jest dość prosta, zwłaszcza jeśli znasz Arduino C. Jednak jeśli jesteś bardziej zaznajomiony z Raspberry, istnieje wiele projektów Raspberry Pi IoT, które możesz wypróbować.
Oto podstawowe wymagania:
Musisz pamiętać, że posiadanie własnego serwera MQTT lokalnie zapewnia elastyczność w projektach.
Instalowanie niezbędnych bibliotek
Najpierw pobierz i zainstaluj Arduino IDE na swoim komputerze. Po zainstalowaniu otwórz Arduino IDE i przejdź do Plik > Preferencje .
W polu Dodatkowe adresy URL menedżera tablic wpisz następujący adres URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Kliknij OK, aby zamknąć okno Preferencje.
Następnie przejdź do Narzędzia > Tablica > Menedżer tablic .
Następnie wyszukaj esp8266 i zainstaluj pakiet płytki esp8266 — zawiera on wszystkie niezbędne biblioteki dla modułu ESP-01.
Aby zainstalować bibliotekę PubSubClient, przejdź do Szkic > Dołącz bibliotekę > Zarządzaj bibliotekami .
Wyszukaj PubSubClient i kliknij bibliotekę, aby ją zainstalować.
Po zainstalowaniu wszystkich niezbędnych bibliotek można przystąpić do programowania modułu ESP-01. Należy jednak zauważyć, że możesz użyć Wifi.h , który jest zawarty w bibliotece, lub pobrać bibliotekę ESPWifi.h i dołączyć ją do swojego szkicu.
Nawiązywanie połączenia między ESP-01 a brokerem MQTT
Broker MQTT to serwer, który działa jako pośrednik między klientami MQTT. Umożliwia klientom wysyłanie i odbieranie wiadomości między sobą za pośrednictwem modelu publikowania-subskrybowania.
Aby połączyć swój moduł ESP-01 z brokerem MQTT, musisz podać w swoim kodzie adres IP i numer portu brokera. Będziesz także musiał podać brokerowi unikalny identyfikator klienta, który identyfikuje twój moduł ESP-01.
Najpierw dołącz niezbędne biblioteki na górze szkicu
#include ESP8266WiFi.h> #include PubSubClient.h>
Następnie zdefiniuj szczegóły połączenia WiFi i MQTT.
const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* mqtt_server = "YOUR_MQTT_SERVER";
Nie zapomnij zastąpić symboli zastępczych własnymi danymi połączenia Wi-Fi i MQTT.
Następnie utwórz klienta Wi-Fi i połącz się z lokalną siecią Wi-Fi:
WiFiClient espClient; void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } }
Ta funkcja powinna być wywołana w funkcji setup() twojego szkicu.
Następnie musisz utworzyć klienta MQTT i połączyć się ze swoim brokerem MQTT:
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); } } }
Po połączeniu się z brokerem MQTT możesz rozpocząć publikowanie i subskrybowanie tematów.
Publikowanie danych z ESP-01 do MQTT Broker
Teraz, gdy pomyślnie połączyłeś moduł ESP01 z brokerem MQTT, przyjrzyjmy się, jak możesz opublikować dane z ESP-01 w brokerze.
Aby opublikować dane, użyj funkcji client.publish() w celu opublikowania wiadomości w temacie inTopic .
client.publish("inTopic", "Hello from ESP-01");
Spowoduje to opublikowanie wiadomości „Hello from ESP-01” w temacie inTopic .
Możesz również opublikować dane czujnika z ESP-01 do brokera. Na przykład, jeśli masz czujnik temperatury podłączony do ESP-01, możesz opublikować dane dotyczące temperatury w brokerze, jak pokazano poniżej.
float temperature = 25.5; String temperatureString = String(temperature); char temperatureChar[5]; temperatureString.toCharArray(temperatureChar, 5); client.publish("Temp", temperatureChar);
Spowoduje to opublikowanie danych temperatury w temacie Temp .
Dane mogą być publikowane w pętli lub w regularnych odstępach czasu, w zależności od wymagań projektu. Upewnij się, że nie zalewasz brokera zbyt dużą ilością danych i publikujesz w rozsądnych odstępach czasu.
Subskrybowanie tematów MQTT i odbieranie danych na temat ESP-01
Aby zasubskrybować temat, użyj funkcji client.subscribe() . W naszym przypadku poniżej klient subskrybuje temat outTopic .
client.subscribe("outTopic");
Po zasubskrybowaniu tematu możesz otrzymywać wiadomości publikowane w tym temacie za pomocą funkcji client.loop() w funkcji loop() na poniższym szkicu:
void loop() { if (!client.connected()) { reconnect(); } client.loop(); }
Spowoduje to ciągłe sprawdzanie nowych wiadomości i wykonywanie funkcji oddzwaniania po odebraniu nowej wiadomości.
Aby obsłużyć odebrane wiadomości, zdefiniuj funkcję wywołania zwrotnego, taką jak ta pokazana poniżej:
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(); }
Ta funkcja zostanie wywołana, gdy zostanie odebrana nowa wiadomość na subskrybowany temat. Wydrukuje odebraną wiadomość do monitora szeregowego.
Korzystanie z poziomów QoS (Quality of Service) i funkcji bezpieczeństwa
Jedną z najważniejszych technik stosowanych w obsłudze żądań jest stosowanie poziomów QoS (Quality of Service) dla komunikatów MQTT. Poziomy QoS określają, w jaki sposób broker i subskrybenci powinni obsługiwać twoje wiadomości. Istnieją trzy poziomy QoS: 0, 1 i 2.
Poziom QoS 0 jest najmniej niezawodny, ponieważ wiadomości są wysyłane tylko raz i nie ma gwarancji, że zostaną dostarczone do abonenta. Poziom QoS 1 jest bardziej niezawodny, ponieważ wiadomości są wysyłane co najmniej raz i mają gwarancję dostarczenia do abonenta co najmniej raz. Poziom QoS 2 jest najbardziej niezawodny, ponieważ wiadomości są wysyłane dokładnie raz i gwarantuje się, że zostaną dostarczone do abonenta dokładnie raz. Sposób, w jaki komunikują się Twoje urządzenia, jest zgodny z innymi typowymi problemami związanymi z bezpieczeństwem Internetu rzeczy (IoT) i poprawkami, z którymi chcesz być na bieżąco.
Aby użyć poziomów QoS, możesz określić żądany poziom podczas publikowania wiadomości za pomocą funkcji client.publish() :
client.publish("topic", "Hello, world!", 1);
Spowoduje to opublikowanie wiadomości Witaj, świecie! do tematu tematu z QoS poziom 1 .
Inną zaawansowaną techniką jest używanie wiadomości Last Will and Testament (LWT) . Komunikaty LWT to komunikaty wysyłane przez brokera, gdy klient nieoczekiwanie się rozłącza. Uważamy, że jest to ważne przy wykrywaniu urządzeń offline lub uruchamianiu działań, gdy urządzenie się rozłączy.
Aby użyć wiadomości LWT, możesz określić wiadomość LWT podczas łączenia się z brokerem za pomocą funkcji client.setWill() :
client.setWill("status", "offline", 1, true);
Spowoduje to ustawienie komunikatu LWT w trybie offline w temacie statusu z poziomem QoS 1 i flagą zachowania ustawioną na wartość true .
Przygotuj się do następnego projektu IoT
Moduł ESP-01 to niedrogie i kompaktowe rozwiązanie dla projektów IoT, a użycie go z MQTT może przenieść Twój projekt na wyższy poziom. Chociaż początkowa konfiguracja może być zniechęcająca, zalety MQTT, takie jak lekka komunikacja i wysoka skalowalność, sprawiają, że jest to opłacalna inwestycja.
Niezależnie od tego, czy zbudujesz go z części wydrukowanych w 3D, czy z tektury, ten niedrogi wentylator biurkowy do samodzielnego montażu zapewni chłód Tobie i Twoim urządzeniom.
Komercyjne maszyny do liofilizacji mogą być drogie, więc dlaczego nie zbudować własnej? Tak, to naprawdę można zrobić i dobrze pokazać, jak to zrobić.
Urządzenia IoT mogą robić fajne rzeczy, ale zasadniczą częścią równania jest sposób, w jaki się komunikują. Możesz sobie z tym poradzić za pomocą modułu ESP-01.