Подключение Wi-Fi модуля ESP8266 к микроконтроллеру STM32 (STM32L051K6T6)

В принципе, как вам, возможно, известно, микросхема Wi-Fi трансивера ESP8266 и, соответственно, модули, созданные на ее основе не требуют подключения внешнего контроллера, так как разработчиками ESP8266 изначально был открыт доступ к встроенному 32-х битному микроконтроллеру, штатно  работающему на частоте 80 МГц и поддерживающему разгон до 160 МГц. Но, учитывая дополнительные факторы, такие, например, как некоторая нестабильность работы ESP8266, требующая применения внешнего сброса, бедная периферия и, главное, достаточно большой ток потребления даже в режиме сна (~ 80 мкА, тогда как очень хотелось бы ограничиться током потребления связки контроллер + модуль Wi-Fi порядка 2—4 мкА, что вполне достижимо при применении STM32 и ключей на полевых транзисторах), то можно все же остановится на архитектуре с «нормальным» микроконтроллером и подключением модуля на базе ESP8266 в качестве периферийного устройства.


Начнем со схемы подключения. Микроконтроллер STM32L051 показан с минимальной обвязкой, позволяющей сохранять работоспособность. Из всех модулей на базе ESP8266 был выбран ESP12, так как он, благодаря большому количеству выводов, наиболее полно отражал возможности периферии самой микросхемы, что бывает крайне полезно для отладки. Схема ниже кликабельна.

 

Для реализации режима пониженного энергопотребления ESP12 может отключаться при помощи внешнего ключа на MOSFET транзисторах.

OK, включили-запитали, дым не идет, все хорошо. Попробуем наколдовать небольшую программу для выхода в Интернет. Сначала определим те выводы процессора, которые нам понадобятся для работы с ESP12:

Потом добавим несколько служебных переменных:

Потом запустим UART:

Добавим четыре служебных процедуры:

И, наконец, выйдем-таки в Интернет:

В основном цикле main на основе bool ESP_WakeUp() можно соорудить что-то вроде:

Добавить комментарий