Puzzlebox bana: Med en Arduino att styra en infraröd helikopter (4 / 9 steg)
Steg 4: Avkodning styrsignalen
Våra resultat för avkodning i Puzzlebox omloppet signal har placerats i till en kalkylbladsfil som Open Office (i zip). En skärmdump av dokumentet ingår också i det här steget.
Medan testning vi flyttade spjäll och riktningsvisare joysticken i olika positioner och spelade in alla med logik analysatorn. Vi försökte sedan att avkoda kommandot från inspelade signalen.
I kolumn A, T1 ~ T5: gas nivå 1 ~ 5, L2 innebär vänster max R2 innebär rätt max, F2 betyder framåt max, B2 betyder tillbaka max. En B och C hänvisar till tre olika "kanaler" (olika kanaler kan användas till att styra flera olika helikoptrar på samma plats samtidigt utan deras signaler som blandar sig med varandra).
Innebörden av signalen börjar bli tydligt en gång organiserade och visas på detta sätt. 7 bitar i gula blocket definierar gas nivå, 7 bitar i det gröna blocket definierar till vänster och höger vrida hastighet, 6 bitar i röda definierar lutar framåt och bakåt och två bitar i blå definierar vilken kanal att använda. (igen, kanaler används när du har mer än en helikopter på samma ställe och vill styra dem separat. Med tre kanaler innebär att det är högst tre helikoptrar kan vara i samma rum och fortfarande flyga självständigt).
Vad är affären med cyan block?
Detta avser en kontrollsumma. En kontrollsumma är en gemensam mekanism i någon kommunikationssystem där du måste se till att den information som mottagits matchar vad skickades ut. En kontrollsumma är ett tal som beräknas från resten av koden, med en fördefinierad algoritm. När enheten tar emot koden, kommer det först försök att beräkna kontrollsumman av sig själv och sedan jämföra det med kontrollsumman bifogas i meddelandet. Om de lika sedan är meddelandet korrekt, annars något mycket har gått fel under överföringen till exempel belysningssystemet i ett ljust rum kan störa IR-sensorn. Om kontrollsummor inte matchar, frågar den mottagande enheten normalt sändaren för samma meddelande igen. Om enheten inte klarar för dubbelriktad kommunikation (som i fallet med de flesta IR-enheter) sedan har meddelandet att ignoreras.
Den algoritm som används för att generera kontrollsumman kan vara enkla eller komplexa. Vissa gemensamma metoden innehåller bitvis summan och Bitvis XOR.
Följande algoritm som används av Puzzlebox bana:
Start från den 3: e lite (inkluderar de ledande 2 bitarna och tilldela dem till 0)
Lägg upp varje 4 bitar
Få de senaste 4 bitarna från resultatet
Använda 0B10000 (10000 i binär motsvarar 16 i decimal) och subtrahera de senaste fyra bitarna
Ta T1 till exempel:
0B0100 + 0B0111 + 0B0100 + 0B1100 + 0B1001 + 0B1111 = 0B110011
De sista 4 bitarna är 0B0011.
0B10000-0B0011 = 0B1101, som matchar kontrollsumman finns i slutet av styrsignalen.