ESP8266 z DS18B20 w Lua: Prosty system monitoringu temperatury

ESP8266 z DS18B20 w Lua: Prosty system monitoringu temperatury
Autor Dawid Andrzejewski
Dawid Andrzejewski4 listopada 2024 | 7 min

ESP8266, DS18B20 i Lua to potężne połączenie w świecie Internetu Rzeczy (IoT). ESP8266 to mikrokontroler z Wi-Fi, często używany w projektach IoT. DS18B20 to precyzyjny czujnik temperatury. Lua to język programowania, który ułatwia pracę z tymi urządzeniami.

ESP8266 występuje w różnych wersjach, jak NodeMCU. Ma on wbudowany stabilizator napięcia i konwerter USB-UART. NodeMCU obsługuje Lua i ma 10 portów GPIO. DS18B20 mierzy temperaturę od -55°C do +125°C. Używa protokołu 1-Wire do komunikacji.

Programowanie w Lua jest proste dzięki gotowym bibliotekom. Można łatwo odczytywać dane z DS18B20 i wysyłać je do chmury. Taki zestaw świetnie sprawdza się w projektach monitorowania temperatury.

Najważniejsze informacje:
  • ESP8266 to mikrokontroler z Wi-Fi, idealny do IoT
  • DS18B20 to dokładny cyfrowy czujnik temperatury
  • Lua upraszcza programowanie ESP8266
  • NodeMCU to popularna wersja ESP8266 z wbudowanym USB
  • Połączenie ESP8266, DS18B20 i Lua pozwala łatwo tworzyć systemy monitorowania temperatury
  • Dane z czujnika można wysyłać do chmury lub lokalnego serwera

Przygotowanie środowiska do pracy z ESP8266 i DS18B20

Do stworzenia prostego systemu monitoringu temperatury z wykorzystaniem ESP8266, DS18B20 i Lua potrzebujemy kilku kluczowych komponentów. Oto lista niezbędnych elementów:

  • Moduł ESP8266 (np. NodeMCU)
  • Czujnik temperatury DS18B20
  • Rezystor podciągający 4.7kΩ
  • Płytka prototypowa i przewody połączeniowe

Instalacja środowiska programistycznego dla Lua na ESP8266 jest kluczowym krokiem. Najpierw należy pobrać i zainstalować ESPlorer - popularny edytor do programowania ESP8266 w Lua. To narzędzie umożliwia łatwe wgrywanie skryptów i monitorowanie działania modułu.

Następnie, trzeba wgrać firmware NodeMCU na ESP8266. Można to zrobić za pomocą narzędzia NodeMCU Flasher. Wybierz najnowszą stabilną wersję firmware'u zawierającą moduły 'file', 'gpio', 'net', 'node', 'tmr', 'uart', 'wifi' i 'ow' (one-wire dla DS18B20).

Schemat połączenia ESP8266 z czujnikiem DS18B20

Podłączenie ESP8266 z DS18B20 jest proste. Pin VCC czujnika łączymy z 3.3V ESP8266, GND z GND, a pin danych (DQ) z wybranym pinem GPIO ESP8266 (np. D4). Rezystor 4.7kΩ podłączamy między VCC a pin danych.

Pin DS18B20 Połączenie
VCC 3.3V ESP8266
GND GND ESP8266
DQ (dane) D4 (GPIO2) ESP8266

Czytaj więcej: Jak podłączyć i używać wyświetlacz Arduino: poradnik dla początkujących

Podstawy programowania ESP8266 w Lua

Lua na ESP8266 oferuje prosty i efektywny sposób programowania. Język ten jest interpretowany, co oznacza, że można testować kod "na żywo" bez konieczności kompilacji. To idealne rozwiązanie dla szybkiego prototypowania projektów IoT z ESP8266.

Specyfika Lua dla ESP8266 polega na wykorzystaniu dedykowanych modułów, które ułatwiają interakcję z sprzętem. Moduły takie jak 'gpio', 'wifi' czy 'tmr' pozwalają na łatwe sterowanie pinami, połączenie z siecią czy ustawianie timerów.

  • gpio - sterowanie pinami GPIO
  • wifi - konfiguracja i zarządzanie Wi-Fi
  • tmr - obsługa timerów
  • net - komunikacja sieciowa
  • ow - obsługa protokołu 1-Wire (dla DS18B20)

Inicjalizacja ESP8266 i konfiguracja Wi-Fi

Inicjalizacja modułu Wi-Fi jest pierwszym krokiem w większości projektów ESP8266 z Lua. Oto prosty kod konfigurujący Wi-Fi:


wifi.setmode(wifi.STATION)
wifi.sta.config({ssid="NazwaSieci", pwd="Hasło"})
wifi.sta.connect()

Implementacja komunikacji z czujnikiem DS18B20

Zdjęcie ESP8266 z DS18B20 w Lua: Prosty system monitoringu temperatury

Protokół 1-Wire, używany przez DS18B20, pozwala na komunikację z wieloma czujnikami przez jeden pin danych. To efektywne rozwiązanie dla projektów IoT z ESP8266, gdzie liczy się każdy pin.

Inicjalizacja czujnika DS18B20 wymaga użycia modułu 'ow'. Oto przykładowy kod:


pin = 4  -- GPIO2
ow.setup(pin)

Funkcje odczytu temperatury z DS18B20

Odczyt surowych danych z DS18B20 wymaga wysłania sekwencji komend przez 1-Wire. Lua upraszcza ten proces dzięki wbudowanym funkcjom.


function readTemp()
  ow.reset(pin)
  ow.select(pin, address)
  ow.write(pin, 0x44, 1)
  ow.reset(pin)
  ow.select(pin, address)
  data = ow.read(pin, 9)
  t = (data:byte(2) + data:byte(1) * 256) * 625
  return t / 10000
end

Pełny skrypt Lua do cyklicznego odczytu temperatury

Struktura pełnego skryptu obejmuje inicjalizację, funkcję odczytu temperatury i timer do cyklicznych pomiarów. Oto kompletny kod systemu monitoringu temperatury z ESP8266 i DS18B20 w Lua:


pin = 4
ow.setup(pin)

function readTemp()
  -- kod funkcji readTemp z poprzedniego przykładu
end

tmr.create():alarm(5000, tmr.ALARM_AUTO, function()
  t = readTemp()
  print("Temperatura: " .. t .. " °C")
  -- Tu można dodać kod do wysyłania danych
end)

Metody zapisywania i przesyłania danych temperaturowych

Lokalne zapisywanie danych na ESP8266 można realizować za pomocą systemu plików. Użyj modułu 'file' do tworzenia i zapisywania logów temperatury bezpośrednio na module.

Przesyłanie danych do chmury, na przykład do ThingSpeak, to popularne rozwiązanie w projektach IoT z ESP8266. Wymaga to utworzenia konta na ThingSpeak i uzyskania klucza API. Następnie, można użyć modułu 'http' do wysyłania danych.

Implementacja wysyłania danych do ThingSpeak


function sendToThingSpeak(temp)
  conn = net.createConnection(net.TCP, 0)
  conn:on("connection", function(conn, payload)
    conn:send("GET /update?api_key=TWÓJ_KLUCZ_API&field1=" .. temp .. " HTTP/1.1\r\n"
              .. "Host: api.thingspeak.com\r\n"
              .. "Connection: close\r\n"
              .. "Accept: */*\r\n\r\n")
  end)
  conn:connect(80, "api.thingspeak.com")
end

Rozwiązywanie typowych problemów

  • Brak odczytu temperatury: Sprawdź połączenia i rezystor podciągający
  • Błędy Wi-Fi: Zweryfikuj dane logowania i siłę sygnału
  • Niestabilne działanie: Użyj kondensatora 100μF między VCC a GND
  • Błędy w skrypcie Lua: Wykorzystaj funkcję print() do debugowania
  • Problemy z pamięcią: Optymalizuj kod, używaj zmiennych lokalnych
Ważne wskazówki dotyczące debugowania kodu Lua na ESP8266:
  • Używaj funkcji node.heap() do monitorowania dostępnej pamięci
  • Włącz tryb debug w ESPlorer dla szczegółowych komunikatów
  • Regularnie restartuj ESP8266 w kodzie, aby zapobiec problemom z pamięcią

Optymalizacja działania systemu monitoringu temperatury

Oszczędzanie energii jest kluczowe w projektach IoT z ESP8266. Wykorzystaj tryb głębokiego snu między odczytami temperatury. To znacząco wydłuży czas pracy na baterii.

Dla zwiększenia stabilności, rozważ dodanie kondensatora 1000μF między VCC a GND. Pomoże to wygładzić wahania napięcia i zapobiec przypadkowym restartom.

Implementacja trybu głębokiego snu


function goToSleep()
  print("Idę spać na 5 minut...")
  node.dsleep(300e6)  -- 300 sekund (5 minut)
end

tmr.create():alarm(10000, tmr.ALARM_SINGLE, function()
  t = readTemp()
  sendToThingSpeak(t)
  goToSleep()
end)

Rozszerzenia i modyfikacje projektu

System monitoringu temperatury z ESP8266, DS18B20 i Lua można łatwo rozszerzyć. Dodaj więcej czujników, zaimplementuj alarmy temperatury lub integruj z systemem automatyki domowej.

Rozszerzenie Zastosowanie
Dodatkowe czujniki Monitoring wielu punktów
Wyświetlacz OLED Lokalne wyświetlanie danych
Moduł przekaźnika Sterowanie ogrzewaniem
Integracja z MQTT Zaawansowana komunikacja IoT

Kluczowe aspekty budowy systemu monitoringu temperatury z ESP8266, DS18B20 i Lua

Połączenie ESP8266, DS18B20 i Lua tworzy potężne narzędzie do monitorowania temperatury w projektach IoT. Proces rozpoczyna się od przygotowania środowiska, obejmującego instalację odpowiedniego oprogramowania i połączenie komponentów. Kluczowym elementem jest prawidłowa konfiguracja Wi-Fi oraz implementacja komunikacji z czujnikiem DS18B20 za pomocą protokołu 1-Wire.

Skrypt Lua umożliwia cykliczny odczyt temperatury i przesyłanie danych do chmury, np. ThingSpeak. Optymalizacja systemu poprzez wykorzystanie trybu głębokiego snu znacząco wydłuża czas pracy na baterii. Rozwiązywanie typowych problemów i debugowanie kodu są nieodłączną częścią procesu tworzenia niezawodnego systemu monitoringu.

Projekt ten stanowi solidną podstawę do dalszych rozszerzeń, takich jak dodanie większej liczby czujników czy integracja z systemami automatyki domowej. Dzięki elastyczności Lua i ESP8266, możliwości modyfikacji i dostosowania systemu do indywidualnych potrzeb są praktycznie nieograniczone.

Źródło:

[1]

https://www.instructables.com/Low-cost-WIFI-temperature-data-logger-based-on-ESP/

[2]

https://www.jarzebski.pl/arduino/arduino-i-klony/nodemcu-v2-esp8266-lua.html

[3]

https://github.com/StormTrooper/ESP8266-Temperature-Sensor/blob/master/ds18b20.lua

[4]

http://feriar-lab.pl/kurs-esp8266-ds18b20/

[5]

https://nodemcu.readthedocs.io/en/release/lua-modules/ds18b20/

5 Podobnych Artykułów

  1. Internet w Albanii: Co musisz wiedzieć o dostępności i prędkości
  2. Baterie 1,5 V: Wszystko o typach, zastosowaniach i wyborze
  3. Inspirujące projekty Raspberry Pi: od prostych do zaawansowanych
  4. Jaki Samsung wybrać? Przegląd najlepszych i wartych uwagi modeli
  5. Aparatura RC: Wybór i Zastosowanie w Modelarstwie Zdalnym
tagTagi
shareUdostępnij artykuł
Autor Dawid Andrzejewski
Dawid Andrzejewski

Jako entuzjasta nowych technologii i założyciel portalu poświęconego elektronice, moja przygoda zaczęła się od młodzieńczych eksperymentów z pierwszym komputerem. Ta pasja przerodziła się w profesjonalną ścieżkę kariery inżyniera elektronika, co pozwoliło mi zgłębić tajniki najnowszych technologicznych innowacji. Na moim portalu dzielę się wiedzą i doświadczeniem, oferując czytelnikom szczegółowe recenzje, poradniki DIY i analizy trendów w elektronice. Moim celem jest ułatwienie zrozumienia złożonych koncepcji technicznych, inspirowanie do twórczego wykorzystania elektroniki w codziennym życiu oraz promowanie bezpiecznego i świadomego korzystania z nowych technologii. Wierzę, że dzielenie się wiedzą to klucz do budowania społeczności pasjonatów, którzy, tak jak ja, chcą nieustannie odkrywać możliwości, jakie niesie ze sobą postęp technologiczny.

Oceń artykuł
rating-fill
rating-fill
rating-fill
rating-fill
rating-fill
Ocena: 0.00 Liczba głosów: 0

Komentarze(0)

email
email

Polecane artykuły