Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.05.2014, 16:32   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,380
Вес репутации: 9579
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию CyberWrt модуль "AquaLog"

Коммерческая версия "AquaLog" или "WaterLog" уже в продаже

Вчера вечером после очередной подачи данных о расходе воды, я решил что хватит, надоело каждый месяц лазить в стояк с фонариком, бумажкой и ручкой для снятия показаний счетчиков воды. У меня два санузла и четыре прибора учета. Не то что бы лень, но согласитесь проще нажать кнопку за компьютером, чем тратить каждый раз на это время. По этому было решено сделать систему для дистанционного снятия показаний расхода горячей и холодной воды. Так же решено применить такую же систему учета, для проверки ресурса фильтров воды, потому как гадать на пальцах когда закончится срок службы фильтров, не по нашему. Умный дом должен быть во всем умным

Работает модуль так:
Информация о расходе воды отображается в веб интерфейсе, в виде графического изображения счетчиков и графиков
На графиках отображается расход воды за неделю с шагом 1 час
Так же в веб интерфейсе планируется сделать кнопку для отправки показаний на сайт https://pgu.mos.ru/ru/ или любой другой сайт предоставляющий такую же услугу. Нами сейчас тестируется и допиливается возможность отправка уведомлений на телефон по СМС и e-mail
В настройках можно установить начальные показания счетчиков, также при необходимости можно корректировать счетчики, то есть Вы в любой момент сможете внести текущие показания счетчика.
Можно изменить цену деления(количество литров на 1 импульс)
Для выбора порта, нужно сначала подключить Arduino и выбрать соответствующий ему порт

Для тех кто не хочет возится с железом, готовим к продаже коробочный вариант автономного устройства, с встроенной аккумуляторной батареей 2000мА. В продажу поступит под названием WiFi устройство для дистанционного считывания показаний расхода горячей и холодной воды "AquaLog"

Для самостоятельного изготовления такого устройства Вам понадобятся:
Маршрутизатор Nexx WT3020H с прошивкой CyberWrt
Arduino Nano V.7
У Вас на водопроводе должны быть установлены счетчики расхода горячей и холодной воды с выходящим из них проводом

Схема подключения счетчиков
Для борьбы с дребезгом использовал керамический конденсатор 0,1мкф, установленный параллельно входу
Нажмите на изображение для увеличения
Название: Large.jpg
Просмотров: 7614
Размер:	110.1 Кб
ID:	1721

Для работы CyberWrt с Arduino Nano устанавливаем модуль "FTDI Driver"

Скачиваем библиотеку CyberLib.h, распаковываем и кладем в папку ..\arduino-хххх\libraries
Заливаем в Arduino Nano V.7 ниже представленный скетч
PHP код:
#include <CyberLib.h>

volatile uint16_t Hot_CountCold_Count
uint16_t HotCold;
void setup()  

  
D2_InD2_HighD3_InD3_High//сконфигурировать входы и подтянуть к +питания
  
attachInterrupt(0HotWaterFALLING );             // привязываем 0-е прерывание к функции HotCount(). 
  
attachInterrupt(1ColdWaterFALLING );            // привязываем 1-е прерывание к функции ColdCount().
  
Serial.begin(57600); 
  
wdt_enable (WDTO_1S);    //Сторожевая собака 1сек.   
}  

void loop()  
{  
Start
    
if (Serial.available()>1)
    {   
       
uint8_t inByte Serial.read();   
        if(
inByte=='#')
         { 
          
inByte Serial.read();
          if(
inByte=='W')
          {
           
delay_ms(200);
            
cli();
            
Hot=Hot_Count;
            
Cold=Cold_Count;
            
Hot_Count=0;
            
Cold_Count=0;
            
sei();
            
Serial.print("Hot: "); 
            
Serial.print(Hot);
            
Serial.print(" Cold: ");  
            
Serial.println(Cold);         
          }
         }  
     }
 
wdt_reset(); //покормить собаку 
End 

//*******************************
void ColdWater() 

  
Cold_Count++;  


void HotWater() 

  
Hot_Count++;

Всем кто желает помочь, прошу высказать свои мысли на эту тему

Внешний вид веб интерфейса
Нажмите на изображение для увеличения
Название: counter.jpg
Просмотров: 2636
Размер:	83.8 Кб
ID:	1726
Admin вне форума   Ответить с цитированием
Старый 23.05.2014, 01:13   #2
stD
Moderator
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,121
Вес репутации: 1301
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: WiFi счетчики расхода воды

Во прикольный кран: http://fototelegraf.ru/wp-content/up.../09_future.jpg

А по существу, металлическим бы он, выглядел надёжней.

Последний раз редактировалось stD; 23.05.2014 в 02:13.
stD вне форума   Ответить с цитированием
Старый 23.05.2014, 02:10   #3
stD
Moderator
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,121
Вес репутации: 1301
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: WiFi счетчики расхода воды

А ещё вот такие, http://energonic.ru/index.php?productID=1474 ( только без провода )предлагаю работники ЖЕЭК.
stD вне форума   Ответить с цитированием
Старый 23.05.2014, 09:29   #4
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,380
Вес репутации: 9579
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: WiFi счетчики расхода воды

У меня как раз такие же счетчики установлены
Admin вне форума   Ответить с цитированием
Старый 23.05.2014, 09:35   #5
filinmd
Senior Member
 
Аватар для filinmd
 
Регистрация: 18.09.2012
Адрес: Moscow
Сообщений: 157
Вес репутации: 0
filinmd is an unknown quantity at this point
Отправить сообщение для filinmd с помощью ICQ
По умолчанию Re: WiFi счетчики расхода воды

Я счетчики специально покупал с герконами.
Собрал на макетке ардуинку с минимальным обвесом, подключил к ней mr3020 и теперь смотрю показания на домашнем сайте.
Ардуинка считает обороты со счетчика, один оборот крыльчатки - 5 литров. А mr3020 раз в 5 минут делает запрос на дуинка и пишет данные в таблицу.
PHP код:
//  1 пин со счетчика воды  на +5v ( он белый)
// 3 пин(синий) на землю -  без резистора там он уже есть
// 4 пин(красный) на pin2 и pin3 ардуина 
/*
D0,D1 - RX TX
D2 - Счетчик горячей воды
D3 - Счетчик холодной воды
D7 - Dallas DS18B20 Датчики температуры
*/

#include <OneWire.h>


////***********************************Переменные для температуры 
OneWire  ds(7);    // Датчки температуры горячей воды
byte addr[8];
byte i;
byte present 0;
byte data[12];
float celsius;

////***********************************Переменные для температуры

////***********************************Переменные для счетчика
int Count_Hot 0;
int Count_Cold 0;
int pin 13;
volatile int x LOW;
////***********************************Переменные для счетчика

void setup()
{
  
  
Serial.begin(57600); 
 
   
 
////***********************************Настройки для счетчика  
  
pinMode(pinOUTPUT);// пин как выход
  
attachInterrupt(0add_Hot,CHANGE );             // привязываем 0-е прерывание к функции add_Hot().
  
attachInterrupt(1add_Cold,CHANGE );            // привязываем 1-е прерывание к функции add_Cold().
 ////***********************************Настройки для счетчика
 
}
 
void loop() 
{
       
    if (
Serial.available() > 0)  
    {  
      
byte inByte Serial.read();  
      switch (
inByte)  
        {  
        case 
49:
          
get_temp();
        break;
        
        case 
50:
          
Serial.print("Cold:");
          
Serial.print(Count_Cold);
          
Serial.println();
        break;
        
        case 
51:
          
Serial.print("Hot:");
          
Serial.print(Count_Hot);
          
Serial.println();
        break;
      
        
        
        }
    }


void get_temp()
{
label:
  if ( !
ds.search(addr)) {
    
ds.reset_search();
    
delay(250);
    return;
  }
   
Serial.print("ROM=");
  for( 
08i++) {
     
Serial.print(addr[i], HEX);
  }  
  
ds.reset();
  
ds.select(addr);
  
ds.write(0x441);        // start conversion, with parasite power on at the end
  
delay(1000);  
  
present ds.reset();
  
ds.select(addr);  
 
  
ds.write(0xBE); 
  for ( 
09i++) {           
    
data[i] = ds.read();
  }
  
  
int16_t raw = (data[1] << 8) | data[0];
  
byte cfg = (data[4] & 0x60);
  if (
cfg == 0x00raw raw & ~7;  // 9 bit resolution, 93.75 ms
  
else if (cfg == 0x20raw raw & ~3// 10 bit res, 187.5 ms
  
else if (cfg == 0x40raw raw & ~1// 11 bit res, 375 ms
  
  
celsius = (float)raw 16.0;
  
Serial.print(":"); 
  
Serial.print(celsius);
  
Serial.println(); 
  goto 
label;
}

void add_Cold()
{
    static*
unsigned*long*millis_prev_1;
    if(
millis()-100 millis_prev_1)  Count_Cold=Count_Cold++; 
    
millis_prev_1 millis();***

}
void add_Hot()
{
   static*
unsigned*long*millis_prev_2;
   if(
millis()-100 millis_prev_2Count_Hot=Count_Hot++;
   
millis_prev_2 millis();

filinmd вне форума   Ответить с цитированием
Старый 23.05.2014, 09:45   #6
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,380
Вес репутации: 9579
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: WiFi счетчики расхода воды

Веб интерфейс с графиками?
В обработчике прерывания длительность для чего проверяется? Для исключения дребезга?
Admin вне форума   Ответить с цитированием
Старый 23.05.2014, 10:10   #7
filinmd
Senior Member
 
Аватар для filinmd
 
Регистрация: 18.09.2012
Адрес: Moscow
Сообщений: 157
Вес репутации: 0
filinmd is an unknown quantity at this point
Отправить сообщение для filinmd с помощью ICQ
По умолчанию Re: WiFi счетчики расхода воды

Цитата:
Сообщение от Admin Посмотреть сообщение
Веб интерфейс с графиками?
В обработчике прерывания длительность для чего проверяется? Для исключения дребезга?
Графики так и не прикрутил, но структура таблицы позволяет строить красивые графики ( пробовал в экселе)

Длительность проверяется для исключения дребезга.
На 1000 литров ошибка +-20 литров
filinmd вне форума   Ответить с цитированием
Старый 23.05.2014, 10:22   #8
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,380
Вес репутации: 9579
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: WiFi счетчики расхода воды

А погрешность с чем связана с дребезгом?
Таблицы сроишь в sqlite?
Admin вне форума   Ответить с цитированием
Старый 23.05.2014, 10:26   #9
filinmd
Senior Member
 
Аватар для filinmd
 
Регистрация: 18.09.2012
Адрес: Moscow
Сообщений: 157
Вес репутации: 0
filinmd is an unknown quantity at this point
Отправить сообщение для filinmd с помощью ICQ
По умолчанию Re: WiFi счетчики расхода воды

Цитата:
Сообщение от Admin Посмотреть сообщение
А погрешность с чем связана с дребезгом?
Таблицы сроишь в sqlite?
Да, в sqlite.

С чем связана я так и не понял, ее может не быть вообще.
filinmd вне форума   Ответить с цитированием
Старый 23.05.2014, 10:34   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,380
Вес репутации: 9579
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: WiFi счетчики расхода воды

Веб кодом не поделишься?
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика