SomfyDuino IO
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Benodigde gereedschappen en machines
|
Over dit project
Idee
Hallo daar,
Ik heb zojuist geprobeerd een USB naar Somfy IO-adapter te implementeren met een Arduino Nano om mijn rolluiken in de woonkamer op te nemen. Ik wilde verbinding maken met mijn doe-het-zelf-domoticasysteem zonder cloudgebaseerde hardware van de oorspronkelijke leverancier - en hey! HET WERKTE - met slechts een eenvoudige IO-afstandsbediening.
Je hebt nodig:
- Een Somfy IO-afstandsbediening - ik gebruikte de GX037.
- Bijna elke Arduino met een USB-connector is voldoende, maar soft serial werkt ook.
- Een zevenaderige platte kabel en een krimpslang voor nette verpakking.
Bedrading volgens de bijlagen. De afstandsbediening wordt gevoed via de Arduino - hij gebruikt ongeveer 20mA tijdens het verzenden, dus je zou super fijn moeten zijn. Zorg er dus voor dat u de batterij verwijdert.
Betreffende de code:
Als je het hele apparaat wilt aansluiten op b.v. een RPi, zou je kunnen overwegen om alle Serial.print-items te verwijderen - het is veel gemakkelijker om met de Arduino te communiceren als deze gewoon luistert en zwijgt.
In de code wordt uitgelegd hoe u opdrachten verzendt.
Veel plezier - reacties zijn welkom!
Groetjes,
Björn
PS - Ik heb een afstandsbediening met één kanaal gebruikt. Het gebruikt in principe dezelfde lay-out als de 5-kanaals afstandsbediening, maar sommige onderdelen (zoals de extra LED's) ontbreken. Ik vraag me af of het naar verschillende kanalen zal springen als SELECT wordt geactiveerd. Ik heb het nog niet geprobeerd omdat ik gewoon blij was dat ik één kanaal aan het werk had, maar ik zal dit up-to-date houden
P.S. zojuist aangevinkt - de selectieknop heeft nu helaas effect - zal niet van kanaal veranderen, maar zal de afstandsbediening ook niet verknoeien.
Code
- Serie naar Somfy
Serie naar SomfyArduino
// SomfyDuino// door 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;char inkomendeChar;void setup() { Serial.begin(9600); Serial.println("SomfyDuino 0.71"); Serial.println("Bjoern Foldenauer"); Serial.println("-----"); Serial.println("ontvangt enkele seriële tekens zoals:"); Serial.println("u - bereid je voor om op OMHOOG te drukken"); Serial.println("d - bereid je voor om OMLAAG te drukken"); Serial.println("m - bereid je voor om op Mijn te drukken"); Serial.println("p - bereid je voor om op PROG te drukken"); Serial.println("s - bereid je voor om op SELECT te drukken"); Serial.println ("r - verhoog het aantal verzendingen met één"); Serial.println ("elk cijfer X - verhoog de bewaartijd met X * 100 ms"); Serial.println ("e - Uitvoeren! Voert een gedefinieerde (meerdere knop) ingedrukt houden"); /erial.println(""); Serial.println("Voorbeeld:normale UP:u5e "); Serial.println ("3 seconden OMHOOG/OMLAAG:ud9993e "); Serial.println(" 5 seconden PROG:p999995e "); Serieel.println(""); pinMode (progPin, UITGANG); pinMode (upPin, UITGANG); pinMode (downPin, UITGANG); pinMode (mijnPin, UITGANG); pinMode (ledPin, UITGANG); pinMode (selectPin, OUTPUT); digitalWrite(progPin, HOOG); digitalWrite(upPin, HOOG); digitalWrite (downPin, HOOG); digitalWrite(myPin, HOOG); digitalWrite (selectPin, HOOG); digitalWrite(ledPin, LOW);}void loop() { while (Serial.available() ==0) { delay(50); } // wacht tot het seriële commando binnenkomt if (Serial.available()> 0) {inkomendChar =Serial.read(); Serial.println(inkomendeChar); 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("Druk op:"); 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("mijn ");} if (progPress) {digitalWrite(progPin, LOW); Serial.print("prog");} if (selectPress) {digitalWrite(selectPin, LOW); Serial.print("select");} digitalWrite(ledPin, HIGH); Serial.print("voor"); Serial.print(holdTime); Serial.println ("ms"); vertraging (holdTime); digitalWrite(progPin, HOOG); digitalWrite(upPin, HOOG); digitalWrite (downPin, HOOG); digitalWrite(myPin, HOOG); digitalWrite (selectPin, HOOG); digitalWrite (ledPin, LAAG); vertraging (holdTime); } omhoogDruk =false; downPress =onwaar; mijnDruk =onwaar; progPress =onwaar; selecteerDruk =false; holdTime =0; herhaalSend =0; Serial.println("klaar.");}
Schema's
Geen document.
Productieproces
- Bewaking op afstand van het weer met Raspberry Pi
- Raspberry Pi universele afstandsbediening
- IR-afstandsbediening gebruiken met Raspberry Pi zonder LIRC
- Hartslagmeter op afstand
- Raspberry Pi / Hologram SMS-gestuurde wisselstroomschakelaar
- ROObockey:op afstand bestuurbare, door het doel ondersteunde straathockeyrobot
- Cloud monitoring, een afstandsbedieningssysteem
- 5 voordelen van productiecontrole op afstand
- Externe gRPC met behulp van grpcurl
- 3 belangrijke voordelen van bewaking op afstand
- Upgrades naar bewakingssystemen op afstand