Введение
Используйте FRP для NAT IP-адреса частной сети Raspberry Pi на облачный сервер в общедоступной сети и используйте USB-соединение между Raspberry Pi и ESP8266 для реализации удаленного управления ESP8266.
Введение в среду разработки
Сегодняшний герой выглядит так:
webrepl.pyСинхронизация доски и трамплина (локальная) может быть завершена. Также необходимо установить трамплинesptool, прошил в него прошивку. Разумеется, между трамплином и esp8266 необходим кабель microUSB (у купленного мной esp8266 есть микросхема USB2UART — CP2102).
# install esptool
pip install esptool
# download bin file
wget http://micropython.org/resources/firmware/esp8266-20191220-v1.12.bin
Вам также понадобится машина для разработки под рукой, как Mac, так и Linux (при условии, что вы можете открыть терминал и иметь сеть) или напрямую использовать raspberry, но условия не такие уж сложные. Т.к. ресурсы трамплинной машины (малина) относительно ограничены, я ее не устанавливалvirtulenv, если ресурсы компьютера относительно богаты, рекомендуется использовать среду venv, а с плагином autoenv для zsh эффективность явно повышается.
Write Flash
Производитель esp8266 предоставляет прошивку, но я не знаю языка C. Итак, сначала просто очистите исходную прошивку и прошейте прошивку, поддерживающую microPython.
# erase flash
esptool.py --port /dev/ttyUSB0 erase_flash
# write new flash
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20191220-v1.12.bin
в /dev/tty*это порт, соответствующий esp8266, который варьируется от машины к машине. В целом /dev/ttyUSB0(малина) или/dev/cu.SLAB_USBtoUART(мак). Windows обычно COM*. Обычно рекомендуется использовать Window в качестве основной машины для разработки встраиваемых систем.Но я не люблю Windows.
Протест-fm dioНужно добавить, конкретные причины объясняются в официальной документации:
For some boards with a particular FlashROM configuration (e.g. some variants of a NodeMCU board) you may need to use the following command to deploy the firmware (note the -fm dio option)
Затем прошивается прошивка.
Wi-Fi подключение к сети
Можно сказать, что если нет сети, ESP8266 не во что играть. После прошивки прошивки microPython нужно нажатьRST ключ. Тогда вы можете пройтиscreenПодключитесь к microPython REPL (требуется USB-кабель)
# attach raspberry
ssh -i ~/.ssh/id_rpi -oPort=9434 pi@192.168.1.2
# attach microPython REPL
screen /dev/ttyUSB0 115200
Затем введите microPythonREPL
MicroPython v1.12 on 2019-12-20; ESP module with ESP8266
Type "help()" for more information.
>>>
Откройте webREPL, затем вы сможете загружать файлы на доску
>>> import webrepl_setup
Просто следуйте инструкциям. Неудивительно, что вы успешно открыли WebREPL и установили пароль.
WebREPL daemon started on ws://192.168.4.1:8266
Затем убедитесь, что он находится в той же локальной сети, что и Esp8266~.. Если есть машина-трамплин, она должна находиться в той же локальной сети, что и машина-трамплин и esp8266, и машина может получить доступ к машине-трамплину. Плата сама создаст WIFI, имяMicroPython-xxxxxx, пароль _micropythonN_ и следующий склад будетcloneПерейдите на трамплин или локально и начните
git clone git@github.com:micropython/webrepl.git
Затем создайте файл локальноboot.py. Этот файл будет выполнен автоматически после начала работы платы.
# -*- coding:utf-8 -*-
# 2020-02-13
# https://docs.micropython.org/en/latest/esp8266/quickref.html#networking
import network
def init_wifi_conn(wlan, ssid, pwd):
wlan.active(True)
wlan.connect(ssid, pwd)
while not wlan.isconnected():
pass
print("network config:", wlan.ifconfig())
def do_connection():
sta_if = network.WLAN(network.STA_IF)
# remember modify ssid and pwd.
ssid = "your_wifi_ssid"
pwd = "your_wifi_pwd"
if not sta_if.isconnected():
init_wifi_conn(sta_if, ssid, pwd)
if __name__ == '__main__':
import webrepl
do_connection()
webrepl.start()
Затем выполните следующую команду на трамплине, чтобы отправить локальный файл на esp8266:
# cd webrepl
./webrepl_cli.py -p 1234 boot.py 192.168.4.1:/boot.py
Затем зажмите кнопку сброса платы и передайтеscreenВведите REPL microPython для просмотра и обнаружите, что у webREPL есть дополнительный адрес, как показано на следующем рисунке:
WebREPL daemon started on ws://192.168.4.1:8266
WebREPL daemon started on ws://192.168.1.2:8266
Started webrepl in normal mode
следующее192.168.1.2Это IP-адрес, назначенный Esp8266 маршрутизатором. WebREPL также может использовать веб-версию следующим образом:
# cd webrepl
python3 -m http.server
Затем локальный браузер получает доступhttp://{跳板机IP}:8000/webrepl.html, так же можно подключить esp8266
GPIO
Нажмите и удерживайте в течение двух секунд, чтобы определить QR-код, которому нужно следовать.▼