Библиотека за извършване на HTTP заявки с ESP8266 WiFi модул и Arduino

Библиотека за извършване на HTTP заявки с ESP8266 WiFi модул и Arduino

Библиотека за извършване на HTTP заявки с ESP8266 WiFi модул и Arduino

Лесен начин за изпращане на информация към и от микроконтролер е чрез централизиране на уеб сървър. Въпреки че не е толкова ефективен метод като например директния достъп до база данни, той е достатъчно ефективен, особено ако имате предвид проект, базиран на микроконтролер, и добавите предимствата на повсеместното разпространение (данните в облака) и простотата (това може да се обработва като текстова информация и поръчки).Изпращането на информация с помощта на тази система може да се състои в правене на HTTP POST заявки и получаването й чрез анализиране на съдържанието на отговора на HTTP GET заявка.

Съдържание

    El ESP8266 WiFi модул Това е много икономичен вариант, с производителност, много подходяща за използване с микроконтролери и много лесна за използване при работа с AT команди.

    За да систематизирам използването му с HTTP заявки, разработих малка библиотека, която поддържа нуждите на моя проект за устройство за управление на съня (който нарекох SleepManager), тъй като базира инфраструктурата си на уеб сървър, който позволява да бъде разширен до обект. ИН като облачна услуга. Не е трудно да добавите други услуги като UDP заявки към библиотеката, например синхронизация на времето през NTP въпреки че, както обяснявам в свързания текст, това не е критично за моите нужди и мога да го разреша приемливо с HTTP заявка към уеб страница, подготвена за тази цел, както показвам в пример за използване на тази библиотека.

    Работата на библиотеката се основава на изпращане на AT команди, когато устройството е налично и повтарянето им (с малко забавяне) в случай на грешка, която се интерпретира като неналичност (успешно, чрез тестване) например от точка на WiFi достъп или сървърът се консултира.

    Библиотеката се възползва от факта, че WiFi модулът ESP8266 връща +IPD код като предупреждение за получаване на данни, за да запълни малък буфер с информацията, върната от сървъра. За проекта за устройство за управление на заспиване трябва да анализирам много малко данни, върнати от сървъра, така че, за да спестя, буферът и указателят, които преминават през него, са особено малки; Това ще бъде едно от първите неща, които ще трябва да промените, за да използвате повторно библиотеката за обработка на по-голям обем данни.

    Функциите, които са изложени като публични, позволяват (1) да се знае състоянието на модула: дали е свързан или не, дали има данни в буфера и колко и дали модулът ESP8266 е завършил заявената операция; (2) свържете се с WiFi точка за достъп в мрежа с DHCP сървър и (3) направете HTTP GET и POST заявки, въпреки че, както ще видите, кодът е проектиран да улеснява добавянето на други.

    По отношение на вътрешното функциониране, първо се изграждат две матрици, една с AT поръчките и друга с очакваните отговори за успех и грешка; След това програмата, която използва библиотеката, трябва да извиква функцията от време на време Публикувай който ще отговаря за изпращане на поръчките към модула, ако са налични и не са заети и към функцията получавам който ще обработва отговорите от модула ESP8266 (и от HTTP сървъра чрез него, ако е приложимо)

    Тъй като има възможност модулът да бъде прекъснат поради загуба на сигнал, основната програма може да провери дали модулът ESP8266 е свързан към WiFi точката за достъп (с функцията conectado) и опитайте да се свържете по друг начин (с функцията connect_wifi)

    За да разбере дали заявената операция е приключила, програмата може да използва функцията операция_завършена и в този случай изпратете друг или използвайте получените данни, за които се използва функцията буфер_за_четене, който връща съдържанието на буфера, който е бил запълнен с данните, пристигнали в модула ESP8266, докато операцията приключи, и функцията буфер_дължина който отчита количеството на тези данни, за които сървърът е предупредил, че ще бъдат изпратени (така че информацията от самия модул може да бъде намалена)

    Примерът по-долу използва библиотеката за HTTP заявки с модула ESP8266 WiFi за изпращане на данни към сървъра (процент, получен от четене на аналогов вход) всеки определен интервал от време. Тъй като не очаква да получи никакъв отговор, той не използва буфера и е достатъчно операцията да завърши правилно. Тази система е това, което използвам в моя проект за устройство за управление на съня, за да съхранявам резултатите от показанията на сензора на сървъра.

    Следващият пример използва HTTP GET заявка, за да направи заявка за времето на сървъра и да го синхронизира с времето на микроконтролираното устройство чрез добавяне на очакваното време за отговор; Всъщност той добавя още 4 до 6 секунди, за да гарантира, че времето на устройството е по-голямо от времето на сървъра и лесно да провери дали времето на часовника за реално време, който е част от устройството, е правилно или е изгубено поради изтегляне , батерия.

    След много тестове се убедих, че тази система на Синхронизация на времето с ESP8266 WiFi модул Той е достатъчно точен за моите нужди; в най-лошия случай с грешка под 10 секунди, което е донякъде без значение в моя случай.

    Както може да се види в кода, е необходимо първо да се направи заявка за дължината на буфера, тъй като четенето го нулира, така че да е наличен за съхраняване на нови данни.

    След като съдържанието на буфера бъде прочетено, в този пример то се обработва, за да се получи времето. Първо се избира текстът между скобите (сървърът отговаря с помощта на командата PHP ехо „{“.time().”}”) го трансформира във „времеви обект“ и получава датата и часа от него в човешки формат.

    Следващата примерна програма, вдъхновена от заявка на потребител, се използва за намиране на публичния IP адрес с помощта на услугата Проверете IP AWS (Уеб услуги на Amazon) на всеки пет минути.

    Както в предишните примери, се правят поредица от предположения, които ще трябва да бъдат променени в зависимост от използваната мрежова конфигурация (192.168.1.X, в примера), SSID и WiFi ключа... Начинът за намиране на IP адресът не е много елегантен, предполага, че е последният ред от отговора на HTTP GET заявката, въпреки че може да има API, който да го направи по по-ортодоксален начин.


    Тук можете изтеглете библиотеката ESP8266 за HTTP заявки с Arduino Uno (без конзола) и от тук може изтеглете библиотеката за HTTP заявки ESP8266 за Arduino който използва конзола, тоест трябва да внедри сериен порт чрез софтуер или да използва като хардуер, например дънна платка Мега Ардуино o Ардуино Леонардо.

    Публикувай коментар

    Може да сте пропуснали