Arduino RC bil med FPV Camera (7 / 15 steg)
Steg 7: Seriell kommunikation (del 1)
Jag ansåg flera alternativ för att skicka kontrolldata mellan laptop och bilen. Wi-Fi eller bluetooth tycktes vara de självklara lösningarna, men varken kan ge spänna jag. De flesta trådlösa arduino projekt verkar använda XBee moduler, som beroende av seriell kommunikation, så jag beslutade att använda en seriellt gränssnitt.
Bil/laptop kommunikation fungerar så här:
1. bil skickar en seriell sträng (med en fast struktur), med kända början och slutet av meddelandet tecken.
2. C# program kontinuerligt opinionsundersökningar laptop's seriella gränssnitt. När den tar emot en seriell sträng, som innehåller både de förväntade start och slut tecken, C# programmet förbereder sin egen seriell sträng (med en fast struktur), och skickar den till bilen.
3. bil tar emot seriella strängen, gör en snabb kontroll (baserat på en avsluta av meddelande karaktär och tillåten längd), drar ut och behandlar informationen om meddelandet är "giltigt" och väntar på att en viss fördröjning innan förbereder och skickar ett nytt meddelande - och cykeln upprepas.
Obs: Om det mottagna meddelandet inte anses "giltigt" på Arduino, kommer den Arduino skissen stannar bilen och centrum styrningen.
Meddelandestruktur för meddelanden som skickas till bilen, från C# program, är:
500,500, F, D00, Z
Innebörden av denna sträng är:
Första fältet: gasreglage (centrerad runt 500)
Det andra fältet: styrning (centrerad runt 500)
Det tredje fältet: Slowmode - F: snabbt, S: Slow (max gas är halvfart)
Fjärde fältet: strålkastare
Första tecknet: D: mörk (lights off), L: lamporna på
Andra tecken: ljusstyrka (0 - 9)
Det tredje tecknet: ljus sekvens (0 - 9)
Sista området: slutet av meddelandet karaktär (Z)
Mer information om vissa fält kommer att tillhandahållas i senare steg
Meddelandestruktur för meddelanden som skickas från bilen, till C# programmet, är:
A, 500, 500, D00-F, R, Z
Första fältet: början av meddelandet karaktär (A)
Andra fält: Gasreglage (centrerad runt 500)
Tredje fältet: Styrning (centrerad runt 500)
Fjärde fältet: Slowmode - F: snabbt, S: Slow (max gas är halvfart)
Femte fält: strålkastare
Första tecknet: D: mörk (lights off), L: lamporna på
Andra tecken: ljusstyrka (0 - 9)
Det tredje tecknet: ljus sekvens (0 - 9)
Sjätte fältet: rumble (R - Muller, O - off)
Sista området: slutet av meddelandet karaktär (Z)
De flesta av dessa fält är bara ekande vad mottogs av Arduino. Detta gjordes som en visuell indikator på hälsan på det seriella gränssnittet. Om gränssnittet fungerar som den ska matcha den output och input strängar visas i C# programmet.
Seriell kommunikationsmetoden utvecklades från början med en kabel seriell anslutning (dvs. med en Arduino USB kabel). Jag kunde ställa in väntetiden på Arduino sidan till 20ms, så att meddelandet frekvensen var ca 50Hz. Med USB-kabeln, jag hade inga problem med kommunikation, och kunde få stabila meddelande kvitto i båda ändar. Baudvärde angavs till 38400.