En luftkonditioneringen remote ersättning (2 / 4 steg)

Steg 2: Programmering - Arduino sida



Vi måste kommunicera över seriella gränssnitt och skicka IR-kommandon.
För IR avlägsen del kommer vi använda IRremote Arduino biblioteket (https://github.com/shirriff/Arduino-IRremote). Detta bibliotek kan användas för att skicka fördefinierade data via IR, liksom LIRC. Men vi använder det bara för dess hjälpare funktioner (ställa in 38KHz frekvens för IR och hantera timings när du skickar meddelanden).

I den tidigare instructable fann vi att vi behövde skicka en låssekvens, en ständig introduktion, lås sekvensen igen, då den faktiska nyttolasten för att kommunicera kommandon till luftkonditioneringen. Bra Arduino kan mycket väl ha införandet i sin kod och bara vänta för nyttolasten. Vi kunde bara skicka alternativ värden och göra Arduino ändra en mall med dessa värden, men för att hålla det enkelt vi bara ge hela nyttolasten och låta det skicka det som det är. För att skicka bitarna kommer det slå på IR LED och av enligt den timings hittade tidigare.

Här fungerar Arduino som en "slav", aldrig inleda själva meddelandet. Som jag avser att göra flera användningsområden för denna enhet börjar jag kommunikationen med ett tecken "I" vilket betyder "skicka via IR", följt av 19 byte nyttolast. Arduinoen skickar sedan meddelandet till luftkonditioneringen.
På Arduino sida kan koden se ut lite över-invecklat, men det är eftersom det är tänkt för att fungera som en radio relä också, så kommunikationen mellan Pi och Arduino via det seriella gränssnittet inte kommer alltid att bara för att skicka IR meddelande.
Här är den arduino källa som används för att skicka kommandon till luftkonditioneringen.

Lite förklaring:
-> de loop kod bara kontrollerna om ett kommando är klar. I så fall utför det kommandot (för nu bara "skicka en IR meddelande").
-> SerialEvent() kallas efter en loop(), om seriell data i bufferten. I denna funktion kommandot läses, nyttolasten är beredd, då en flagga är inställd att tala funktionen loop() att ett kommando är redo

serialEvent får ASCII-tecken som representerar HEX värden. För att konvertera den vi använder funktionen sscanf med %x: et (hexadecimalt) format alternativet. Vi lagrar de mottagna tecken i en 5 char utbud och fylla den med: "0 x" + de 2 tecken + '\0' (till slut strängen).

char hexConvert [5] = "0 x";
ASCII tas emot
för (int jag = 0; jag < 19; i ++) {
hexConvert [2] = Serial.read();
hexConvert [3] = Serial.read();
hexConvert [4] = '\0';
konvertera de mottagna tecken till ett numeriskt värde i nyttolasten [i]
sscanf (hexConvert, "%x", och (payload[i]));
}
På denna punkt innehåller nyttolast [i] det binära värdet representeras av mottagna tecken.

I skicka används kommandot rätt timings för att skicka lås, introduktion och nyttolast. För att skicka data, har koden att skicka varje bit separat med funktionen irsend.mark(duration) och irsend.space(duration). Som förklaras i den tidigare instructable varar för om 400us (ska egentligen vara närmare 420 tror jag) för märket (på staten), och antingen 400us eller 1300us för utrymme (OFF state) skicka en 0 eller 1, respektive.
Skicka varje bit av varje byte i följande kod används:

för (int s = 0; s < payloadSize; s + +) {
för (int jag = 7; jag > = 0; i--) {/ / mest signifikanta biten kommer först
irsend.mark(irSpace);
irsend.Space ((nyttolast [s] >> i) & 1 == 1? irOne: irZero);
}
}

Om du inte är bekant med bitvis operationer finns gott om tutorials på nätet.
Vad som händer här är:
För varje byte av nyttolasten (fungerar på samma sätt med intro):
För jag kommer från 7 till 0
flytta byten för jag rangordnar till höger
titta på den sista biten
om den biten är en, skicka en signal om "irOne" (1300us), annars skicka en signal om "irZero" (400us)

I grund och botten är vad vi får genom att flytta byten just av N rangordnar (lägga till nollor till vänster) den Nth lite på längst till höger. När maskering med en bitvis AND (och) 1 tar vi bara längst till höger lite, får så globalt vi Nth bitvärdet.

Exempel med 5B i hexa = 0101 1011 i binär. Parentesen är här att betona de skiftade bitarna, för läsbarhet...

Jag = 7 = > Skift (0) 101 1011 för 7 rangordnar = > 0000 000(0)
mask med 1 = > 0000 0000 & 0000 0001 = 0 = > Skicka irZero

Jag = 6 = > Skift (01) 01 1011 för 6 rangordnar = > 0000 00(01)
mask med 1 = > 0000 0001 & 0000 0001 = 1 = > Skicka irOne

Jag = 5 = > Skift (010) 1 1011 för 5 rangordnar = > 0000 0(010)
mask med 1 = > 0000 0010 & 0000 0001 = 0 = > Skicka irZero

Jag = 4 = > flytta (0101) 1011 för 4 rangordnar = > 0000 (0101)
mask med 1 = > 0000 0101 & 0000 0001 = 1 = > Skicka irOne

Jag = 3 = > Skift (0101 1) 011 för 3 rangordnar = > 000 (0 1011)
mask med 1 = > 0000 1011 & 0000 0001 = 1 = > Skicka irOne

Jag = 2 = > Skift (0101 10) 11 för 2 rangordnar = > 00 (01-0110)
mask med 1 = > 0001 0110 & 0000 0001 = 0 = > Skicka irZero

Jag = 1 = > Skift (0101 101) 1 för 1 rank = > 0(010 1101)
mask med 1 = > 0010 1101 & 0000 0001 = 1 = > Skicka irOne

Jag = 0 = > shift (0101 1011) för 0 rang = > (0101 1011)
mask med 1 = > 0101 1011 & 0000 0001 = 1 = > Skicka irOne

Så vi skickade bitar i vänster till rätt ordning.

Observera att IRremote bibliotek använder pin3 för att skicka meddelanden. Jag antar att det kan vara möjligt att använda stift 11 (samma timer för PWM) genom att ändra målet stiftet i biblioteket koden, men jag har inte testat den.

Se Steg
Relaterade Ämnen

Hur man gör en kärnmjölk ersättning för matlagning

jag minns när jag var liten min mamma brukade dricka en massa kärnmjölk. Hon skulle göra clabbered mjölk från obehandlad mjölk. Det var vanligt för människor i söder att dricka det med peppar eller äter det till frukost genom att lägga till kanel och...

Tangentbord ersättning för Lenovo y580/480

Som i de flesta laptop, komponenter kan ersättas eller uppgraderas, de flesta Lenovo idé-pads och tänka-pads är ganska modulära. Tangentbordet är en sådan komponent som kan ersättas utan mycket sorg. Om tangentbordet på den bärbara datorn är skadad e...

Armband nyckelbricka (spole nyckel ring ersättning för billiga)

Dess så enkelt att jag känner dess mer av en hacka i stället för en full fullfjädrat instructable.Du behöver1. en extra handled band, som du måste ha liggande. Om du har en favorit, ännu bättre.2. en delad nyckelring.3. en nyckelTrä dem tillsammans o...

DIY ersättning Gas kan gul mössa

Jag visste att jag borde lagt en sträng på min gul mössa för mina gas kan. Jag alltid misplacing det när jag är i en hast. Jag visste inte och nu har det gått. Nu har jag 3 burkar med något tak. Mycket stinkande resor till macken; Lyckligtvis går de...

DIY ersättning Zeo Sleep Monitor pannband Sensor

förra året köpte jag en Zeo Mobile sova Manager. Det här är en tjusig Bluetooth pannband som spårar dina hjärnvågor medan du sover och presenterar det på din smartphone som en graf som visar när du var vaken, i ljus, djup eller REM -sömn. Det är som...

Bionic Barbie alias "skuldra ersättning kirurgi"

låt oss inse det. Barbie är att få det. När hon blev äldre på vårt hus, började de skickas från min fru till vår dotter, hennes ålder verkligen Visa. Min dotter lekte idag med Barbie och bröt armen i handen; Hon började gråta när hon stirrade på den...

Ursprungliga Xbox akryl ersättning fallet

jag skapade detta för ursprungliga xbox ärendet som en ersättning design. Jag brukade ha tillgång till en laser och detta var en av mina mer favorit mönster. Det tog några dagar av mätningar och lite av akryl att få det rätt men det var massivt när d...

Miele W3203 tvättmaskin stötdämpare ersättning

Våra 10 + år gamla Miele W3203 hade aldrig behövt någon uppmärksamhet men börjar vibrera och få bullriga när på spin cyklar. Tvättcykeln var så tyst som någonsin så jag bestämde mig att nya stötdämpare skulle vara en bra idé. Efter trålning nätet jag...

Ersättning armband från en gammal inre däck

Så bältet från min favorit klocka bröt... en lång tid sedan. På något sätt var det inte lätt att få en ersättning som utrustade stil med klockan. Så jag gjorde min egen, snabbt och enkelt och jag är nöjd med resultatet.Här är jättelätt, Billiga och t...

Örontoppar ersättning täcker - DIY

Jag Visa idag dig hur man gör billiga och lätt Örontoppar ersättning täcker från öronproppar.Förra veckan jag har tappat en av dessa små gummi täcker, den del som går in i öronen (ni vet)... från min in-ear hörlurar hörlurar... och gör dem värdelösa....

Bearbetning ersättning tips för Harbor Freight spot svetsare

kontaktpunkterna i våra Harbor Freight spot svetsare hade fått alltför urkärnade och skadad för att arbeta. Jag hade ingen lycka att få reservdelar från var som helst, så jag gjorde en ersättning ställa. Jag använde TechShop San Josesvarv för att gör...

Computer Power Supply Fan ersättning

detta Instructable beskriver hur man byter en fläkt inuti en standard PC-nätaggregat. Kan du göra detta eftersom fläkten är defekt eller installera en annan typ av fläkt, till exempel en upplyst.I mitt fall, jag bestämde mig att byta fläkten eftersom...

BMW E46 M3 E39 M5 Oval invändig backspegel Auto Dim ljusreglering Electro kromatisk ersättning glas Cell installera instruktioner leda

OEM-spegel cellen innehåller en frätande vätska, extrem försiktighet bör iakttas när du tar bort cellen OEM, också vätska kan ha läckt ut i armaturhuset. Ta extrem försiktighet; bär lämpliga PPE inklusive handskar och skyddsglasögon för att undvika s...

E-cig / laser pennknappen ersättning

I detta instructable jag kommer att visa dig en snabb metod för att ersätta din förlorade eller saknade e-cig eller laser pekare bränning knappen.Steg 1: Samla materialMaterial som behövs:1 exacto kniv eller utility blade1 e-cigarett eller laser peka...

Ersättning band för dagens barn gunghäst eller gunga Zebra

jag äger en gunghäst av dagens barn. Detta var en hand mig ner till min grabb från en äldre kusin, så det är ca 7 år gammal. Gummiband som gör det möjligt att rock var i ganska dåligt skick, och en av dem bröt medan mitt barn ridning det.Tillverkaren...

Ersättning Charcoal fack eller pannan för en kolgrill

Jag älskar att grilla på kol när jag kan. Så de flesta helger när det är fint ute, jag försöker få en middag på grillen. Mitt problem genom åren har varit att grillar själva kan pågå en lång tid, men träkol magasinen rost ute i ett par år... och förs...

Göra en kakel ersättning

årets alla vattenförsörjning rör ersattes i byggnaden där vår lägenhet är belägen som en förebyggande åtgärd.Väggarna i vårt badrum och kök hade öppnas för att få rören byts ut, lämnar oss med vissa renovering.Från början var det planerat att inhyrda...

Ersättning badrum Fan omslaget

Detta instructable hoppas jag att visa dig hur du skapar en anpassad ersättning badrum fan cover från några extra plywood och lasrar. Jag antar att du kan använda en router, men det är långt mindre cool.Jag tog bort fan omslaget i vårt badrum länge s...

Badrum Linoleum golv ersättning projekt

när vi flyttade in i vårt hus i 2006, vi hade en hel del förändringar som vi ville göra. Windows, matta, målning, etc. En justering som har varit på is ett tag att ersätta linoleum i våra master badrum. Det var sliten och hade några märken i det som...