Есть у меня два модуля ESP-01, купил давно уже, на всякий случай, а тут и задача подвернулась, думаю надо их попробовать в деле. Поначалу я даже не представлял, как будет устроена работа, на каком уровне абстракции придется работать, реализовывать ли TCP/IP стек в МК, формировать ли сетевые пакеты руками, какой вообще функционал мне предоставит модуль, ну и тому подобные переживания :).
Оказалось все очень просто, модуль представляет из себя полностью законченное сетевое устройство, он поддерживает необходимые методы шифрования и вообще реализует всю работу с TCP/IP на стороне WiFi, а с МК общается через UART посредством набора AT-команд. Т.е. на стороне МК все предельно просто, там доступны такие удобные команды, как посмотреть список WiFi-сетей, подключиться к выбранной, открыть коннект до хоста IP на порту PORT, записать и прочитать данные из сокета, сделать пинг до хоста и т.д.
Распиновка модуля такая:
также у меня есть китайска-USB-TTL адаптер, выдающий кроме 5В еще и 3.3В.
Подключение модуля обещает быть проще некуда, 4 проводка и можно общаться с ним через программу-терминал. Следовательно, VCC подключаем к питанию 3.3В, GND к земле, RXD чипа к TXD адаптера, TXD чипа к RXD адаптера, CH_PD к питанию.
Расчехляю Terminal v.1.9, ставлю 9600 бод, коннект.. ээ, дарагой.. коннект!
Падлюка китайская, адаптер не пашет, COM-порта нет, дрова не ставятся, система Windows 8.1 x64.
15 минут на поиск нужных, попадается мне целая детективная история о том, как злые китайцы скопировали микросхему PL2303 и штампуют ее, не отчисляя лицензионных денег исходному производителю Prolific, зато ссылаясь на его дрова. Компания выпустила под Win8 драйвер, умеющий отличать подделку. Короче в любом случае, чипы версий HXA/XA больше не поддерживаются, а у меня оказался именно такой. Скачал я в итоге файл pl2303_hxa_xa_win8x64_181.zip, принудительная установка из архива и адаптер завелся.
Продолжаем.
Питание на ESP есть, однако новой WiFi сети не вижу (фича?), при включении ESP UART моргает 1 раз, но в терминале пусто. На команду AT молчит, LED TX на адаптере моргает, значит данные уходят на модуль.
Покурил статейку http://esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-connect
Попробовал передергивать не питание ESP, а CH_PD - получил ожидаемый мусор при старте модуля. Что ж, похоже пациент жив! Теперь надо пообщаться
Мусор, однако, раз от раза может сильно отличаться по длине. То 1 символ, то 3, то целая гора. Получить его в нормальном виде (отладочный текст) так и не вышло, ни на какой скорости. И на команду AT так и не отвечает, ни с CR+LF, ни как-то иначе..
Ресет у меня все время висел в воздухе, пробовал я его к питанию подтягивать, не помогло, так и оставил его висеть.
Один модуль я, кажется, почикал, подав ему 5В на GPIO0.
Со вторым был аккуратнее, но так нифига и не получилось его завести.
Ни одна из 3 программ-прошивальщиков не смогла ничего сделать с модулем.
Нихрена не быстрый получился старт, как всегда собрал все возможные проблемы.
Китайский адаптер USB-TTL не внушает доверия, вероятно работает криво.
Попробую другой адаптер, программатор для AVR на FTDI.
После новой серии неудачных попыток, укорачивания проводов от программатора до чипа и подключения питания от 2xAA (мой программатор выдает только 5В) - стабильно заработал вывод отладочной инфы на скорости 74 880 бод. И новая сеть WiFi появилась, ESP_9E606F. Линию TX на программаторе (от программатора к модулю) я подключил через резистор 1k2.
Пример вывода отладки:
Переводим в режим клиента "AT+CWMODE=1" - OK.
Посмотрим список сетей "AT+CWLAP", список выведен с задержкой около секунды.
А документация-то у меня от старой версии открыта, ну ка от 0.21 посмотрю.
Супер. Но что насчет коннекта по HTTP?
сайты http://esp8266.ru и http://esp8266.com
upd: хак модуля - вывод дополнительно 4шт GPIO http://esp8266.ru/esp8266-esp-01-hacked/
Оказалось все очень просто, модуль представляет из себя полностью законченное сетевое устройство, он поддерживает необходимые методы шифрования и вообще реализует всю работу с TCP/IP на стороне WiFi, а с МК общается через UART посредством набора AT-команд. Т.е. на стороне МК все предельно просто, там доступны такие удобные команды, как посмотреть список WiFi-сетей, подключиться к выбранной, открыть коннект до хоста IP на порту PORT, записать и прочитать данные из сокета, сделать пинг до хоста и т.д.
Распиновка модуля такая:
также у меня есть китайска-USB-TTL адаптер, выдающий кроме 5В еще и 3.3В.
Подключение модуля обещает быть проще некуда, 4 проводка и можно общаться с ним через программу-терминал. Следовательно, VCC подключаем к питанию 3.3В, GND к земле, RXD чипа к TXD адаптера, TXD чипа к RXD адаптера, CH_PD к питанию.
Sex begins here
Втыкаю USB-адаптер в комп - модуль ожил: моргнул синим диодом и далее постоянно горит красный.Расчехляю Terminal v.1.9, ставлю 9600 бод, коннект.. ээ, дарагой.. коннект!
Падлюка китайская, адаптер не пашет, COM-порта нет, дрова не ставятся, система Windows 8.1 x64.
15 минут на поиск нужных, попадается мне целая детективная история о том, как злые китайцы скопировали микросхему PL2303 и штампуют ее, не отчисляя лицензионных денег исходному производителю Prolific, зато ссылаясь на его дрова. Компания выпустила под Win8 драйвер, умеющий отличать подделку. Короче в любом случае, чипы версий HXA/XA больше не поддерживаются, а у меня оказался именно такой. Скачал я в итоге файл pl2303_hxa_xa_win8x64_181.zip, принудительная установка из архива и адаптер завелся.
Продолжаем.
Питание на ESP есть, однако новой WiFi сети не вижу (фича?), при включении ESP UART моргает 1 раз, но в терминале пусто. На команду AT молчит, LED TX на адаптере моргает, значит данные уходят на модуль.
Покурил статейку http://esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-connect
Попробовал передергивать не питание ESP, а CH_PD - получил ожидаемый мусор при старте модуля. Что ж, похоже пациент жив! Теперь надо пообщаться
Мусор, однако, раз от раза может сильно отличаться по длине. То 1 символ, то 3, то целая гора. Получить его в нормальном виде (отладочный текст) так и не вышло, ни на какой скорости. И на команду AT так и не отвечает, ни с CR+LF, ни как-то иначе..
Ресет у меня все время висел в воздухе, пробовал я его к питанию подтягивать, не помогло, так и оставил его висеть.
Один модуль я, кажется, почикал, подав ему 5В на GPIO0.
Со вторым был аккуратнее, но так нифига и не получилось его завести.
Ни одна из 3 программ-прошивальщиков не смогла ничего сделать с модулем.
Нихрена не быстрый получился старт, как всегда собрал все возможные проблемы.
Китайский адаптер USB-TTL не внушает доверия, вероятно работает криво.
Попробую другой адаптер, программатор для AVR на FTDI.
На другой день
Пример вывода отладки:
ets Jan 8 2013,rst cause:1, boot mode:(3,7)
load 0x40100000, len 816, room 16
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12
tail 4
chksum 0xcf
csum 0xcf
2nd boot version : 1.2
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size : 4Mbit
jump to run user1
Первый вчерашний модуль я пометил MD (maybe dead), но он таки оказался тоже жив, на AT ответил на скорости 9600.
Понеслась!
Узнать текущий режим командой "AT+CWMODE?", получаю "+CWMODE:2", режим клиента и AP.Переводим в режим клиента "AT+CWMODE=1" - OK.
Посмотрим список сетей "AT+CWLAP", список выведен с задержкой около секунды.
Подключаемся к сети AT+CWJAP ="your SSID here","wifikey" - хер. ERROR
Пробуем настроить шифрование "AT+CWSAP=3" - ERROR.
Пробовал подключиться к случайно выбранной сети без пароля - думало секунд 15 и выдало FAIL.
Вероятно модулю не нравится имя моей сети, оно содержит пробелы и восклицательный знак:). ХЗ чо я покрутил в итоге, но с Nй попытки приконнектился.
Даже с компа пингуется :)
C:\Users\mex>ping 172.30.0.198
Обмен пакетами с 172.30.0.198 по с 32 байтами данных:
Ответ от 172.30.0.198: число байт=32 время=100мс TTL=255
Ответ от 172.30.0.198: число байт=32 время=20мс TTL=255
Ответ от 172.30.0.198: число байт=32 время=1мс TTL=255
Ответ от 172.30.0.198: число байт=32 время=2мс TTL=255
Статистика Ping для 172.30.0.198:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 1мсек, Максимальное = 100 мсек, Среднее = 30 мсек
Ползем дальше.
Какой адрес получен от DHCP? "AT+CIFSR" - 172.30.0.198
У меня в сетке есть nginx сервер, попробую получить его приветственную страницу:
надо открыть коннект до порта 80, запросить GET / HTTP/1.0 и прочитать все, что отдадут.
Установим режим множественных подключений
AT+CIPMUX=1
Открываю коннект
AT+CIPSTART=TCP,"172.30.0.1",80
Получаю некое Link typ ERROR
... В инете вычитал 'Link typ ERROR' - can occur when MUX=0 ...
AT+RST, снова установка AT+CIPMUX=1, коннект, раздумье и .. ресет модуля, в смысле он внезапно ребутнулся.
Проба повтора - снова ресет..
Обновлю ка прошивку, сейчас версия 0018 стоит, может даже из облака попробую, понтов ради )
AT+CIUPDATE
посыпались символы, как в матрице прям.. сижу довольный, жду, думаю что это код прошивки сливается :)
На аккумуляторах 2.5В в этот момент. пока работает.
Долго.. минут 5 наверное уже прошло, на счетчике Rx уже 220к.
Еще минут 5. Rx=410к.. Надо было UART с 9600 на 115200 наверное перевести :)
Флеша в модуле 512к, осталось недолго. Rx=500к, да что ж он там, под завязку что ли.
И тут, глядя на эти волны символов, и думая, откуда это у них такая закономерность, решил я терминал на 74880 бод переключить.. а там все это время оказывается фаталы сыпались.
эх, надо шить вручную. понты не прошли.. запустил FLASH_DOWNLOAD_TOOLS и перешил на версию AT 0.21, SDK 0.9.5
Пробуем снова
Список сетей, коннект, MUX=1, открываем соединение
AT+CIPSTART=TCP,"172.30.0.1",80
теперь сразу ERROR пишет
А документация-то у меня от старой версии открыта, ну ка от 0.21 посмотрю.
Ба, тут добавилась команда PING! Попробуем
AT+PING="ya.ru"
В ответ
+3
OK
Супер. Но что насчет коннекта по HTTP?
Открыл pdf от китайцев, оказалось, что для CIPMUX=1 первым параметром идет ID соединения.
Короче я переключился в MUX=0, и сработало
AT+CIPSTART="TCP","10.0.0.101",80
CONNECT
OK
AT+CIPSEND=18 18 это длина отправляемого заголовка + переносы строки \r\n\r\n
OK
> GET / HTTP/1.0
2 перевода строки, не забываем
SEND OK
и вуаля, наши данные!
+IPD,837:HTTP/1.1 200 OK
Server: nginx/1.2.5
Date: Thu, 19 Nov 2015 18:15:19 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 612
Last-Modified: Thu, 22 Oct 2015 03:24:12 GMT
Connection: close
Accept-Ranges: bytes
<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>CLOSED
Если на сервер запрос не посылать, то коннект он разорвет сам через какое то время, а модуль сообщит, что соединение закрыто, прислав строку
CLOSED
К концу экспериментов на аккумах было 2.27В
Я запросил вебсервер еще один раз - все работает.
Материалы и ресурсы
полезно почитать вики http://www.esp8266.com/wiki/doku.phpсайты http://esp8266.ru и http://esp8266.com
upd: хак модуля - вывод дополнительно 4шт GPIO http://esp8266.ru/esp8266-esp-01-hacked/
Для 2015 года эта информация хороша. Но все быстро уходит вперед. И если действительно хочется быстрого старта, то загружаем прошивку спутник, которая уже имеет выход в интернет. Загружаем отсюда: http://bortx.ru
ОтветитьУдалитьИ еще одна прошивка на BortX появилась - телеметрия. Есть визуализация данных с помощью панели, история данных, реальный масштаб времени, отправка email и не надо заморачиваться с WIFI. Связь восстанавливается автоматически.
ОтветитьУдалитьhttp://bortx.ru
HONG KONG - Sega Genesis (SG) Games - Air Jordan 16 Video Games
ОтветитьУдалитьHONG air jordan 18 retro toro mens sneakers good website KONG, air jordan 18 retro red suede to you SEGA air jordan 18 retro men blue sports Mega air jordan 18 retro red suede to my site Drive 슬롯 무료 체험 Mini,