Search
Import balíčků:
'help('modules')
Aktivace Wi-Fi rozhraní:
Aktivace Wi-Fi rozhraní na Raspberry Pi Pico. network.WLAN(network.STA_IF) vytvoří instanci Wi-Fi rozhraní pro STA (Station) režim, což znamená, že zařízení bude fungovat jako klient Wi-Fi sítě. wlan.active(True) pak aktivuje toto rozhraní.
network.WLAN(network.STA_IF)
wlan.active(True)
wlan = network.WLAN(network.STA_IF) wlan.active(True)
Přípojení k Wi-Fi síti:
Pokus o připojení Raspberry Pi Pico k Wi-Fi síti s daným SSID a heslem.
wlan.connect(SSID, PASSWORD)
Čekání na připojení:
Kontorla, zda je Raspberry Pi Pico úspěšně připojen k Wi-Fi síti. Pokud není, program čeká na dobu 1 sekundy a poté zkontroluje znovu. Tento proces se opakuje, dokud není připojení úspěšné.
while wlan.isconnected() == False: print('Waiting for connection...') sleep(1)
Výpis konfigurace síťového rozhraní
Po úspěšném připojení k Wi-Fi síti se vypíše konfiguraci síťového rozhraní, která zahrnuje IP adresu, masku podsítě, bránu a DNS servery.
print(wlan.ifconfig())
Inicializace MQTT klienta
Inicializace MQTT klienta s daným client_id, adresou SERVER a PORT MQTT brokeru. client_id je jedinečný identifikátor klienta v síti MQTT.
client = MQTTClient(client_id="RaspberryPiPico", server=SERVER, port=PORT) client.connect()
Příprava zprávy
Zpráva je vytvořena jako JSON objekt, který obsahuje aktuální časové razítko a teplotu. Časové razítko je převedeno na celé číslo pro kompatibilitu s JSON.
current_timestamp = int(time()) MESSAGE = json.dumps({"time": current_timestamp, "temp": 23.5})
Publikování zprávy
client.publish() publikuje připravenou zprávu na daný TOPIC pomocí MQTT klienta.
client.publish()
client.publish(TOPIC, MESSAGE)
Výpis publikované zprávy
print(f'Published message [{TOPIC}]: {MESSAGE}')
Tento kód vypíše publikovanou zprávu a její topic pro potvrzení, že zpráva byla úspěšně odeslána.
# Odpojení od MQTT brokeru client.disconnect() # Odpojení od Wi-Fi sítě wlan.disconnect()
Pro měření teploty a vlhkosti lze využít DHT11/22, který je připojen prostřednictvím 1-wire sériové sběrnice. Modul 'dht' je v Micropythonu vestavěn.
'dht
Pokud má senzor 4 vývody, jedná se o starší typ a je třeba použit externí pull-up rezistor nebo zapnout interní. Modul s třemi vývody má pull-up rezistor integrován, takže je možné připojení přímo k GPIO pinu mikrokotroléru, v tomto případě GP4.
from dht import DHT22 from machine import Pin p = Pin(4) d = DHT22(p) d.measure() d.temperature() d.humidity()
Při připojování dejte pozor na volbu správných vývodů. GP4 je fyzicky 6. vývod, pro napájení využijte pin VBUS na 40. vývodu, na který je routováno napěti +5V z mikroUSB konektoru. Pin GND volte dle potřeby, např. 3. vývod.
VBUS
Pokud čtení informace ze senzoru trvá příliš dlouho a docházi k timeoutu, lze kód zlepšit:
from machine import Pin from dht import DHT22 import time, sys p = Pin(4) d = DHT22(p) while True: try: d.measure() time.sleep(2) tem = d.temperature() hum = d.humidity() print('Temp:', hum, 'C\tHumidity', tem, '%') time.sleep(1) except OSError as e: print("Cant read:", e) sys.print_exception(e)
Další informace:
Rozšiřte svou IoT platformu o podporu MQTT komunikace přes internet. Vytvořte program pro Raspberry Pi Pico W který se přípojí k dostupné Wi-Fi sítí pomocí které bude Pico publikovat zprávy s daty (timestamp, teplota) do MQTT topicu. Z tohoto topicu bude Flask aplikace odebírat zprávy nad kterými provede kontrolu, zda jsou ve správném formátu. Pokud budou data správně formátovaná, pak se uloží do databáze a budou dostupna skrze webové rozhraní i REST API.
MQTT komunikace NENAHRAZUJE UART komunikaci. Bude možné posílat data jak prostřednictvím MQTT, tak i UART.
Bonus: