Устройство создавалось на заказ. Из серии умный дом. Каждое устройство представляет собой web-сервер (контроллер Arduino + Ethernet shield) , к контроллеру Arduino подсоединены следующие датчики
1. датчик температуры DS18B20
2. модуль датчика влажности DHT11
3. модуль датчика освещенности BH1750
4. модуль датчика движения HC-SR501
5. модуль звука
Схема устройства следующая
Каждое устройство имеет уникальный ip адрес. При обращении к устройству, оно отдает данные датчиков в формате Json
температура, влажность, освещенность, количество срабатываний датчика движения и датчика звука после последнего обращения.
Данные такого вида
{«meteo»: {«temp1″:»25.31″,»humidity1″:»35.00″,»lux1″:»10″,»sound1″:»0″,»motion1″:»0»} }
У всех устройств свой уникальный порт обращения, есть задумка получать данные с каждого устройства из внешней сети для приложение для смартфона.
Вот содержимое скетча для модуля
#include <SPI.h> #include <Ethernet.h> #include <OneWire.h> #include <Wire.h> #include <BH1750.h> BH1750 light1; #include "DHT.h" DHT dht(8, DHTTYPE); OneWire ds(7); // on pin 7 // датчик 1 /**/ byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xF1 }; byte ip[] = { 192, 168, 1, 121 }; EthernetServer server(10001); byte my_addr[8]={0x28,0x2A,0x78,0x65,5,0,0,0x10}; /**/ // датчик 2 /* byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xF2 }; byte ip[] = { 192, 168, 0, 122 }; EthernetServer server(10002); byte my_addr[8]={0x28,0x1,0x65,0x65,5,0,0,0xCE}; */ int count_motion=0; uint16_t count_sound=0; void setup() { Serial.begin(9600); Serial.println("start"); Ethernet.begin(mac, ip); // запуск сервера server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); Wire.begin(); delay(1000); light1.begin(); attachInterrupt(0,motion,RISING); } void loop () { EthernetClient client = server.available(); if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.print('{'); client.print('"');client.print("meteo");client.print('"');client.println(":"); client.print('{'); int Temp=get_temp(); //Serial.print(Temp/16); //Serial.print("."); //Serial.print(((Temp%16)*100)/16); //Serial.println(); client.print('"');client.print("temp1");client.print('"');client.print(":"); client.print('"');client.print(Temp/16); client.print("."); client.print(((Temp%16)*100)/16);client.print('"');client.print(','); float h = dht.readHumidity(); client.print('"');client.print("humidity1");client.print('"');client.print(":"); client.print('"');client.print(h);client.print('"'); client.print(','); // bh1750 uint16_t lux = light1.readLightLevel(); client.print('"');client.print("lux1");client.print('"');client.print(":"); client.print('"');client.print(lux);client.print('"'); client.print(','); // sound client.print('"');client.print("sound1");client.print('"');client.print(":"); client.print('"');client.print(count_sound);client.print('"'); client.print(','); count_sound=0; //датчик движения client.print('"');client.print("motion1");client.print('"');client.print(":"); client.print('"');client.print(count_motion);client.print('"'); client.println("}"); client.print("}"); count_motion=0; break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); } // sound if(analogRead(A0)<500) {count_sound++;delay(1000);} } // получение тмпературы датчика int get_temp() { byte i; byte present = 0; byte data[12]; byte addr[8]; int Temp; ds.reset(); ds.select(my_addr); ds.write(0x44,1); // start conversion, with parasite power on at the end delay(1000); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it. present = ds.reset(); ds.select(my_addr); ds.write(0xBE); // Read Scratchpad for ( i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); } Temp=(data[1]<<8)+data[0];//take the two bytes from the response relating to temperature Temp=Temp;//divide by 16 to get pure celcius readout return Temp; } // обработка прерывания ик датчика движения // void motion() { detachInterrupt(0); count_motion++; attachInterrupt(0,motion,RISING); }
Все устройства находятся в одной локальной сети. В сети находится сайт для сбора данных с устройств и представления данных в виде графиков и таблиц. А также отображение данных в виде виджетов на плане дома или квартиры.
Опрос модулей по cron каждые 5 минут, данные собираются в базу данных mySQL,
где также хранятся настройки для всех модулей, находящихся в системе
Сайт написан на html5 с элементами canvas при выводе виджетов на плане объекта
Отправка информации на сервер - без перезагрузки страницы (ajax, библиотека xajax)
Вид объектов с виджетами (средние значения температуры, влажности, освещенности)
При авторизации активируются ссылки с виджетов в админскую часть
В админской части просмотр данных
c выбором объекта (квартира, дача, гараж)
подобъекта (1 этаж ....)
комнаты
и даты
для температуры, влажности, освещенности строятся графики
для датчиков звука и датчиков движения - таблицы с количеством срабатываний между запросами
При построении графиков и таблиц используется API Google Chart
Архив с файлами сайта - скачать
Посмотреть можно здесь
Логин - admin1
пароль - 123456
числа 03.05, 04.05, 05.05
0 комментариев на «“Ethernet-модуль датчиков на Arduino и web-интерфейс для множества таких модулей”»
Интересный проект. Хочу что то похожее сделать, вот только имею затруднения с PHP, скачал, хотел посмотреть, не получается зайти с помощью указанных данных, в лог ошибок пишется, но из-за объема комментария включить не получается.
Помогите разобраться!
Не получается запустить — в архив забыл включить дамп базы данных
lermontov-kmv.ru/online-spravka.ru/magazin/thpmi/
Напишите почту — я вышлю
Поставьте на Денвер и работайте
Посмотреть в сети
на там графиков не увидите — т.к. графики берут данные из бд, а сейчас нет записи показаний в базу
можно посмотреть за 2014-05-04
Здравствуйте, Спасибо Вам!
Я по роду работы нахожусь в разъездах по просторам нашей страны, а так хочется посмотреть «как там дома». Для запуска необходим — «дамп базы данных», в виду «ограничения рейтинга» не могу написать сообщение с указанием почты, если можете
напишите сообщение с указанием Вашей почты, конфиденциальность со своей стороны гарантирую.
[email protected]
Здравствуйте, Спасибо Вам!
тоже очень заинтересовал проект. Не могли бы вы выслать мне дамп базы данных и инструкцию небольшую куда чего вставлять, и работает ли под виндой
С уважением Алексей
[email protected]
Здравствуйте, очень заинтересовал ваш проект.
Не могли бы вы скинуть ваши исходники мне «ангелок»
[email protected]
Заранее огромное спасибо
Здравствуйте. Если не трудно, вышлите, пожалуйста, дамп базы данных. Заранее спасибо.
[email protected]
выслал на почту
Мне бы тоже бд на почту [email protected]
отправил
Здравствуйте. Вышлите, пожалуйста, дамп базы данных. Спасибо.
[email protected]
отправил
Здравствуйте! Пожалуйста вышлите и мне дамп БД на [email protected] Спасибо.
отправил
Здравствуйте. Вышлите, пожалуйста, дамп базы данных. Спасибо.
[email protected]
Здравствуйте! Пожалуйста вышлите и мне дамп БД на [email protected] Спасибо.
отправил
Здравствуйте, Спасибо Вам!
тоже очень заинтересовал проект. Не могли бы вы выслать мне дамп базы данных и инструкцию небольшую куда чего вставлять, и работает ли под виндой
С уважением Борис ученик робошколы г.Рязани
[email protected]
Добрый день. Классно! И мне пришлите пожалуйста дамп БД на [email protected]. Спасибо
отправил
Добрый день!
Пришлите мне пожалуйста дамп БД.
[email protected]
спасибо.
отправил
Спасибо… Виктор. БД получил.
Сервер после ввода логина с паролем подвисает. В итоге белый лист. Что делаю не так?
Система Win XP. Установлен Денвер.
Здравствуйте!
Вам наверное уже надоело рассылать базу данных от проекта.
Но все же, если можно, скиньте на адрес:
[email protected]
Здравствуйте!
Пришлите мне пожалуйста дамп БД.
[email protected]
Заранее спасибо.
Здравствуйте, Спасибо Вам!
тоже очень заинтересовал проект. Не могли бы вы выслать мне дамп базы данных и инструкцию небольшую куда чего вставлять, и работает ли под виндой
С уважением Борис ученик робошколы
[email protected]
Добрый день! Очень интересный проект!
Спасибо за Вашу работу!
Пришлите мне, пожалуйста, дамп базы.
Спасибо!
[email protected]
Спасибо за Вашу работу!
Пришлите мне, пожалуйста, дамп базы.
Спасибо!
[email protected]
Подскажите чайнику в Arduino если не трудно и Сталкивались:
Имею Arduino Mega и Internet Shild Wiznet W5100 Ethernet controller;
Так вот мега работает нормально, а вот шилд начинает нормально работать только после нажатия кнопки reset на нем до следующего выключения питания.
Что в нем нет так или я что то туплю. Спасибо!!!
Хорошая работа!
Если не затруднит, вышлите мне, пожалуйста, дамп базы.
Заранее спасибо!
[email protected]
Спасибо за ваши труды!
Можно попросить дамп база.
[email protected]
Дамп БД и остальные файлы
ftp://ftp.bhv.ru/9785977536462.zip
http://bhv.ru/books/book.php?id=193658
можно найти в архиве
на сайте издательства BHV
Приветствую! Очень крутой проект, респект! По ссылкам дампа нет, прошу выслать [email protected] Заранее спасибо!
Добрый день, очень крутой проект! Его однозначно нужно развивать. Можно попросить выслать дамп на [email protected], спасибо! Я может подключусь и внесу свою лепту во внешний вид)
и мне скиньте [email protected]
Спасибо) на почте нашел уже у себя
скиньте дамп базы пожалуйста. [email protected]
Спасибо
Здравствуйте. Скиньте пожалуйста, дамп базы данных. [email protected] Спасибо.
Здравствуйте! И мне скиньте, пожалуйста, дамп базы данных yurdelmail.ru для работы со школьниками. Заранее благодарен!
Здравствуйте!
Отправил на e-mail — [email protected] — правильно?
Здравствуйте, Виктор! Благодарю за ваши труды, покупаю и читаю ваши книги. Не затруднит ли вас и мне скинуть дамп базы [email protected].
Здравствуйте!
Очень интересный проект.Большое вам спасибо за работу. Если не затруднит скиньте пожалуйста, дамп базы данных. Заранее благодарен.
С уважением Юрий
[email protected]
Интересный проект. У меня на данный момент автоматизация без веб сервера, чуток не удобно стало. Хочу добавить функцию эту и толком не знаю с чего начинать. Плиз сбросьте мне на почту гляну. Спасибо.
[email protected]
А как можно подключить 2 датчика освещенности GY-49 max44009?