Жалюзи на Ардуино
Жалюзи на Ардуино
Управление жалюзями на Ардуино через ИК пульт
Шаговый драйвер
Ардуино (я использовал Nano)
Очередная моя задача это сделать умные жалюзи. Вообще в планах сделать автаномные жалюзи. Но это чуть позже.
Приобрёл самую дешевую и простую жалюзи. По принципу действия они все одинаковы. Имеют функцию подниматься и опускаться. А также закрываться и открываться.
Удалил ненужные детали. Это свой редуктор для изменения угла открытия жалюзи.
Установил шаговый двигатель чтобы оси совпадали. И жестко закрепил
Вот что получилось.
Схема подключения ардуино:
Скэтч:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
// Автор неизвестен // Изменения Гильманов ленар // http://mikrotok.ru // https://www.youtube.com/channel/UCzxHow9XAHPME_6KfzbILFg #include "Stepper.h" #include "IRremote.h" /*----- Variables, Pins -----*/ #define STEPS 28 // Количество шагов на оборот внутреннего вала int Steps2Take; // 2048 = 1 оборот int receiver = 6; // Подключение ИК датчика на 6 пин /*-----( Declare objects )-----*/ // Setup of proper sequencing for Motor Driver Pins // In1, In2, In3, In4 in the sequence 1-3-2-4 Stepper small_stepper(STEPS, 8, 9, 10, 11); IRrecv irrecv(receiver); // create instance of 'irrecv' decode_results results; // create instance of 'decode_results' void setup() { irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) // have we received an IR signal? { switch(results.value) { case 0xA56113EC: // UP button pressed small_stepper.setSpeed(700); //Максимум 700 Steps2Take = 512; // Rotate CW small_stepper.step(Steps2Take); delay(1000); break; case 0xA56109F6: // DOWN button pressed small_stepper.setSpeed(700); Steps2Take = -512; // Rotate CCW small_stepper.step(Steps2Take); delay(1000); break; case 0xA561639C: // UP button pressed small_stepper.setSpeed(700); Steps2Take = 1024; // Rotate CCW small_stepper.step(Steps2Take); delay(1000); break; case 0xA561A35C: // DOWN button pressed small_stepper.setSpeed(700); Steps2Take = -1024; // Rotate CCW small_stepper.step(Steps2Take); delay(1000); break; } irrecv.resume(); // receive the next value } }/* --end main loop -- */ |
Вариант с солнечной панелью.
Последующем скэтч переделал и упростил. Установил солнечьную панель на 5 вольт управление на ардуино.
Что получилось? Когда на улице солнечно жалюзи автоматически открываются чтобы свет падал в дом или в офис. А когда темнеет жалюзи закрываются чтобы была возможность ходить дома в одних трусах.
Также вместо шагового двигателя установил обычную сервомашинку. Я расчитал, чтобы жалюзи были закрыты и когда свет начинает попадать на панель жалюзи открываются на полную.
Эта солнечная панелька от фонарика. При полной мощности выдает 5 вольт. Я его засунул на аналоговый пин. Солнечный свет и солнечная панель играет роль подстроечного резистора. И соответственно меняет угол сервомашинки.
Как видите скэтч автономного жалюзи получилось очень простеньким
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = 0; // вход 5 вольтовой солнечной панели панели int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { val = analogRead(potpin); // Аналоговое значение переносим на сервопривод (value between 0 and 1023) val = map(val, 0, 1023, 180, 0); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(150); // waits for the servo to get there } |
Не забываем делиться с друзьями и обсуждать тему (:
2,592 просмотров всего, 6 просмотров сегодня