Strumenti Utente

Strumenti Sito


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