robinbobin ([personal profile] robinbobin) wrote2016-11-24 01:31 pm

я умный как дом

Ардуино спасает мир, а меня от холода.

это маленький шаг для человечества и огромный скачок напряжения.

вот замутил умное реле для печки, без единого гвоздя, с помощью циркуля и линейки.

задача. винтер из каминг, т.е. уже холодно.

у меня есть маленькая печка, как зверь.

работает быстро мощно
за 5 минут в комнате тепло и не сыро.

но тупо.
ейный терморегулятор ни хера не делает.

а тут ардуино и 21 век на дворе.

вот что вышло



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

тем не менее работает.

вот что в мониторе


работает просто.

ардуино меряет т-ру датчиком, и если упала < заданной,
включает релюшкой розетку, в которую воткнута зверь-печка.

щас день и оно ее не включает.

а утром, когда дебажил, периодически да.

где-то за полтора часа, минут 10 было включенным.

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

+ еще надо добавить датчик motion detection шобы если меня нет, или я сплю не включал

+ wifi, чтобы на сервер кидал инфу, и для настроек.

и много еще чего.

но я уже довольный.

и теплый как слон



#define MIN_TEMP 21
#define DELAY 5 // rele rabotaet na sec

#define RELAY_PIN 6
#define DHT_PIN 7 // what digital pin we're connected to

// TERMOMETR
#include "DHT.h"

#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHT_PIN, DHTTYPE);

unsigned int WasOn = 0;


void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("DHT & Relay!");

// init termometr
dht.begin();
WasOn = 0;

// init relay
pinMode(RELAY_PIN, OUTPUT);
//digitalWrite(RELAY_PIN, LOW); // turn the Relay on (HIGH is the voltage level)
delay(5 * 1000);

}

void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

unsigned long mls = millis();
String tmp;


Serial.print("\nTemperature: ");
Serial.print(t);

Serial.print("\tHum: ");
Serial.print(h);

Serial.print("\tMills: ");
tmp = Sec2HMS(mls/1000);
Serial.print(tmp);

//Serial.print(mls);
Serial.print("\tWasOn: ");
//tmp = ;

Serial.println(Sec2HMS(WasOn));



if (t < MIN_TEMP) {
TurnOnRelay(DELAY);
} else {
TurnOffRelay(DELAY);
}

}

String Sec2HMS(int sec){
String out = "";
int hours = sec / 3600;
int minutes = sec / 60 %60;
int ss = sec % 60;

out += hours;
out += ":";
out += minutes;
out += ":";
out += ss;
//out += " ss end ";

return out;
}

void TurnOnRelay(int sec) {
Serial.print("Turn ON relay for seconds ");
Serial.println(sec);

digitalWrite(RELAY_PIN, HIGH); // turn the LED off by making the voltage LOW
delay(sec * 1000); // wait for a second

WasOn = WasOn + sec;
}

void TurnOffRelay(int sec) {
Serial.print("Turn OFF relay for seconds ");
Serial.println(sec);

digitalWrite(RELAY_PIN, LOW); // turn the LED off by making the voltage LOW
delay(sec * 1000); // wait for a second

}

[identity profile] ahtoh tapacob (from livejournal.com) 2016-11-24 09:23 pm (UTC)(link)
питаете через USB?
а если питать через черное гнездо, то какое напряжение нужно подавать?


на сайте пишут
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V

это правда?

и какая полярность? плюс центральный?

[identity profile] robinbobin.livejournal.com 2016-11-24 09:27 pm (UTC)(link)
да, через USB

на черное не пробовал, но каком-то видео недавно смотрел, что надо не меньше 7, иначе нестабильно логика работает

[identity profile] ahtoh tapacob (from livejournal.com) 2016-11-25 04:57 am (UTC)(link)


проще наверное на базе таймера, а не детектора движения что-то усовершенствовать
для несбивающегося таймера вроде модули расширения есть
типа если на ebay поискать на слова
Small DS3231 AT24C32 IIC Modul Precision Real Time Clock Module For Arduino

[identity profile] ahtoh tapacob (from livejournal.com) 2016-11-25 05:05 am (UTC)(link)
меня кстати интересует возможность писать данные в какую-нибудь постоянную память
что можно придумать кроме SD карт
ebay. com/itm/Mini-SD-Card-Module-Memory-Module-Micro-SD-Card-Module-for-Arduino-AVR-ARM-/141976885465
такая штука кстати совместима с UNO ?

есть еще подобные для большеразмерной SD карты
но там 2 рядя пинов
куда втыкать не понятно

[identity profile] ahtoh tapacob (from livejournal.com) 2016-11-25 03:18 pm (UTC)(link)
спасибо
я не очень понял. Это read-only данные, которые можно записать только на этапе прожига скетча на флеш? мне как раз надо записывать по результатам работы программы.



Note: Flash (PROGMEM) memory can only be populated at program burn time. You can’t change the values in the flash after the program has started running.

отсюда

playground.arduino. cc/Learning/Memory

[identity profile] robinbobin.livejournal.com 2016-11-25 10:03 pm (UTC)(link)
Блин.

Тогда по вайфай на сервер

[identity profile] ahtoh tapacob (from livejournal.com) 2016-11-26 03:59 am (UTC)(link)
в итоге решил таки делать с SD картой
только очень уж заломало ждать пока модуль прийдет из китая
поэтому сделал вот так
blog.erikdebruijn. nl/uploads/RepRap/schematicuo7. jpg
работает

[identity profile] robinbobin.livejournal.com 2016-11-26 05:31 am (UTC)(link)
круто!

[identity profile] ahtoh tapacob (from livejournal.com) 2016-11-25 05:46 am (UTC)(link)
кстати, а можите дать ссылку на к-л датчик движения или присутствия совместимый с ардуино

[identity profile] dimorlus.livejournal.com 2016-11-25 03:40 pm (UTC)(link)
Китайцы продают кучу готовых PIR датчиков с линзой и электроникой, правда зачем оно печке - не очень понятно, их для света, главным образом используют.

[identity profile] robinbobin.livejournal.com 2016-11-25 10:01 pm (UTC)(link)
Чтобы если меня нет или сплю печку не включать

Экономия и не выжигание кислорода

Она когда долго шпарит реально воздух меняет

[identity profile] dimorlus.livejournal.com 2016-11-25 11:28 pm (UTC)(link)
Для PIR сенсора мало быть, надо довольно активно двигаться, он изменение тепловой картинки видит в определенном диапазоне частот. Его и создает многосекторная линза из линейного движения источника инфракрасного излучения. У этой линзы диаграма направленности похожа на рожки морской мины, когда их пересекает объект, на выходе датчика получается сигнал в нужной полосе частот. Если просто сидишь или лежишь он не покажет ничего. Ну и масляный радиатор ничего не выжигает, на тех, которые раскаленные до красна выгорает попавшая пыль, и воняет.

[identity profile] robinbobin.livejournal.com 2016-11-26 12:12 am (UTC)(link)
не у меня не радиатор.
я их не любдю

печка-зверь в этом смысле

[identity profile] dimorlus.livejournal.com 2016-11-26 09:53 am (UTC)(link)
А, это тепловентилятор... Это да, шумит, дует и воняет, и радикально проигрывает кондиционеру (где регулятор температуры уже есть) по энергопотреблению. Масляный радиатор работает тихо (с электронным регулятором даже не клацает), без ветра и вони, если холодно, я им греюсь.

[identity profile] robinbobin.livejournal.com 2016-11-26 11:30 am (UTC)(link)
у этого тоже есть, тролько нихера не работает. он у меня не первый такой.

зато не воняет.

моментально прогревает.

радиатору и не снилось.
а дверь на пару минут оставил открытой, все тепло вышло.

кондиционер у меня меркази в салоне, в котором никто не бывает всю неделю. и отапливать огромный салон, чтобы додуло до моей комнаты
это 800-1000 шек в месяц/2.

[identity profile] robinbobin.livejournal.com 2016-11-26 12:20 am (UTC)(link)
пока видит, и как я на клаве стучу,
и как по комнате хожу

[identity profile] dimorlus.livejournal.com 2016-11-26 09:54 am (UTC)(link)
Как по комнате хожу я, или кошка - видит. А как сижу или лежу с клавой - нет.

[identity profile] robinbobin.livejournal.com 2016-11-26 11:34 am (UTC)(link)
лежа зависит от угла, я всю ночь тестировал.

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

нормально.
я бы сказал ахуэнно.

и когда сижу за компом, он детектед и нажатия по клавише.

мало того,

хочу в него впендюрить wifi
и написать "кеylogger", нажал на клавишу на винде, идет get на ардуинку keepalive.
и печку можно включать

[identity profile] dimorlus.livejournal.com 2016-11-25 11:41 pm (UTC)(link)
И еще, если датчик температуры далеко от печки, сделать какой-то осмысленный регулятор не получится скорее всего, это не тривиальная задача из-за большой и постоянно, с каждым движением воздуха меняющейся задержки между включением нагрева и реакцией на него. Лучше всего мерить температуру самого радиатора и ее и регулировать. Можно поставить внешний датчик, и определить какую-то зависимость на какую температуру настраивать нагреватель в зависимости от текущей температуры в комнате.
Edited 2016-11-25 23:42 (UTC)

[identity profile] robinbobin.livejournal.com 2016-11-26 12:19 am (UTC)(link)
вроде получается.

я хочу чтобы, если я не в комнате или сплю, печка не включалась

[identity profile] dimorlus.livejournal.com 2016-11-26 10:07 am (UTC)(link)
Вообще, китайцы готовые терморегуляторы (http://www.banggood.com/100-240V-40A-Digital-PID-Temperature-Controller-SSR-K-Thermocouple-Sensor-p-1060462.html) продают, и < a href="http://www.banggood.com/search/pir-sensor-switch.html">PIR выключатели тоже. А для WiFi есть ESP8266, его, кстати, тоже можно из Arduino IDE программировать, правда я предпочитаю нативные средства (уж очень этот Arduino страшный внутри). Но документация у этого ужасная.

[identity profile] robinbobin.livejournal.com 2016-11-26 11:40 am (UTC)(link)
я случайно купил такую штуку
https://www.aliexpress.com/item/ESP8266-serial-WIFI-Witty-cloud-Development-Board-ESP-12F-module-MINI-nodemcu/32647542572.html?ws_ab_test=searchweb0_0,searchweb201602_1_116_10065_117_10068_114_115_113_10000007_10084_10083_10080_10082_10081_10060_10061_10062_10056_10055_10037_10054_10059_10032_10099_10078_10079_10077_10073_10097_10100_10096_10070_423_10052_10050_424_10051,searchweb201603_2&btsid=2a9a18da-5db4-437d-9a8c-e1b3767969dd

ахуенчик двухэтажный.
WIFI с ардуиной, как я понял.
легко программируется
в 3 раза меньше уно.

вот думаю, перенести этот проэкт на него.

он и интерапты, вроде поддерживает. это для motion важно.

[identity profile] dimorlus.livejournal.com 2016-11-26 04:44 pm (UTC)(link)
Ну да, можно и такой. С интерраптами там как-то странно, впрочем они на фиг не нужны, PIR можно просто опрашивать. А так, там есть вход ADC, можно повесить датчик, есть PWM и просто GPIO, внутри готовый IP стек, просто подключиться к WiFi и слать на указанный IP дату - легко. К Ардуино оно просто подключается и работает, но есть и нативные средства изначально под Линукс, но и под Винду порт тоже есть. Вообще для таких задач придумали протокол mqtt, я собираюсь попробовать в этом разобраться.

[identity profile] robinbobin.livejournal.com 2016-11-26 11:37 am (UTC)(link)
да не,

уже достаточно круто работает.

апетит приходит, чтобы еще круче.

надо wifi прикрутить, чтобы слать все телодвижения на сервер.

а он уже пусть определяет пожелания трудящихся
и шлет результаты на ардуно

в виде, че и как и ваще

пусть дом станет умным, самообучающимся