Запуск веб-сервера на Raspberry Pi Pico W
Этот проект можно рассматривать как "Hello World!" для Pico W. Он демонстрирует, как подключиться к Wi-Fi, как запустить HTTP-веб-сервер на Pico W и как управлять выводами GPIO.
Если вы ищете быстрый и простой проект для начала работы с Pico, то этот проект для вас!
Шаги для мигания светодиода через WiFi на Pico W
Для того чтобы добиться этого, есть три главные темы.
Настройка MicroPython
Сначала необходимо настроить MicroPython. Скачайте файл UF2 здесь который специально предназначен для Pico W.
![Кнопка Pico W Bootsel](https://picockpit.com/raspberry-pi/wp-content/uploads/2022/07/image-2.png)
Удерживая нажатой кнопку BOOTSEL, подключите Pico W через USB.
Как только он будет смонтирован, скопируйте файл UF2, который вы только что загрузили, на Pico.
Используйте Thonny для программирования Pico W
Thonny упрощает программирование Pico W и поставляется с предустановленной ОС Raspberry Pi. Вы также можете скачать его для Windows, Mac и Linux можно здесь.
Убедитесь, что ваш интерпретатор установлен на MicroPython (Raspberry Pi Pico).
![IDE Thonny под управлением Micropython](https://picockpit.com/raspberry-pi/wp-content/uploads/2022/07/image-3-1024x630.png)
Thonny подключится к Raspberry Pi Pico W, и вы сможете выполнять команды в оболочке (нижний сегмент IDE Thonny).
Запустите сканирование сети, чтобы убедиться, что беспроводная сеть Pico W работает
![Thonny IDE запускает сканирование wlan](https://picockpit.com/raspberry-pi/wp-content/uploads/2022/07/image-4-1024x750.png)
В Shell вы можете запустить этот код, чтобы проверить, работает ли ваш беспроводной чип.
Используйте этот код, чтобы распечатать все доступные беспроводные сети в вашем регионе.
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())
Программирование веб-сервера
Создайте словарь под названием secrets.py и используйте следующее содержимое, заменив значения ssid и pw значениями вашей сети.
secrets = {
'ssid': 'Replace-this-with-your-Wi-Fi-Name',
'pw': 'Replace-this-with-your-Wi-Fi-Password'
}
Затем создайте main.py в котором будет размещен ваш основной код. Поскольку код состоит из многих строк, вы можете найти его здесь, на нашем Github.
Создайте HTML-страницу, которая будет обслуживаться
![Веб-сервер Pico W](https://picockpit.com/raspberry-pi/wp-content/uploads/2022/07/image-5-1024x575.png)
Следующий файл будет HTML-файлом, который будет обслуживаться при загрузке IP-адреса Pico W. Сохраните его как index.html
Это простая страница с двумя кнопками, которые позволяют включать и выключать светодиод 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>
Время управлять всем этим
![Веб-сервер Pico W](https://picockpit.com/raspberry-pi/wp-content/uploads/2022/07/image-6-1024x613.png)
Нажмите на кнопку запуска в Thonny, которая представляет собой зеленую кнопку с символом игры.
Вы увидите IP-адрес Pico W. Скопируйте его в веб-браузер, подключенный к той же беспроводной сети.
Нажмите на кнопки, и вы увидите изменения.
Вы можете найти Репозиторий Github здесь, в котором есть все файлы.
А если вы ищете другие проекты для вдохновения, то ознакомьтесь с серией проектов Paragon Projects здесь.
Ошибка обнаружена, когда я пытаюсь это сделать
%Run -c $EDITOR_CONTENT
Traceback (последний последний вызов):
Файл "", строка 1, в
ImportError: нет модуля с именем 'network'
Привет, Пабло - убедитесь, что вы используете последний файл UF2 для Pico W (не только для Pico), который можно найти здесь. https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
Сетевой модуль входит в стандартную комплектацию!
В строке 100 вы используете функцию get_html(). Когда я запускаю ваш код, я получаю ошибку 'get_html' не определена.
Функция поиска по find также возвращает значение, если, например, реферер содержит строку 'led=xx'. Таким образом, и led_on, и led_off получают положительное значение одновременно, и светодиод снова выключается, когда он должен был включиться. Чтобы преодолеть это, оператор if должен быть расширен для проверки небольшого значения индекса (я использовал 20 только в качестве эмпирического правила):
если (led_on > -1 и led_on -1 и led_off < 20):
Теперь он работает так, как ожидалось.
Я пытался прокомментировать, но почему-то комментарий не выходит правильно...