Заказал 2 немного отличающихся модуля для общения ардуинки через wi-fi: ESP-01 и ESP-12E. Пока ждал посылку выяснил, что есть библиотеки для того, чтобы при помощи ArduinoIDE работать непосредственно с ESP8266. То есть эту схему можно использовать как контроллер, считывая входы и управляя выходами на этой плате.
Благодаря значительно большей частоте чипа ESP8266 скорость работы скетчей на этой плате значительно больше. Пока эту возможность я не опробовал, так как все же цель — это научить ардуинку общаться через wi-fi.
Основной проблемой стала первоначальная настройка модуля. Он управляется посредством TTL интерфейса. Использование ардуинки как USB — TTL переходник у меня не увенчалось успехом. Думаю это из-за того, что модуль по умолчанию работает на скорости 115200, чего не может позволить ардуинка. Пришлось заказывать переходник YP-02 из Китая на базе CH340G. С его помощью получилось установить связь с модулем и подключить его к моей wi-fi сети. Хотя позже прочитал, что можно в скетче поставить скорость esp как 115200, а обычного сериала 9600 и вроде как заработает. Этот вариант я не проверял. Так же можно попробовать напрямую соединить с TX и RX пинами на ардуинки и использовать USB to TTL конвертер самой ардуинки. Для этого нужно выключить схему, замкнув RESET ардуинки на GND и залив на всякий случай скетч, который позволяет игнорить сигналы на первых двух пинах. Этот вариант я пробовал, но что-то пошло не так и у меня сломался бутлодер ардуинки, при этом связь с ESP8266 так и не была установлена. Пришлось перезаливать бутлодер. Кстати тут я описал, как перезаливаю бутлодер при помощи другой ардуинки. Хотя все это можно без труда нагуглить.
Настройка ESP8266 через USB-TTL
Подключитесь с помощью Serial Monitor или screen. Со скоростью придется поэкспериментировать. У меня заработало на 115200. Символы окончания строки:«Both NL and CR».
Ссылка на полный список AT команд ниже. Но для быстрого старта можно попробовать самую простую:
AT
ответ должен быть
OK
Далее можно перезагрузить модуль:
AT+RST
ответ что-то типа:
OK
и много служебной информации. По идее она должна заканчиваться словом ready, но у меня в конце было написано invalid.
Посмотреть версию прошивки можно командой:
AT+GMR
ответ типа:
AT version:0.40.0.0(Aug 8 2015 14:45:58) SDK version:1.3.0 Ai-Thinker Technology Co.,Ltd. Build:1.3.0.2 Sep 11 2015 11:48:04 OK
Так же есть возможность сменить скорость UART для текущего сеанса:
AT+UART_CUR=9600,8,1,0,0
или с сохранением во flash:
AT+UART_DEF=9600,8,1,0,0
ответ:
OK
После чего нужно переподключить терминал на новой скорости.
Переключаем на работу в режимах Soft AP Mode (точка доступа) и Station Mode (клиент):
AT+CWMODE=3
ответ:
OK
Чтобы увидеть список доступных точек доступа:
AT+CWLAP
ответ будет типа
+CWLAP:(3,"DIRECT-AP[TV][LG]47LA790V-ZA",-94,"12:08:c1:0d:af:09",1,11) +CWLAP:(3,"margo1",-92,"10:fe:ed:e8:67:2e",5,30) +CWLAP:(3,"dmd-rab12",-83,"68:72:51:34:18:d6",9,21) +CWLAP:(3,"ASUS",-79,"74:d0:2b:69:1a:74",11,0) +CWLAP:(3,"ASUS_Wiad",-62,"74:d0:2b:2d:59:54",12,-22) +CWLAP:(0,"DIR-300NRU",-66,"1c:7e:e5:d0:ee:d0",13,1) OK
где в скобках указывается: <ecn>, <ssid>, <rssi — сила сигнала>, <mac>, <mode>.
<ecn> может принимать значения:
0 — OPEN, 1 — WEP, 2 — WPA_PSK, 3 — WPA2_PSK, 4 —WPA_WPA2_PSK
<mode> может принимать значения: 0, 1
Пример команды для подключения к точке доступа (имя сети и пароль обязательно в двойных кавычках):
AT+CWJAP="SSID","password"
ответ
WIFI DISCONNECT WIFI CONNECTED WIFI GOT IP OK
Посмотреть статус подключения можно командой:
AT+CIPSTATUS
ответ
STATUS:2 OK
Попытка обновить из облака не увенчалась успехом.
ESP8266 и Arduino
Попытался подключить к ардуинке как Wi-Fi модуль. Получилось, но работает на софтверном Serial как-то нестабильно. Далее напишу отчет.
Что делать не надо
Экспериментально попытался поиграться с настройками Serial. Она сказала «Ой, все!». Теперь вообще к ней не могу подключиться.
Ссылки
Статьи по работе с ESP8266 (целое сообщество).
Описание подключения ардуинки как USB — TTL (у меня не заработало).