ESP8266 + STM32 Веб сервер

Доброго дня. Знедавна вирішив розібратися з WIFI модулями, мій вибір впав на на енергійно розвиваючийся ESP8266.

CAM00784

 

 

Вирішив купити швидко не чекати місяць з Китаю тому зробив огляд місцевих продавців на Aukro та Olx. Познайомився з паном Миколою з міста Кривий  Ріг мені одразу сподобався його магазин досить непоганий асортимент, а саме головне людяні ціни. На разі зробив в нього дві покупки і я дуже задоволений. Продавець консультує по електронній пошті, миттєво відправляє куплений товар, пакує його в зручні коробочки деталі в пакетиках розділені шарами синдепон. Видно що людина з любов’ю ставиться до своєї справи, отже всім рекомендую ось посилання на його магазин http://olx.ua/list/user/DXUb/  

[adsense type=”banner”]

По пристрою ESP8266 приєднаний до USART1 плати STM32DIP40 Reset до PB12 . Живиться схема від LI-ION батареї через lowdrop стабілізатор 3.3V.

RGB світлодіод до TIM1_CH2, TIM1_CH3, TIM1_CH4.

Лог обміну між платами. Розписувати докладно не буду ось посилання на пдф з АТ командами ESP8266 AT

ready
ATE0
ATE0

OK
AT

OK
AT+CWMODE=3

OK
AT+CWLAP
+CWLAP:(4,"YUNASKO",-89,"f8:d1:11:2b:dd:7c",1)
+CWLAP:(0,"Konst",-61,"e8:94:f6:70:bb:54",6)
+CWLAP:(3,"Hotels.com",-82,"d8:50:e6:f4:6f:48",11)
+CWLAP:(0,"ID03",-91,"00:27:22:9a:41:66",13)

OK
AT+CWJAP="Konst",""

OK
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:98:50:ac"
+CIFSR:STAIP,"192.168.1.103"
+CIFSR:STAMAC,"18:fe:34:98:50:ac"

OK
AT+CIPMUX=1

OK
AT+CIPSTO?
+CIPSTO:180

OK
AT+CIPSERVER=1,80

OK
AT+CIPSTATUS
STATUS:2

OK
AT+CIPSTATUS
STATUS:2

OK
AT+CIPSTATUS
STATUS:2

OK


AT+CIPSTATUS
STATUS:3
+CIPSTATUS:1,"TCP","192.168.1.8",61750,1

OK

Коли приходить запит на сервер від броузера ESP8266 видає наступне.

+IPD,1,330:GET /favicon.ico HTTP/1.1
Host: 192.168.1.103
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
Accept: */*
Referer: http://192.168.1.103/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ru,en-US;q=0.8,en;q=0.6,uk;q=0.4

У відповідь STM32 видає текст html сторінки.

AT+CIPSEND=0,528

OK
> HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Refresh: 1
Content-Length: 432

<html>
<head>
</head>
<body>
<form name="Settings"  method=POST>
<br>
<br>Red:<br><input type="text" name="Red" size="20"value="20"maxlength="50">
<br>
<br>Green:<br><input type="text" name="Green" size="20"value="20"maxlength="50">
<br>
<br>Blue:<br><input type="text" name="Blue" size="20"value="20"maxlength="50">
<br>
<input type="hidden" name="Cut" value=""><br>
<input type="submit"value="Set">
</form>
</html>

SEND OK

Сторінка виглядає отак
_______________________

Red:
Green:
Blue:

________________________

 

Користувач вводить бажані значення змінних та тисне SET

Значення передаються методом POST

Модуль видає наступне

Host: 192.168.1.103
Connection: keep-alive
Content-Length: 27
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://192.168.1.103
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://192.168.1.103/
Accept-Encoding: gzip, deflate
Accept-Language: ru,en-US;q=0.8,en;q=0.6,uk;q=0.4

Red=200&Green=0&Blue=0&Cut=1,CONNECT

Видно що разом із запросом приходять значення змінних. RGB виставляється у відповідний колір.
У відповідь STM32 видає текст html сторінки із скоректованими значеннями в полях.

AT+CIPSEND=0,528

OK
> HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Refresh: 1
Content-Length: 432

<html>
<head>
</head>
<body>
<form name="Settings"  method=POST>
<br>
<br>Red:<br><input type="text" name="Red" size="20"value="200"maxlength="50">
<br>
<br>Green:<br><input type="text" name="Green" size="20"value="0"maxlength="50">
<br>
<br>Blue:<br><input type="text" name="Blue" size="20"value="0"maxlength="50">
<br>
<input type="hidden" name="Cut" value=""><br>
<input type="submit"value="Set">
</form>
</html>

SEND OK

І так весь алгоритм відбувається по кругу.

Висновок: Модуль за свої гроші робить добре. З мінусів самовільні перезавантаження, та високе споживання > 500mA.

Відео роботи

2 коментарі ESP8266 + STM32 Веб сервер

  1. Leon11t сказав:

    Привіт. Зараз роблю девайс із схожим функціоналом, також планую налаштовувати його через веб-інтерфейс. Це буде RC-приймач, який можна буде підключити до своєї моделі і керувати нею із смартфона на Андройді, або прогою із компа, яка парсить данні із ігрового джойстика.
    На відео видно досить велику затримку між натисненням кнопки в браузері і зміною кольору світлодіода. Від чого така затримка?
    В свому проекті я ганяю дані по UDP-протоколу і затримка виходить всього в декілька мілісекунд.
    Чи могли би ви спробувати на свому стенді UDP і використати якийсь інший порт не 80, а наприклад 5555?

  2. dexter сказав:

    Великі затримки присутні зараз в тестовому режимі, тобто модуль спрацьовує швидше. Контролер чекає десь біля 5 секунд надходження запиту від броузера, а потім обробляє. В загалі якщо не завязуватись на вебсервер и його обробкою, то данні по сокету літають миттєво. Я писав тут про нестабільність роботи модуля, так вот на днях спробував включити схему від зовнішнього БП і я можу сказати що поки що не помічав перезавантажень модуля. Треба щось мудрувати з стабілізатором з li-ion to 3,3v. Я зараз вважаю що ESP8266 не дуже підходить “серверної” мети, дуже велике споживання, низька швидкість UART, буває що модуль вставляє повідомлення типу “0,CONNECT” одразу за запитом броузера без знаків переносу та пробілів що дещо виносить мозк при парсінгу POST змінних. Приклад “Red=200&Green=0&Blue=01,CONNECT” і тепер змінна “Blue” буде дорівнювати “1” а насправді “0”. Для ролі клієнта- включився, під’єднався, передав 10 байт, від’єднався, виключився він підходить на всі сто. https://thingspeak.com/ https://www.youtube.com/watch?v=QOYTTXMgcJI Оце фішка, зараз розбираюсь з нею.

Залишити відповідь