Arduino RC bil med FPV Camera (8 / 15 steg)
Steg 8: Seriell kommunikation (del 2) - trådlös seriell
För trådlös seriell kommunikation köpte jag ursprungligen några XBee serie 1 1 MW moduler, bara för att prova dem. En XBee sköld krävs för Arduino, och en XBee USB Explorer (eller motsvarande) krävs på laptop-sida. Eftersom jag använde en Arduino Mega, samband I relevanta stiften på XBee skölden till Arduino Mega stiften för andra hårdvara seriella gränssnitt.
Jag tyckte att modulerna som serie 1 var ganska lätt att installera med hjälp av XCTU tillämpning (se Sparkfun guide: https://learn.sparkfun.com/tutorials/exploring-xbees-and-xctu). Dock sprang jag in vissa begränsningar. Den första som är uppenbart - med 1 MW moduler, användbart spänna var ytterst begränsad, och inga avbrutna meddelanden, jag kunde bara gå så långt som ca 3m! Jag kunde få bättre räckvidd med en lång USB-kabel. Den andra är en viktigare begränsning och verkar vara hårdvarubaserad. Jag fann att jag inte kunde få tillförlitlig kommunikation med 50Hz, även med de XBees som konfigurerats för att en överföringshastigheten 38400. Jag ökade förseningen, så att meddelandet skulle vara ca 25Hz, och jag hade mycket bättre framgång. På 25Hz, kunde jag få stabil kommunikation inom 3m. Jag hittade också att när jag gick utanför intervallet, meddelanden skulle tas bort, men skulle återhämta sig genast när kom tillbaka i intervallet. Att kontrollera om den seriell kommunikationen fungerar korrekt, jag såg den följetong input / output textrutor i C# program GUI. Seriella inmatningsrutan bör visa en mycket stabil teckensträng, som matchar rutan seriell utgång. Om seriell inmatningsrutan började blinka med tomt eller skadade data, det innebar att meddelandena inte var att få igenom.
Efter att få dessa moduler som arbetar, beställde jag några högre drivs moduler. Se till att både hög driv serie 1 och serie 2 moduler fanns tillgängliga, gick jag för de något billigare XBee serie 2 Pro (63mW) modulerna, snarare än modulerna XBee serie 1 Pro (60mW). Jag hade läst att de var svårare att installera, men kunde användas i transparent (AT) läge, precis som modulerna som serie 1. Jag konfigurerat modulerna och fick dem att tala med varandra på 38400 baud (Obs: en modul måste flashad "koordinator" och den andra modulen måste vara en "router"). Jag installerade då en in i den Arduino shield och omedelbart stötte på problem. På 25Hz, kunde jag inte få tillförlitlig kommunikation alls. För att kontrollera vad som hände, upprepade jag den Arduino mottagna meddelanden via Arduinos första serieporten (dvs. USB-kabel). Använda Arduino seriell monitor på min laptop, fann jag att serien 2 XBees var hugga meddelanden i halv eller mosa i rad meddelanden tillsammans. Så, skulle Arduino ibland få avsluta hälften av en sträng stack till första hälften av nästa strängen. Jag var tvungen att öka förseningen, så att frekvensen sjönk till ca 13Hz innan jag kunde komma till synes tillförlitliga seriell kommunikation över korta intervall. Baksidan av lägre frekvens budskapet är att det införs ytterligare fördröjning mellan controller in, och bilens rörelse. Tyvärr, den lägre frekvensen inte lösa problemen helt. Längre sträckor, den seriella data korruptionen fortfarande hände, och gränssnittet återställde inte när åter nära håll.
Så, med alla dessa problem, jag slutade köpa ett par av serie 1 Pro 60mW moduler. Det seriella gränssnittet, de fungerar precis lika bra som modulerna 1 MW-serien 1 - det finns ingen data korruption eller konstiga meddelande beteende när i intervallet. Deras utbud är också mycket bättre än 1 MW moduler (som väntat).
Sammanfattningsvis, om du använder XBees i ett projekt för enkel punkt till punkt kommunikation, STAY AWAY från serien 2 XBee modulerna! Serie 1 modulerna utföra oändligt mycket bättre och är mindre problematisk (som förmodligen förklarar deras popularitet och högre pris).
(I en liknande anteckning, finns det någon i Australien som vill köpa några lätt använt XBee serie 2 Pro 63mW moduler?:-P)