Подписаться на получение новых статей на почту:

Atmega8 and Web-interface. DIY and IoT. Шаг №92

Всем привет. Продолжим тему WEB-интерфейса. Как Вы помните в прошлой статье мы с Вами подготовили страницу на стороне сервера к приему параметров и отображения их на стороне клиента. Осталось подготовить аппаратную часть, а именно микроконтроллер AVR. Мы уже проделывали похожую операцию (запись №59), только теперь данную программу мы перенесем на отдельный микроконтроллер, который будет принимать данные по шине i2c (twi), и «улаживать спать» до следующего момента передачи данных, т.е. это у нас будет ведомый.

В данном случае мы немного переделаем контроллер сбора данных: отключим SD-карту, ее систему питания задействуем для модуля ESP8266, уберем обращение к схеме реального времени, оно нам также пока не надо и отключим кнопки. Библиотеки используем те же, единственное добавим код для работы с модулем. На рисунке вид нашего контроллера сбора данных.

Atmega8 and esp8266

Ниже приведу только основную часть кода ведущего МК (см. статьи по ссылкам). Кратко о функциях, измерение температуры, влажности, работа с строками, передача данных по интерфейсу I2C.
……………………………………………………………….
#define LOCAL_ADDR 0xA0
#define TARGET_ADDR 0×07           //Оставляем адрес МК2
…………………………………………………………………………………………
int main (void)
{
……………………………………………………………………
     ds18b20_search ();                        //Поиск датчиков
     while (1)
     {
               read_ds18b20 ();                  //Читаем температуру
               dtostrf (hg[0],5,1,&block[0]); //Преобразуем значение в строку
               if (hg[0]>0) block[0]='+';     
               strlcat (block,"&t1=",30);        //Добавляем в строку второй GET-параметр
               dtostrf (hg[1],5,1,&block[9]);  //Читаем вторую температуру
               if (hg[1]>0) block[9]='+';
               dhtread ();                             //Читаем влажность
               strlcat (block,"&h=",30);        //Добавляем третий параметр влажности
               itoa (dh[0], &block1, 10);
               strlcat (block,block1,30);
               Display (0);
               if (k1>=5)                              //Регулируем периодичность отправления данных.
               {
                        i2cSetLocalDeviceAddr (LOCAL_ADDR, TRUE);
                        i2cMasterSend (TARGET_ADDR,5,&block[0]);
                        k1=0;
               }
               k1++;
               _delay_ms (1000);
       }
 }

Переходим к МК2. Здесь также основную часть привожу.
Немного напомню про настройку модуля ESP8266, ниже команды, делаем один раз и убираем:
AT+CWMODE=1;                                                     //Режим работы модуля клиент
AT+RST;                                                                   //Перезапуск модуля
AT+CWJAP=……...;                                                  //Настраивается на точку доступа
while (1)
{
        i2cSetLocalDeviceAddr (LOCAL_ADDR, TRUE); /*Адрес ведомого микроконтроллера*/
        asm («sleep»); /*Улаживаем «баюшки»*/
        i2cSetSlaveReceiveHandler (i2cSlaveReceiveService);
        uart_puts («AT\r\n»);
        uart_wite_for («OK»);
        delay_ms (100);
        //----------------Устанавливаем адрес соединения-------------------------------------------------
        uart_puts («AT+CIPSTART=\»TCP\",\"ap-impulse.ru\",80\r\n");
        uart_wite_for («OK»);
        //---------------------------Длина посылаемого запроса--------------------------------------------//
        uart_puts («AT+CIPSEND=96\r\n»);// t2 = 9 + h= 5 = 14+82 = 96
        uart_wite_for («OK»);
        delay_ms (10);
        //-----------------------------Страница и параметр------------------------------------------------//
        uart_puts («GET /interface.php?t=»);
        uart_puts (block);
        uart_puts (« HTTP/1.1\r\nHost:ap-impulse.ru\r\nConnection: close\r\n\r\n\r\n\r\n»);
        delay_ms (1000);
     }
}
Ниже рисунок, где видно, что наши данные успешно записались в текстовый файл на стороне сервера и также удачно вывелись на векторное изображение.

txt

Здесь мы разобрали пример DIY – поделки и IoT, где мы связываем через интернет в данном случае объект и web–интерфейс (закладка в главном меню). В следующей статье вернемся к разработке Android- приложения, а именно научимся выводить данные в векторное приложение, т.е. взаимодействие svg-объектов и java. Позже мы пропишем (добавим) функцию ,в Android, обращения к web-ресурсу и будем считывать переданные ранее параметры. Т.е. впишем приложение SmartHouse в систему IoT. Но все по порядку. На этом сегодня и остановимся. Всем пока.

Просмотрено 120 раз.

Я на Google+

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

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting