robinbobin (
robinbobin) wrote2016-11-24 01:31 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
я умный как дом
Ардуино спасает мир, а меня от холода.
это маленький шаг для человечества и огромный скачок напряжения.
вот замутил умное реле для печки, без единого гвоздя, с помощью циркуля и линейки.
задача. винтер из каминг, т.е. уже холодно.
у меня есть маленькая печка, как зверь.
работает быстро мощно
за 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
}
это маленький шаг для человечества и огромный скачок напряжения.
вот замутил умное реле для печки, без единого гвоздя, с помощью циркуля и линейки.
задача. винтер из каминг, т.е. уже холодно.
у меня есть маленькая печка, как зверь.
работает быстро мощно
за 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
}
no subject
а если питать через черное гнездо, то какое напряжение нужно подавать?
на сайте пишут
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
это правда?
и какая полярность? плюс центральный?
no subject
на черное не пробовал, но каком-то видео недавно смотрел, что надо не меньше 7, иначе нестабильно логика работает
no subject
проще наверное на базе таймера, а не детектора движения что-то усовершенствовать
для несбивающегося таймера вроде модули расширения есть
типа если на ebay поискать на слова
Small DS3231 AT24C32 IIC Modul Precision Real Time Clock Module For Arduino
no subject
что можно придумать кроме SD карт
ebay. com/itm/Mini-SD-Card-Module-Memory-Module-Micro-SD-Card-Module-for-Arduino-AVR-ARM-/141976885465
такая штука кстати совместима с UNO ?
есть еще подобные для большеразмерной SD карты
но там 2 рядя пинов
куда втыкать не понятно
no subject
https://www.arduino.cc/en/Reference/PROGMEM
no subject
я не очень понял. Это 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
no subject
Тогда по вайфай на сервер
no subject
http://robocraft.ru/blog/arduino/82.html
no subject
http://chipenable.ru/index.php/programming-avr/item/174-test-eeprom-pamyati-avr-mikrokontrollera-eksperiment.html
no subject
только очень уж заломало ждать пока модуль прийдет из китая
поэтому сделал вот так
blog.erikdebruijn. nl/uploads/RepRap/schematicuo7. jpg
работает
no subject
no subject
no subject
no subject
Экономия и не выжигание кислорода
Она когда долго шпарит реально воздух меняет
no subject
no subject
я их не любдю
печка-зверь в этом смысле
no subject
no subject
зато не воняет.
моментально прогревает.
радиатору и не снилось.
а дверь на пару минут оставил открытой, все тепло вышло.
кондиционер у меня меркази в салоне, в котором никто не бывает всю неделю. и отапливать огромный салон, чтобы додуло до моей комнаты
это 800-1000 шек в месяц/2.
no subject
и как по комнате хожу
no subject
no subject
но когда воркаешь с лаптопом или телефоном, то ноги иногда дергаются, допустим озяб, и оно это детектед и вкл печку.
нормально.
я бы сказал ахуэнно.
и когда сижу за компом, он детектед и нажатия по клавише.
мало того,
хочу в него впендюрить wifi
и написать "кеylogger", нажал на клавишу на винде, идет get на ардуинку keepalive.
и печку можно включать
no subject
no subject
я хочу чтобы, если я не в комнате или сплю, печка не включалась
no subject
no subject
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 важно.
no subject
no subject
уже достаточно круто работает.
апетит приходит, чтобы еще круче.
надо wifi прикрутить, чтобы слать все телодвижения на сервер.
а он уже пусть определяет пожелания трудящихся
и шлет результаты на ардуно
в виде, че и как и ваще
пусть дом станет умным, самообучающимся