En komplett starter guide till AVRs (5 / 10 steg)
Steg 5: XBee radioapparater
Ta en titt på det är datablad här:
http://www.Sparkfun.com/datasheets/Wireless/ZigBee/XBee-Datasheet.pdf
XBee har en hel del funktioner, men för nu är vi intresserade av enda, som är möjligheten att överföra transparent seriell data.
Så vad betyder det?
Korrekt konfigurerad, kan XBee ersätta ledningarna mellan din micros som vi satt upp i föregående steg.
Föreställ dig möjligheterna.
Du kan göra din egen trådlösa dörrklocka eller fjärrkontroll bil.
Du kunde tråd upp sensorer i taket och läsa värdena utan kör sladdar genom väggar eller behöva hålla klättring i taket!
Så, Hur konfigurerar vi en XBee att fungera som en transparent seriell anslutning?
XBees konfigureras via deras seriell port.
Om du har en windows-maskin kan du använda X-CTU för att ange värden, men om din på mig på en Mac (eller linux) du kommer att behöva prata seriell direkt till radion.
Jag har ingen erfarenhet med X-CTU, men ladyada sätta upp en bra tutorial här:
http://www.Ladyada.net/make/XBee/configure.html
Om du behöver använda det seriella gränssnittet direkt behöver du några sätt att göra en seriell anslutning från datorn till XBee. Det kan inte vara en direkt anslutning heller, eftersom spänningar är fel (XBee har maximalt 3.3V, följetong från en dator kan vara så hög som - 25v -> 25v!
Du kan använda XBee adapter och FTDI chip från adafruit.com, eller om du är som mig, du kan improvisera!
Inledningsvis använde jag en Arduino med en seriell passthrough skiss (bifogas), du behöver bara se till att du använder 3.3V makt.
Alternativt (min arduino dog nyligen :() kan du använda något som en buss pirat.
Buss pirat är nu en av mina favorit verktyg efter min multimeter, om du på allvar får in det här, överväga att köpa en, det gör livet lättare!
Så, förutsatt att du har en seriell anslutning till din XBee, vad gör du?
För att få ur öppet läge, måste du skicka "+++" (inga citationstecken, ingen radmatning / vagnretur).
Om du använder seriekonsoll som kommer med arduino IDE, se till att du väljer "Ingen linje slut" innan du skickar den +++
Om du gjorde det rätt, svarar XBee med "OK"
Nu aktivera radmatning igen och du kan inspektera och ange värden.
Detta läge kommer timeout, så om det slutar svara, skicka den +++ (med ingen radmatning!)
Om du vill kontrollera en inställning, skriv in det namn som så:
NI
Ange ett värde:
NI = "Roof Sensor"
När du vill spara dina inställningar (annars förlorar du dem när strömmen är avstängd):
WR
Titta igenom databladet för alla alternativ, jag kommer att lista de inställningar jag använde för mitt projekt.
Jag ville ha alla radioapparater att arbeta i en broadcast-läge, men du kan enkelt ange adressen innan handen (som jag har gjort med broadcast-adressen) eller du kan ställa in det från inne din microcontroller kod.
Så, här är mina inställningar:
ID = 0X0508
DL = 0XFFFF
DH = 0X0
SM = 1
MIN = 0X1
RN = 0
NI = "Alarm 1"
RO = 0
Jag kommer bara att förklara några av viktigaste, kan du titta igenom databladet för resten.
ID: Detta är en grupp-ID
DL & DH: detta är måladressen. I detta fall är det satt till sändning, så alla radioapparater i samma grupp kommer att ta emot data
SM: Detta är viloläget, i detta fall jag använder Pin 9 för att sätta på radio att sova (genom att dra linjen hög). Om du vaknar ur sömnen, ge i radio om 14ms att vakna innan du använder den (_delay_ms(14) skulle fungera).
MIN: Detta är adressen / ID för denna särskilda radio, de bör vara unik inom en grupp
NI: Nod identifiering, ett mänskligt läsbara namn du kan ge radion
När setup, ersätta radion för kablarna från det seriella steget och dra stift 9 till marken (eller inte anger viloläge).
Det bör fungera precis som innan, men nu de två markerna kan vara 30 meter (~ 100 fot) bort inomhus eller 90 meter (~ 300 fot) bort utanför!