Умный беспроводной выключатель света: Arduino-контроллер для удаленного управления
Компоненты и материалы
- Arduino UNO — 2 шт. (один для пульта, один для исполнительного механизма)
- Сервопривод Tower Pro MG996R — 1 шт.
- Модуль 433 МГц передатчик/приемник — 1 комплект
Необходимые инструменты и станки
- 3D-принтер
Программное обеспечение и онлайн-сервисы
- Arduino IDE
О проекте
Идея
Автор не любит вставать, когда уже ложится спать. Иногда хочется почитать перед сном, не вставая за выключателем. Также устройство полезно:
- Детям, не доходящим до выключателя
- Людям с ограниченной подвижностью
Проект
Основа — связь по 433 МГц между двумя Arduino. Если код работает нестабильно, подстройте пороги в Slave_servo.ino:
const unsigned int upperThreshold = 70;
const unsigned int lowerThreshold = 50;
- Master_Remote.ino — на Arduino с передатчиком (пульт)
- Slave_Servo.ino — на Arduino с приемником и сервоприводом
Подключение
Схема простая: кнопка на стороне передатчика, сервопривод на стороне приемника. Подробности на фото и в разделе «Схемы».

Настенное крепление
Для крепления сервопривода к выключателю нужен 3D-принтер. Модель в OpenSCAD (файл mhacks_lightswitchv4.stl) — можно подправить положение отверстия. Крепится на командо-ленты (command strips) или суперклеем (не рекомендуется).
Итоговый проект
Устройство представлено на онлайн-хакатоне Mhacks. Для постоянной установки можно напечатать корпус для Arduino и закрепить всё на командо-лентах.
Перспективы развития
- Замена двух Arduino на одну плату на базе ESP8266 (Wi-Fi)
- Корпус выключателя со встроенным сервоприводом
- Интеграция с Alexa для голосового управления
Код
Slave_Servo.ino (приемник + сервопривод)
#define rfReceivePin A0
#define ledPin 13
#include
Servo servo;
unsigned int data = 0;
const unsigned int upperThreshold = 70;
const unsigned int lowerThreshold = 50;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
servo.attach(9);
}
void loop() {
data = analogRead(rfReceivePin);
if (data < upperThreshold) {
digitalWrite(ledPin, LOW);
Serial.println(data);
servo.write(0);
}
if (data > lowerThreshold) {
digitalWrite(ledPin, HIGH);
Serial.println(data);
servo.write(90);
}
}
Master_Remote.ino (передатчик + кнопка)
#define rfTransmitPin 4
#define buttonPin 2
#define led 13
void setup() {
pinMode(rfTransmitPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
int buttonState = 0;
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(rfTransmitPin, HIGH);
digitalWrite(led, HIGH);
Serial.println("transmit");
delay(10);
} else {
digitalWrite(rfTransmitPin, LOW);
digitalWrite(led, LOW);
Serial.println("no");
}
}
3D-модели и схемы
OpenSCAD-файл крепления: mhacks_lightswitch_hpXQkie6X4.scad. Корпус для Arduino на Thingiverse. Схемы в разделе «Schematics».
Производственный процесс
- Создание потрясающей системы Ambilight для монитора на Arduino
- Беспроводная передача данных по магнитному полю на Arduino с 3D-сенсором Infineon
- Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
- Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
- Собираем свой Tamagotchi на Arduino: цифровой питомец своими руками
- USB-BLE MIDI-адаптеры на Arduino: беспроводное подключение инструментов к iOS
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Умный водяной пистолет с датчиком движения на Arduino Nano
- Сборка надежного таймера обратного отсчета на Arduino с 7-сегментным дисплеем SparkFun
- Arduino Sunflower: электронный подсолнух, следящий за солнцем