Связь ESP8266 и Python

Я новичок в работе с сетями и работе с ESP8266. Я успешно настроил свой ESP8266 и могу запрограммировать его из Arduino IDE (протестировал мигающий код).

Я хочу отправить некоторые данные из скрипта Python, запущенного на моем ПК, на ESP8266. Подобно установке, где используется PySerial в Python, откройте COM-порт и отправьте мои последовательные данные в Arduino. Arduino проанализирует мои байты данных и выполнит какое-то действие. Теперь я пытаюсь добиться того же, заменив ESP8266 и UART беспроводной связью.

Во-первых, я хотел бы подключить свой компьютер к ESP, у которого будет собственный SSID и пароль. После подключения я хотел бы отправить байты данных из скрипта Python на ESP8266 по беспроводной сети. Теперь аналогичным образом ESP будет анализировать полученные данные и выполнять некоторые функции (например, управлять своими GPIO).

Как этого добиться? Это кажется довольно простой задачей, но я действительно смущен тем, какой режим я должен использовать (AP? Клиент? Сервер?). Какой протокол для связи лучше (TCP? MQTT?). Что делают такие функции, как Handle client/root? Я понимаю, что мне нужно использовать программирование сокетов на Python, как это сделать конкретно в моем случае? Как буферизовать входящие данные в ESP, чтобы не пропустить байты?

Может ли кто-нибудь объяснить, используя аналогию с беспроводной связью и UART? Любые ссылки на учебники также будут полезны. В Интернете есть несколько учебных пособий, в которых они делают это с помощью HTTP-сервера и управляют GPIO из браузера, но нет, я этого не хочу. Я просто хочу отправить свои данные так же, как с COM-портом/UART/Arduino!

, 👍1

Обсуждение

как веб-разработчик, я считаю http самым простым методом взаимодействия: четкий цикл req/res, встроенные парсеры для GET-параметров, коды состояния, простая отладка с других устройств и т. д. с потоками нужно много нюхать вне., @dandavis


3 ответа


0

Простейшим IP-эквивалентом UART являются сокеты TCP/IP. Создайте прослушивающий сокет на ESP8266 и подключитесь к нему с ПК (или наоборот, если хотите). Данные, подаваемые с одного конца, выходят с другого — как через последовательный порт.

Есть примеры с ядром ESP8266, которые делают именно это.

,

0

Вы должны настроить ESP как точку доступа, если хотите, чтобы у него был собственный IP-адрес. Вы затем настраиваете tcp-сервер на ESP (думаю, в IDE есть примеры функций).

Имейте в виду, что связь (сервер/клиент, которую вы упомянули) не имеет ничего общего с тем, как ПК и ESP соединены (предоставляет ли ESP точку доступа или входит в ваш WiFi). Это разные уровни протокола, что означает, что вам не нужно вносить никаких изменений, если вы хотите, чтобы ПК и ESP вообще обменивались данными через ваш маршрутизатор.

На самом деле ESP (или, по крайней мере, для ESP8266-12F, насколько я знаю точно) способен запускать и ap, и wificlient одновременно.

Это не имеет большого значения для последовательной связи, вам нужно будет опрашивать входящие сообщения в вашем цикле, если вы хотите запустить сервер. Отправка сообщений на ваш компьютер аналогична печати через последовательный интерфейс.

,

1

Проверьте мой проект: "Esp 2 Python"

https://github.com/KebabLord/esp_to_python

Теоретически вы можете создать локальный хост и получать данные датчика или управлять модулем через запросы Arduino или модули urllib с помощью простого локального сервера mDNS. Этот проект позволяет вам контролировать и читать ESP. схема моего кода

Снимок экрана из кода, вы используете только 3 функции для управления им

,

Я не мог заставить ваш код работать, @DrBwts

это был буквально суп, я радикально упростил его, теперь он слишком прост в использовании, попробуйте еще раз :3, @Juko