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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.07.2013, 14:05   #1
CityCat
Junior Member
 
Регистрация: 04.07.2013
Адрес: Новополоцк, Беларусь
Сообщений: 16
Вес репутации: 0
CityCat is an unknown quantity at this point
По умолчанию Мой "умный дом"

Собственно, начинаю свой проект умного дома. Заодно, если получится, хочу его "притянуть" к диплому (через год).

С микроконтроллерами (Atmega) ранее общался, даже есть некоторые проекты. С программированием знаком - вроде как программер )))

По мере выполнения могу все выкладывать, если кому-то это будет нужно.

Есть несколько вопросов, но о них позже.

Итак, что имеем:

На данный момент имеется однокомнатная квартира (прихожая, комната, ванна+туалет, кухня, лоджия). В картире (в комнате) стоит и успешно работает сервак (ubuntu: Apache, mysql, php, bind, samba, dlna etc.) - используется для различных целей, не выключается и имеет выделенный IP. У сервера ADSL-модем (в режиме моста), через WiFi которого раздается инет и сеть всем беспроводным устройствам (телефоны, буки etc.). Также к нему через rj45 подключен сервак, ещё два компа и телек.

Собственно, закуплено (еще в пути от наших доблестных китайцев):

- 2012 UNO R3 (http://www.ebay.com/itm/200917607394) - я так думаю, что не должна отличаться от ардуино уно
- New Pro Mini atmega328 (http://www.ebay.com/itm/130839929399) *2шт. - почти arduino mini )))
- Mini USB Nano V3.0 (http://www.ebay.com/itm/310674366051) - nano (для экспериментов)

Ну и куча датчиков и мелочевки:

- DHT22;
- 433Mhz RF Transmitter Module And Receiver *2;
- 10А релюшки с опторазвязкой;
- HC-SR04;
- штуки 3-4 HC-SR501;
- I2C RTC DS1307 AT24C32 (мне лично удобнее купить на плате со стоимостью 2$, чем отдельно травить и паять под DS1307);
- BMP085;
- MQ-3;
- MQ-4;
- ADXL345 3-axis Digital Tilt Sensor;
- 3.3V/5V Power Supply Module;
- 10 пищалок (buzzer);
- NRF24L01;
- NC28J60 Ethernet LAN Network Module;
- Ethernet Shield W5100 (этот приехал уже);
- 125 KHZ EM4100 RFID card read module RDM630 + 10 карточек к нему;
- YF-S201 Water Flow Sensor Counter (похоже горячнулся с ним).

Что планируется:

Для начала, не очень хочу тянуть лишние провода (но если придется - витой пары бухта почти - хватит 100%). Идея такая: к серваку подключена uno (посредством шилда на W5100) - она же и выполняет роль master-устройства. Slave будут arduino mini и связаны мастер со слейвами будут через NRF24L01 (насколько это реально? читал где-то тут на форуме, что как только устройств >2 начинаются траблы с приемом-передачей). Мастер будет в пхп скрипт передавать все параметры, а он уж будет писать в MySQL-бд (а другим скриптом потом отображать, графики рисовать, управлять и т.д.)

Для успешной задумки для диплома необходимо реализовать учет воды, электроэнергии, газа. Все счетчики стоят аналоговые. Для учета воды, заказал YF-S201 (пока только попробовать) - поставлю ниже счетчика. Но похоже погорячился, т.к. он под трубы 1/2". У меня внешне больше (около 2 см.). Как точно их измерить? Хватит ли производительности в 30л./мин., если у меня два крана - в ванне и на кухне?
С газом пока вообще не знаю что делать. Может у кого есть идеи или ссылки на такие (с импульсным выходом) счетчики?
Электросчетчик цифровой (на лестничной площадке в распред. щитке). Естественно, влезть никто не даст, есть вот такая статья по учету энергии по вспышкам светодиода (врядли понравится проверяющим органам - могут в один прекрасный день просто вырвать с корнем)))

На входе (во входные двери) врезать электромеханический замок (в процессе поиска - пока даже не определился какой - может кто посоветовать?) и открывание дверей карточкой RFID.

В комнате, прихожей, ванне, на кухне, на балконе - DHT22, на балкон плюс BMP-085, на кухне MQ-4, в ванне хотелось бы ещё нечто в области датчика протечки с электромагнитами на трубах воды (если трубу прорвет или подтекать будет, чтоб отключил воду), хотя в таком серьезном деле, доверия китайцам большого нет (может ошибаюсь).

По этой статье переделать все выключатели света в доме. Дополнительно на входе в туалет сделать счетчик народа в помещении по этому принципу. Опять вопрос - не будут ли влиять внешние "наводки" от пультов управления, допустим телевизором и т.д. и как их избежать?

И ещё много вопросов даже просто "не по теме". Например вот эта статья. Кто может, поясните, плиз, принцип.

P.S. Продолжение следует...
P.P.S. Если не в той ветке - пните в нужную. Спасибо.
CityCat вне форума   Ответить с цитированием
Старый 08.07.2013, 14:10   #2
CityCat
Junior Member
 
Регистрация: 04.07.2013
Адрес: Новополоцк, Беларусь
Сообщений: 16
Вес репутации: 0
CityCat is an unknown quantity at this point
По умолчанию

Задался вопросом задержки без delay.

Взглянув на этот код понял, что как только произойдет сброс значения millis() вследствие переполнения (приблизительно через 50 дней), данная конструкция перестанет работать, т.к. currentMillis будет на следующей итерации после сброса 0, да хоть миллион, но previousMillis будет неизменно (4 294 967 000 при interval = 1000, соответственно, в if(currentMillis - previousMillis > interval) мы не зайдем, чтоб обнулить (уравнять с currentMillis) previousMillis.

Немного переделал код, вынеся в отдельную функцию - ИМХО удобнее вызывать с параметром - кол-во миллисекунд. Функция возвращает true когда указанный промежуток времени прошёл.

Поправьте, если неправ (пока ардуины нет в руках - проверить не на чем)

Собственно код:
PHP код:
const int ledPin =  13;          // номер выхода, подключенного к светодиоду

unsigned long PrevTime 0;    // храним время последнего переключения светодиода
 
void setup() {
  
// задаем режим выхода для порта, подключенного к светодиоду
  
pinMode(ledPinOUTPUT);     
}
 

void loop()
{
  if (
delayms(1000))
      
digitalWrite(ledPin, (digitalRead(ledPin)==LOW)?HIGH:LOW); //если сигнал низкий то зажигаем светодиод 
      
}

//Параметром - интервал между включение/выключением светодиода в милисек. (1000 = 1сек.)
//Возвращает true если нужный интервал прошел.
boolean delayms(long interval)
{
    
//Здесь - количество миллисекунд с момента начала выполнения программы
    
unsigned long CurTime millis();                
                              
    
//В CurTime - прошедший интервал времени
    
CurTime abs(CurTime PrevTime);
    
    
//проверяем не прошел ли нужный интервал, если прошел то   
    
if(CurTime interval)
    {
        
// сохраняем время последнего переключения
        
PrevTime CurTime
        
// возвращаем true - время прошло
            
return true;
    }
        else return 
false;    

CityCat вне форума   Ответить с цитированием
Старый 08.07.2013, 17:03   #3
CityCat
Junior Member
 
Регистрация: 04.07.2013
Адрес: Новополоцк, Беларусь
Сообщений: 16
Вес репутации: 0
CityCat is an unknown quantity at this point
По умолчанию

Вопрос по RFID. Возможно ли создать антенну, считывающую метки на частоте 125KHz на расстоянии хотя бы 1м.?

Если да, то в какую сторону копать? Есть где-нибудь документация?

Хочу сделать что-то типа того, как антенны читают метки в магазинах. Там на какой частоте они работают?
CityCat вне форума   Ответить с цитированием
Старый 08.07.2013, 19:40   #4
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
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
По умолчанию

Возможно, но антенна будет очень большой
Например рамочная антенна в супермаркете

Цитата:

Как устроены RFID-метки


Метка представляет собой миниатюрное запоминающее устройство. Она состоит из микрочипа, который хранит информацию, и антенны, с помощью которой метка передает и получает информацию. Иногда метка имеет собственный источник питания (такие метки называют активными), но у большинства меток его нет (эти метки называют пассивными) и энергию для работы получают от наведенного антенной электромагнитного поля и накапливает ее в конденсаторе. В памяти метки хранится ее собственный уникальный номер и пользовательская информация. Когда метка попадает в зону регистрации, эта информация принимается считывателем, специальным прибором способным читать и записывать информацию в метках.

Активные – используют для передачи данных энергию встроенного элемента питания
Пассивные – используют энергию, излучаемую считывателем через антенну
Полупассивные – такие метки также имеют элемент питания, но он используется только для обеспечения работы микросхемы, а не для связи со считывателем, что существенно продлевает срок жизни батарейки.
Admin вне форума   Ответить с цитированием
Старый 08.07.2013, 20:38   #5
CityCat
Junior Member
 
Регистрация: 04.07.2013
Адрес: Новополоцк, Беларусь
Сообщений: 16
Вес репутации: 0
CityCat is an unknown quantity at this point
По умолчанию

Admin об этом я знаю. Однако, не известен доподлинно вопрос, возможно ли сделать такую антенну на 125 KGHz? И как рассчитать сечение, количество витков и диаметр? Размеры интересуют в последнюю очередь - в идеале её можно было бы "пустить" вокруг двери.
CityCat вне форума   Ответить с цитированием
Старый 23.07.2013, 12:51   #6
CityCat
Junior Member
 
Регистрация: 04.07.2013
Адрес: Новополоцк, Беларусь
Сообщений: 16
Вес репутации: 0
CityCat is an unknown quantity at this point
По умолчанию

Реализовываю чтение RFID-меток и открывание дверей. Возник вопрос.
У меня читает метку ардуина (через вот такой модуль), формирует GET-запрос и посылает его через сеть (ethernet-шилд) php-скрипту на сервере. Скрипт его разбирает, сравнивает на наличие такого ключа в БД и отсылает ответ ардуине открыть или нет двери.
Так вот сейчас что запрос (метка) что ответ идут в явном виде, что не есть хорошо. Думаю, нужно как-то шифровать сие дело, но как-то пока не придумал.
У кого есть какие идеи? Или может я где-то не увидел на форуме решение? Просьба не пинать ногами, а ткнуть носом )))
Спасибо.
CityCat вне форума   Ответить с цитированием
Старый 23.07.2013, 18:45   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
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
По умолчанию

В каком виде отправляете метку? В ASC-II или в бинарном виде?
Admin вне форума   Ответить с цитированием
Старый 24.07.2013, 09:07   #8
CityCat
Junior Member
 
Регистрация: 04.07.2013
Адрес: Новополоцк, Беларусь
Сообщений: 16
Вес репутации: 0
CityCat is an unknown quantity at this point
По умолчанию

Да, в принципе это не проблема. Пока храню в char-переменной (пока ничего не отправляю, поэтому и хотел проконсультироваться ) в ASCII конечно же. Но перевести в hex или bin IMHO, не большая проблема.
А что это меняет?
CityCat вне форума   Ответить с цитированием
Старый 24.07.2013, 10:56   #9
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
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
По умолчанию

Всегда проще работать с одним числом чем с пакетом.
Можно самому написать простейший шифратор/дешифратор с ключом
Например передаваемый пакет начинается с ключа, который выбирается случайно
Если кодировать методом ротации бит внутри байта, то ключ будет содержать число сдвигов. Для надежности можно еще проинвертировать. В дишифраторе для восстановления нужно сначала проинвертировать и сдвигать по тому же ключу только в обратную сторону.
Так же можно кодировать проводя математические операциями над байтом с помощью ключа
Admin вне форума   Ответить с цитированием
Старый 24.07.2013, 11:17   #10
CityCat
Junior Member
 
Регистрация: 04.07.2013
Адрес: Новополоцк, Беларусь
Сообщений: 16
Вес репутации: 0
CityCat is an unknown quantity at this point
По умолчанию

Вот тут правильно написали. Если перехватить весь запрос и ещё раз его отправить, то отсылай ты просто шифрованный ключ или ключ и ключ для расшифровки или ключ и номер ключа в блокноте - не важно - сервер расшифрует и откроет двери.
Так что просто шифровать не вариант. Задумался...
CityCat вне форума   Ответить с цитированием
Ответ


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

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

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

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

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


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


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