ESP8266:Примеры/Как наладить коммуникацию между двумя ESP8266

Материал из ВикиСправочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1819 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Как наладить коммуникацию между двумя ESP8266[1]

Эта статья рассказывает, как настроить коммуникацию между двумя модулями ESP8266.

Как это работает

Первый ESP8266 будет настроен как точка доступа (сервер), а второй – как станция (клиент). Между ними будет установлено беспроводное соединение, и клиент будет отправлять серверу сообщение «Hello, World!»

Esp-client-vs-server.jpg

Перед тем, как продолжить, пройдите вот эти руководства:

Прошивку NodeMCU нужно загрузить на оба ESP8266.

Необходимые компоненты

  • Два модуля ESP8266
  • Один программатор FTDI
ESP01v0.jpg

Схема подключения 3,3-вольтового программатора FTDI

Чтобы загрузить код на ESP8266, вам нужно настроить между ним и программатором FTDI последовательное соединение. Сделайте это и для клиента, и для сервера.

ESP-Schematics (3.3V FTDI Programmer).png

Установка и загрузка ESPlorer IDE

Для загрузки LUA-файлов на ESP8266 рекомендую использовать программу ESPlorer IDE, написанную пользователем 4refr0nt. Чтобы установить ее, сделайте следующее:

  1. Кликните здесь, чтобы скачать ZIP-архив с ESPlorer IDE
  2. Распакуйте скачанный архив
  3. Перейдите в главную папку
  4. Запустите файл «ESPlorer.jar». Это программа на JAVA, поэтому на вашем компьютере должна быть установлена JAVA.
  5. Откройте ESPlorer IDE
Esplorer-start.png

Скрипт для сервера

Не забудьте, опять же, что прошивку NodeMCU нужно записать на оба ESP8266. Затем скопируйте и вставьте в ESPlorer IDE код, показанный ниже.

В этом скрипте ESP-сервер выступает точкой доступа с собственным SSID (test) и паролем (12345678). Этот сервер устанавливает соединение, потом начинает его прослушивать и, если получает сообщение, то печатает его в мониторе порта.

  1. -- Автор – Руи Сантос (Rui Santos)
  2. -- Более подробно о проекте на http://randomnerdtutorials.com
  3. -- Сервер ESP8266
  4.  
  5. print("ESP8266 Server")  --  "Сервер ESP8266"
  6. wifi.setmode(wifi.STATIONAP);
  7. wifi.ap.config({ssid="test",pwd="12345678"});
  8. print("Server IP Address:",wifi.ap.getip())  --  "IP-адрес сервера:"
  9.  
  10. sv = net.createServer(net.TCP)
  11. sv:listen(80, function(conn)
  12.     conn:on("receive", function(conn, receivedData)
  13.         print("Received Data: " .. receivedData)      
  14.           --  "Полученные данные: "
  15.     end)
  16.     conn:on("sent", function(conn)
  17.       collectgarbage()
  18.     end)
  19. end)

Загрузка скрипта на ESP8266

Откройте ESPlorer IDE, если еще не открыли, а затем проделайте следующее:

  1. Подключите программатор FTDI к компьютеру
  2. Выставьте скорость передачи данных на 9600 бод
  3. Выберите порт, к которому подключен программатор FTDI (к примеру, COM3)
  4. Нажмите на кнопку «Open/Close»
  5. Нажмите на вкладку «NodeMCU+MicroPython»
  6. Скопируйте LUA-скрипт в ESPlorer IDE

Затем просто кликните на кнопку «Save to ESP» и сохраните файл под названием «init.lua». Все элементы, необходимые для этих действий, выделены на картинке ниже красным цветом:

Esplorer Uploading Your Lua Script.png

Скрипт для клиента

Загрузите на клиентский ESP прошивку NodeMCU (если еще не загрузили). Скопируйте и вставьте в ESPlorer IDE код показанный ниже.

В этом скрипте клиентский ESP работает как станция, которая постоянная ищет точку доступа. Когда клиент находит сервер, между ними устанавливается соединение, и клиент начинает каждые пять секунд отправлять серверу сообщение «Hello, World!»

  1. -- Автор – Руи Сантос (Rui Santos)
  2. -- Более подробно о проекте на http://randomnerdtutorials.com
  3. -- Клиент ESP8266
  4.  
  5. print("ESP8266 Client")  --  "Клиент ESP8266"
  6. wifi.sta.disconnect()
  7. wifi.setmode(wifi.STATION)
  8. wifi.sta.config("test","12345678")- подключаемся к серверу
  9. wifi.sta.connect()
  10. print("Looking for a connection")  --  "Поиск соединения"
  11.  
  12. tmr.alarm(1, 2000, 1, function()
  13.      if(wifi.sta.getip()~=nil) then
  14.           tmr.stop(1)
  15.           print("Connected!")  --  "Подключились!"
  16.           print("Client IP Address:",wifi.sta.getip())
  17.             --  "IP-адрес клиента:"
  18.           cl=net.createConnection(net.TCP, 0)
  19.           cl:connect(80,"192.168.4.1")
  20.           tmr.alarm(2, 5000, 1, function()
  21.             cl:send("Hello World!")
  22.           end)
  23.       else
  24.          print("Connecting...")  --  "Подключение..."
  25.       end
  26. end)

Загрузите этот скрипт на клиентский ESP, следуя тем же указаниям, что и в подразделе «Загрузка скрипта на ESP8266» (см. выше).

Демонстрация

Итак, если все настроено правильно, клиент должен по беспроводной связи подключиться к серверу и передать ему сообщение «Hello, World!» В результате коммуникация будет выглядеть следующим образом:

Data-received-esp8266.jpg

В левом окне показано окно для вывода данных в ESPlorer IDE, а в правом – последовательная коммуникация в PuTTY.org.

См.также

Внешние ссылки

  1. randomnerdtutorials.com - How to Make Two ESP8266 Talk