SomfyDuino:Arduino Nano 实现 USB 转 Somfy IO 适配器
组件与物料
| 组件 | 数量 |
|---|---|
| Arduino Nano R3 | 1 |
| 扁平排线 (7芯) | 1 |
| Somfy IO 遥控器 (如 GX037) | 1 |
所需工具
- 电烙铁
项目简介
将 Somfy IO 卷帘窗遥控器与 Arduino Nano 结合,通过 USB 串口接入自建智能家居系统,无需厂商云网关。遥控器由 Arduino 供电(发射约 20mA),需拆除原电池。
接线说明
遥控器按键焊点分别接 Arduino 数字引脚(低电平触发):
- PROG → D8
- UP → D12
- DOWN → D10
- MY → D11
- SELECT → D9
共用正极接 3.3V/GND。单通道遥控器无额外通道 LED,SELECT 键无法切换通道但不影响使用。
通信协议
Arduino 监听串口字符命令:
u- 准备按下 UPd- 准备按下 DOWNm- 准备按下 MYp- 准备按下 PROGs- 准备按下 SELECT1-9- 增加按住时间 (×100ms)r- 增加重复发送次数e- 执行组合按键
示例:u5e = 按住 UP 500ms;ud9993e = 同时按 UP+DOWN 3秒(配对模式)。
代码
// SomfyDuino by Bjoern Foldenauer
int progPin = 8, upPin = 12, downPin = 10, myPin = 11, selectPin = 9, ledPin = 13;
boolean upPress=false, downPress=false, myPress=false, progPress=false, selectPress=false;
unsigned long holdTime = 0;
int repeatSend = 0;
char incomingChar;
void setup() {
Serial.begin(9600);
Serial.println("SomfyDuino 0.71");
Serial.println("Commands: u/d/m/p/s + 1-9(hold) + r(repeat) + e(execute)");
pinMode(progPin, OUTPUT); pinMode(upPin, OUTPUT); pinMode(downPin, OUTPUT);
pinMode(myPin, OUTPUT); pinMode(selectPin, OUTPUT); pinMode(ledPin, OUTPUT);
digitalWrite(progPin, HIGH); digitalWrite(upPin, HIGH); digitalWrite(downPin, HIGH);
digitalWrite(myPin, HIGH); digitalWrite(selectPin, HIGH); digitalWrite(ledPin, LOW);
}
void loop() {
while (Serial.available() == 0) delay(50);
if (Serial.available() > 0) {
incomingChar = Serial.read();
if (incomingChar == 'u') upPress = true;
if (incomingChar == 'd') downPress = true;
if (incomingChar == 'm') myPress = true;
if (incomingChar == 'p') progPress = true;
if (incomingChar == 's') selectPress = true;
if (incomingChar >= '1' && incomingChar <= '9') holdTime += (incomingChar - '0') * 100;
if (incomingChar == 'r') repeatSend++;
if (incomingChar == 'e') somSend();
}
}
void somSend() {
for (int i = 0; i <= repeatSend; i++) {
if (upPress) { digitalWrite(upPin, LOW); Serial.print("up "); }
if (downPress) { digitalWrite(downPin, LOW); Serial.print("down "); }
if (myPress) { digitalWrite(myPin, LOW); Serial.print("my "); }
if (progPress) { digitalWrite(progPin, LOW); Serial.print("prog "); }
if (selectPress) { digitalWrite(selectPin, LOW); Serial.print("select "); }
digitalWrite(ledPin, HIGH);
Serial.print("for "); Serial.print(holdTime); Serial.println(" ms");
delay(holdTime);
digitalWrite(progPin, HIGH); digitalWrite(upPin, HIGH); digitalWrite(downPin, HIGH);
digitalWrite(myPin, HIGH); digitalWrite(selectPin, HIGH); digitalWrite(ledPin, LOW);
delay(holdTime);
}
upPress=downPress=myPress=progPress=selectPress=false; holdTime=0; repeatSend=0;
Serial.println("done.");
}
原理图

制造工艺
- 树莓派 3 配合 PubNub 实现远程气象监测
- 树莓派 LIRC 通用红外遥控器专业构建指南
- 树莓派无需 LIRC 捕获红外遥控指令:Python UART 方案
- 远程心率监测系统:AWS IoT 告警 + 树莓派 Windows IoT 可视化
- 树莓派 + Hologram Nova 短信控制智能交流电源开关
- ROObockey:精准辅助的遥控街头曲棍球机器人
- 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
- 云监控:实时资产管理的远程控制系统
- 现代工业远程生产控制的5大核心优势
- 在PLCnext设备上用grpcurl安全远程访问gRPC
- 远程监控三大价值:效率跃升、预知维护、数据洞察
- 工业物联网赋能远程监控系统全面升级