Предисловие
В бытность мою инженером связи, мне часто приходилось настраивать различное оборудование. Зоопарк из коммутаторов различных производителей, телефонные станции и прочее. Первоначальную настройку на коммутаторах удобнее делать подключившись через rs232, шнурком с преобразователем COM-USB к ноутбуку. Однако этот кабель не всегда удобен.
В общем тогда я прямо таки мечтал о беспроводном удлинителе 232-ого интерфейса. И на то время у китайцев существовали такие приблуды. Но, во первых дорого, во вторых громоздко и не автономно (был отдельный БП на 9-12В). И вот прошли годы, я работаю в другой области и с оборудованием связи имею мало общего. Но иногда с настройкой коммутаторов всё-же приходится сталкиваться. Тут заходя в очередной раз на mysku.ru вижу акцию на отладочную плату TTGO T-OI с микроконтроллером esp8266 за 1 доллар. Заказав такую халяву, я начал думать что бы с ней такого полезного сделать. Собирать очередную метеостанцию не особо хотелось. И тут мне вспомнилась идея беспроводного преобразователя, хотя сейчас полно аналогичных решений и алишке, и даже есть такие вещи как Air Console с впечатляющим функционалом и не менее впечатляющей ценой. Но было интересно реализовать самому, попрактиковаться, так сказать, ведь такое хобби приносит море удовольствия.
Аппаратная часть
Краткие характеристики модуля TTGO T-OI со страницы продавца:Спецификации оборудования Чипсет: ESP8266EX Флэш-память: 4 Мб Размер: 43,96x25,63x20,80 мм Вес: 7,87 г. Питание: MicroUSB 5V/Батарея 16340 3,7V Органы управления: Кнопка reset, переключатель питания Разьемы: Micro USB, Grove, IPEX(внешняя антенна)Живые фото:



Данный модуль привлекателен тем что в нём встроена зарядка для лития и держатель для аккумуляторов формата 18340. Что без лишних телодвижений делает устройство автономным. Для включения отладочной платы служит переключатель в правом нижнем углу. Еще одним достоинством является совместимость по пинам с Wemos D1 Mini, что даёт возможность подключать к TTGO все шилды от Mini. Этим я и решил воспользоваться, накидав в Easy EDA шилд, преобразовывающий uart в rs232:

Так-как напряжение логических уровней на esp8266 3.3В, то в качестве преобразователя в/из интерфейса rs232, в место традиционного MAX232 использовал микросхему MAX3232 в корпусе SOIC-16, которая как раз работает с этим напряжением. Далее, мне понадобилось 5 конденсаторов на 100 нанофарад и резистор на 1 килоОм со светодиодом. Всё в SMD исполнении, типоразмера 0805. Еще понадобится разъем DRB- 9MA.
Компоненты списком:




Программная часть
Я начал с изучения того что уже написано в данной области. Оказывается в пакете поставки с esp для Ардуино уже лежит пример кода для соединения устройства и хоста, (например телефона или ноутбука) через wifi по telnet. Пример так и называется WiFiTelnetToSerial. Взяв его за основу, я написал веб-интерфейс для настройки соединения и точки доступа. С сохранением настроек в во флеш-память. А так-же воспользовавшись библиотекой jQuery Terminal, реализовал эмулятор терминала, прямо в браузере. Общение web-терминала с преобразователем происходит через web-sockets. Сам код можно скачать на гитхабе, ссылки будут к конце статьи. Писался он с помощью PlatformIO . При компиляции нужно учитывать тот момент что для взаимодействия с файловой системой esp8266, я воспользовался библиотекой LittleFS в место привычной многим SPIFFS. Дело в том что SPIFFS признана устаревшей и рекомендуется переходить на LittleFS. В связи с этим у меня возникли некоторые проблемы с библиотекой FTP, пришлось пройтись по её исходникам и переписать все вызовы с SPIFFS на LittleFS. У обоих библиотек практически совместимый API, так что такой простой заменой всё и решилось. При подаче питания esp создаёт точку доступа WirelessTerminal с паролем 123456789. Так-же запускаются web-сервер на 80 порту. И ftp-сервер на 21 (нужен для доступа к флеш памяти контроллера, в основном для отладки). При заходе на ip-адрес 192.168.4.1 (по умолчанию) через браузер, появляется страница настроек:
Тут возможно настроить параметры соединения, и точки доступа. Для того чтобы подключится к устройству по 232 интерфейсу подойдёт любой эмулятор терминала (я по старинке пользуюсь HyperTerminal), либо воспользоваться web консолью, нажав на кнопку RUN TERMINAL в главном окне.
Примеры сессий
Для телефонов на андроид подойдёт бесплатный Serial WiFi Terminal из Google Market. Так-же оставлю несколько скриншотов того как выглядит интерфейс на телефоне:
Выводы
По моему мнению получилась хорошая тренировка для мозгов, а как-же полезная в хозяйстве сисадмина/инженера устройство, для желающих повторить оставляю ссылки на исходники:Проект шилда в easyeda: https://easyeda.com/clericJ/wemos-d1mini-rs232shield
Программная часть: https://github.com/clericJ/wifi-terminal
Блин и как ты до этого додумался. Вообще молодчина, читаю статьи и поражаюсь твоими возможностями. Спасибо за интересную информацию!
ОтветитьУдалить