亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

SomfyDuino IO

组件和用品

Arduino Nano R3
× 1
扁平电缆
× 1
尚飞 IO 远程
× 1

必要的工具和机器

烙铁(通用)

关于这个项目

构思

你好,

我只是尝试使用 Arduino Nano 实现一个 USB 到 Somfy IO 适配器,以在客厅中包含我的卷帘。我想连接到我的 DIY 家庭自动化系统,而无需从原始供应商那里获得任何基于云的硬件 - 嘿!它有效 - 仅使用一个简单的 IO 遥控器。

你需要:

  • 尚飞 IO 遥控器 - 我使用了 GX037。
  • 几乎任何带有 USB 连接器的 Arduino 都可以 - 但软串口也可以。
  • 一根七芯扁平电缆和一根收缩软管,用于整齐包装。

根据附件接线。遥控器通过 Arduino 供电 - 它在发送时使用大约 20mA,所以你应该非常好。所以一定要取出电池。

关于代码:

如果您想将整个装置连接到例如RPi,您可能需要考虑删除所有 Serial.print 项目 - 如果它只是倾听并关闭,则与 Arduino 通信会更容易。

代码中解释了如何发送命令。

玩得开心 - 欢迎评论!

干杯,

比约恩

附言- 我使用了单通道遥控器。它基本上使用与 5 通道遥控器相同的布局,但缺少某些部件(如附加 LED)。我想知道如果触发 SELECT 是否会跳转到不同的频道。我还没有尝试过,因为我很高兴我有一个频道可以工作,但我会保持更新

P.P.S.刚刚检查 - 不幸的是,选择按钮现在有效 - 不会改变频道,但也不会搞砸遥控器。

代码

  • 串行到尚飞
串行到尚飞Arduino
// SomfyDuino// by Bjoern Foldenauer// 05/2017int progPin =8;int upPin =12;int downPin =10;int myPin =11;int selectPin =9;int ledPin =13;boolean upPress =false; boolean downPress =false;boolean myPress =false;boolean progPress =false;boolean selectPress =false;unsigned long holdTime =0;int repeatSend =0;charcomingChar;void setup() {Serial.begin(9600); Serial.println("SomfyDuino 0.71"); Serial.println("Bjoern Foldenauer"); Serial.println("-----"); Serial.println("接收单个串行字符,如:"); Serial.println("u - 准备按 UP"); Serial.println("d - 准备按下 DOWN"); Serial.println("m - 准备按我的"); Serial.println("p - 准备按 PROG"); Serial.println("s - 准备按SELECT"); Serial.println("r - 发送计数加一"); Serial.println("任意数字X - 将保持时间增加X*100 ms"); Serial.println("e - 执行!运行定义的(多按钮)按住"); /erial.println(""); Serial.println("例子:普通UP:u5e"); Serial.println(" 3 秒 UP/DOWN:ud9993e "); Serial.println(" 5 秒 PROG:p999995e "); Serial.println(""); pinMode(progPin, 输出); pinMode(upPin, OUTPUT); pinMode(downPin, OUTPUT); pinMode(myPin, OUTPUT); pinMode(ledPin,输出); pinMode(selectPin, OUTPUT);数字写入(编针,高);数字写入(upPin,高);数字写入(下销,高);数字写入(myPin,高);数字写入(选择引脚,高); digitalWrite(ledPin, LOW);}void loop() { while (Serial.available() ==0) { delay(50); } } // 等到串行命令进来 if (Serial.available()> 0) {comingChar =Serial.read(); Serial.println(incomingChar); 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') {holdTime +=100;} if (incomingChar =='2') {holdTime +=200;} if (incomingChar =='3') {holdTime +=300;} if (incomingChar =='4') {holdTime +=400;} if (incomingChar =='5') {holdTime +=500;} if (incomingChar =='6') {holdTime +=600;} if (incomingChar =='7') {holdTime +=700;} if (incomingChar =='8') {holdTime +=800;} if (incomingChar =='9') {holdTime +=900;} if (incomingChar =='r') {repeatSend++;} if (incomingChar =='e') {somSend();} }}void somSend() { Serial.print("Pressing:"); 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("毫秒");延迟(保持时间);数字写入(编针,高);数字写入(upPin,高);数字写入(下销,高);数字写入(myPin,高);数字写入(选择引脚,高);数字写入(ledPin,低);延迟(保持时间); } upPress =false; downPress =false; myPress =假; progPress =假; selectPress =false;保持时间 =0;重复发送 =0; Serial.println("完成。");}

示意图

没有文件。


制造工艺

  1. 使用树莓派远程监测天气
  2. Raspberry Pi Universal Remote
  3. 在没有 LIRC 的情况下将 IR Remote 与 Raspberry Pi 一起使用
  4. 远程心率监测器
  5. Raspberry Pi / Hologram SMS 控制的交流电源开关
  6. ROObockey:遥控、辅助瞄准的街头曲棍球机器人
  7. 使用 Arduino、1Sheeld 和 Android 的通用远程控制
  8. 云监控,远程控制系统
  9. 远程生产控制的5个优点
  10. 使用 grpcurl 的远程 gRPC
  11. 远程监控的 3 大优势
  12. 远程监控系统升级