microcontrollori:web_server_raspberry_pi_pico2
Un piccolo web server di prova su rapberry pi pico2 w
Autore: Fabio Di Matteo
Ultima revisione: 16/05/2025 10:17
Uno script che si connette al wifi di un modem e lancia un web server con le rotte /on e /off per accendere il led su gp28. Inoltre segnala l'avvenuta connessione al wifi accendendo il led su gp1. Come se non bastasse lo script fa lampeggiare gp2 a ogni richiesta del webserver. I parametri per la connessione sono presenti nel modulo “conf.py” che importo.
main.py
import uasyncio as asyncio import socket import network import utime from machine import Pin import time import _thread from conf import * # Configura il pin GPIO 28 come output led = Pin(28, Pin.OUT) led_wifi_ok=Pin(1,Pin.OUT) led_wifi_ok.value(0) led_request=Pin(2,Pin.OUT) led_request.value(0) def accendi_led(): led.value(1) print("LED acceso") def spegni_led(): led.value(0) print("LED spento") # Configura la connessione Wi-Fi wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) print("Cerco di connetermi al wifi...") while not wlan.isconnected(): utime.sleep(1) #ip statico wlan.ifconfig((ip, subnet, gateway, gateway)) print('Connessione stabilita: ') led_wifi_ok.value(1) def blink(): global led_request led_request.value(1) utime.sleep(1) led_request.value(0) async def handle_client(client): request = client.recv(1024) print("Request:", request) if '/on' in request: html = "led acceso (/on)" accendi_led() client.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n') client.send(html) client.close() elif '/off' in request: html = "led spento (/off)" spegni_led() client.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n') client.send(html) client.close() else: html = "404 Rotta non trovata" client.send('HTTP/1.0 404 Not Found\r\nContent-type: text/html\r\n\r\n') client.send(html) client.close() async def web_server(): addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] s = socket.socket() s.bind(addr) s.listen(1) print("Listening on", addr) while True: client, addr = s.accept() print("Client connected from", addr) #lampeggio led su gp2 ad ogni richiesta _thread.start_new_thread(blink,()) await handle_client(client) try: asyncio.run(web_server()) except KeyboardInterrupt: print("Server stopped")
conf.py
# Configura la connessione Wi-Fi ssid = 'la tua ssid' password = 'password wifi' ip = '192.168.1.122' subnet = '255.255.255.0' gateway = '192.168.1.1'
microcontrollori/web_server_raspberry_pi_pico2.txt · Ultima modifica: 16/05/2025 14:59 da Fabio Di Matteo