В основе построения интернета вещей (internet of thing) лежат устройства радиопередачи. Одно из них это модуль wifi ESP8266, имеющий на сегодня 13 версий. Использующийся протокол связи IEEE 802.11b/g/n дает прекрасную возможность подключения устройств к домашнему роутеру. Вариация прошивок для данного модуля увеличивает гибкость в их управлении, например АТ-команды или язык Lua и другое. Применение к данным модулям микроконтроллера AVR в качестве управления дает прекрасную возможность в сборе данных и их отсылке, например в веб- интерфейс для анализа и управления каким либо устройством, либо объектом. Ниже пример инициализации модуля, поднятия на нем TCP-сервера и при запросе с браузера по адресу и порту, вывод температуры измеренной микроконтроллером в браузер.
#define F_CPU 8000000L
#include <stdio.h> /*Подключаем необходимые библиотеки компилятора*/
/*Здесь мы пропустили define, библиотеки, функции UART. Нас интересуют АТ-команды*/
................................................
int main(void){
uint8_t block[5]; /*Буфер для записи данных*/
/*Инициализация диода*/
./*LED_DDR |= (1<<LED_PIN); Используем диод для наладки
LED_OFF;
LED_ON;*/
sei();
uart_init(RXUBRR); /*Инициализируем интерфейс. Передаем регистр. Кто забыл смотрим статью №40*/
uart_puts("AT\r\n"); /*Простая проверка*/
uart_wite_for("OK"); /*Ответ*/
uart_puts("AT+CIPMODE=0\r\n"); /*Режим передачи данных для сервера или клиента. У нас смешанный режим. В режиме сервера: 0 - сервер отправляет данные клиенту и принимает данные от клиента. 1 -сервер отправляет данные клиенту, но не принимает данные от клиента. В режиме клиента: 0 - клиент отправляет данные серверу и принимает данные от сервера. 1 - клиент не отправляет данные серверу, но принимает данные от сервера.*/
uart_wite_for("OK");
uart_puts("AT+CIPMUX=1\r\n"); /*Режим одиночного или множественного соединения. Зависит от AT+CIPMODE. При 0 с модулем соединяется только один клиент. При запросе другого, в это же время, получает таймаут. При 1 соединяется до 5 клиентов.*/
uart_wite_for("OK");
uart_puts("AT+CIPSERVER=1,88\r\n"); /*Конфигурирует и запускает сервер на модуле ESP8266. При CIPMUX=1. При подключении клиента к серверу, ему присваивается идентификатор соединения id.*/
uart_wite_for("OK");
uart_puts("AT+CIPSTO=5\r\n"); /*Таймаут сервера, после его старта. Может быть установлен в диапазоне 0..7200 секунд.*/
uart_wite_for("OK");
ds18b20_search(); /*Поиск датчиков*/
while(1) {
read_ds18b20(); /*Читаем температуру*/
dtostrf(hg[0],5,1,&block[0]); /*Преобразуем в строку*/
uart_puts("AT+CIPSEND=0,5\r\n"); /* При одиночном соединении указывается только длина отправляемых байт. При множественном идентификатор и длина. Длина данных в пакете до 2048 байт. Между пакетами интервал 20мс. После получения данной команды модуль возвращает ">" и переходит в режим приема данных по RX, после приема данных необходимой длины передает их в радиоканал. При успешной передаче возвращает "SEND OK". Прервать режим приема данных и перейти в командный режим можно последовательностью "+++" */
/*Ждем символ “>” И вводим данные. Мы здесь упускаем проверку на этот символ*/
delay_ms(10);
uart_puts(block);
/*Также упускаем проверку на SEND ОК*/
delay_ms(2000);
}
}
Подробнее читайте по ссылке.
Вступите в группу, и вы сможете просматривать изображения в полном размере
![]()
Это интересно
0
|
|||
Последние откомментированные темы: