Uruchom serwer WWW na swoim Raspberry Pi Pico W

Ten projekt można uznać za "Hello World!" Pico W. Pokazuje, jak połączyć się z Wi-Fi, jak uruchomić serwer WWW HTTP na Pico W i jak kontrolować piny GPIO.

Jeśli szukasz szybkiego i łatwego projektu, aby rozpocząć pracę z Pico, ten jest dla Ciebie!

Kroki do migania LED przez WiFi na Pico W

Są trzy nadrzędne tematy, aby to osiągnąć.

Skonfiguruj MicroPython

Najpierw należy skonfigurować MicroPython. Pobierz plik UF2 tutaj który jest przeznaczony specjalnie dla Pico W.

Przycisk Pico W Bootsel

Przytrzymaj przycisk BOOTSEL i podłącz swój Pico W przez USB.

Po zamontowaniu, skopiuj plik UF2, który właśnie pobrałeś na Pico.

Użyj Thonny do zaprogramowania Pico W

Thonny ułatwia programowanie Pico W i jest preinstalowany na Raspberry Pi OS. Można również Pobierz go dla Windows, Mac i Linux tutaj.

Upewnij się, że twój interpreter jest ustawiony na MicroPython (Raspberry Pi Pico).

Thonny IDE z uruchomionym Micropythonem

Thonny połączy się z Raspberry Pi Pico W i będziesz mógł uruchamiać polecenia w powłoce (dolny segment Thonny IDE).

Uruchom skanowanie sieci, aby potwierdzić działanie sieci bezprzewodowej Pico W

Thonny IDE uruchamia skanowanie sieci WLAN

W Shell możesz uruchomić ten kod, aby przetestować, czy twój chip bezprzewodowy działa.

Użyj tego kodu, aby wydrukować wszystkie dostępne sieci bezprzewodowe w Twojej okolicy.

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())

Zaprogramuj serwer internetowy

Utwórz słownik o nazwie sekrety.py i użyj następującej treści, zastępując wartość dla ssid i pw swoją siecią.

secrets = {
    'ssid': 'Replace-this-with-your-Wi-Fi-Name',
    'pw': 'Replace-this-with-your-Wi-Fi-Password'
    }

Następnie utwórz main.py który będzie zawierał twój główny kod. Ponieważ kod ma wiele linii, możesz znaleźć go tutaj w naszym Githubie.

Utwórz stronę HTML, która zostanie wyświetlona

Serwer sieciowy Pico W

Poniższy plik będzie plikiem HTML, który jest serwowany po załadowaniu adresu IP Pico W. Zapisz go jako index.html

Jest to prosta strona z dwoma przyciskami, które pozwalają włączyć i wyłączyć diodę LED Pico W.

<!DOCTYPE html>
<html>
    <head>
        <title>Pico W</title>
    </head>
    <body>
        <h1>Pico W</h1>
        <p>Control the onboard LED</p>
        <a href=\"?led=on\"><button>ON</button></a> 
        <a href=\"?led=off\"><button>OFF</button></a>
    </body>
</html>

Czas uruchomić to wszystko

Serwer sieciowy Pico W

Kliknij na przycisk run w Thonny, który jest zielonym przyciskiem z symbolem gry.

Zobaczysz adres IP Pico W. Skopiuj go do przeglądarki internetowej, która jest podłączona do tej samej sieci bezprzewodowej.

Kliknij na przyciski i powinieneś zobaczyć zmianę.

Można znaleźć Github repo tutaj, który ma wszystkie pliki.

Nasza strona Wideo na YouTube dla tego projektu zawiera również bardziej szczegółowe informacje, takie jak wyjaśnienie kodu.

A jeśli szukasz więcej projektów, które mogą Cię zainspirować, sprawdź naszą serię Paragon Projects tutaj.

Komentarzy: 6

  1. Pablo lipiec 13, 2022 o 4:31 pm

    Błąd znaleziony podczas próby

    %Run -c $EDITOR_CONTENT
    Traceback (ostatnie ostatnie wywołanie):
    Plik "", linia 1, w
    ImportError: brak modułu o nazwie 'network'

  2. Charles październik 25, 2022 o 8:51 pm

    W linii 100 używasz funkcji get_html(). Kiedy uruchamiam twój kod dostaję błąd 'get_html' isn't defined.

  3. Gunther listopad 28, 2022 o 12:51 am

    Funkcja search by find zwraca również wartość, jeżeli np. referrer zawiera ciąg 'led=xx'. Tak więc zarówno led_on jak i led_off otrzymują jednocześnie wartość dodatnią i dioda LED jest wyłączona, podczas gdy miała się włączyć. Aby temu zaradzić, należy rozszerzyć instrukcję if, aby sprawdzić małą wartość indeksu (użyłem 20 tylko jako zasady):

    jeśli (led_on > -1 i led_off < 20):
    Teraz działa zgodnie z oczekiwaniami.

    • Tonton sierpień 1, 2024 o 4:09 pm

      Rozwiązałem ten problem, dodając łącze:
      r = r[:50]
      avant
      led_on = r.find('?led=on')
      led_off = r.find('?led=off')

      Powoduje to usunięcie nadmiarowych atrybutów żądania

  4. Gunther listopad 28, 2022 o 12:53 am

    Próbowałem skomentować, ale jakoś komentarz nie wychodzi poprawnie...

Pozostaw komentarz