Создание веб-сервера на основе ESP8266 и платы STM32F103C8


Сфера интернета вещей (Internet of Things, IoT) является одной из активно развивающихся в современном мире. В этой сфере важную роль играют модули ESP8266, которые отличаются широким набором функциональных возможностей при относительно низкой цене. Ранее на нашем сайте мы уже рассматривали следующие проекты тематики интернета вещей на основе модуля ESP8266:

Внешний вид проекта создания веб-сервера на основе ESP8266 и платы STM32F103C8

В этой же статье мы рассмотрим подключение модуля ESP8266 к плате STM32F103C8 и осуществим выход в сеть в интернет. Также мы будем передавать данные на веб-страницу, расположенную на веб-сервере, организованном на основе модуле ESP8266.

Необходимые компоненты

  1. Модуль ESP8266 (купить на AliExpress).
  2. Blue Pill STM32F103C8 board (отладочная плата STM32, "синяя таблетка") (купить на AliExpress).
  3. Ноутбук и точка доступа Wi-Fi.

Общие принципы работы модуля ESP8266

Большинство людей называют ESP8266 модулем Wi-Fi, но на самом деле это микроконтроллер. ESP8266 - это название микроконтроллера, разработанного компанией Espressif Systems, базирующейся в Шанхае. Данный микроконтроллер имеет возможность работы с технологией Wi-Fi, поэтому он широко используется в качестве модуля Wi-Fi. Существует множество типов модулей ESP8266, доступных в диапазоне от ESP8266-01 до ESP8266-12. В данной статье мы будем использовать модуль ESP8266-01. Однако все модули ESP имеют только один тип процессора ESP и отличаются только типом используемого интерфейсного модуля. Интерфейсный модуль микроконтроллера ESP8266-01 имеет только 2 вывода GPIO, а другие модули ESP могут иметь большее количество выводов.

Модуль ESP8266 имеет 8 контактов. Его внешний вид и распиновка показаны на следующих рисунках.

Внешний вид модуля ESP8266

Распиновка модуля ESP8266

Назначение контактов модуля ESP8266:

  • 1 – земля, 8 – питание. По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
  • 6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
  • 4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
  • 7 и 0 – RXD0 и TXD0, это аппаратный UART (последовательный порт), необходимый для перепрошивки модуля.
  • 2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
  • 5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения).
  • 3 – GPIO2, порт ввода и вывода.

К сожалению, модуль ESP8266 не является "дружественным" к макетной плате (breadboard friendly) и поэтому его нельзя на ней непосредственно закрепить.

Для управления работой модуля ESP8266 могут использоваться AT команды. Список AT команд, наиболее часто используемых при работе с модулем ESP8266, приведен в следующей таблице.

Список AT команд, наиболее часто используемых при работе с модулем ESP8266

Полный же список AT команд, применимых для работы с модулем ESP8266, можно посмотреть по этой ссылке.

Схема проекта

Схема подключения модуля ESP8266 к плате STM32F103C8 представлена на следующем рисунке.

Схема подключения модуля ESP8266 к плате STM32F103C8Схема соединений между модулем ESP8266 и платой STM32F103C8 представлена в следующей таблице.

ESP8266 STM32F103C8
VCC 3.3V
GND G
CH_PD 3.3V
TX PA3
RX PA2

Плата SMT32F103C8 имеет три набора портов последовательной связи (UART), их местоположение и рабочее напряжение показаны в следующей таблице.

Последовательный порт Контакты Рабочее напряжение
Serial1 (TX1,RX1) PA9, PA10, PB6,PB7 5V
Serial2 (TX2,RX2) PA2, PA3 3.3V
Serial3 (TX3,RX3) PB10, PB11 5V

Полная распиновка платы SMT32F103C8 представлена на следующем рисунке.

Распиновка платы SMT32F103C8Для взаимодействия между модулем ESP8266 и платой STM32F103C8 используется последовательная связь. С этой целью контакты TX & RX модуля ESP8266 подключены ко второму последовательному порту (serial2 port, контакты PA2 & PA3) платы STM32.

Объяснение программы для платы STM32

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Мы будем использовать среду Arduino IDE для написания программы и ее загрузки в плату STM32.

После загрузки кода программы в плату откройте в Arduino IDE монитор последовательного порта связи (Tools>>Serial Monitor). В этом окне вы увидите IP адрес, скопируйте его и вставьте его в строку браузера, в результате этого вы увидите в браузере сформированную модулем ESP8266 веб-страницу. Помните, что ваш компьютер и модуль ESP8266 при этом должны быть подключены к одной и той же Wi-Fi сети.

Первым делом в программе мы инициализируем последовательную связь с монитором последовательного порта и последовательную связь с модулем ESP8266.

Примечание: мы использовали контакты PA2, PA3 2-го последовательного порта (Serial2 port) платы STM32 поскольку они могут работать с уровнями напряжений 3.3V.

Далее нам необходимо произвести сброс модуля ESP8266 чтобы прекратить использованием им прежних соединений и установить на нем режим работы AP & STA (точка доступа + станция).

Затем подключим модуль ESP8266 к Wi-Fi сети. В представленной ниже команде вам необходимо использовать имя пользователя и пароль для своей Wi-Fi сети.

Далее мы получаем IP адрес для модуля ESP8266 и выводим его в окно монитора последовательного порта с помощью следующих строчек кода.

Затем мы запрограммируем HTML код для нашей веб-страницы. Чтобы конвертировать HTML код в код Arduino можно, к примеру, использовать эту ссылку.

Далее в функции void send() мы выводим HTML код с помощью функции sendwebdata и закрываем соединение сервера с помощью команды AT+CIPCLOSE=0.

Для тестирования работы проекта скопируйте IP адрес модуля ESP8266 в строку любого браузера и нажмите на открывшейся веб-странице на ссылку для получения данных с сайта circuitdigest.com. После нажатия на ссылку вы увидите на веб-странице сообщение о том, что данные были получены успешно (“Data Received Successfully.....”).

Тестирование работы проекта

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
4 614 просмотров

Комментарии

Создание веб-сервера на основе ESP8266 и платы STM32F103C8 — 2 комментария

  1. При повторении проекта столкнулся с непреодолимой ошибкой компиляции для платы ESP32F1 в среде Arduino IDE 1.8.15. Ошибка возникала из-за порта Serial2. Проблема была решена путём добавления в самое начало программного кода строки HardwareSerial Serial2(PA3,PA2);
    Выражаю благодарность и желаю удачи в разработках!

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *