Я думаю что мой проект не уникальный и прошивка с такими параметрами пригодится многим.
АТ команды это прекрасно, когда делается универсальный модуль. Но когда есть возможность настроить модуль в самом модуле это лучше, чем ещё писать код в основном процессоре. это ненужное лишенее действие.
Включили питание и у вас готовый канал связи. Когда хосту нужно уснуть он усыпил модуль и сам уснул. Когда на хосте нажали кнопку сброса настроек, хост дёрнул модуль и подождал преинициализации.
Схема:
Микропроцессор с UART(хост) <-> ESP8266 <-> PC (TCP)
Чего не хватает (по крайней мере для меня)
1. Режим клиента. Без него это не коммерческий вариант. Вы писали проблемы с GSM. Я предполагаю что это что то специфическое и может быть хотябы в первой версии этого не учитывать. Я уважаю ваш максимализм но иногда лучше получить не весь функционал но зато будет работать, чем совсем ничего не получить.
2. Перевод всех настроек UART из вебстраницы в код. Не нужно, чтобы клиент поменял скорость ком порта для хоста, а потом звонил в техподдержку "у меня не работает прибор". В конечном устройстве обычно скорость не меняется а задаётся один раз. По этому мне лучше один раз в исходнике настроить и откомпилировать. В веб странице нужна только для того, что нужно конечному пользователю. Это настройки wifi и апдейта прошивки, без хелпа с описнием ног. Только одна страница.
3. Убрать работу с диском. Нужна просто трансляция данных с веб настройкой без всяких дополнитльеных наворотов. Хоть флэш и можно использовать для хранения чего то, но я думаю что это требует ресурсов и дополнительного кода.
4. Sleep режим. В спящий режим модуль должен переводиться и выводиться ногой. Ногой потому что UART прозрачный. Очень желательно одной Не знаю возможно ли это. Почему то для вывода используют ногу сброса. Но её нельзя использовать для засыпания? Есть конечно запасной вариант - выключать питание модуля транзистором, но это крайний случай. Хотелось бы решения по красивее.
5. Режим сброса настроек по умолчанию. То, что вы сделали с RXD это красивое решение, которое экономит ногу. Но это режим предполагает что в конечном устройстве нужно нажать кнопку, а потом подать питание. Это не всгеда удобно. Например у моего устройства нет кнопки включения питания. Оно вставяяется оператором в разьем. После этого уже не возможно будет сделать сброс. Я думаю что отдельная нога для перевода в настройки по умолчанию было бы лучше. Так же после сброса я прелполагаю что нужно переинициализировать модуль.
Конечно если постоянный опрос ножки это проблема, то можно выкрутиться тем что снимать питание с модуля транзистором. Заставлять оператора зажав кнопку (котораю можно нажать только зубочисткой) вставлять устройство не очень хорошо.
6. Пока нет ТСР соединения все посылки от хоста игнорируются.
7. Нужно вычистить всё лишнее. Может я ошибаюсь но мне кажется в проекте много лишнего.
8. Нужна помошь для написания краткого мануала по пользованию. Где чего менять, и что для чего нужно. Даже не всегда понятно для чего какие папки нужны. Я сам его напишу только нужно один раз ответить на мои глупые вопросы.
9. Нужно изменить внешний вид веб интерфейса. Чтобы можно было лого своё поставить, цвета шрифты сменить. Без изменения функционала. Просто косметика. Я подозреваю что эта возможность у вас уже есть. Просто надо понять как это правильно использовать чтобы ничего не сломать. Я напишу мануал просто обьясните как этим пользоваться.
Ещё небольшое уточнение, думаю с этим проблем нет и у вас это и так сделано, но должен сказать.
MAC, для кадого устройства должен быть уникальный (по хорошему они покупаются). Если устройство с АР и их может быть несколько рядом то SSID, по умолчанию тоже должны быть уникальными (обычно делают название прибора и номер, который увеличивается). Password проще по умолчанию задать равным серийному номеру (или как то по другому). Клиенту проще сказать одну фразу "пароль по умолчанию это сериный номер" чем делать один пароль на всё или вести базу паролей. При тиражированиии устройства программаторы позволяют в дампе в определённых местах менять байты. Или написание своей программы, которая это делает, это будет проще, чем под каждое устройство делать компиляцию. По этому нужно чтобы эти параметры были видны в дампе. Наверное их нужно оформить как статические константы, чтобы компилятор не заоптимизировал их.
Скорость нужна максимально возможная, по этому решение с CTS, RTS должно остаться.
Собственно прошивка нужна нужна мне для двух проектов.
1. Ответно запросный протокол. Компьютер запрашивает устройство, пока не получит отвтет новую послку не даёт. Скорость должна быть максимальной, чтобы уменьшить задержки.
2. Тупой поток с макисмальной скоростью в одном направлении от устройства в компьютер. Если TCP соединенеия нет, то модуль игнорирует все посылки от хоста. Как только компьютер сделал соединеие устройство гонит ему поток.