Заметка юзера Gol

Градусник он-лайн.

Arduino ардуина железки погода градусник

Весь день провалялся в постели, аццки потел и отлёживался. В результате вечером самочувствие улучшилось и оказалось что сна - ни в одном глазу. Так что решил заняться чем-нибудь, где мозги особо не требуются. Т.е. доделать градусник.

С сетевой платой на базе ENC28J60 у меня как-то не срослось из-за того что штатная библиотека EtherShield.h не поддерживает маршрутизации, т.е. пашет только в своём сегменте сети. Нашлась модифицированная версия этой библиотеки, но весь код - на низком уровне, шибко уж запутанно. Хочется чего-нить высокоуровнего. А для этого нужна стандартная ардуиновская плата eShield. Которую нигде не получается купить ибо нигде нету в наличии.

Вспомнил что SysCat подарил мне много запчастей, среди которых нашёлся набор "сделай сам" как раз для требуемого шылда. Нужно паять.

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

Паяльник давно в руках не держал, но припаяв несколько кондёров дело пошло на лад и под конец процедуры пины и кроватки припаял на ура - не отличишь от заводской пайки :-)

Слева - то, что я спаял. Справа - модуль Wiznet W5100

Полный размер Слева - то, что я спаял. Справа - модуль Wiznet W5100

Продолжение...


Модуль вставляется в шылд

Полный размер Модуль вставляется в шылд

Вот такая лепота получилась

Полный размер Вот такая лепота получилась

А вот шылд уже пристыкован к ардуине

Полный размер А вот шылд уже пристыкован к ардуине


Далее всё почти без проблем завелось. На базе сэмплов сбацал вот такой скетч:

#include <DallasTemperature.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 134 };
byte server[] = { 82, 138, 2, 107 }; // G0l.ru

Client client(server, 80); // подключаемся к серверу

DallasTemperature tempSensor;

void setup(void)
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
tempSensor.begin(7); //Вешаем Датчик на 7 порт
}

void loop(void)
{
switch(tempSensor.isValid())
{
case 1:
Serial.println("Invalid CRC");
tempSensor.reset(); // сбросить девайс
return;
case 2:
Serial.println("Invalid device");
tempSensor.reset(); // сбросить девайс
return;
}

// если подключены то отправляем данные о температуре
Serial.println(".");
if (client.connect()) {
Serial.println("sending info");
client.print("GET /address?password=pass&temp=");
client.print(tempSensor.getTemperature());
client.print(" HTTP/1.0");
client.println();
client.stop();
delay(1000);
}
if (!client.connected()) {
Serial.println("disconnecting.");
client.stop();
}
}


Всё просто. Ардуина каждую секунду передаёт на сервак сведения о температуре. А скриптик на PHP эту температуру показывает. Сейчас показывает только текущую температуру, надо будет ещё график изменения сделать.

Результат работы мона посмотреть вот тут. В IE8 у меня не заработало, а в браузерах - нормуль пашет. Кстати, информация коррелирует с яндексовой - мой градусник показывает +26 и на яндексе написано +26.

UPD> Между тем градусник уже научился отправлять СМС с указанием текущей температуры. Если температура превышает заданный порог - мне на мобилу уходит ругательная СМС. Правда, за удовольствие надо платить - отправка сделана на базе sms.ru Одно сообщение стоит 50 копеек, дешевле чем даже с мобилы отправлять.

UPD> Добавлено предварительное построение графика изменения температуры. Отладочная, пробная версия. Посмотреть можно вот тут: 12.08.2010, 13.08.2010, текущий день. Температурные пики объясняются тем что градусник часть дня на солнце лежит, прогревается сильно.
Копия в ЖЖ Gol      Среда, 11 Августа, 2010 02:58       35


Добавить комментарий
 

SysCat Среда, 11 Августа, 2010 08:47 цитировать ссылка на коммент

О, зергуд, только пайка все-же немного некрасивая получилась. А ссылки видел которые в аську кинул?

 

 

Error404 Среда, 11 Августа, 2010 17:51 цитировать ссылка на коммент

Было бы не плохо продлить идею. Создать небольшую програмку висящую в трее и показывающую температуру за бортом. MOSGOLWEATH Ну или на Голкарте показывать температуру конкретного места. Так как мы знаем, что в одном месте температура одна, а в другом другая. Готов проучаствовать в эксперементе и поместить ГОЛадусник дома. WiFi один фиг всё-время включен. :-)))

 

 

Gol Среда, 11 Августа, 2010 18:04 цитировать ссылка на коммент

"Как неэстетично! Зато дёшево, удобно и практично" :-) Пайка да, не особо, хотя есть и нормально припаяные контакты. Всё равно, получше некоторых заводских китайских схем :-)

 

 

Gol Среда, 11 Августа, 2010 18:05 цитировать ссылка на коммент

По поводу температуры на улице - а нафига? Этот градусник будет в серверной стоять, сейчас пока дома тестирую за окном.

 

 

Error404 Четверг, 12 Августа, 2010 10:16 цитировать ссылка на коммент

Тогда ясно применение. Простите, сразу не понял))

 

 

Gol Суббота, 14 Августа, 2010 03:14 цитировать ссылка на коммент

Железка уже СМС отправляет! (см. дописанное внизу заметки)

 

 

Gol Суббота, 14 Августа, 2010 04:25 цитировать ссылка на коммент

И график температуры уже есть, пробная версия.

 

 

SysCat Суббота, 14 Августа, 2010 14:35 цитировать ссылка на коммент

О зер гуд. Градусники в массы (т.е. в серверные) :) Пора свое дело открывать. И все же признайся ты больше программист... :)))

 

 

Gol Суббота, 14 Августа, 2010 15:06 цитировать ссылка на коммент

Нее, я хреновый программист. Правда, паяльщик из меня ещё хуже Мне интересно на стыке софта и железок.

 

 

Gol Суббота, 14 Августа, 2010 15:30 цитировать ссылка на коммент

Кстати, заказал ещё комплекты в Кемерово. Через пять рабочих дней обещают прислать.

 

 

SysCat Пятница, 24 Декабря, 2010 00:35 цитировать ссылка на коммент

Аааааа, они убили Кенни!!!

http://habrahabr.ru/blogs/arduino/110610/

Короче идею сперли

 

 

Gol Пятница, 24 Декабря, 2010 01:10 цитировать ссылка на коммент

Да это самая очевидная штука, так что немудрено что многие так и делают. Зато приятно - я в правильном направлении думал, раз ещё кто-то аналогично сделал :-) Я даж не думал что эта простейшая штука тянет на статью на Хабре.

 

 

Гость Пятница, 24 Декабря, 2010 01:17 цитировать ссылка на коммент

SysCat нет я не спёр))). Иначе обязательно бы указал на блог Gol. Только сейчас увидел. А первый Ethernet градусник я собрал ещё в начале лета. Просто долгое время не мог придумать в что бы завернуть датчик что бы его солнце не нагревало.

Сейчас просто довёл всё до ума.

Есть ещё идеи. У меня дома Интернет бывает пропадает. А показания терять жалко. Хочу прикрутить SD-флеш и писать во время когда проблемы со связью, а потом уже автоматом отсылать на сервер.

 

 

Гость Пятница, 24 Декабря, 2010 01:18 цитировать ссылка на коммент

Забыл подписаться. Костя Лидерман, автор той статьи на Хабре)

 

 

Gol Пятница, 24 Декабря, 2010 01:31 цитировать ссылка на коммент

Кость, привет :-) Да никто и не думал что ты спёр, идеи в воздухе летают. Даж приятно что я тоже правильно идею придумал. По поводу буфера на SD - можно и без SD обойтись, запоминай в памяти ардуины. Правда, её не особо много, но хоть SD не потребуется. Т.е. например пропал коннект - снижаешь частоту проверки температуры дабы память экономить.

 

 

Гость Пятница, 24 Декабря, 2010 01:39 цитировать ссылка на коммент

Привет) Да в память можно. Я думал об этом. Но уж очень память маленькая. И меня смутило что есть ограничения по циклам записи/чтения. Боюсь как бы не убить её так, частыми запясями.

А SD вроде подключить не сложно. Самый простой вариант видел, где были только резисторы. Для понижения напряжения до 3.3V. И всё. Но ещё не вникал.
На крайний случай, уже готовый модуль можно купить ~300 руб. что приемлемо.

 

 

Gol Пятница, 24 Декабря, 2010 01:42 цитировать ссылка на коммент

Стоп... Какие ограничения по циклам записи?? Я про оперативку Ардуины говорил. Разве там есть такие ограничения????

 

 

Гость Пятница, 24 Декабря, 2010 01:45 цитировать ссылка на коммент

Ещё по поводу коммента: http://habrahabr.ru/blogs/arduino/110610/#comment_3521301

Спасибо за совет с повторным client.print
По чемуто я до этого не допёр)))
А sprintf не корректно у меня с float отрабатывал. Вместо цифр знк вопроса.

 

 

Гость Пятница, 24 Декабря, 2010 01:47 цитировать ссылка на коммент

Аааа. Про оперативку. Тогда да, ограничений нет конечно)
Но она такая маленькая, а я хотел ещё датчик вдажности, давления, скорсти и направления ветра.

 

 

Gol Пятница, 24 Декабря, 2010 01:50 цитировать ссылка на коммент

Про ветер вот тут прикольно сделано idea2ru, dесли мышу взять PS/2 то её можно сразу к ардуине цеплять ибо прокол известен.

 

 

Гость Пятница, 24 Декабря, 2010 01:53 цитировать ссылка на коммент

Действительно, очень оригинально! Я делал на основе электродвигателя. Чем быстрее лопасти вращают ротер, тем большее напряжение бырабатывается за счёт индукции. Правда к Arduino ещё не подключал.

 

 

Gol Пятница, 24 Декабря, 2010 01:55 цитировать ссылка на коммент

Тож вариант, но получается аналоговый сигнал со всеми минусами. А с мыши цифра идёт :-)

 

 

Гость Пятница, 24 Декабря, 2010 07:52 цитировать ссылка на коммент

Вот сейчас ищу более точный датчик, но пока безуспешно. Более точные только аналоговые.

А Вы не находили более точных датчиков?

 

 

SysCat Пятница, 24 Декабря, 2010 09:41 цитировать ссылка на коммент

Лан, Костя, ты не волноваться :) пошутил я... Просто Серега тоже не только вчера прикрутил градусник, только он любитель онлайн сервиса и делал чтоб через веб было доступно. А вообще-то цифровой датчик наиболее точен чем аналоговые, т.к. для аналогового надо еще 0-е значение выставлять, а там как бог на душу положит. Ведь в аналоговом падение напряжение вроде на единицу градуса используется. А вот в иномарках стоят цифровые датчики, и согласно тест режиму просто делается корректировка на 1-1.5 градуса. А в Российской стоял аналоговый, если отключить питание летом то и в +30 у тебя может быть голлолед, из-за того что он текущее состояние при включении принимал за 0.

 

 

Гость Пятница, 24 Декабря, 2010 09:53 цитировать ссылка на коммент

Ну самые точные я нашёл только аналоговые: http://www.platan.ru/cgi-bin/qwery.pl/id=136856777&group=32404

Точность до 0.1, но т.к. изменение не линейное фиг поймёшь где 0, а где -5... Правда к некоторым идут таблицы соответствий.
Для себя я конечно решил использовать цифровой.

 

 

Гость Пятница, 1 Апреля, 2011 22:37 цитировать ссылка на коммент

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

 

 

Gol Пятница, 1 Апреля, 2011 22:42 цитировать ссылка на коммент

Маршрутизация наружу нужна шоп на сервак инфа о температуре отсылалась, независимо от компа, т.е. чтоб ардуина полностью автономна была.

 

 

Гость Пятница, 1 Апреля, 2011 23:06 цитировать ссылка на коммент

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

 

 

Гость Пятница, 1 Апреля, 2011 23:08 цитировать ссылка на коммент

но кстати что именно задатчик был - я тут только по коду могу догадываться)) crc, reset))

 

 

Гость Воскресенье, 17 Марта, 2013 14:30 цитировать ссылка на коммент

Добрый день, Сергей! Спасибо за такую полезную статью. Сам недавно начал осваивать ардуино в качестве хобби. Датчики работают, на дисплей вывел. Очень хочу прикрутить текущую температуру на сайт, но я не программист, и поэтому сложности. Не поможете?

 

 

Гость Суббота, 23 Марта, 2013 16:23 цитировать ссылка на коммент

Сергей присоединяюсь к предыдущей просьбе. Кстати код что выше его нужно а контроллер зашивать? И еще не могли бы вы подробнее описать как по смс температуру мониторите?

 

 

Gol Суббота, 23 Марта, 2013 16:26 цитировать ссылка на коммент

2 Гость:
Уфф, из меня фиговый обучатор, скажем так. Я хз как доходчиво что-то объяснять, не умею. По смс мониторил через сторонний сервис (рекламировать не буду ибо он меня достал уже рекламными смсками на мобилу, гад такой). Код да, заливается в ардуину через родную ардуиновскую IDE. Этот код уж устарел раз десять, ща у меня уже всё по-другому, но суть та же.

 

 

Гость Суббота, 23 Марта, 2013 16:40 цитировать ссылка на коммент

Понял спасибо. Но мне нужно смс отправлять из сети без доступа к Интернету. Через GSM модуль. Может что посоветуете?

 

 

Gol Суббота, 23 Марта, 2013 16:45 цитировать ссылка на коммент

2 Гость:
Яндекс выдаёт сразу же http://wiki.amperka.ru/беспроводная-связь:gprs-shield, как раз вроде то что нужно. Нужен обычный GSM шылд для ардуины и, собссно, всё.

 

 

Гость Суббота, 23 Марта, 2013 17:23 цитировать ссылка на коммент

Спаибо

 

Сколько букв в слове Гол?

Вы вошли как Гость      

Сейчас на сайте: 0
и 7 гостей









Страница сгенерирована за 0.0039150714874268 мкс

cached