- Необходимые материалы:
- Программирование микроконтроллера PIC:
- Функции в библиотеке ESP8266:
- Пример программы:
- Результат моделирования:
- Проверка вывода:
- Добавление функций в библиотеку ESP8266:
В этой статье давайте обсудим, как подключить модуль WIFI ESP8266 к микроконтроллеру PIC. До сих пор вы могли использовать модуль ESP8266 в качестве автономного микроконтроллера или могли использовать его с библиотекой Arduino. Но когда дело доходит до хардкорных проектов встраиваемых систем, мы должны знать, как использовать это с микроконтроллерами PIC. Это поможет вам настроить ваши проекты с точки зрения дизайна и в то же время удешевить их.
Модули ESP8266 поставляются с загруженной по умолчанию прошивкой, поэтому мы можем программировать модуль с помощью AT-команд. Эти команды должны отправляться через последовательный канал связи. Этот канал устанавливается между PIC и модулем ESP8266 с помощью модуля USART в микроконтроллере PIC . Вся работа будет контролироваться и сообщаться пользователю с помощью ЖК-дисплея 16x2. Следовательно, в этом руководстве предполагается, что у вас есть некоторые базовые знания о модуле USART в PIC, взаимодействии ЖК-дисплея с PIC и использовании AT-команд в ESP8266. Если вы этого не сделаете, вы можете вернуться к связанным руководствам, чтобы изучить их заранее.
Необходимые материалы:
Для выполнения этого руководства вам понадобится следующее оборудование.
- PIC16F877A
- Кварцевый генератор 20 МГц
- 7805
- LM317
- ESP8266
- ЖК-дисплей 16 * 2
- Программист PicKit3
- Резисторы (1 кОм, 220 Ом, 360 Ом)
- Конденсаторы (1 мкФ, 0,1 мкФ, 33 пФ)
- Перемычки
- Адаптер 12 В для питания модуля PIC и ESP
Оборудование:
Полная схема проекта представлена ниже.
Схема состоит из двух схем регулятора напряжения, одна из которых представляет собой регулятор + 5 В, который используется для питания микроконтроллера PIC, а другая - регулятор 3,3 В, который питает модуль ESP8266. + 5В регулируется с помощью 7805 (ИС линейного регулятора напряжения). 3,3 В регулируется с помощью LM317 (регулятор переменного напряжения). Модуль ESP8266 потребляет большой ток (~ 800 мА), поэтому, если вы разрабатываете собственный блок питания, убедитесь, что он может обеспечивать такой высокий ток. Также убедитесь, что контакты заземления PIC и модуля ESP8266 соединены вместе.
Итак, теперь мы знаем, что PIC работает от +5 В, а ESP8266 работает от 3,3 В. Чтобы установить связь USART между этими двумя модулями, нам понадобится схема логического преобразователя 5 В - 3,3 В, как показано на рисунке выше. Эта схема представляет собой не что иное, как делитель потенциала, который просто преобразует входящие + 5 В в 3,3 В. Это предотвратит попадание на вывод RX 3,3 В ESP8266 + 5 В.
Я сделал модули PIC и ESP на двух отдельных платах, как показано в этих руководствах. Таким образом, я могу использовать их повсеместно для более похожих проектов.
- Светодиодное оборудование с использованием PIC
- Начало работы с ESP8266
Вы можете сделать то же самое, или построить свою собственную плату в своем стиле, или просто подключить вышеуказанную схему к макетной плате.
Программирование микроконтроллера PIC:
Чтобы запрограммировать микроконтроллер PIC для последовательной посылки «AT-команд» с помощью USART в модуль ESP8266, мы должны использовать библиотеку. Эта библиотека избавит вас от многих хлопот, например, используя модули инструкций ESP8266 для проверки каждой AT-команды, а затем найдите способ передать их в модуль ESP. Эта библиотека является бесплатным программным обеспечением, изначально разработанным Камилом Стапсом, а позже она была улучшена и модифицирована Circuit Digest, чтобы ее можно было использовать с нашим микроконтроллером PIC16F877A. Вы можете скачать это здесь
Библиотека все еще находится в разработке, но вы можете использовать большинство важных AT-команд в прошивке ESP8266. Если вы обнаружите, что какая-то из нужных вам команд отсутствует, сообщите мне об этом в разделе комментариев, и я постараюсь добавить ее для вас. Это руководство объяснит вам все команды (на данный момент), которые можно использовать в этой библиотеке. Далее вы также узнаете, как добавить свои собственные функции в библиотеку.
Функции в библиотеке ESP8266:
- Initialize_ESP8266 (): эта функция инициализирует модуль USART PIC для связи с модулем ESP8266. Он устанавливает скорость 115200 бод и подготавливает выводы Rx и Tx PIC для связи через USART.
- _esp8266_putch (): эта функция используется для последовательной отправки одного символа в модуль ESP8266. Например, _esp8266_putch ('a') последовательно отправит символ a в модуль ESP.
- _esp8266_getch (): эта функция используется для получения одного символа из модуля ESP. Например, если ESP печатает «ОК», и мы используем char a = _esp8266_getch (). Тогда символ 'o' будет сохранен в переменной a.
- ESP8266_send_string (): эта функция является строковой версией _esp8266_putch (). Он может отправить одну полную строку в модуль ESP8266. Например, ESP8266_send_string («AT / r / n») отправит команду «AT» на модуль ESP8266.
- esp8266_isStarted (): используется для проверки того, может ли PIC взаимодействовать с модулем ESP. Он отправляет команду «AT» и ждет «ОК», если получено, возвращает true, иначе возвращает false.
- esp8266_restart (): сбрасывает модуль ESP8266 и возвращает истину при успешном сбросе и возвращает ложь в случае неудачи.
- esp8266_mode (): используется для установки режима работы модуля ESP8266. Как мы знаем, он может работать в трех разных режимах.
Режим станции |
|
Мягкий режим AP |
|
Оба режима станции и AP |
- esp8266_connect (): позволяет подключаться к сигналу Wi-Fi. Например, esp8266_connect («home», «12345678») , позволит вашему модулю подключаться к сигналу Wi-Fi с именем home, пароль которого - 12345678.
- esp8266_disconnect (): эта функция отключает ваш модуль от любого соединения Wi-Fi, которое было ранее подключено
- esp8266_ip (): получает IP-адрес и возвращает его. Используйте эту функцию, если хотите узнать IP-адрес модуля ESP8266.
- esp8266_start (): эта функция используется для запуска TCP или UDP связи. Например, esp8266_start ( «TCP», «192.168.101.110», 80) . Запустит сеть TCP с этим IP-адресом и портом 80.
- esp8266_send (): эта функция используется для отправки информации в сеть TCP / UDP. С помощью этой команды будет отправлен HTML-скрипт. Затем этот сценарий появится в IP-адресе, с которым ранее была установлена связь.
- esp8266_config_softAP (): эта функция используется для настройки softAP. Например, esp8266_config_softAP («офис», «12345678»); создаст сигнал Wi-Fi с именем office, и для доступа к нему должен использоваться пароль 12345678.
- esp8266_get_stationIP (): эта функция вернет вам IP / MAC-адрес клиентов, подключенных к вашей softAP.
Пример программы:
Теперь, когда мы поняли функции каждой команды в библиотеке, давайте рассмотрим небольшой пример программы. В этой программе мы проверим, успешно ли установлено соединение между ESP8266 и PIC, а затем создадим сеть WIFI (SoftAP) с желаемым именем и паролем. Полная программа и ее модели будут объяснены для вашего понимания.
Опять же, если вы не читали наше руководство по взаимодействию PIC с ЖК-дисплеем и PIC USART, пожалуйста, прочтите, прежде чем продолжить, потому что только тогда это будет иметь для вас смысл.
Поскольку мы только начинаем взаимодействовать PIC с ESP8266, я использовал ЖК-дисплей, чтобы убедиться, что все работает правильно.
сделать {Lcd_Set_Cursor (1,1); Lcd_Print_String («ESP не найден»); } while (! esp8266_isStarted ()); // ждем, пока ESP вернет "ОК" Lcd_Set_Cursor (1,1); Lcd_Print_String («ESP подключен»); __delay_ms (1500); Lcd_Clear ();
Когда мы отправляем «AT» в модуль ESP8266, он отвечает «OK». Это гарантирует нам, что модуль ESP8266 успешно подключен. Для этого используется функция esp8266_isStarted (). Мы отправляем сигнал AT от PIC и ждем, пока модуль ESP заработает, и отправим нам ОК. Если мы получаем ОК, мы отображаем, что «ESP подключен» на ЖК-дисплее.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String («ESP установлен как AP»); __delay_ms (1500); Lcd_Clear ();
Приведенные выше строки кода используются для настройки модуля ESP для работы в режиме «мягкой AP». Функция esp8266_mode (2); отправляет AT-команды «AT + CWMODE = 3» на модуль и ждет, пока модуль не ответит «OK»
/ * Настроить имя AP и пароль * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String («ТД настроена»); __delay_ms (1500); Lcd_Clear (); / * Точка доступа настроена * /
Этот сегмент кода используется для настройки softAP. Здесь мы назвали SSID «CircuitDigest» и пароль «619007123». Чтобы указать, что процесс завершен, мы подождем, пока модуль ответит «ОК», а затем распечатаем настроенную точку доступа на ЖК-экране.
Теперь мы подключили модуль ESP8266 к PIC MCU и настроили softAP с именем и паролем по нашему выбору. Как обычно, давайте смоделируем этот код и посмотрим, как он работает.
Результат моделирования:
Мы используем программное обеспечение Proteus для имитации вывода. Файл с дизайном для этого же можно найти во вложении.
Поскольку у нас нет модуля ESP8266 в библиотеке Proteus, мы должны использовать последовательный терминал и отвечать как пользователь на модуль PIC. Экран после завершения моделирования будет выглядеть, как показано ниже.
Вывод нашего кода отображается в виртуальном терминале. Полная работа симуляции будет объяснена в видео ниже.
Проверка вывода:
После проверки программы с помощью моделирования загрузите ее в свой микроконтроллер PIC. Выполните подключения, как показано на схемах выше (раздел «Оборудование»). Вы должны иметь возможность отслеживать свой прогресс на ЖК-дисплее.
Как только на ЖК-дисплее появится сообщение о том, что точка доступа настроена, мы можем проверить это с помощью настроек WIFI в телефоне или ноутбуке. Мой ноутбук показывает следующий сигнал согласно нашей программе.
Вот и все, мы успешно подключили модуль ESP8266 к микроконтроллеру PIC. Это очень простой интерфейс, и если вы хотите выполнять какие-либо сложные проекты с использованием ESP8266, вам, возможно, придется добавить свои собственные библиотеки или, по крайней мере, добавить свои собственные функции. Поверьте мне, это очень легко сделать, я дам краткий обзор того же.
Добавление функций в библиотеку ESP8266:
Добавление собственной функции поможет вам отправить любую команду «AT» на модуль ESP8266. Чтобы продолжить, вам необходимо прочитать документацию по набору команд модуля ESP8266. Вы можете напрямую отправить любую AT-команду, которую найдете в этом руководстве по набору команд. Но всегда не забывайте добавлять «/ r / n» в конце каждой AT-команды. Например, если вы хотите установить несколько соединений с вашим модулем ESP. Затем откройте документацию по набору инструкций и найдите, какая AT-команда выполнит эту работу за вас. Здесь команда «AT + CIPMUX = 1» позволит вам установить несколько соединений с вашим модулем ESP.
Теперь все, что вам нужно сделать, это отправить это «AP + CIPMUX = 1» на ваш модуль ESP8266 через последовательный порт. Хардкорный способ сделать это - просто использовать команду
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Это сработает, но это не лучший способ. Вы должны прочитать, что ваш ESP8266 отвечает на вашу команду. В нашем случае он ответит «ОК». Таким образом, вы должны прочитать входящие данные от модуля ESP8266 и подтвердить, что это «ОК». Также вы можете создать эту функцию, в которой в качестве аргументов можно передавать «1» или «0».
Продолжайте и попробуйте создать свои собственные функции для библиотеки. Но если вам нужна помощь, пожалуйста, используйте раздел комментариев, и я помогу вам.