Een airconditioner externe vervanging (3 / 4 stap)

Stap 3: Programming - PC kant


Op de PC kant (zij het een Pi of elke andere linux PC), hier is een programma voor het verzenden van opdrachten aan de arduino. Het is gebaseerd op de eerder gegeven "encode.c" om te bouwen van een IR-commando.

Het programma zal bouwen de nettolading van de opdracht volgens de opdrachtregelopties (Zie gebruik) en de opdracht verzenden met het apparaat dat is aangesloten op de USB-poort.
De poort kan worden opgegeven met de -u optie, anders het zal proberen/dev/ttyUSB0, / dev/ttyUSB0, / dev/ttyACM0, /dev/ttyACM1, zoals de arduinos kunnen worden toegewezen als (ten minste) deze bestanden, afhankelijk van het type van de arduino en de afsluitingen/opnieuw verbinden.

Zoals aangegeven in de inleiding die de Arduino heeft haar autoreset functie uitgeschakeld, anders zal het opnieuw instellen van telkens wanneer een verbinding wordt gemaakt. Dit is de manier waarop die de IDE de chip programmeren kunt, maar het is niet wenselijk in ons geval. Indien u wenst te testen van de code met een arduino autoreset ingeschakeld, moet u een sleep(2)-opdracht na de verbinding (na het openen van het bestand tty) naar laat de arduino opnieuw instellen en de mogelijkheid om de berichten te krijgen.

Zoals verwacht de code stuurt een 'I' karakter op het Arduino, dan stuurt de nettolading en lezen van het bestand om te wachten op de reactie van de Arduino. Deze stap is niet essentieel voor een eenvoudige opdracht verzenden, maar het zal zijn als het doel is om informatie te halen uit de Arduino zelf of een ander apparaat bestuurd door radio. Voor nu de Arduino gewoon "OK" reageert dus gewoon wordt de reactie betreft.

Wat betreft het deel van de Arduino is er een deel van de code waar het bericht wordt geconverteerd naar ASCII-weergave van het binaire bericht.

Message [0] = 'I';
draaien van binaire lading naar ASCII-tekens (HEX voorstelling)
voor (ik = 1, j = 0; ik < 39; ik += 2, j ++) {}
bericht [i] = (nuttige lading [j] & 0xF0) >> 4;
Als (bericht [i] < 10) {}
bericht [i] += '0'; ASCII
} else {}
bericht [i] += 'A' - 10;
}
Message [i + 1] = lading [j] & 0x0F;
Als (message [i + 1] < 10) {}
Message [i + 1] += '0'; ASCII
} else {}
Message [i + 1] += 'A' - 10;
}
printf ("0 x %c %c", bericht [i], message[i+1]);
}

Nogmaals bitsgewijze operatoren worden gebruikt om te selecteren en de eerste of de laatste 4 bits verschuiven en het omzetten in een cijfer of een teken (A tot en met F):
bericht [i] = (nuttige lading [j] & 0xF0) >> 4;
Hier nemen we de byte en toepassen van een masker 11110000, dus we alleen de voorste linker bits krijgen, en we deze bits naar rechts verschuiven
Message [i + 1] = lading [j] & 0x0F;
Zelfde hier maar geselecteerde bits zijn al aan de rechterkant van de byte, dus geen verschuiving nodig is.

Als (bericht [i] < 10) {}
bericht [i] += '0'; ASCII
} else {}
bericht [i] += 'A' - 10;
}

Hier wordt het cijfer < 10 de ASCII-waarde bestaat tussen 48 en 57 (decimaal), en we net hebben de vertegenwoordigde waarde toevoegen aan de waarde van het teken '1' (oftewel 48 maar '1' is bruikbaar zonder de ASCII-tabel door hart ;)). Hetzelfde geldt voor de tekens A tot F, maar A(Hex) is 10(Decimal) dus als we de vertegenwoordigde waarde toegevoegd aan de ASCII-waarde voor de 'A' zouden we 10 waarden op hoog. Zo voegen we de waarde -10 en eind omhoog met het juiste teken.

Nu, zou u kunnen benieuwd waarom wij converteren van Hex naar ASCII en van ASCII naar Hex aan de andere kant. Je zou gelijk aan ;)
Inderdaad, het is nutteloos in dat geval, en de eerste versie van de code werkte direct met binaire waarden. Eigenlijk het werkte door het sturen van alleen de 5 bytes die eigenlijk nuttig zijn en de Arduino maakte de update van de nettolading sjabloon. We sturen nu 40 bytes in plaats van 5. Om welke reden?
Nou, hoewel dit uit dit instructable name is heb ik aangegeven dat ik een tweede micro controller had in mijn kamer voor de tweede eenheid van de airconditioner. Deze chip is een Seeediuno Wifi Bee. Ik vond het moeilijk om het juiste gedrag dat chip met aansluitingen, zodat ik uiteindelijk met behulp van de ingesloten minimalistische webserver, dus ik stuur de volledige IR-commando in de URL in Hex-tekens.
Nu heb je de reden: ik wilde gebruiken dezelfde code waarmee beide units, de gegevens verzenden naar USB of via WiFi, maar dezelfde boodschap, in dezelfde indeling te manipuleren.

Gerelateerde Artikelen

Maak een voedingsconnector voor vervanging van batterij

Maak een voedingsconnector voor vervanging van batterij

na de batterijen ging dood in het midden van een schot met behulp van mijn nieuwe camera met dubbele van het aantal megapixels en functies, ontdekte ik was er geen externe voedingsconnector. Zodra een schot verloren is, het kan voor eeuwig verloren,
Zelf gieter tuin - gebruik gerecycleerd water uit een airconditioner

Zelf gieter tuin - gebruik gerecycleerd water uit een airconditioner

heb je ooit gemerkt dat uw centrale airconditioner heeft een slang die verbinding maakt met de afvoer? Ik nooit werkelijk gedacht over het tot één nacht die ik bijna struikelde omdat ons ging over de vloer van de kelder. Ik snijd de slang en plaatste
Hoe te repareren van een kleverige externe indicator zuiger (gebogen plunjer rod)

Hoe te repareren van een kleverige externe indicator zuiger (gebogen plunjer rod)

zodat u kreeg een nieuwe-to-you oude dial indicator en ontdekte de zuiger is steken in plaats van soepel deprimerend. Natuurlijk, is het eerste wat dat je doen de indicator uit elkaar te halen en erachter te komen wat omhoog is. En hier is hoe je het
Opnieuw rubriek een atabaque (ter vervanging van de huid)

Opnieuw rubriek een atabaque (ter vervanging van de huid)

dit is een follow-up tot [Hoe maak je een atabaque van een tot z] en toont unidirectioneel van het vervangen van de huid (opnieuw post) met minimale ophef.Mijn atabaque werd gebouwd met dat keurige eigenschap vanaf het begin: een stuk touw die gemakk
Hoe maak je een phaser externe houder

Hoe maak je een phaser externe houder

In dit instructable, ik zal onderwijzen u alle hoe maak je een phaser afstandsbediening houder tv-afstandsbedieningen om in te zetten. Ik zal met behulp van blender om het model te maken, en u kunt één uit met behulp van een 3D-printer afdrukken.Stap
Hoe te repareren van een Samsung externe m3 hard drive in minder dan 5 minuten

Hoe te repareren van een Samsung externe m3 hard drive in minder dan 5 minuten

Er is letterlijk niets erger in de wereld dan het gevreesde moment dat uw harde schijf niet lukt, verliezen van al uw waardevolle gegevens.Het ding is, recht, de recovery bedrijven en fabrikanten hebben een zoete deal er - zij daadwerkelijk bouwen mi
Maak een nabijheidssensor, externe detector, Light Sensor in een interne circuit

Maak een nabijheidssensor, externe detector, Light Sensor in een interne circuit

Hallo kerels...Ik ga u tonen hoe ik maakte een eenvoudige sensor van de nabijheid, die signalen van de afstandsbediening detecteert ...Stap 1:Dit is het belangrijkste circuit, bestaande uit zender en ontvanger sectie...Ik heb geprobeerd dit circuit o
Hoe te repareren van een paraplu (ter vervanging van een kunststof eind)

Hoe te repareren van een paraplu (ter vervanging van een kunststof eind)

Ok dus ik heb deze paraplu dat ik hou van en neem goede zorg van... maar de andere dag begon te regenen... Ik gebruikte het en toen ik thuis kwam en het te laten drogen openen, vond ik dat een van de plastic uiteinden ontbrak... Hier is hoe ik vast h
Voordelige externe belangrijkste vervanging voor een Toyota Yaris

Voordelige externe belangrijkste vervanging voor een Toyota Yaris

de externe sleutel voor mijn Toyota-Yaris 2006 had 2 knoppen die met een dunne plaat van kunststof bedekt waren. Na verloop van tijd het blad droeg af en de knopjes onder vielen uit! Voor een tijdje gebruikte ik een laagje siliconen lijm te dekken ov
Bouwen van een systeem van meestal externe camera

Bouwen van een systeem van meestal externe camera

ik werk voor een bouwbedrijf en we waren op zoek naar een mobiele camera-oplossing.Dit is wat ik kwam met, en het werkt geweldig. We kunnen verplaatsen gemakkelijk en in de meeste gebieden de Mobile Broadband krijgt voldoende ontvangst goed functione
Een draadloze deurbel hacken externe switch

Een draadloze deurbel hacken externe switch

Voor enige tijd die ik wilde bouwen een externe switch, hoofddoel – voor vuurwerk ontsteking (of gelijksoortige taken). Toch, mij wilden voor wekken een RF externe zonder het gebruik van microcontrollers, indien mogelijk te wijzigen van een bestaand
Hoe vervang ik een TL-buis met een ETL goedgekeurd LED buis

Hoe vervang ik een TL-buis met een ETL goedgekeurd LED buis

hoewel een LED buis licht en een TL-buis op verschillende manieren theoretisch werkt, een LED buis licht ter vervanging van een TL-buis onder de soortgelijk vorm en metingen wordt geproduceerd. In de normale praktijk is inductieve ballast of elektron
Ter vervanging van een pgmfi Relais (Honda Civic 1999).

Ter vervanging van een pgmfi Relais (Honda Civic 1999).

Als een proactieve changeout, ben ik ter vervanging van de 17-jarige pgmfi estafette in mijn civic.De eerste stap is het verwijderen van de passagier zijpaneel zoals.Stap 1: Verwijderen van de oude estafette. Een 10mm bout houdt de relay-beugel. Eenm
Repareren van een gebroken sleutel gehechtheid op een externe ingang keyfob

Repareren van een gebroken sleutel gehechtheid op een externe ingang keyfob

ik kocht onlangs een tweedehands auto die kwam met een externe ingang keyfob.  Helaas, de bijlage voor de keyring was slecht ontworpen, en brak af.  Dus, de vorige eigenaar de sleutels bevestigd met een tuig, gemaakt van glasvezel tape... niet zeer b