Créez un point d’accès avec le Raspberry Pi Pico W, servez une page Web et faites clignoter la LED intégrée

Créez un point d'accès avec le Raspberry Pi Pico W, servez une page Web et faites clignoter la LED intégrée

Après divers exemples, j’ai créé un script MicroPython qui effectue les opérations suivantes :

  • Créez un point d’accès sur le Raspberry Pi Pico W.
  • Créer un serveur Web.
  • Servir une page simple sur ce serveur Web.
  • Basculez/faites clignoter la LED intégrée lorsque cette page est chargée/actualisée.

TL ; DR – voir le code ici

Téléchargez MicroPython et installez-le

Tout d’abord, vous devrez télécharger le dernier MicroPython UF2. Celui que j’utilise est v1.19.1-108-g474c47d59 (2022-07-08) .uf2 de cette page. J’ai découvert via les forums Raspberry Pi qu’il y avait quelque chose de cassé sur les versions antérieures à la 07-05 – regarde le fil ici.

Ensuite, vous devrez mettre le Pico en mode chargeur de démarrage, puis faire glisser le fichier UF2 vers le périphérique externe qui apparaît.

Point d’accès initial

Utilisez Thonny pour programmer le code initial :

import socket
import network

ssid = "PicoW"
password = "123456789"

ap = network.WLAN(network.AP_IF)
ap.config(essid=ssid, password=password) 
ap.active(True)

while ap.active == False:
  pass

print("Access point active")
print(ap.ifconfig())

Malgré la définition du SSID, pour commencer, j’ai obtenu un nom wi-fi générique commençant par « PICO ». Pour faire fonctionner PicoW, j’ai dû cycle de puissance le Pico (plutôt que simplement CTRL-D et relancer). C’est le comportement décrit ici sur les forums RP.

J’ai essayé de m’y connecter avec mon mobile et Succès – Je pouvais me connecter au point d’accès, mais je n’avais pas Internet (comme prévu, évidemment).

Servir une page Web

Maintenant, je veux servir une page Web quelconque à partir du Pico W, sinon c’est assez inutile. Quel est l’intérêt d’avoir un point d’accès qui ne fait rien ?

j’ai trouvé ça Bibliothèque MicroPython appelée tinyweb qui est comme Ballon, mais pour MicroPython au lieu de Python à part entière. Je peux l’utiliser pour établir des « routes » qui fourniront un contenu spécifique via le navigateur Web.

tinyweb nécessite, comme il est indiqué dans le README, la bibliothèque de journalisation. J’ai dû fouiller pour trouver ça, alors voilà.

J’ai téléchargé le dossier tinyweb et le fichier logging.py sur le PicoW et ajouté

import tinyweb

en haut du code. Cela a fonctionné correctement, j’ai donc regardé la documentation de tinyweb pour savoir comment créer un serveur Web.

J’ai ajouté un peu plus de code (que vous pouvez voir sur mon propre référentiel GitHub – WordPress fait des choses TRÈS bizarres si je le colle ici !)

Je me suis reconnecté à l’AP à l’aide de mon téléphone, désactivé les données mobiles pour s’assurer qu’il n’a pas essayé de servir du contenu à partir d’Internet, puis a accédé à http://192.168.4.1/ (qui avait été imprimé sur le REPL que je pouvais voir parce que j’utilisais Thonny).

A ma grande surprise, j’ai eu Bonjour le monde! sur le navigateur. Yay! Ça marche!

Faites clignoter la LED intégrée

J’ai ajouté la définition de la LED embarquée :

led = Pin("LED", Pin.OUT)

et définissez le chemin / du serveur Web tinyweb pour l’activer et le désactiver.

Maintenant, lorsque j’actualise la page Hello World, la LED s’allume et s’éteint. Formidable!

Voir le code sur GitHub.