无线灯开关操纵器
组件和用品
![]() |
| × | 2 | |||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
![]() |
|
应用和在线服务
![]() |
|
关于这个项目
构思
所以一旦我决定入睡,我就不喜欢起床。有时我只想在入睡前做一些阅读,需要开灯。所以我决定做这个电灯开关机械手。
我意识到这还有其他一些影响:
- 太矮而无法够到开关的儿童
- 行动不便的人
项目
该项目主要基于 433 MHz 射频板相互通信。有时,这可能是一项壮举。如果代码不适合您,请尝试在 Slave_servo.ino 中修改这些值:
const unsigned int upperThreshold =70; //上限阈值 const unsigned int lowerThreshold =50; //下限阈值
- Master_Remote.ino 使用发射器连接 Arduino
- Slave_Servo.ino 与接收器在同一个 Arduino 上运行
接线
接线很简单,用这个链接里的图片,和“原理图”下的图片。

注意
- 按钮与发射器在同一个 Arduino 上,伺服与接收器在同一个 Arduino 上。
壁挂式
至于将伺服器安装在墙上,您将需要使用 3D 打印机。伺服支架已经在 OpenSCAD 中建模,您可能需要更改孔的位置。我已经包含了 OpenSCAD 文件,以便可以修改孔参数。您需要为初学者打印 mhacks_lightswitchv4.stl。
打印后,将伺服器固定并固定在开关上(这可以通过命令条这样简单的东西来完成,或者如果你真的确定你喜欢它,超级胶水(我不推荐这样做)。>
最终项目
这是最终项目(我为名为 Mhacks 的在线黑客马拉松提交了这个项目)。
为了使设置更持久,您可能需要打印一个 Arduino 外壳。这个案例效果很好。您可以使用命令条将它和面包板安装到墙上。
未来发展
- 使用基于 ESP8266 的开发板来控制伺服器,而不是 2 个 Arduino
- 制作一个电灯开关盖,更雄辩地嵌入伺服
- 开发 Alexa 代码,使其能够进行语音控制
代码
- Slave_Servo.ino
- Master_Remote.ino
Slave_Servo.inoArduino
#define rfReceivePin A0 //RF Receiver pin =Analog pin 0 #define ledPin 13 //Onboard LED =digital pin 13 #include伺服舵机;无符号整数数据 =0; // 用于存储接收数据的变量 const unsigned int upperThreshold =70; //上限阈值 const unsigned int lowerThreshold =50; //下阈值 void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(9600);伺服.attach(9); } void loop(){ data=analogRead(rfReceivePin); //监听模拟引脚0上的数据 if(data lowerThreshold){ digitalWrite(ledPin, HIGH); //如果接收到一个HIGH信号,打开LED Serial.println(data);伺服.写(90); } }
Master_Remote.inoArduino
#define rfTransmitPin 4 //RF Transmitter pin =digital pin 4 #define buttonPin 2 #define led 13 void setup() { // 把你的设置代码放在这里,运行一次:pinMode(rfTransmitPin, OUTPUT); pinMode(buttonPin, INPUT); pinMode(led,输出); Serial.begin(9600);}int buttonState =0; void loop() { // 把你的主要代码放在这里,重复运行:buttonState =digitalRead(buttonPin); if (buttonState ==HIGH) { // 打开 LED:digitalWrite(rfTransmitPin, HIGH);数字写入(LED,高); Serial.println("传输");延迟(10); } else { // 关闭 LED:digitalWrite(rfTransmitPin, LOW);数字写入(LED,低); Serial.println("否"); }}
定制零件和外壳
mhacks_lightswitch_hpXQkie6X4.scadArduino 案例
thingiverse.com 上的 CAD 文件示意图


制造工艺