Любой на 12 вольт. Но лучше по мощнее, зависит еще от тяжести штор) у меня на 600 Ватт, но от него еще много всего питается. Ватт 50 хватитI_I_Imonder писал(а):какой блок питания подходит к мотору?
Умная квартира (видео)
Модератор: immortal
-
- Сообщения: 42
- Зарегистрирован: Пн авг 26, 2013 11:34 am
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Умная квартира (видео)
-
- Сообщения: 42
- Зарегистрирован: Пн авг 26, 2013 11:34 am
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Умная квартира (видео)
Рад, что мои идеи стали полезны )shemnik69 писал(а):Коллега! Спасибо за идеи!... молодец. Особенно на счет идеи привода штор...
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Умная квартира (видео)
Спасибо! Отличный вариант, возьму на вооружение. Эти стекло-подъёмники вещь в хозяйстве полезная -- у меня на них большие планыЕвгений писал(а):Вот примерный чертеж и схема крепления.
Точных размеров к сожалению нет, всё делалось на глаз. Диаметр катушки 40 мм. Прорезь для нити около 10 мм глубиной, но лучше сделать немного побольше. Но если сделать слишком большую, а то в крайних положениях натяжение нити будет слабое, а в середине слишком сильное.
Из мотора выходит квадрат - сверлим в нем отверстие и нарезаем резьбу на м4.
В катушке тоже делаем квадрат под размер моторного.
Одеваем катушку на квадрат и прикручиваем болтом - не оторвать)
Кстати насчёт питания -- к сожалению, источник на самом деле должен быть довольно мощным, мне для своего подъёмника пришлось использовать два блока питания -- один для контроллера, один для двигателя, потому что блок питания для двигателя не очень мощный и хоть двигатель крутит, но выходное напряжение проседает так, что контроллер сбрасывается. Как вариант, видел решение с аккумулятором небольшим -- не сильно мощный блок питания его заряжает, а для нечастых циклов работы хватает ёмкости уже аккумулятора.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 42
- Зарегистрирован: Пн авг 26, 2013 11:34 am
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Умная квартира (видео)
Это точно, у меня помимо штор они двигают лифт с проектором и экран)sergejey писал(а):Эти стекло-подъёмники вещь в хозяйстве полезная -- у меня на них большие планы
Спасибо за идею с питанием. Кажется понял, почему у меня в одном из проектов Ардуина глючит...
-
- Сообщения: 256
- Зарегистрирован: Сб янв 11, 2014 2:54 pm
- Благодарил (а): 12 раз
- Поблагодарили: 14 раз
Re: Умная квартира (видео)
как думаете подойдет вот этот контролер z-wave ZMR_FMBL для управления мотором?
-
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
- Благодарил (а): 49 раз
- Поблагодарили: 327 раз
Re: Умная квартира (видео)
Ну он для того и нужен. Моторы до 1800 Вт. Та есть подключение на 220 и другое питание (Скорей всего стоит реле)I_I_Imonder писал(а):как думаете подойдет вот этот контролер z-wave ZMR_FMBL для управления мотором?
Тока будте осторожны. У меня димер прилично греется даже в выключенном состоянии (Думаю из-за импульсного блока питания на 220)
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
-
- Сообщения: 42
- Зарегистрирован: Пн авг 26, 2013 11:34 am
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Умная квартира (видео)
pdmitry2 писал(а):Отлично! А скетч, можете выложить?
Код: Выделить всё
#include <SPI.h>
#include <Ethernet.h>
String command;
boolean RS5on = 0; //Для включения реле 5
boolean incoming = 0;
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(192,168,1,11);
byte remote_ip[] = {192,168,1,10};
EthernetServer server(80);
//Переменные и порты для карнизов
int RELE_1_o = 53;
int RELE_1_z = 39;
int RELE_2_o = 37; //51 был
int RELE_2_z = 49;
int Gerkon_1_o = 47;
int Gerkon_1_z = 45;
int Gerkon_2_o = 43;
int Gerkon_2_z = 41;
boolean sRele_1_o = false;
boolean sRele_1_z = false;
boolean sRele_2_o = false;
boolean sRele_2_z = false;
int ON = 0;
int OFF = 1;
//Для РелеШилд
int RS1 = 22;
int RS2 = 24;
int RS3 = 26;
int RS4 = 28;
int RS5 = 30;
int RS6 = 32;
int RS7 = 34;
int RS8 = 36;
//Для секундной задержки
long interval = 1000;
long MillisR1 = 0;
long MillisR2 = 0;
long MillisR3 = 0;
long MillisR4 = 0;
long MillisR5 = 0;
long MillisR6 = 0;
long MillisR7 = 0;
long MillisR8 = 0;
//Функции
void sendGet(String text) {
EthernetClient client = server.available();
if (client.connect(remote_ip, 80)) {
Serial.println("connected. Send GET");
// отправка GET
client.print("GET ");
client.print(text);
client.print(""); // защитный код
client.println(" HTTP/1.1");
client.println("Host: localhost"); // почему то без этой строки сервер игнорит
client.println("Connection: close");
client.println();
// рвем соединение
client.stop();
}
else {
// почему то не удалось подключиться к серверу
Serial.println("connection failed");
}
}
void setup()
{
// запускаем Ethernet соединение и сервер:
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
//Для карнизов
pinMode(RELE_1_o, OUTPUT);
pinMode(RELE_1_z, OUTPUT);
pinMode(RELE_2_o, OUTPUT);
pinMode(RELE_2_z, OUTPUT);
digitalWrite(RELE_1_o, OFF);
digitalWrite(RELE_1_z, OFF);
digitalWrite(RELE_2_o, OFF);
digitalWrite(RELE_2_z, OFF);
pinMode(Gerkon_1_o, INPUT);
pinMode(Gerkon_1_z, INPUT);
pinMode(Gerkon_2_o, INPUT);
pinMode(Gerkon_2_z, INPUT);
//Для РелеШилд
pinMode(RS1, OUTPUT);
pinMode(RS2, OUTPUT);
pinMode(RS3, OUTPUT);
pinMode(RS4, OUTPUT);
pinMode(RS5, OUTPUT);
pinMode(RS6, OUTPUT);
pinMode(RS7, OUTPUT);
pinMode(RS8, OUTPUT);
digitalWrite(RS1, OFF);
digitalWrite(RS2, OFF);
digitalWrite(RS3, OFF);
digitalWrite(RS4, OFF);
digitalWrite(RS5, OFF);
digitalWrite(RS6, OFF);
digitalWrite(RS7, OFF);
digitalWrite(RS8, OFF);
}
void openWindows()
{
if (digitalRead(Gerkon_1_o) == HIGH) {
digitalWrite(RELE_1_o, ON);
sRele_1_o = true;
}
if (digitalRead(Gerkon_2_o) == HIGH) {
digitalWrite(RELE_2_o, ON);
sRele_2_o = true;
}
}
void closeWindows()
{
if (digitalRead(Gerkon_1_z) == HIGH) {
digitalWrite(RELE_1_z, ON);
sRele_1_z = true;
}
if (digitalRead(Gerkon_2_z) == HIGH) {
digitalWrite(RELE_2_z, ON);
sRele_2_z = true;
}
}
void loop()
{
// ожидание подключения клиентов
EthernetClient client = server.available();
if (client) {
// Запрос HTTP заканчивается пустой строкой
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// считываем URL с символа "$" до первого пробела
if(incoming && c == ' '){
incoming = 0;
}
if(c == '$'){
incoming = 1;
}
// Определяем что было в URL
if(incoming == 1){
Serial.println(c);
if(c == 'o'){
command = "open";
}
if(c == 'z'){
command = "close";
}
if(c == '1'){
command = "r1";
}
if(c == '2'){
command = "r2";
}
if(c == '3'){
command = "r3";
}
if(c == '4'){
command = "r4";
}
if(c == '5'){
command = "r5";
}
if(c == '6'){
command = "r6";
}
if(c == '7'){
command = "r7";
}
if(c == '8'){
command = "r8";
}
if(c == 'a'){
command = "vkl";
}
if(c == 'b'){
command = "vykl";
}
}
if (c == '\n') {
// началась новая строка
//Serial.println("Nachalas novaya stroka");
currentLineIsBlank = true;
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<html><head><title>Arduino</title></head><body>");
client.println("</body><html>");
break;
}
else if (c != '\r') {
// в текущей строке ещё есть символы
//Serial.println("V tekuschey stroke ect esche simvoly");
currentLineIsBlank = false;
}
}
}
// даём время браузеру для получения данных
delay(1);
// закрываем соединение
Serial.println("Client STOP");
client.stop();
}
if (command == "open") {
command = "";
openWindows();
}
if (command == "close") {
command = "";
closeWindows();
}
if (command == "r1") {
command = "";
MillisR1 = millis();
digitalWrite(RS1, ON);
}
if (command == "r2") {
command = "";
MillisR2 = millis();
digitalWrite(RS2, ON);
}
if (command == "r3") {
command = "";
MillisR3 = millis();
digitalWrite(RS3, ON);
}
if (command == "r4") {
command = "";
MillisR4 = millis();
digitalWrite(RS4, ON);
}
if (command == "r5") {
command = "";
MillisR5 = millis();
digitalWrite(RS5, ON);
}
if (command == "r6") {
command = "";
MillisR6 = millis();
digitalWrite(RS6, ON);
}
if (command == "r7") {
command = "";
MillisR7 = millis();
digitalWrite(RS7, ON);
}
if (command == "r8") {
command = "";
MillisR8 = millis();
digitalWrite(RS8, ON);
}
if (command == "vkl") {
command = "";
RS5on = 1;
digitalWrite(RS5, ON);
}
if (command == "vykl") {
command = "";
RS5on = 0;
digitalWrite(RS5, OFF);
}
//Выключаем реле, если прошла секунда
unsigned long currentMillis = millis();
if(currentMillis - MillisR1 > interval) {
MillisR1 = 0;
digitalWrite(RS1, OFF);
}
if(currentMillis - MillisR2 > interval) {
MillisR2 = 0;
digitalWrite(RS2, OFF);
}
if(currentMillis - MillisR3 > interval) {
MillisR3 = 0;
digitalWrite(RS3, OFF);
}
if(currentMillis - MillisR4 > interval) {
MillisR4 = 0;
digitalWrite(RS4, OFF);
}
if(currentMillis - MillisR5 > interval) {
MillisR5 = 0;
if (RS5on == 0) {
digitalWrite(RS5, OFF);
}
}
if(currentMillis - MillisR6 > interval) {
MillisR6 = 0;
digitalWrite(RS6, OFF);
}
if(currentMillis - MillisR7 > interval) {
MillisR7 = 0;
digitalWrite(RS7, OFF);
}
if(currentMillis - MillisR8 > interval) {
MillisR8 = 0;
digitalWrite(RS8, OFF);
}
//Остановка моторов карнизов при сработке герконов
if (digitalRead(Gerkon_1_o) == LOW && sRele_1_o == true) {
digitalWrite(RELE_1_o, OFF);
sRele_1_o = false;
if (sRele_2_o == false) {
sendGet("/objects/?script=ShadesOpen");
}
}
if (digitalRead(Gerkon_2_o) == LOW && sRele_2_o == true) {
digitalWrite(RELE_2_o, OFF);
sRele_2_o = false;
if (sRele_1_o == false) {
sendGet("/objects/?script=ShadesOpen");
}
}
if (digitalRead(Gerkon_1_z) == LOW && sRele_1_z == true) {
digitalWrite(RELE_1_z, OFF);
sRele_1_z = false;
if (sRele_2_z == false) {
sendGet("/objects/?script=ShadesClose");
}
}
if (digitalRead(Gerkon_2_z) == LOW && sRele_2_z == true) {
digitalWrite(RELE_2_z, OFF);
sRele_2_z = false;
if (sRele_1_z == false) {
sendGet("/objects/?script=ShadesClose");
}
}
}
-
- Сообщения: 42
- Зарегистрирован: Пн авг 26, 2013 11:34 am
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Умная квартира (видео)
на сколько я понял он на 220в, а мотор на 12. Но подойдет любое беспроводное реле. Схему как обещал нарисую в ближайшее времяI_I_Imonder писал(а):как думаете подойдет вот этот контролер z-wave ZMR_FMBL для управления мотором?
-
- Сообщения: 42
- Зарегистрирован: Пн авг 26, 2013 11:34 am
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Умная квартира (видео)
Вот первый вариант скетча. Только шторы. Управлялся через serial. Отправляем в сериал символ o - открывает. Отправляем z - закрывает
Код: Выделить всё
int RELE_1_o = 53;
int RELE_1_z = 39;
int RELE_2_o = 37; //51 был
int RELE_2_z = 49;
int Gerkon_1_o = 47;
int Gerkon_1_z = 45;
int Gerkon_2_o = 43;
int Gerkon_2_z = 41;
boolean sRele_1_o = false;
boolean sRele_1_z = false;
boolean sRele_2_o = false;
boolean sRele_2_z = false;
int ON = 0;
int OFF = 1;
char serialread;
void setup() {
pinMode(RELE_1_o, OUTPUT);
pinMode(RELE_1_z, OUTPUT);
pinMode(RELE_2_o, OUTPUT);
pinMode(RELE_2_z, OUTPUT);
digitalWrite(RELE_1_o, OFF);
digitalWrite(RELE_1_z, OFF);
digitalWrite(RELE_2_o, OFF);
digitalWrite(RELE_2_z, OFF);
pinMode(Gerkon_1_o, INPUT);
pinMode(Gerkon_1_z, INPUT);
pinMode(Gerkon_2_o, INPUT);
pinMode(Gerkon_2_z, INPUT);
Serial.begin(9600);
}
void openWindows()
{
if (digitalRead(Gerkon_1_o) == HIGH) {
digitalWrite(RELE_1_o, ON);
sRele_1_o = true;
}
if (digitalRead(Gerkon_2_o) == HIGH) {
digitalWrite(RELE_2_o, ON);
sRele_2_o = true;
}
}
void closeWindows()
{
if (digitalRead(Gerkon_1_z) == HIGH) {
digitalWrite(RELE_1_z, ON);
sRele_1_z = true;
}
if (digitalRead(Gerkon_2_z) == HIGH) {
digitalWrite(RELE_2_z, ON);
sRele_2_z = true;
}
}
void loop()
{
if (Serial.available() > 0)
{
serialread=Serial.read();
if(serialread=='o'){
serialread='0';
openWindows();
}
if(serialread=='z'){
serialread='0';
closeWindows();
}
}
if (digitalRead(Gerkon_1_o) == LOW && sRele_1_o == true) {
digitalWrite(RELE_1_o, OFF);
sRele_1_o = false;
if (sRele_2_o == false) {
Serial.println("Shtory otkyty");
}
}
if (digitalRead(Gerkon_2_o) == LOW && sRele_2_o == true) {
digitalWrite(RELE_2_o, OFF);
sRele_2_o = false;
if (sRele_1_o == false) {
Serial.println("Shtory otkyty");
}
}
if (digitalRead(Gerkon_1_z) == LOW && sRele_1_z == true) {
digitalWrite(RELE_1_z, OFF);
sRele_1_z = false;
if (sRele_2_z == false) {
Serial.println("Shtory zakryty");
}
}
if (digitalRead(Gerkon_2_z) == LOW && sRele_2_z == true) {
digitalWrite(RELE_2_z, OFF);
sRele_2_z = false;
if (sRele_1_z == false) {
Serial.println("Shtory zakryty");
}
}
}