ESP8266 ESP-01 |
ESP8266 ESP-12S |
Mode | gpio0 | gpio2 | gpio15 |
---|---|---|---|
UART Download Mode (Programming) | 0 | 1 | 0 |
Flash Startup (Normal) | 1 | 1 | 0 |
SD-Card Boot | 0 | 0 | 1 |
Соответственно gpio0/gpio2 желательно не использовать на модуле ESP-01, но поскольку особого выбора не было, то для подключения датчика температуры и влажности DHT22 (AM2302) я использовал gpio2. Чтобы подключить датчик углекислоты mh-z19 мне нужно использовать uart (выводы rx/tx) и после этого для программирования модуля его придется извлекать. Перед подключением датчика проверяю что выдается в uart помимо отладочных сообщений прошивки.
Подключаю конвертер на базе Prolific PL2303, который я использую для связи с компьютеров и настраиваю порт /dev/ttyUSB0 на скорость 115200 бод:
$ stty -F /dev/ttyUSB0 115200 raw $ cat /dev/ttyUSB0
После этого жму reset и вижу "мусор" перед первой строчкой, которую выдает прошивка.
ESP8266 UART 115200 bps |
Скорее всего это лог встроенного загрузчика, но который передается на другой скорости (не 115200). Попробовал несколько вариантов 9600, 38400, 57600, но разборчивого текста так и не получилось.
После гугления я выяснил что лог загрузчика передается на нестандартной скорости 74880 бод и потому я вижу "мусор" в терминале. Пробую переключить порт на 74880:
$ stty -F /dev/ttyUSB0 74880 stty: invalid argument ‘74880’ Try 'stty --help' for more information.
Облом, не дает задать произвольную скорость, но при этом в linux уже давно есть возможность задавать произвольную скорость для последовательных портов. Нашел простую утилитку anybaud.c, которая позволяет выставить произвольную скорость. Компилирую ее и пробую выставить настройку:
$ wget -O anybaud.c https://gist.githubusercontent.com/peterhurley/fbace59b55d87306a5b8/raw/5017e43f9fde34e9ac37ab2c3fd35b5ca3c3e73f/anybaud.c $ gcc -static -o anybaud anybaud.c $ ./anybaud /dev/ttyUSB0 74880 /dev/ttyUSB0 speed changed to 74880 baud
Хотя команда и прошла без ошибок, но лучше не стало
ESP8266 UART 74880 bps |
Загрузил Windows 7 в VirtualBox, пробросил pl2303 в виртуальную машину и попробовал подключиться к порту через Putty
ESP8266 UART 74880 bps в Putty |
Сначала подумал, что это проблемы из-за эмуляции USB в VirtualBox, но переключение скорости порта в Putty на 115200 опровергает эту теорию
ESP8266 UART 115200 bps в Putty |
REGEDIT4 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ser2pl] "ExtBaudrate"="74880,2147485264"
После импорта в реестр перезагрузил виртуальную машину и снова попробовал подключиться к порту к Putty. На этот раз все сработало и появились сообшения загрузчика
ESP8266 UART 74880 bps в Putty после патча реестра |
Обновлено 22/05/2017: описал способ пропатчить модуль ядра pl2303 в linux для поддержки произвольной скорости передачи данных.
Комментариев нет:
Отправить комментарий