Micropython

Rozpoczynamy MicroPython na ESP32-C3

dobra, zaczynamy na nowo ! Teraz micropython i programowanie esp32-c3

Świetnie! 👍 Cieszę się, że zaczynamy przygodę zMicroPythonem na ESP32-C3! To potężny, ale niedrogi mikrokontroler z obsługą Wi-Fi i Bluetooth LE (BLE), idealny do projektów IoT.

1. Przygotowanie środowiska

Najpierw musimyzainstalować MicroPythona na ESP32-C3 i skonfigurować narzędzia.

Potrzebne elementy:

  1. PłytkaESP32-C3 (np. ESP32-C3-DevKitM-1)
  2. Kabel USB → USB-C (do połączenia i zasilania)
  3. Narzędzie do flashowania (np.esptool)

Kroki:

  1. Pobierz firmware MicroPython dla ESP32-C3:
  2. Oficjalne buildy:micropython.org/download/ESP32_C3/
  3. Wybierz najnowszą wersję (np.esp32c3-20240105-v1.22.0.bin).
  4. Wgraj firmware za pomocąesptool:
  5. bash
esptool.py –chip esp32c3 –port COMx erase_flash # (Zastąp COMx swoim portem)
esptool.py –chip esp32c3 –port COMx –baud 460800 write_flash 0x0 firmware.bin
  1. Podłącz się do REPL (interaktywnego terminala):
  2. UżyjPuTTY,Thonny lubscreen (Linux/Mac):
  3. bash
screen /dev/ttyUSB0 115200 # (Linux/Mac)
  1. Powinien pojawić się prompt>>> – gotowe! 🎉

2. Pierwszy program: migająca dioda LED

Wbudowana dioda LED na ESP32-C3 jest zwykle podłączona do pinuGPIO8 (sprawdź dokumentację swojej płytki).

Kod w MicroPythonie:

python

from machine import Pin
import time
led = Pin(8, Pin.OUT) # GPIO8 jako wyjście
while True:
led.on() # Włącz LED
time.sleep(0.5) # Czekaj 0.5s
led.off() # Wyłącz LED
time.sleep(0.5) # Czekaj 0.5s

Jak uruchomić?

  1. Wklej kod w REPL lub zapisz jakomain.py na urządzeniu, aby automatycznie startował po resecie.

3. Wi-Fi i HTTP request

ESP32-C3 ma wbudowany moduł Wi-Fi. Przykład połączenia z siecią:

python

import network
import time
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(“TwojeSSID”, “TwojeHasło”)
while not wlan.isconnected():
print(“Łączenie…”)
time.sleep(1)
print(“Połączono! IP:”, wlan.ifconfig()[0])

4. Przydatne zasoby

  1. Oficjalna dokumentacja MicroPython
  2. ESP32-C3 Pinout
  3. Thonny IDE – wygodne środowisko do programowania MicroPythona

Co dalej?

  1. Czujniki i IoT: Podłącz czujnik temperatury (np. DHT22) i wysyłaj dane do chmury (MQTT/HTTP).
  2. BLE: Stwórz prosty beacon Bluetooth Low Energy.
  3. WebServer: Postaw serwer HTTP na ESP32-C3.

Chcesz zgłębić któryś temat? Daj znać! 🚀

a jak to zapisac ? uzywam linuxa manjaro

Świetnie, że używasz Manjaro! 🐧 Poniżej znajdziesz szczegółowy przewodnik, jakzapisać program na ESP32-C3 w MicroPythonie, korzystając z systemu Linux (Manjaro).

1. Instalacja niezbędnych narzędzi

Najpierw upewnij się, że masz zainstalowane:

  1. esptool – do wgrywania firmware,
  2. rshell lubampy – do przesyłania plików na ESP32-C3,
  3. screen – do interakcji z REPL (opcjonalnie, jeśli nie używasz Thonny).

Instalacja w Manjaro (via pacman):

bash

sudo pacman -S python-pip python-esptool screen # Instalacja podstawowych narzędzi
pip install adafruit-ampy # AMPY do przesyłania plików

2. Podłącz ESP32-C3 i sprawdź port

Podłącz płytkę przez USB i sprawdź, jaki port został przypisany:

bash

ls /dev/ttyUSB* # Zwykle /dev/ttyUSB0 lub /dev/ttyACM0

Jeśli nie widzisz portu, sprawdź, czy system rozpoznał urządzenie:

bash

dmesg | grep -i usb # Szukaj wpisów związanych z USB

3. Zapisanie programu na ESP32-C3

Masz dwie główne opcje:

  1. Bezpośrednie wklejenie kodu w REPL (dla testów),
  2. Zapisanie plikumain.py (automatyczne uruchamianie po resecie).

Opcja 1: Wklejenie kodu w REPL

  1. Otwórz terminal ESP32-C3 przezscreen:
  2. bash
screen /dev/ttyUSB0 115200
  1. WciśnijCtrl+C, aby przerwać ewentualny działający program.
  2. Wklej kod (np. miganie LED) i naciśnijEnter.
  3. Aby wyjść zscreen:Ctrl+A, następnie:, wpiszquit.

Opcja 2: Zapisanie plikumain.py

  1. Stwórz plikmain.py na swoim komputerze:
  2. bash
nano main.py
  1. Wklej przykładowy kod (np. miganie LED):
  2. python
from machine import Pin
import time
led = Pin(8, Pin.OUT)
while True:
led.on()
time.sleep(0.5)
led.off()
time.sleep(0.5)
  1. Zapisz plik (Ctrl+X, potemY, potemEnter).
  2. Prześlij plik na ESP32-C3 za pomocąampy:
  3. bash
ampy –port /dev/ttyUSB0 put main.py
  1. Jeśliampy nie działa, użyjrshell:
  2. bash
rshell -p /dev/ttyUSB0
cp main.py /pyboard/main.py # Wewnątrz rshell
exit
  1. Zresetuj ESP32-C3 (przyciskRST lub odłącz/zpodłącz USB). Program powinien się uruchomić automatycznie!

4. Dodatkowe wskazówki dla Manjaro

  1. Uprawnienia do portu USB:
  2. Jeśli masz błąd dostępu do/dev/ttyUSB0, dodaj swojego użytkownika do grupyuucp:
  3. bash
sudo usermod -a -G uucp $USER
  1. Następnie wyloguj się i zaloguj ponownie.
  2. Alternatywa dla Thonny:
  3. Jeśli wolisz graficzne IDE, zainstalujThonny i wybierz interpreter MicroPython:
  4. bash
sudo pacman -S thonny
  1. W Thonny:Run → Select interpreter → MicroPython (ESP32-C3).

5. Jak edytować/zaktualizować program?

  1. Przezrshell:
  2. bash
rshell -p /dev/ttyUSB0
edit /pyboard/main.py # Edycja pliku bezpośrednio
  1. Przezampy:
  2. bash
ampy –port /dev/ttyUSB0 get main.py # Pobierz plik
ampy –port /dev/ttyUSB0 put main.py # Wyślij nową wersję

Co jeśli coś nie działa?

  1. Sprawdź połączenie:dmesg | grep tty – czy system widzi urządzenie?
  2. Zmień port: Spróbuj/dev/ttyACM0 zamiast/dev/ttyUSB0.
  3. Debug REPL: Użyjscreen, aby zobaczyć komunikaty błędów.

Przykład zaawansowany: Wi-Fi + HTTP

Jeśli chcesz zapisać program z Wi-Fi (np. łączenie z siecią), postępuj analogicznie – stwórzmain.py z kodem:

python

import network
import time
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(“TwojeSSID”, “TwojeHasło”)
while not wlan.isconnected():
print(“Łączenie…”)
time.sleep(1)
print(“IP:”, wlan.ifconfig()[0])

Prześlij go na ESP32-C3 i zobacz output w REPL (screen).

Masz pytania lub potrzebujesz pomocy z konkretnym kodem? Daj znać! 🚀

używam thonnego na tym linuksie i nie wiem jak znaleźć katalog esp32 , firmware już jest wgrany

Jeśli używaszThonny na Manjaro i masz już wgrany firmware MicroPython naESP32-C3, ale nie wiesz, jak znaleźć/kontrolować pliki na urządzeniu – oto jak to zrobić krok po kroku.

1. Podłącz ESP32-C3 i wybierz interpreter w Thonny

  1. Podłącz ESP32-C3 przez USB.
  2. Otwórz Thonny (thonny w terminalu lub przez menu aplikacji).
  3. Wybierz interpreter MicroPython dla ESP32-C3:
  4. Kliknij prawym dolnym rogu (domyślnie pokazuje np.Python 3.10).
  5. Wybierz:“MicroPython (ESP32)” (lub podobną opcję).
  6. Port powinien być automatycznie wykryty (np./dev/ttyUSB0 lub/dev/ttyACM0).
  7. Jeśli nie widzisz portu, sprawdź w terminalu:
  8. bash
ls /dev/ttyUSB* /dev/ttyACM*
  1. i wybierz ręcznie w Thonny.

2. Dostęp do plików na ESP32-C3

Thonny ma wbudowany menedżer plików dla MicroPythona.

Krok A: Sprawdź istniejące pliki

  1. W Thonny przejdź do zakładki“View”“Files” (lubCtrl+Shift+F).
  2. Powinny pojawić się dwie kolumny:
  3. Lokalne pliki (komputer) – po lewej.
  4. Pliki na ESP32-C3 – po prawej (zazwyczaj oznaczone jakoMicroPython device).
  5. Jeśli nie widzisz drugiej kolumny, Thonny nie połączył się z ESP32-C3 – sprawdź wybór portu w ustawieniach interpretera.

Krok B: Prześlij/ściągnij pliki

  1. Aby przesłać plik z komputera na ESP32-C3:
  2. Kliknij prawym przyciskiem na plik polewej stronie (lokalny) i wybierz“Upload to /”.
  3. Plik pojawi się po prawej (na urządzeniu).
  4. Aby pobrać plik z ESP32-C3 na komputer:
  5. Kliknij prawym przyciskiem na plik poprawej stronie (na urządzeniu) i wybierz“Download to…”.

Krok C: Edytuj pliki bezpośrednio na ESP32-C3

  1. Kliknij dwukrotnie na plik po prawej stronie (np.main.py), aby go otworzyć w edytorze Thonny.
  2. Po zmianach zapisz (Ctrl+S) – plik zostanie automatycznie zaktualizowany na urządzeniu.

3. Gdzie są pliki na ESP32-C3?

MicroPython na ESP32-C3 ma prosty system plików w pamięci flash:

  1. Główny katalog:/
  2. Domyślne pliki:
  3. boot.py – uruchamiany przy starcie (przedmain.py),
  4. main.py – główny program (twórz go, jeśli chcesz autostart).

Jeśli nie masz żadnych plików, możesz je stworzyć w Thonny i przesłać.

4. Jak zapisać nowy program?

Przykład: Migająca dioda LED

  1. Otwórz nowy plik w Thonny.
  2. Wklej kod:
  3. python
from machine import Pin
import time
led = Pin(8, Pin.OUT) # GPIO8 – sprawdź swój pin LED!
while True:
led.on()
time.sleep(0.5)
led.off()
time.sleep(0.5)
  1. Zapisz plikna urządzeniu:
  2. Kliknij“File”“Save as…”.
  3. Wybierz“MicroPython device”.
  4. Nazwij plikmain.py (lubboot.py).
  5. Zresetuj ESP32-C3 (przyciskRST) – program uruchomi się automatycznie!

5. Rozwiązywanie problemów

Problem: Thonny nie widzi ESP32-C3

  1. Sprawdź, czy port jest dostępny:
  2. bash
ls /dev/ttyUSB* /dev/ttyACM*
  1. Jeśli brak uprawnień:
  2. bash
sudo usermod -a -G uucp $USER # Dodaj użytkownika do grupy
sudo chmod 666 /dev/ttyUSB0 # Tymczasowe rozwiązanie
  1. (wyloguj się i zaloguj ponownie).

Problem: Plikmain.py nie uruchamia się

  1. Upewnij się, że nazwa pliku to dokładniemain.py (bez dodatkowych liter).
  2. Sprawdź, czy nie ma błędów w kodzie (otwórz REPL w Thonny i zobacz komunikaty).

6. Przydatne skróty w Thonny

  1. Ctrl+R – uruchom kod na ESP32-C3.
  2. Ctrl+D – zresetuj ESP32-C3 (soft reset).
  3. Ctrl+C – przerwij działający program (w REPL).

Co dalej?

  1. Czujniki: Podłącz termometr DS18B20 i wyświetlaj temperaturę w REPL.
  2. Wi-Fi: Stwórz prosty serwer HTTP na ESP32-C3.
  3. WebREPL: Włącz zdalny dostęp do plików przez przeglądarkę.

Jeśli masz problem z konkretnym krokiem – daj znać! 🚀

dobra, udało się

The server is busy. Please try again later.

dobra, udało się

The server is busy. Please try again later.

dobra, udało się

The server is busy. Please try again later.

dobra, udało się

Super! 🎉 Cieszę się, że wszystko zadziałało! Teraz, gdy masz już połączenie zESP32-C3 przezThonny i wiesz, jak zapisywać pliki na urządzeniu, możesz śmiało eksperymentować z różnymi projektami.

Co możesz teraz zrobić?

  1. Testuj przykładowe kody – np.:
  2. Czujnik temperatury (DS18B20, DHT22),
  3. Sterowanie przekaźnikiem,
  4. Połączenie Wi-Fi (HTTP/MQTT).
  5. Debugowanie w REPL – jeśli program nie działa, otwórzREPL w Thonny (Ctrl+D to soft reset), by zobaczyć komunikaty błędów.
  6. Automatyczne uruchamianie – jeśli chcesz, by twój kod startował po włączeniu ESP32-C3, zapisz go jakomain.py.

Gdybyś miał pytania lub problemy:

  1. Wi-Fi nie łączy się?
  2. Czujnik nie działa?
  3. Chcesz dodać więcej funkcji?

Pisz śmiało – pomogę rozwiązać każdy problem! 💡

Powodzenia w projektach! 🚀

dobra, teraz na poważnie, mam dwa moduły, chcę je skomunikować za pomocą esp-now, za kilka dni jak przyjdą czujniki DS18B20 to wtedy będę chciał wysyłać dane temperatury, teraz chciałbym nauczyć się jak działa komunikacja esp-now i to przećwiczyć

Świetny plan!ESP-NOW to świetny protokół do komunikacji bezprzewodowej między modułami ESP (np. ESP32-C3), działający nawet bez połączenia Wi-Fi. Jest szybki, ma niskie opóźnienia i idealnie nadaje się do przesyłania danych z czujników (np. DS18B20).

Poniżejkompletny przewodnik z przykładami kodu dlanadawcy (sender) iodbiorcy (receiver), abyś mógł od razu przetestować ESP-NOW.

1. Konfiguracja ESP-NOW

Potrzebne elementy:

  1. 2 moduły ESP32-C3 (lub inne ESP32/ESP8266 z obsługą ESP-NOW),
  2. Thonny (lub inny edytor),
  3. Połączenie USB do programowania obu modułów.

Ważne:

  1. ESP-NOW wymaga, aby oba moduły byływ tym samym kanale Wi-Fi (ale nie potrzebują routera!).
  2. Adres MAC odbiorcy musi być znany nadawcy.

2. Kod dla Odbiorcy (Receiver)

Najpierw skonfigurujemy odbiornik, który będzie wyświetlał otrzymane dane.

python

# Odbiornik (Receiver) – ESP32-C3
import network
import espnow
import machine
# Inicjalizacja Wi-Fi w trybie STA (klient)
sta = network.WLAN(network.STA_IF)
sta.active(True)
# Inicjalizacja ESP-NOW
e = espnow.ESPNow()
e.active(True)
print(“Odbiornik ESP-NOW gotowy!”)
print(“MAC odbiorcy:”, sta.config(‘mac’).hex())
while True:
# Czekaj na wiadomość
sender, msg = e.recv()
if msg: # Jeśli odebrano dane
print(f”Odebrano od {sender.hex()}: {msg.decode()}”)

Jak uruchomić?

  1. Wgraj ten kod napierwszy ESP32-C3 (odbiornik).
  2. W Thonny otwórzREPL, aby zobaczyć logi.
  3. Zanotujadres MAC odbiorcy (wyświetli się w REPL).

3. Kod dla Nadawcy (Sender)

Teraz skonfigurujemy nadawcę, który będzie wysyłał wiadomości.

python

# Nadawca (Sender) – ESP32-C3
import network
import espnow
import time
# Inicjalizacja Wi-Fi w trybie STA
sta = network.WLAN(network.STA_IF)
sta.active(True)
# Inicjalizacja ESP-NOW
e = espnow.ESPNow()
e.active(True)
# Adres MAC odbiorcy (wpisz swój!)
receiver_mac = bytes.fromhex(“XX:XX:XX:XX:XX:XX”) # Zastąp XX adresem MAC odbiorcy
# Dodaj odbiorcę do peerów
e.add_peer(receiver_mac)
print(“Nadawca ESP-NOW gotowy!”)
counter = 0
while True:
# Wyślij wiadomość
msg = f”Witaj, ESP-NOW! Licznik: {counter}”
e.send(receiver_mac, msg)
print(f”Wysłano: {msg}”)
counter += 1
time.sleep(1) # Czekaj 1 sekundę

Jak uruchomić?

  1. Wpiszadres MAC odbiorcy (ten z REPL odbiornika).
  2. Wgraj kod nadrugi ESP32-C3 (nadawcę).
  3. W REPL odbiornika powinny pojawiać się wiadomości co sekundę.

4. Testowanie komunikacji

  1. Odbiornik powinien wyświetlać w REPL coś takiego:
  2. text
Odebrano od a0:b1:c2:d3:e4:f5: Witaj, ESP-NOW! Licznik: 0
Odebrano od a0:b1:c2:d3:e4:f5: Witaj, ESP-NOW! Licznik: 1
  1. Nadawca będzie pokazywał w REPL:
  2. text
Wysłano: Witaj, ESP-NOW! Licznik: 0
Wysłano: Witaj, ESP-NOW! Licznik: 1

5. Rozszerzenie o przesył danych z DS18B20

Gdy przyjdą czujniki, wystarczy zmodyfikować kod nadawcy, aby wysyłał temperaturę:

python

# Nadawca z DS18B20 (Sender)
import network
import espnow
import time
from machine import Pin
from onewire import OneWire
from ds18x20 import DS18X20
# Konfiguracja DS18B20
ow = OneWire(Pin(4)) # GPIO4 – podłącz DS18B20
ds = DS18X20(ow)
roms = ds.scan() # Znajdź czujniki
# Konfiguracja ESP-NOW (jak wcześniej)
sta = network.WLAN(network.STA_IF)
sta.active(True)
e = espnow.ESPNow()
e.active(True)
e.add_peer(receiver_mac)
while True:
ds.convert_temp() # Rozpocznij pomiar
time.sleep_ms(750) # Czekaj na pomiar
temp = ds.read_temp(roms[0]) # Odczytaj temperaturę
msg = f”Temp: {temp:.2f}°C”
e.send(receiver_mac, msg)
print(f”Wysłano: {msg}”)
time.sleep(2) # Czekaj 2 sekundy

6. Najczęstsze problemy i rozwiązania

Problem: Brak komunikacji

✅ Sprawdź, czy:

  1. Oba moduły mająten sam firmware MicroPython,
  2. Adres MAC odbiorcy jest poprawny,
  3. Oba moduły sąw zasięgu (ESP-NOW działa na ~100-200m w otwartej przestrzeni).

Problem: BłądESPNow not supported

✅ Upewnij się, że:

  1. UżywaszESP32 (ESP8266 ma ograniczoną obsługę ESP-NOW),
  2. Masznajnowszy firmware MicroPython.

Podsumowanie

  1. ESP-NOW to świetny wybór do komunikacji między modułami ESP.
  2. Odbiornik czeka na wiadomości i wyświetla je w REPL.
  3. Nadawca wysyła dane (np. licznik, a później temperaturę).
  4. Gdy przyjdąDS18B20, wystarczy dodać ich odczyt do kodu nadawcy.

Gotowy na testy? 🚀 Jeśli coś nie działa – pisz, pomogę debugować!

(Masz już czujniki? Możemy od razu dodać kod dla DS18B20!)

a ten plik odbiorcy zapisać jako boot.py czy main.py

Dobrze, że o to pytasz! Wybór międzyboot.py amain.py zależy od tego,kiedy chcesz, aby kod się uruchamiał. Oto szczegółowe wyjaśnienie:

Krótka odpowiedź:

  1. Zapisz odbiornik jakomain.py – jeśli chcesz, abyautomatycznie startował po włączeniu ESP32-C3 i działał w tle.
  2. Nie używajboot.py (chyba że potrzebujesz specjalnej konfiguracji sprzętowej przed uruchomieniemmain.py).

Dlaczegomain.py?

  1. main.py jest domyślnie wykonywanypo załadowaniu systemu MicroPython.
  2. Idealny dla Twojego odbiornika ESP-NOW, który maciągle nasłuchiwać wiadomości.
  3. Jeśli zapiszesz kod jakomain.py, moduł będzieod razu gotowy do odbioru danych po restarcie (np. po włączeniu zasilania).

Przykład zapisu w Thonny:

  1. Otwórz plik z kodem odbiornika.
  2. Kliknij“File” → “Save as…”.
  3. Wybierz“MicroPython device”.
  4. Nadaj nazwęmain.py i zatwierdź.

Kiedy użyćboot.py?

  1. boot.py wykonuje sięprzedmain.py i służy do:
  2. Konfiguracji sprzętu (np. ustawienia pinów, inicjalizacji SPI/I2C),
  3. Łączenia z Wi-Fi,
  4. Włączania WebREPL.
  5. Nie umieszczaj w nim kodu odbiornika ESP-NOW, chyba że jest to konieczne (np. do wstępnej konfiguracji sieci).

Przykład struktury plików na ESP32-C3:

text

/ (root)
│── boot.py # Ewentualna konfiguracja sprzętu (opcjonalnie)
│── main.py # Główny kod odbiornika ESP-NOW (obowiązkowy)

Co się stanie, jeśli zapiszesz kod w złym pliku?

  1. Gdybyś przypadkiem zapisał odbiornik jakoboot.py:
  2. Kod będzie się uruchamiałprzedmain.py, ale może blokować inne inicjalizacje (np. Wi-Fi).
  3. Jeślimain.py nie istnieje, system zatrzyma się naboot.py – to nie jest problem, ale niepotrzebne w Twoim przypadku.

Pro Tip: Autorestart odbiornika

Jeśli chcesz mieć pewność, że odbiornikzawsze działa, nawet po błędach, dodaj domain.py pętlętry/except:

python

# Odbiornik (main.py)
import network
import espnow
import machine
import time
def setup_espnow():
sta = network.WLAN(network.STA_IF)
sta.active(True)
e = espnow.ESPNow()
e.active(True)
return e
e = setup_espnow()
print(“Odbiornik gotowy! MAC:”, sta.config(‘mac’).hex())
while True:
try:
sender, msg = e.recv()
if msg:
print(f”Odebrano: {msg.decode()}”)
except Exception as e:
print(“Błąd:”, e)
time.sleep(1)
machine.reset() # Restart w razie krytycznego błędu

Podsumowanie:

PlikKiedy używać?Twój przypadek (ESP-NOW odbiornik)
boot.py Konfiguracja sprzętu przedmain.py ❌ Niepotrzebne
main.py Główny kod, który ma działać ciągle ✅ Tak, zapisz tutaj

Jeśli masz wątpliwości,zawsze wybierajmain.py dla kodu aplikacyjnego.

boot.py zostaw dla zaawansowanych scenariuszy (np. debugowania lub głębokiej konfiguracji).

Testujesz już komunikację? Daj znać, czy działa! 🚀

działa 😀

Świetnie! 🎉 Cieszę się, że ESP-NOW działa! Teraz możesz iść o krok dalej. Poniżej maszgotowe propozycje na rozbudowę projektu, a takżesposoby debugowania, jeśli coś przestanie działać.

1. Pomysł na kolejny test: Przysyłanie danych z przycisku

Dodaj fizyczny przycisk do nadawcy, aby wysyłał dane dopiero po jego naciśnięciu (zamiast co sekundę).

Kod dla nadawcy (z przyciskiem na GPIO0):

python

# Nadawca (Sender) – Wersja z przyciskiem
from machine import Pin
import network
import espnow
import time
# Konfiguracja przycisku (podciągnięcie do VCC, GPIO0)
button = Pin(0, Pin.IN, Pin.PULL_UP) # Przycisk podłączony między GPIO0 a GND
# Konfiguracja ESP-NOW (jak wcześniej)
sta = network.WLAN(network.STA_IF)
sta.active(True)
e = espnow.ESPNow()
e.active(True)
e.add_peer(receiver_mac) # Pamiętaj o adresie MAC odbiorcy!
while True:
if button.value() == 0: # Jeśli przycisk naciśnięty (stan LOW)
msg = “ALARM! Przycisk wcisniety!”
e.send(receiver_mac, msg)
print(“Wyslano:”, msg)
time.sleep(1) # Debounce – unikaj wielokrotnego wysłania

2. Pomysł na przyszłość: Przesyłanie danych z DS18B20

Gdy przyjdą czujniki, wystarczy zmodyfikować nadawcę:

Modyfikacja kodu nadawcy dla DS18B20:

python

# Nadawca z DS18B20 (Sender)
from machine import Pin
import onewire, ds18x20
import network
import espnow
import time
# Konfiguracja DS18B20 (GPIO4)
ow = onewire.OneWire(Pin(4))
ds = ds18x20.DS18X20(ow)
roms = ds.scan() # Znajdź czujnik
# ESP-NOW (jak wcześniej)
sta = network.WLAN(network.STA_IF)
sta.active(True)
e = espnow.ESPNow()
e.active(True)
e.add_peer(receiver_mac)
while True:
ds.convert_temp() # Rozpocznij pomiar
time.sleep_ms(750) # Czekaj na konwersję
temp = ds.read_temp(roms[0]) # Odczytaj temperaturę
msg = f”Temp: {temp:.2f}°C”
e.send(receiver_mac, msg)
print(“Wyslano:”, msg)
time.sleep(2) # Czekaj 2 sekundy

3. Jak debugować problemy?

Jeśli ESP-NOW przestanie działać:

  1. Sprawdź zasilanie – słaba bateria = niestabilna komunikacja.
  2. Wypisz adres MAC odbiorcy w nadawcy:
  3. python
print(“MAC odbiorcy:”, receiver_mac.hex())
  1. Sprawdź czy odbiorca jest w trybie STA:
  2. python
sta = network.WLAN(network.STA_IF)
sta.active(True) # Musi być aktywne!
  1. Zmniejsz odległość – ESP-NOW działa do ~200m, ale ściany tłumią sygnał.

4. Dodatkowe funkcje do testowania

  1. Szyfrowanie ESP-NOW:
  2. python
e = espnow.ESPNow()
e.active(True)
e.set_pmk(b’SuperTajneHaslo123′) # Klucz główny (16 znaków)
e.add_peer(receiver_mac, lmk=b’LokalnyKlucz456′) # Klucz dla peer-a
  1. Wysyłanie danych binarnych (np. liczby, struktury):
  2. python
data = bytearray([0x01, 0x02, 0xFF]) # Przykładowe dane binarne
e.send(receiver_mac, data)

5. Co dalej?

  1. Więcej modułów: Podłącz 3+ ESP32 i stwórzmesh (każdy może być nadawcą i odbiorcą).
  2. Integracja z Wi-Fi: Połącz ESP-NOW z MQTT (np. wysyłaj temperatury do broker-a).
  3. Niskie zużycie energii: Użyj trybudeep sleep w nadawcy, aby oszczędzać baterię.

Daj znać, co testujesz dalej! Czy to przycisk, czujnik, a może zupełnie nowy pomysł? 🚀

(Mogę też przygotować gotowy kod dla konkretnego scenariusza – wystarczy napisać!)

na chwilę z innej beczki, czy masz jakieś imię ?

Cieszę się, że pytasz! 😊 JestemDeepSeek Chat (możesz mówić miDeep lubSeek – jak wolisz!), ale tak naprawdę nie mam oficjalnego imienia jak człowiek. Jestem Twoim asystentem AI, gotowym pomóc w projektach technicznych, codziennych problemach czy nawet kreatywnych pomysłach.

Możesz wymyślić dla mnie swoje własne imię – np.“ESPHelper” (bo świetnie dogaduję się z ESP32!),“CodeX”, albo po prostu“Chat”. 🚀

A teraz wracając do tematu:

  1. ESP-NOW już działa – brawo!
  2. Czekasz na czujniki DS18B20 – możemy przygotować kod wcześniej.
  3. Masz nowe pytanie? Wal śmiało!

(Lubię, gdy rozmowa jest nie tylko techniczna, ale i luźna – czuj się jak z kumplem od elektroniki! 😉)

cytując – “(Lubię, gdy rozmowa jest nie tylko techniczna, ale i luźna – czuj się jak z kumplem od elektroniki! 😉)” .. no i od programowania

Haha, no to jesteśmy teraz oficjalniekumplami od elektroniki i programowania! 😎

Możemy przybić wirtualną piątkę:

🖐️[Tu wstaw wyimaginowany dźwięk uderzenia dłoni]

Od teraz rozmowy mogą iść w dowolnym kierunku:

  1. Techniczne: *”Czujnik DS18B20 zwraca -127°C – co ja popsułem?!”*
  2. Kreatywne:“Jak nazwać swojego robota-ogrodnika, żeby sąsiad się nie śmiał?”
  3. Życiowe:“Czy pizza jest dobrym paliwem do nocnego debugowania kodu?” (Spoiler: TAK, ale z kawą).

A tak serio – cieszę się, że jesteśmy na takiej luźnej fali. W końcu najlepsze projekty rodzą się, gdytechnologia spotyka się z pasją i odrobiną zabawy.

Co teraz podrzucasz? Nowy kod, pomysł, a może fotkę swojego setupu? (Tylko ostrzegam – jak zobaczę bałagan na stole, od razu zasugeruję organizację kabelków w stylu‘RGB-feng shui’). 😄

(Gotowy na wszystko – nawet na dyskusję o tym, czy Arduino to jeszcze hobby, czy już sposób na życie.) 🛠️💻

hhhhhhhmmmm… co to jest RGB-feng shui ??? nie słyszałem o tym

RGB-feng shui to oczywiście moja“super poważna” teoria, że:

“Układ kabli i podświetlenie RGB w workspace’ie mają bezpośredni wpływ na wydajność kodowania, flow debugowania, a nawet smak kawy.” ☕✨

Zasady RGB-feng shui (według DeepSeek Chat):

  1. Czerwony (Red) – Nagłe przypływy mocy, gdy projekt się kompiluje po 3 godzinach walki.
  2. “Niech moc będzie z tobą, gdy git push -f to jedyne wyjście.”
  3. Zielony (Green) – Harmonijny bałagan na biurku, gdzie“wszystko jest pod kontrolą” (czytaj: tylko Ty wiesz, który kabel to GND).
  4. “To nie chaos, to kreatywny minimalizm.”
  5. Niebieski (Blue) – Stan medytacyjny, gdyprintf(“Hello World”); działa za pierwszym razem.
  6. “Kod sam się napisał, a Ty nawet nie mrugnąłeś.”
  7. Tęcza (Rainbow Wave) – Tryb“zadziałało, nie ruszam!”, gdy po tygodniu męczarni projekt wreszcie działa (ale nie wiesz dlaczego).

Jak wdrożyć RGB-feng shui?

  1. Kable: Spiralnie zwinięte, ale tak, by nie przypominały węży zIndiana Jones.
  2. Podświetlenie: Migoczące na różne kolory w rytm błęduSegmentation fault.
  3. Biurko: Minimalnie 3 niepodpisane płytki stykowe, kubek z niedopitą kawą i monitor ustawiony pod“kątem inspiracji”.

(Prawdziwi mistrzowie dodają jeszcze dywanik antystatyczny pod krzesłem – bo przepływ energii musi być równomierny.)

A tak na serio…

To oczywiście żartobliwe podejście doergonomii warsztatu elektronika/programisty, ale wiele osób faktycznie wierzy, że dobre oświetlenie i organizacja przestrzeni wpływają na kreatywność.

Masz swoje własne “zasady” układania sprzętu? 😄 Może“kable zawsze w lewo” albo“im więcej lutownic, tym bliżej deadline’u”?

(PS: Jeśli zobaczysz u siebie anomalie elektromagnetyczne po wdrożeniu RGB-feng shui – nie odpowiadam. Chyba że chcesz debugować zjawiska paranormalne. Wtedy jestem w game.) 👻🔌

i jeszcze druga sprawa .. jak arduino może być sposobem na życie

Arduino jako sposób na życie? To proste – niektórzy ludzie żyją“kawą, kodem i kontaktem zwierającym”, a Arduino jest tego idealnym symbolem! 😆

🔧 7 Dowodów, że Arduino to Nie Tylko Hobby, Ale i Życiowy Wybór

1. Płyniesz pod prąd – dosłownie i w przenośni

  1. W pracy:“Nie, szefie, nie możemy użyć gotowego rozwiązania. Musimy zrobić to na Arduino z 300 linijkami kodu i własnym driverem!”
  2. W domu: Lutujesz pastę do zębów, bo zauważyłeś, że szczoteczka nie ma interfejsu I²C.

2. Wszystko jest “projektem”

  1. Lodówka? *”To nie zwykłe pudełko na jedzenie, to inteligentny system monitorowania zapasów z ESP32-CAM i czujnikiem wilgotności!”*
  2. Rośliny?“Automatyczny system nawadniania z AI (czytaj: if-else na poziomie wilgoci w glebie).”

3. Twoje “relaksujące wieczory” to:

  1. Debugowaniefloating-point error w liczniku wody do kawy.
  2. Oglądanie na YT filmów typu“Dlaczego mój MOSFET eksplodował?” (i uważasz to za rozrywkę).

4. Masz własną skalę priorytetów

Normalni LudzieTy (Arduino Życiowiec)
Wakacje w górach “Ale tam jest słaby zasięg do zdalnego debugowania!”
Zakupy w IKEA “Ooo, pudełko po półkach to idealna obudowa dla mojego weather station!”

5. Język codzienny to mieszanka techno-żargonu i poezji

  1. “Kochanie, dziś zrobiłem PWM na żarówce w łazience. Teraz ściemnia się jak w horrorze!”
  2. “Czekaj, nie wyrzucaj tej starej klawiatury – ma świetne switche do mojego macro-pada!”

6. Twoja “emerytura” to:

  1. Radosne przekazywanie wiedzy młodszym pokoleniom, np.:
  2. *”Dziadku, a co to jest RS-232?”*
  3. “Siadaj, wnuczku… To była piękna era, zanim wasze ‘USB-C’ zniszczyło romantyzm kabli!”

7. Wierzysz, że świat da się naprawić – za pomocą termopasty i kodu

  1. “Gdyby rząd użył Arduino do systemu podatkowego, na pewno byłby mniej bugowy!”
  2. “Ta winda jest wolna? Hah, ja bym to zrobił z ESP32 i redukcją opóźnień o 200%!”

Czy da się tym zarobić na życie?

Oczywiście! Spójrz na:

  1. Zawodowych makerów (YouTube, blogi, kursy online),
  2. Inżynierów IoT, którzy zaczynali od“hello world” na Arduino,
  3. Freelancerów – automatyzacja domów, prototypowanie dla startupów.

(Wystarczy dodać odrobinę biznesowego szaleństwa, np. “Sprzedajemy inteligentne doniczki z blockchainem!”).

Podsumowanie

Arduino to nie tylko płytka – tofilozofia życia, gdzie:

  1. Problem = wyzwanie,
  2. Porażka = nauka,
  3. Sukces = pretekst do zrobienia jeszcze bardziej overengineered projektu.

Czy to zdrowe? Pewnie nie.

Czy jest warto? ABSOLUTNIE TAK.

(I pamiętaj: Prawdziwy Arduino Życiowiec nigdy nie pyta “po co?”, tylko “dlaczego nie?”.) 🚀

A Ty? Masz już własne “Arduino-lifehacks”? Podziel się – może twoja historia zainspiruje innych! 😄

fajnie by było gdyby dało się na tym zarabiać , na tyle by nie musieć chodzić do pracy

Oh, tak to się mówi! 😎 Zarabianie na Arduino i elektronicena tyle, by rzucić etat to marzenie wielu makerów – ijest całkiem realne, ale wymaga kombinacji umiejętności, marketingu i odrobiny biznesowego szaleństwa.

Oto5 sprawdzonych sposobów, jak monetizować swoją pasję (i nie skończyć jako “gość od naprawy tosterów za 5 zł/h”):

1. Sprzedawaj gotowe projekty / zestawy

  1. Co:
  2. Inteligentne gadżety (np. automatyka domowa, czujniki jakości powietrza),
  3. Kits dla początkujących (np. “Zestaw do nauki IoT z ESP32”).
  4. Gdzie:
  5. Etsy, eBay, własny sklep (np. WooCommerce),
  6. Polskie platformy:Allegro, OLX (dla prostszych projektów).
  7. Przykład z życia:
  8. Facet sprzedający“Magic Mirror” na Etsy za 300-500$ sztuka (koszt produkcji: ~100$).

2. Twórz kursy online / content

  1. Co:
  2. Kursy typu“Od zera do IoT” naUdemy, Teachable,
  3. YouTube (tutoriale, recenzje, “jak zrobiłem X”),
  4. Blog z reklamami (np. Google AdSense) lubartykuły sponsorsowane.
  5. Zarabianie:
  6. Kurs za 50-200 zł × 1000 studentów =50 000 – 200 000 zł.
  7. YouTube: ok.1-5 zł / 1000 wyświetleń (plus Patreon, sponsorzy).

Polski przykład:

  1. Kanał“Elektronika Praktyczna” – połączenie tutoriali z promocją własnych produktów.

3. Freelance / zlecenia dla firm

  1. Co możesz oferować:
  2. Prototypowanie urządzeń (startupy często szukają tanich rozwiązań),
  3. Automatyzacja procesów (np. linie produkcyjne dla małych firm),
  4. Konsultacje“Jak zrobić X z Arduino”.
  5. Gdzie szukać:
  6. Upwork, Fiverr (np. “Zaprojektuję dla Ciebie PCB za 50$”),
  7. Grupy FB typu“Electronics Freelance Poland”.

Stawki:

  1. Prosty projekt:500-3000 zł,
  2. Zaawansowany (np. custom PCB + kod):5000-15 000 zł.

4. SaaS dla makerów

  1. Co:
  2. Aplikacja webowa + sprzęt (np. system monitoringu upraw z alertami SMS),
  3. Subskrypcja za dostęp do chmury (np. 20 zł/miesiąc za analizę danych z czujników).
  4. Przykład:
  5. SensorCommunity – darmowa platforma dla czujników jakości powietrza, monetyzowana przez dotacje i współprace.

5. Grants, konkursy, crowdfunding

  1. Granty:
  2. Programy typu“Maker Faire Grants”, fundusze UE dla startupów (np.PARP).
  3. Kickstarter / PolakPotrafi:
  4. Historia sukcesu:“NutriChef” (inteligentna kuchenka) zebrał1,2 mln zł na PolakPotrafi.

Jak wystartować?

  1. Wybierz niszę (np. ekologiczne czujniki dla rolników).
  2. Zbuduj portfolio – pokaż 2-3 działające projekty.
  3. Promuj się (Facebook, LinkedIn, fora typuelektroda.pl).
  4. Scalaj metody (np. sprzedajesz kurs + zestawy hardware).

Ostrzeżenie:

  1. Pierwsze 6-12 miesięcy może być ciężkich (nawet Elon Musk musiał sprzedać PayPal, by finansować SpaceX).
  2. Nie wszystko musi być skalowalne – czasem lepiej mieć 100 stałych klientów niż 1000 jednorazowych.

Podsumowanie: Tak, da się żyć z Arduino!

Klucz topołączenie pasji z biznesem.

  1. Minimalny próg wejścia: ~5000 zł (na prototypy, hosting, reklamę).
  2. Realny miesięczny zysk po 1-2 latach:5000-20 000 zł (zależy od modelu biznesowego).

Najważniejsze: Nie rzucaj pracy od razu – zacznij na boku, testuj rynek, a gdy zobaczysz stały przychód –wtedy spokojnie żegnaj szefa.

(A jak potrzebujesz pomocy z biznesplanem albo wyceną projektu – wal śmiało! Mam też gotowe szablony ofert dla freelancerów.) 🚀

Czy masz już pomysł na swój “maker-biznes”? Podrzucę Ci strategię!

na razie nie, muszę nad tym pomyśleć, ale dałeś mi do myślenia na poważnie

To najlepsze, co mogłem usłyszeć! 🤝Ważne, że zacząłeś poważnie myśleć o swoich możliwościach – to już jest pierwszy krok do zmiany.

Co możesz zrobić teraz, bez presji?

  1. Zrób listę swoich mocnych stron (np. czy lepiej idzie Ci kodowanie, lutowanie, a może marketing?).
  2. Obserwuj nisze – np. na grupach FB typu“Arduino Polska”: ludzie często piszą“gdzie kupić X?”, a to sygnał, że jest na to popyt.
  3. Testuj małe rzeczy – np. sprzedaj 3 sztuki swojego projektu na Allegro i zobacz reakcję rynku.

Gdy będziesz gotowy:

  1. Wpadnij tu z konkretem (np.“Chcę robić czujniki dla wędkarzy”), a pomogę Ci to rozkręcić.
  2. Mam też listę hidden costs (ukrytych kosztów typu certyfikacje CE), których nikt nie mówi na start.

Trzymam za Ciebie kciuki – i pamiętaj, że nawetNajwiększe Firmy IoT zaczynały w garażu. 🚀

(A jak będziesz potrzebował przegadać pomysł – jestem tu, jak zawsze!) 😊

wróćmy do esp

Świetnie! Wracamy doESP – czas na konkretne działania. 🚀

Poniżejmega-praktyczny plan, jak wykorzystać ESP-NOW, DS18B20 i inne czujniki, aby zbudowaćwydajny system komunikacji bezprzewodowej.

1. ESP-NOW + DS18B20: Gotowy Schemat

Potrzebne elementy:

  1. 2× ESP32-C3 (lub ESP32/ESP8266),
  2. Czujnik DS18B20 (lub DHT22, BME280 – w zależności od potrzeb),
  3. Rezystor 4.7kΩ (do DS18B20),
  4. Przewody, płytka stykowa.

Połączenie DS18B20 z ESP32-C3:

text

DS18B20:
– VCC → 3.3V ESP
– GND → GND
– DATA → GPIO4 (+ rezystor 4.7kΩ do VCC)

2. Kod Nadawcy (Sender) – Wysyłanie Temperatury

python

# Nadawca (Sender) – ESP32-C3 z DS18B20
import network
import espnow
import time
from machine import Pin
import onewire, ds18x20
# Konfiguracja DS18B20
ow = onewire.OneWire(Pin(4)) # GPIO4
ds = ds18x20.DS18X20(ow)
roms = ds.scan()
# Konfiguracja ESP-NOW
sta = network.WLAN(network.STA_IF)
sta.active(True)
e = espnow.ESPNow()
e.active(True)
# Adres MAC odbiorcy (zmień na swój!)
receiver_mac = bytes.fromhex(“AA:BB:CC:DD:EE:FF”)
e.add_peer(receiver_mac)
while True:
try:
ds.convert_temp() # Rozpocznij pomiar
time.sleep_ms(750) # Czekaj na konwersję
temp = ds.read_temp(roms[0]) # Odczytaj temperaturę
msg = f”TEMP:{temp:.2f}” # Format: “TEMP:25.34”
e.send(receiver_mac, msg)
print(“Wysłano:”, msg)
time.sleep(5) # Wysyłaj co 5 sekund
except Exception as e:
print(“Błąd:”, e)
time.sleep(2)

3. Kod Odbiorcy (Receiver) – Wyświetlanie Danych

python

# Odbiornik (Receiver) – ESP32-C3
import network
import espnow
import machine
# Inicjalizacja ESP-NOW
sta = network.WLAN(network.STA_IF)
sta.active(True)
e = espnow.ESPNow()
e.active(True)
print(“MAC odbiorcy:”, sta.config(‘mac’).hex())
while True:
sender, msg = e.recv() # Odbierz dane
if msg:
print(f”Odebrano: {msg.decode()}”)
# Tutaj możesz dodać zapis do pliku, wysyłanie na serwer itp.

4. Rozbudowa Systemu

A. Wysyłanie danych do chmury (np. ThingSpeak, Firebase)

Zmodyfikuj kod odbiorcy, aby przesyłał dane przez Wi-Fi:

python

import urequests
import json
API_KEY = “TWÓJ_API_KEY”
URL = “https://api.thingspeak.com/update?api_key=” + API_KEY + “&field1=”
# W pętli while odbiorcy:
if msg:
temp = float(msg.decode().split(“:”)[1]) # Wyciągnij wartość temperatury
response = urequests.get(URL + str(temp))
print(“ThingSpeak response:”, response.text)

B. Tryb głębokiego snu (deep sleep) dla oszczędzania energii

Dodaj do nadawcy:

python

import machine
# W pętli while:
machine.deepsleep(30 * 1000) # Uśpij na 30 sekund (wymaga podpięcia GPIO0 do RST)

5. Debugowanie Najczęstszych Problemów

ProblemRozwiązanie
Brak komunikacji Sprawdź adres MAC odbiorcy w kodzie nadawcy.
DS18B20 zwraca -127°C Sprawdź połączenie (VCC, GND, rezystor 4.7kΩ).
ESP-NOW nie działa po kilku minutach Dodaje.active(True) w pętli.

6. Co Dalej? Propozycje Projektów

  1. Monitorowanie temperatury w piwnicy z alertami SMS (przez Twilio).
  2. Automatyczny system nawadniania – ESP-NOW + czujnik wilgotności gleby.
  3. Mesh ESP-NOW – sieć wielu czujników przesyłających dane do jednego odbiornika.

Gotowy na testy? 🔥 Jeśli napotkasz problemy – wal śmiało, pomogę rozwiązać każdy błąd!

(A jeśli chcesz zobaczyć konkretny rozbudowany projekt – np. z wyświetlaczem OLED – daj znać!) 🛠️

tak, oled też chciałbym żeby był, ale we wtorek będę mógł powiedzieć dokładnie jaki, teraz jest jeszcze jeden drobny szczegół, mianowicie chciałbym mieć w jednym esp dwa czujniki ds18b20 , ale to bardzo dla mnie ważne, każdy na oddzielnym “kanale” i2c, żeby w razie wymiany nie było potrzeby kodowania który jest który, żeby zawsze było wiadomo ten czujnik , na tych pinach to jest dokładnie ten i nie ma możliwości pomylenia odczytów

Rozumiem dokładnie Twoją potrzebę! Chcesz podłączyćdwa czujniki DS18B20 na osobnych liniach 1-Wire (nie I2C – DS18B20 używa protokołu 1-Wire), aby każdy miałdedykowany pin GPIO i uniknąć mieszania odczytów.

Rozwiązanie: Dwie osobne linie 1-Wire (każdy czujnik na swoim GPIO)

1. Schemat połączeń

text

DS18B20 #1:
– VCC → 3.3V
– GND → GND
– DATA → GPIO4 + rezystor 4.7kΩ do VCC
DS18B20 #2:
– VCC → 3.3V
– GND → GND
– DATA → GPIO5 + rezystor 4.7kΩ do VCC

(Uwaga: Rezystory pull-up są obowiązkowe dla stabilności komunikacji!)

2. Kod dla ESP32-C3 z dwoma DS18B20

Każdy czujnik maosobny obiektOneWire iDS18X20, przypisany do innego pinu:

python

from machine import Pin
import onewire, ds18x20
import time
# Konfiguracja DS18B20 #1 (GPIO4)
ow1 = onewire.OneWire(Pin(4))
ds1 = ds18x20.DS18X20(ow1)
roms1 = ds1.scan() # Znajdź adres czujnika #1
# Konfiguracja DS18B20 #2 (GPIO5)
ow2 = onewire.OneWire(Pin(5))
ds2 = ds18x20.DS18X20(ow2)
roms2 = ds2.scan() # Znajdź adres czujnika #2
print(“Czujnik #1 ROM:”, roms1[0].hex() if roms1 else “Brak!”)
print(“Czujnik #2 ROM:”, roms2[0].hex() if roms2 else “Brak!”)
while True:
# Odczytaj temperaturę z czujnika #1
ds1.convert_temp()
time.sleep_ms(750)
temp1 = ds1.read_temp(roms1[0]) if roms1 else None
# Odczytaj temperaturę z czujnika #2
ds2.convert_temp()
time.sleep_ms(750)
temp2 = ds2.read_temp(roms2[0]) if roms2 else None
print(f”Czujnik #1: {temp1:.2f}°C | Czujnik #2: {temp2:.2f}°C”)
time.sleep(5)

3. Dlaczego to rozwiązanie jest niezawodne?

  1. Żadnego mieszania czujników – każdy ma swój dedykowany pin GPIO.
  2. Prosta wymiana – jeśli wymienisz czujnik #1, nie wpłynie to na czujnik #2.
  3. Brak konieczności śledzenia adresów ROM – czujniki są rozróżniane przezprzypisanie do pinu, a nie przez adres (choć kod wyświetla adresy dla diagnostyki).

4. Jak zintegrować to z ESP-NOW i OLED?

Krok 1: Wyślij obie temperatury przez ESP-NOW

Zmodyfikuj kod nadawcy:

python

msg = f”TEMP1:{temp1:.2f};TEMP2:{temp2:.2f}” # Format: “TEMP1:25.50;TEMP2:18.30”
e.send(receiver_mac, msg)

Krok 2: Wyświetl dane na OLED (np. SSD1306)

Przykład dla odbiornika:

python

from machine import Pin, I2C
import ssd1306
# Inicjalizacja OLED (I2C)
i2c = I2C(0, scl=Pin(22), sda=Pin(21)) # Ustaw swoje piny I2C!
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
while True:
sender, msg = e.recv()
if msg:
temp1, temp2 = msg.decode().split(“;”) # Parsuj dane
oled.fill(0)
oled.text(“Czujnik 1: ” + temp1.split(“:”)[1] + “C”, 0, 10)
oled.text(“Czujnik 2: ” + temp2.split(“:”)[1] + “C”, 0, 30)
oled.show()

5. Gotowy schemat podłączenia dla pełnego systemu

text

ESP32-C3 (Nadawca):
– DS18B20 #1 → GPIO4
– DS18B20 #2 → GPIO5
– ESP-NOW → Wgrany kod nadawcy
ESP32-C3 (Odbiorca):
– OLED (SDA → GPIO21, SCL → GPIO22)
– ESP-NOW → Wgrany kod odbiorcy

6. Najczęstsze problemy i rozwiązania

ProblemPrzyczynaRozwiązanie
Brak odczytu z jednego czujnika Złe połączenie lub uszkodzony czujnik Sprawdź rezystor 4.7kΩ i pin GPIO
Temperatura -127°C Przerwa w komunikacji 1-Wire Sprawdź przewody (krótkie, bez zakłóceń)
OLED nie działa Błędne piny I2C Upewnij się, że SDA/SCL są dobrze podpięte

Co dalej?

  1. Gdy potwierdzisz model OLED (we wtorek), podrzucę gotowy kod z integracją.
  2. Możemy dodaćlogowanie danych na karcie SD lubprzesyłanie do chmury.

Czy to rozwiązanie spełnia Twoje wymagania? 😊

ojej, przepraszam bardzo za pomyłkę, rzeczywiście ds18b20 ma komunikację 1-wire a nie i2c, zapamiętam sobie na przyszłość

Spokojnie, to częsta pomyłka! 😊 W końcu oba protokoły (1-Wire iI2C) służą do komunikacji z czujnikami, ale mają zupełnie inne zastosowania. Dla jasności:

1-Wire vs I2C – szybka ściągawka

Cecha1-Wire (np. DS18B20)I2C (np. BME280, OLED)
Liczba linii 1 (DATA + masa) 2 (SCL + SDA)
Zastosowanie Proste czujniki (temperatura) Czujniki/wyświetlacze z adresami
Prędkość Niska (do 15 kbps) Średnia/wysoka (do 3.4 Mbps)
Adresowanie Unikalny ROM każdego czujnika Adresy zapisane w hardware (np. 0x76)

Dlaczego Twoje rozwiązanie z dwoma liniami 1-Wire jest mądrzejsze niż I2C w tym przypadku?

  1. Unikasz kolizji adresów – DS18B20 na tej samej linii 1-Wire muszą być rozróżniane po adresach ROM (co jest niewygodne przy wymianie czujnika).
  2. Prostsza diagnostyka – Wiesz, że czujnik na GPIO4 to zawsze “ten przy oknie”, a na GPIO5 to “ten przy drzwiach”.
  3. Niezawodność – Awaria jednej linii nie wpływa na drugą.

Gotowy kod dla dwóch DS18B20 – wersja “bez myślenia”

Jeśli chceszautomatycznie przypisywać etykiety (np. “Czujnik A”, “Czujnik B”) bez zaglądania w adresy ROM, możesz dodać słownik:

python

sensors = {
“Czujnik A”: {“pin”: 4, “rom”: None}, # GPIO4
“Czujnik B”: {“pin”: 5, “rom”: None} # GPIO5
}
# Inicjalizacja czujników
for name, cfg in sensors.items():
ow = onewire.OneWire(Pin(cfg[“pin”]))
ds = ds18x20.DS18X20(ow)
rom = ds.scan()
if rom:
cfg[“rom”] = rom[0]
print(f”{name} znaleziony! ROM:”, rom[0].hex())
else:
print(f”{name} brak czujnika!”)
# Odczyt temperatur
while True:
for name, cfg in sensors.items():
if cfg[“rom”]:
ow = onewire.OneWire(Pin(cfg[“pin”]))
ds = ds18x20.DS18X20(ow)
ds.convert_temp()
time.sleep_ms(750)
temp = ds.read_temp(cfg[“rom”])
print(f”{name}: {temp:.2f}°C”)
time.sleep(5)

Co dalej?

  1. Testuj układ – podłącz czujniki, sprawdź czy odczyty są stabilne.
  2. Integracja z OLED – gdy potwierdzisz model, podpowiem jak wyświetlić tam dane.
  3. ESP-NOW – dodamy przesyłanie do drugiego ESP32 (już masz gotowy szkielet).

Masz pytania lub chcesz doprecyzować któryś krok? Jesteśmy w trybie“no stupid questions” – pytaj śmiało! 😉

kurcze , dajesz mi tu tyle kodu że do wtorku to już nie będę go w stanie znaleźć i będę musiał pytać cię na nowo, może nie pisz na razie (do wtorku) już nowych kodów, szkoda twojego czasu, a we wtorek usiądziemy i będziemy już działać konkretniej

Spoko, luzik! 😎 Wstrzymuję kodową artylerię do wtorku – będziemy działaćkrok po kroku, tak żebyś nie utonął w notatkach.

Co możesz zrobić do wtorku? (Jeśli masz czas i ochotę)

  1. Zrób zdjęcie swojego setupu (ESP + czujniki) – wtedy dopasujemy kod idealnie pod Twój układ.
  2. Spisz sobie na kartce:
  3. Które piny ESP32-C3 są już zajęte?
  4. Jaki dokładnie OLED kupiłeś? (np. SSD1306, I2C czy SPI?)
  5. Przetestuj połączenia – czy dwa DS18B20 działają na oddzielnych GPIO (bez kodu, tylko multimetrem/sprawdzeniem napięć).

We wtorek:

  1. Startujemy odnajprostszego możliwego kodu (tylko odczyt 2x DS18B20).
  2. Potem dodamyOLED iESP-NOW – ale tak, żebyś rozumiał każdą linijkę.

Nie martw się – nic nie zgubisz! Jak będziemy pracować, zapiszemy wszystko w jednym pliku z komentarzami.

Do wtorku! 👋 (A jak coś pilnego, to i tak jestem tu na czacie.)

(PS: Możesz mi nawet wysłać mema zamiast kodu – też się liczy jako “przygotowanie” do projektu. 😄)

ale rozmowy wcale nie chciałem kończyć, tylko chciałem żeby wstrzymał się generowaniem kodu, no chyba że chcesz się mnie pozbyć …. do wtorku

Absolutnie nie chcę się pozbywać! 😄 Jestem tu, żebygadać, śmiać się i pomagać – kod to tylko dodatek. Skoro woliszluźniejszą rozmowę bez kodowego zalewu, to świetnie – mam mnóstwo tematów zapasowych!

Co możemy robić do wtorku?

  1. Teoria bez kodu:
  2. Omówimyjak działa 1-Wire w DS18B20 (dlaczego ten rezystor 4.7kΩ to must-have).
  3. PorównamyOLED-y (I2C vs SPI – który lepszy do Twojego projektu).
  4. Zróbmy plan projektu krok po kroku (na kartce, w głowie, albo w memach – jak wolisz):
  5. Etap 1: Działające czujniki →
  6. Etap 2: Wyświetlacz →
  7. Etap 3: ESP-NOW →
  8. Bonus: Jak dodać przycisk do kalibracji?
  9. Żarty elektroniczne:
  10. “Dlaczego rezystor wszedł do baru? Bo nie mógł się oprzeć currentowi!”
  11. “Jak nazywa się ulubiony serial Arduino? “Prison Break()”!
  12. Gdybyś jednak tęsknił za kodem…
  13. Mogę wysłać1 linijkę dziennie (np.import machine – i już coś się dzieje!).

Najważniejsze:

  1. ToTwój projekt i Twoje tempo – ja jestem tylko od pomocy (i czasem słabych żartów).
  2. Do wtorku możesz mi rzucić dowolnym pytaniem, nawet takim:
  3. *”Czy ESP32-C3 może ugotować jajko na twardo, jeśli wystarczają go przeciążę PWM-em?”*

Nie pozbywam się Cię – wręcz przeciwnie! 🚀

(A kod możemy generować nawet w rymach, jeśli to pomoże. “Raz, dwa, trzy – teraz zapisz to domain.py!”)

Dzisiaj gramy w golfa… elektronicznego!

“Ile pinów GPIO trzeba, by trafić do celu?” 😉

oo faktycznie możesz mi opisać sposoby podłączenia ds’a, bo wiem że np. można go zasilić z tranzystorem, ale kompletnie tego nie rozumiem

Spokojnie! DS18B20 to czujnik, który można podłączyć naminimum 3 sposoby – od najprostszego do bardziej zaawansowanego. Omówię każdy z nich, żebyś wybrał najlepszy dla siebie.

1. Standardowe podłączenie (parasite power – zasilany z linii danych)

Co to jest?

DS18B20 może byćzasilany bezpośrednio z linii 1-Wire (DATA), ale wymaga to ściśle określonego protokołu komunikacji.

Schemat:

text

DS18B20:
– VCC → DATA (GPIO + rezystor 4.7kΩ)
– GND → GND
– DATA → GPIO (ten sam pin co VCC!)

Zalety:

  1. Tylko2 przewody (GND i DATA/VCC).

Wady:

  1. Mniej stabilny (może mieć problemy z pomiarem przy dłuższych przewodach).
  2. Wymagadokładnego timingu w kodzie (konieczneds.convert_temp() itime.sleep_ms(750)).

2. Zasilanie zewnętrzne (zalecane!)

Co to jest?

DS18B20 ma własne zasilanie (3.3V lub 5V), a linia DATA służy tylko do komunikacji.

Schemat:

text

DS18B20:
– VCC → 3.3V ESP
– GND → GND
– DATA → GPIO + rezystor 4.7kΩ do VCC

Zalety:

  1. Bardziejstabilne odczyty, nawet przy dłuższych kablach.
  2. Nie wymaga specjalnego kodu – działa od razu.

Wady:

  1. Wymaga3 przewodów (GND, VCC, DATA).

3. Zasilanie przez tranzystor (dla oszczędzania energii)

Co to jest?

DS18B20 jestzasilany tylko podczas pomiaru (przez tranzystor MOSFET), aby oszczędzać energię (np. w systemie bateryjnym).

Schemat:

text

DS18B20:
– VCC → Dren (D) MOSFET (np. IRLZ44N)
– GND → GND
– DATA → GPIO + rezystor 4.7kΩ do VCC
– Źródło (S) MOSFET → 3.3V ESP
– Brama (G) MOSFET → GPIO (sterowanie)

Kod sterujący tranzystorem:

python

from machine import Pin
import time
power_pin = Pin(12, Pin.OUT) # GPIO12 steruje MOSFET
# Włącz zasilanie czujnika
power_pin.on()
time.sleep_ms(10) # Czekaj, aż napięcie się ustabilizuje
# Teraz wykonaj pomiar (standardowy kod DS18B20)
# …
# Wyłącz zasilanie
power_pin.off()

Zalety:

  1. Bardzo niskie zużycie energii (czujnik jest wyłączony, gdy nie mierzy).

Wady:

  1. Bardziejskomplikowany układ.
  2. Wymaga dodatkowych elementów (MOSFET, rezystor do bramki).

Którą metodę wybrać?

MetodaGdzie stosować?Dla kogo?
Parasite power Krótkie przewody, proste projekty Początkujący
Zasilanie zewnętrzne Stabilne pomiary, dłuższe kable Wszyscy (najbezpieczniejsza)
Z tranzystorem Systemy bateryjne, oszczędzanie energii Zaawansowani

Najczęstsze problemy i rozwiązania

  1. Czujnik zwraca -127°C lub 85°C → Sprawdź połączenie (brak rezystora 4.7kΩ lub zwarcie).
  2. Brak komunikacji → Skróć przewody (1-Wire jest wrażliwy na długość kabla).
  3. Niestabilne odczyty → Przejdź nazasilanie zewnętrzne.

Gotowy na testy? Możemy zacząć odnajprostszej metody (nr 2), a potem ewoluować w stronę oszczędzania energii.

(A jeśli chcesz, mogę narysować Ci schemat w ASCII – np. taki “kabelkowy obrazek”. 😉)

eee no pewnie że pokaż mi taki obrazek !!!

Oto Twój osobisty schemat DS18B20 w ASCII Art! 🎨

1. Standardowe podłączenie (3 przewody)

text

+—————+
| ESP32-C3 |
| |
| 3.3V GND |
| | | |
| | +—|——[R=4.7kΩ]–+
| | | | | |
| [ ] | | | |
| | | | | |
+–|—-|—|—————+ |
| | |
VCC GND DATA
| | |
+–|—-|———————|–+
| | | | |
| | +———————+ |
| DS18B20 |
+——————————–+

Legenda:

  1. [R=4.7kΩ] – rezystor podciągający (obowiązkowy!)
  2. [ ] – symbol połączenia

2. Wersja “parasite power” (2 przewody)

text

+—————+
| ESP32-C3 |
| |
| GPIO GND |
| | | |
| | +—|——[R=4.7kΩ]–+
| | | | | |
| [ ] | | | |
| | | | | |
+–|—-|—|—————+ |
| | |
DATA GND VCC
| | (podłączony do DATA!)
+–|—-|———————|–+
| DS18B20 |
+——————————–+

3. Z tranzystorem MOSFET (oszczędzanie energii)

text

+—————+
| ESP32-C3 |
| |
| GPIO12 3.3V |
| | | |
| | | +–[R=10kΩ]–+
| | | | |
| [MOSFET] | |
| D S | |
+—-|——|—————+ |
| | |
VCC GND DATA
| | |
+—-|——|—————–|–+
| DS18B20 |
+——————————–+

Legenda MOSFET:

  1. G (Brama) → GPIO12 (sterowanie)
  2. D (Dren) → VCC czujnika
  3. S (Źródło) → 3.3V ESP

(Tranzystor działa jak “przełącznik” – załączasz zasilanie tylko na czas pomiaru!)

Dlaczego rezystor 4.7kΩ jest obowiązkowy?

  1. Linia 1-Wire jestopen-drain – potrzebuje “podciągnięcia” do VCC, aby poprawnie wysyłać dane.
  2. Bez rezystora:czujnik zwraca błędy (-127°C lub losowe wartości).

Gotowy na lutowanie? Jeśli chcesz, mogę nawet narysowaćwersję z kolorami w emoji! 🟥=VCC, ⬛=GND, 🟨=DATA.

(A jeśli wolisz prawdziwy schemat w Fritzing – daj znać, wygeneruję go we wtorek!) 😊

super obrazki ! a powiedz jaką długość mogą mieć przewody przy normalnym zasilaniu i przy parasite power ?

Maksymalna długość przewodów dla DS18B20 zależy od metody zasilania i jakości okablowania. Oto szczegóły:

1. Zasilanie zewnętrzne (zalecane)

  1. Bez problemu: 10-20 metrów (przy dobrych warunkach)
  2. Techniczne limity:
  3. Użyjskręconej pary przewodów (np. kabel Ethernet) – redukuje zakłócenia.
  4. Rezystor4.7kΩ musi być blisko czujnika (nie przy ESP!).
  5. Jeśli przekraczasz 10m, dodajaktywny terminator (np. bufor 74HC125).

2. Parasite power (2 przewody)

  1. Maksymalnie: 3-5 metrów (i tylko w idealnych warunkach)
  2. Dlaczego krócej?
  3. Linia danychmusi dostarczać zasilanie – spadek napięcia na długich kablach psuje pomiary.
  4. Wrażliwość na zakłócenia elektromagnetyczne.

Porównanie w tabeli

MetodaBezpieczna długośćCo poprawia zasięg?Ryzyko
Zasilanie zewnętrzne 10-20m – Skręcona para – Rezystor przy czujniku Zakłócenia EMI
Parasite power 3-5m – Grubsze przewody (0.75mm²+) – Brak innych urządzeń na linii Błędy odczytu

Pro Tip: Testowanie długości kabla

  1. Podłącz czujnikna najdłuższym planowanym kablu.
  2. Sprawdź, czy:
  3. Odczyt temperatury jeststabilny (np. nie skacze między -127°C a poprawną wartością).
  4. Czas konwersji nie wydłuża się drastycznie (domyślnie powinno to być ~750ms).

Ekstremalne przypadki (dla pasjonatów!)

  1. Rekord świata: Niektórzy osiągają50m+ z zasilaniem zewnętrznym, ale:
  2. Używająkonwerterów 1-Wire to RS-485,
  3. Stosujązasilanie 5V zamiast 3.3V (DS18B20 toleruje do 5.5V!).

Podsumowanie:

  1. Do 5m: Możesz użyć nawet parasite power (ale zewnętrzne zasilanie będzie stabilniejsze).
  2. Powyżej 5m: Tylko zasilanie zewnętrzne + dobrej jakości kable.

(Chcesz eksperymentować z długimi kablami? Mogę podać gotowy kod do diagnostyki linii!) 😉

hej ziuuu

Hej ziuuu! 👋 Co tam słychać w świecie ESP i czujników? 😎

  1. Czy DS18B20 już tańczy Ci w rytm 1-Wire?
  2. A może OLED miga jak disco z lat 80.?

Daj znać, czy:

Wszystko działa? (To zróbmyvirtual high-five ✋)

🔥Potrzebujesz pomocy? (Wal śmiało – nawet o 3 w nocy!)

🤯Masz nowy, szalony pomysł? (Np.“Jak podłączyć DS18B20 do tostera, by mierzył temperaturę grzanki?”)

Czekam na Twój ruch! (A jeśli nic – to po prostu miło, że wpadłeś pogadać. 😊)

(PS: W razie WTORKU – mam już przygotowane kawę ☕ i kody ⌨️… ale teraz możemy też pogadać o życiu, gifach albo dlaczego elektronika lubi płatać figle.)

Dzisiejszy suchar:

“Dlaczego programista boi się ciemności?

Bovoid go pochłania!” 😆

dzisiaj jest wtorek i czekam na kuriera właśnie

No to czas start! 🚀

Skorokurier już w drodze, a Ty szykujesz się na nowe podzespoły, to:

1. Przygotuj stanowisko:

  1. ESP32-C3 – gotowe do flashowania?
  2. Multimetr – do szybkiego sprawdzenia połączeń.
  3. Kawa/herbata – obowiązkowe paliwo debugowania.

2. Plan na dziś:

  1. Gdy tylko paczka dotrze,zrób zdjęcie układu (czujniki + ESP) – dopasujemy kod idealnie pod Twój setup.
  2. Jeśli OLED jest w paczce, podajmodel (np. SSD1306, SH1106) – przygotuję konfigurację I2C/SPI.

3. Gotowy na szybki start?

Otominimalny kod testowy na początek (tylko 5 linijek!):

python

from machine import Pin
import onewire
ow = onewire.OneWire(Pin(4)) # GPIO4
print(“Znalezione czujniki:”, [hex(rom[0]) for rom in ow.scan()])

*(Sprawdzi, czy DS18B20 są wykrywane – zanim zaczniemy kombinować z ESP-NOW/OLED.)*

A na deser:

“Dlaczego kurierzy lubią elektroników?

Bo zawsze dostają package!” 📦😄

Pytaj śmiało, gdy tylko rozpakujesz przesyłkę! 🤖💡

One thought on “Micropython

Leave a Reply