CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Ethernet-модуль датчиков на Arduino и web-интерфейс для множества таких модулей

Устройство создавалось на заказ. Из серии умный дом. Каждое устройство представляет собой 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

Комментарии (42)

RSS свернуть / развернуть
+
0
Интересный проект. Хочу что то похожее сделать, вот только имею затруднения с PHP, скачал, хотел посмотреть, не получается зайти с помощью указанных данных, в лог ошибок пишется, но из-за объема комментария включить не получается.

Помогите разобраться!
avatar

Niko561

  • 17 декабря 2014, 19:38
+
0
Не получается запустить — в архив забыл включить дамп базы данных
Напишите почту — я вышлю
Поставьте на Денвер и работайте
Посмотреть в сети
lermontov-kmv.ru/online-spravka.ru/magazin/thpmi/
на там графиков не увидите — т.к. графики берут данные из бд, а сейчас нет записи показаний в базу
можно посмотреть за 2014-05-04
avatar

victoruni

  • 19 декабря 2014, 08:47
+
0
Здравствуйте, Спасибо Вам!
Я по роду работы нахожусь в разъездах по просторам нашей страны, а так хочется посмотреть «как там дома». Для запуска необходим — «дамп базы данных», в виду «ограничения рейтинга» не могу написать сообщение с указанием почты, если можете
напишите сообщение с указанием Вашей почты, конфиденциальность со своей стороны гарантирую.
avatar

Niko561

  • 19 декабря 2014, 21:04
+
0
victor.petin@gmail.com
avatar

victoruni

  • 20 декабря 2014, 00:07
+
0
Здравствуйте, Спасибо Вам!
тоже очень заинтересовал проект. Не могли бы вы выслать мне дамп базы данных и инструкцию небольшую куда чего вставлять, и работает ли под виндой
С уважением Алексей
astotskiy@mail.ru
avatar

astotskiy

  • 24 марта 2015, 16:34
+
0
Здравствуйте, очень заинтересовал ваш проект.
Не могли бы вы скинуть ваши исходники мне «ангелок»

walentin_lew@mail.ru
Заранее огромное спасибо
avatar

Crazy_Child

  • 18 апреля 2015, 13:25
+
0
Здравствуйте. Если не трудно, вышлите, пожалуйста, дамп базы данных. Заранее спасибо.
sergej.r@mail.ru
avatar

sergej_r

  • 22 июня 2015, 23:22
+
0
выслал на почту
avatar

victoruni

  • 23 июня 2015, 06:56
+
0
Мне бы тоже бд на почту pragatz@yandex.ru
avatar

dmdtip

  • 29 июня 2015, 15:25
+
0
отправил
avatar

victoruni

  • 29 июня 2015, 21:21
+
0
Здравствуйте. Вышлите, пожалуйста, дамп базы данных. Спасибо.
zvorchik@gmail.com
avatar

zvorchik

  • 14 июля 2015, 14:47
+
0
отправил
avatar

victoruni

  • 14 июля 2015, 21:07
+
0
Здравствуйте! Пожалуйста вышлите и мне дамп БД на mtsby@hotmail.com Спасибо.
avatar

alex64

  • 15 июля 2015, 16:07
+
0
отправил

avatar

victoruni

  • 15 июля 2015, 19:41
+
0
Здравствуйте. Вышлите, пожалуйста, дамп базы данных. Спасибо.
evklid1@ya.ru
avatar

evklid1

  • 27 июля 2015, 22:21
+
0
Здравствуйте! Пожалуйста вышлите и мне дамп БД на iwizard7@gmail.com Спасибо.
avatar

iwizard7

  • 27 октября 2015, 06:59
+
0
отправил
avatar

victoruni

  • 27 октября 2015, 07:23
+
0
Здравствуйте, Спасибо Вам!
тоже очень заинтересовал проект. Не могли бы вы выслать мне дамп базы данных и инструкцию небольшую куда чего вставлять, и работает ли под виндой
С уважением Борис ученик робошколы г.Рязани
pear3200@gmail.com
avatar

Boris_Crane

  • 26 ноября 2015, 21:17
+
0
Добрый день. Классно! И мне пришлите пожалуйста дамп БД на mbar@yandex.ru. Спасибо
avatar

michaelbar

  • 3 ноября 2015, 16:47
+
0
отправил
avatar

victoruni

  • 4 ноября 2015, 08:00
+
0
Добрый день!
Пришлите мне пожалуйста дамп БД.
w_vladimir@74.ru
спасибо.
avatar

w_vladimir

  • 9 ноября 2015, 06:06
+
0
отправил
avatar

victoruni

  • 9 ноября 2015, 08:17
+
0
Спасибо… Виктор. БД получил.
Сервер после ввода логина с паролем подвисает. В итоге белый лист. Что делаю не так?
Система Win XP. Установлен Денвер.
avatar

w_vladimir

  • 9 ноября 2015, 10:13
+
0
Здравствуйте!
Вам наверное уже надоело рассылать базу данных от проекта.

Но все же, если можно, скиньте на адрес:
5diezov@gmail.com
avatar

5diezov

  • 10 ноября 2015, 13:51
+
0
Здравствуйте!
Пришлите мне пожалуйста дамп БД.
max77701@bk.ru
Заранее спасибо.
avatar

max77701

  • 14 ноября 2015, 08:26
+
0
Здравствуйте, Спасибо Вам!
тоже очень заинтересовал проект. Не могли бы вы выслать мне дамп базы данных и инструкцию небольшую куда чего вставлять, и работает ли под виндой
С уважением Борис ученик робошколы
pear3200@gmail.com
avatar

Boris_Crane

  • 26 ноября 2015, 21:16
+
0
Добрый день! Очень интересный проект!
Спасибо за Вашу работу!
Пришлите мне, пожалуйста, дамп базы.
Спасибо!
ser_ov@tut.by
avatar

SerOv

  • 29 ноября 2015, 22:10
+
0
Спасибо за Вашу работу!
Пришлите мне, пожалуйста, дамп базы.
Спасибо!
7oup@mail.ru
avatar

Barkalov

  • 6 декабря 2015, 12:39
+
0
Подскажите чайнику в Arduino если не трудно и Сталкивались:
Имею Arduino Mega и Internet Shild Wiznet W5100 Ethernet controller;
Так вот мега работает нормально, а вот шилд начинает нормально работать только после нажатия кнопки reset на нем до следующего выключения питания.
Что в нем нет так или я что то туплю. Спасибо!!!
avatar

Barkalov

  • 6 декабря 2015, 13:04
+
0
Хорошая работа!
Если не затруднит, вышлите мне, пожалуйста, дамп базы.
Заранее спасибо!
v.panishko@gmail.com
avatar

Tiger

  • 19 января 2016, 11:28
+
0
Спасибо за ваши труды!
Можно попросить дамп база.
kim@rambler.ru
avatar

kim24as

  • 29 января 2016, 15:18
+
+1
Дамп БД и остальные файлы
можно найти в архиве
ftp://ftp.bhv.ru/9785977536462.zip
на сайте издательства BHV
http://bhv.ru/books/book.php?id=193658
avatar

victoruni

  • 29 февраля 2016, 08:43
+
0
Приветствую! Очень крутой проект, респект! По ссылкам дампа нет, прошу выслать d.kalugin@gmail.com Заранее спасибо!
avatar

demon4eg

  • 19 марта 2016, 21:42
+
0
Добрый день, очень крутой проект! Его однозначно нужно развивать. Можно попросить выслать дамп на vitalik.net@list.ru, спасибо! Я может подключусь и внесу свою лепту во внешний вид)
avatar

vitalik

  • 7 апреля 2016, 09:13
+
0
и мне скиньте pragatz@yandex.ru
avatar

dmdtip

  • 26 мая 2016, 15:28
+
0
Спасибо) на почте нашел уже у себя
avatar

dmdtip

  • 26 мая 2016, 15:35
+
0
скиньте дамп базы пожалуйста. niarbrnd@yandex.ru
Спасибо
avatar

niarbrnd

  • 12 августа 2016, 21:55
+
0
Здравствуйте. Скиньте пожалуйста, дамп базы данных. tanya.kozlovskaya.1995@mail.ru Спасибо.
avatar

Tanya_2016

  • 6 октября 2016, 15:20
+
0
Здравствуйте! И мне скиньте, пожалуйста, дамп базы данных yurdelmail.ru для работы со школьниками. Заранее благодарен!
avatar

Yurdel

  • 14 декабря 2016, 04:18
+
0
Здравствуйте!
Отправил на e-mail — yurdel@mail.ru — правильно?
avatar

victoruni

  • 14 декабря 2016, 05:40
+
0
Здравствуйте, Виктор! Благодарю за ваши труды, покупаю и читаю ваши книги. Не затруднит ли вас и мне скинуть дамп базы ask.dzen@mail.ru.
avatar

Askar

  • 21 декабря 2016, 05:41
+
0
Здравствуйте!
Очень интересный проект.Большое вам спасибо за работу. Если не затруднит скиньте пожалуйста, дамп базы данных. Заранее благодарен.
С уважением Юрий
gerasimchuky@gmail.com
avatar

Juriy

  • 21 февраля 2017, 09:37

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.