Fånga rörelse med en Arduino Accelerometer w / XBee Comms (6 / 12 steg)
Steg 6: Några anteckningar om XBee
Använda XBee kan vara knepigt och förvirrande om du inte förstår vad/hur XBee enheten kommunicerar både med Arduino och andra XBees. Detta avsnitt kommer att prova och förklara så gott jag kan hur det att programmera Arduino med XBee bifogas samt använda XBee för att sända och ta emot information.
Till att börja, det bör noteras att XBee är en seriell kommunikationsenhet. Eftersom så är fallet, måste XBee använda Tx och Rx stift (D0 och D1). Detta utgör ett problem. USB-anslutningen för datorn använder också dessa stift för att prata med Arduino. Eftersom detta är fallet, kan inte du använda XBee och USB på samma gång. För att åtgärda detta, måste du använda byglar med XBee sköld för att växla mellan trådlösa XBee kommunikation och USB-kommunikation.
För att programmera Arduino, måste skölden vara i USB-kommunikationsläge. Detta innebär att byglarna måste placeras i den andra positionen sett i stift diagram och igen i den första bilden av skölden.
För att använda XBee trådlös meddelande, måste skölden vara i XBee läge. Detta innebär att byglarna måste placeras i första position sett i stift diagram och igen i den andra bilden av skölden.
Detta var en av de svåraste delarna av projektet. Eftersom det var så svårt, har jag inkluderat några felsökning kod i avsnitt så du kan testa din XBee anslutningar innan du går vidare. Inuti denna zip-fil finns 3 program. En är för mottagande styrelsen, en är för sändande styrelsen och den andra är ett installationsskript som kan användas för att anpassa XBee maskinvara med X-CTU terminalen. Sända koden berättar mottagaren för att slå på och av en LED-baserad på en mottagna tecken. För att testa XBee comms, ladda en Arduino med överförings kod och en annan med få koden. Göra alla lämpliga anslutningar, och titta på LED turn på och av.
En anteckning mer på XBee, timing är allt. Se till att det finns inga onödiga förseningar eller hicka i din kod för att sakta ner saker. Dessutom är det av yttersta vikt att rensa seriell bufferten (med Serial.flush()) efter varje behandling cykel. Om du inte överförda data kommer att vara eftersläpande i följetong bufferten och rover kommer att fungera oförutsägbart. Clearing seriell bufferten efter varje iteration garanterar endast det senaste kommandot läses.