Arduino+DS1820+W5100 или ENC28J60

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
BeletskyAV
Сообщения: 9
Зарегистрирован: Пт фев 13, 2015 9:16 pm
Откуда: Москва
Благодарил (а): 0
Поблагодарили: 4 раза

Arduino+DS1820+W5100 или ENC28J60

Сообщение BeletskyAV » Пт фев 27, 2015 3:56 pm

Почитал форум и понял , что практически всех интересует подключение DS1820 к Arduino и передачу инфы на MajorDoMo через W5100 или ENC28J60. Решил написать как это реализовано у меня. ( куски пастил в разных темах здесь всё сразу).
Если используете ENC28J60 нужно скачать либу : https://github.com/ntruchsess/arduino_uip
Либа DS1820 : http://download.milesburton.com/Arduino ... 72Beta.zip .
Подключаем как на рисунке
Изображение
Подключаем SDы к ноге 2 Ардуины ( не забывая сопротивление 4к7 между ногой 2 и +5V.)
Это скеч : https://drive.google.com/file/d/0B9hvrg ... sp=sharing
Скачать распаковать куда удобнее , в папке "DS1820_Monitor" запустить DS1820_Monitor.ino .
В самом начале есть строки :

//Если у Вас ENC28J60 разкоментируйте #include <UIPEthernet.h>
//#include <UIPEthernet.h>

//Если у Вас W5100 разкоментируйте #include <SPI.h> и #include <Ethernet.h>
#include <SPI.h>
#include <Ethernet.h>

Ну понятно. Да?
После запуска скетча будет что то типа :

575
657
527
668
192.168.1.202
GET /objects/?script=DS1820&T575=28.50&T657=28.50&T527=28.50&T668=28.50 HTTP/1.0

Сколько DSов висит на шине 2 столько и 3х значных цифр до IP Arduins(DSы можно добавлять по мере необходимости - скеч просто добавит 3х значный номер и GET строка увеличится)
После добавления Dsa Reset Ардуины !!!
В объектах создаём сенсоры типа sensorT575 - 575 это адрес из начала скетча т.е. у меня их 4 : sensorT575 ,sensorT657 ,sensorT527 ,sensorT668
В свойствах класса temp и updatedTime хранить XX дней.
В сценариях создаём сценарий DS1820 (в скетче - data = "GET /objects/?script=DS1820"; ) или "своё" имя только в скетче в место DS1820 пропишите.
Сам сценарий :

setGlobal('sensorT575.temp',$params['T575']);
setGlobal('sensorT657.temp',$params['T657']);
setGlobal('sensorT527.temp',$params['T527']);
setGlobal('sensorT668.temp',$params['T668']);

setGlobal('sensorT575.updatedTime',date("H:i",time()));
setGlobal('sensorT657.updatedTime',date("H:i",time()));
setGlobal('sensorT527.updatedTime',date("H:i",time()));
setGlobal('sensorT668.updatedTime',date("H:i",time()));

В скетче в закладке Main : if ((tt0 - tt1) > 10000) { - 10000 это 10 секунд (для теста поставте по вкусу ).
График типа IP/pChart/?p=sensorT575.temp&unit=℃&type=4h&width=250&px=10.
Вроде всё .
Ответить