Maken van een eenvoudige knop Wireless (6 / 6 stap)

Stap 6: programmeren


De eenvoudigste manier om te verbinden met de XBee is via een seriële-naar-USB converter.  De dood eenvoudigste is een USB XBee Explorer zoals gedragen door SparkFun, Adafruit, en de gebruikelijke verdachten.  De volgende eenvoudigste is een FTDI breakout, zoals de Adafruit "Friend FTDI."  Ik heb gedaan het beide manieren.  Voor al diegenen met een Arduino rondslingeren, kunt u die in een seriële-naar-USB converter vrij gemakkelijk ook (tot het Leonardo, dat wil zeggen--niet meer trekken de chip om toegang tot de FTDI, omdat er geen meer FTDI op de Leonardo!)  U kunt echter de seriële poorten of seriële software gebruiken en verzenden AT-opdrachten vanuit een Arduino.  Ik ben eenmaal nu graag doet het in een terminal op mijn laptop.

U kunt praten met met behulp van een gewone terminal-programma, maar dit is lastig op de OS-X, omdat de XBee niet de juiste nieuwe opdrachtregel terugsturen en alle antwoorden krijgen samen door elkaar gegooid.  Gelukkig Tom Igoe heeft stapte met een eenvoudige terminal programma geschreven in Processing (en diverse mensen hebben uitgebreid sinds).  Ik ben met behulp van een gewijzigde versie van Tom's oorspronkelijke programma, die ik heb ingevoerd met de hand uit de tekst in zijn boek "Maken dingen praten."

Hier is de huidige versie van de code die ik gebruik:

importeren van processing.serial.*;
Seriële myPort;
String portnum;
String outString = "";
InString koord = "";
int receivedLines = 0;
int bufferedLines = 8;

VOID Setup
{
grootte (400, 300);
PFont myFont = createFont(PFont.list() [3], 14);
textFont(myFont);
println(Serial.List());
portnum = Serial.list() [3];
myPort = nieuwe Serial (, portnum, 9600);
}

VOID draw()
{
Background(0);
tekst ("seriële poort:" + portnum, 10, 20);
tekst ("getypt:" + outString, 10, 40);
tekst ("ontvangen:" + inString, 10, 80);
}

VOID keyPressed()
{
schakelaar (sleutel)
{
Case '\n':
myPort.write (outString + '\r');
outString = "";
breken;

zaak 8:
outString = outString.substring (0, outString.length() -1);
breken;

Case 65535:
breken;

geval '+':
myPort.write(key);
outString += sleutel;
breken;

standaard:
outString += sleutel;
breken;

}
Als (outString == "+++")
{
delay(2000);
outString = "/ n";
}
}

VOID serialEvent(Serial myPort)
{
inString = "Serial gebeurtenis Recieved!";
delay(2000);
int inByte = myPort.read();
inString += char(inByte);
Als (inByte == '\r')
{
inString += '\n';
receivedLines ++;
Als (receivedLines > bufferedLines)
{
deleteFirstLine();
}
}
}

VOID deleteFirstLine()


{
int firstChar = inString.indexOf('\n');
inString = inString.substring(firstChar + 1);
}

Korte formulier hier.  U bent met AT-opdrachten, die met een aandacht-code beginnen (+++, geen regelterugloop) te krijgen aandacht van de chip, dan een reeks opdrachten elk suffix door "AT".  Ze zijn al gedocumenteerd in de handleiding voor de XBee, en als u niet wilt dat om ver te gaan, de basisopdrachten voor de oprichting van een lijn passeren modus bijvoorbeeld op verschillende plaatsen op het web-- hier worden gekopieerd.

Als ik me goed herinner, waren de enige dingen die ik had om in te stellen op het einde van de zender:

+++ //gets van het knooppunt de aandacht, het zal antwoorden met "OK"
ATMY2 //this is van het knooppunt eigen identiteit
ATDL3 //this is de lage byte van het adres van dat het knooppunt wil met praten
ATID5555 //this is de PAN ID; de ID voor het netwerk dat beide apparaten zijn op
ATD03 //this ingesteld pin 20--digitale i/o 0, als een digitale ingang
ATICFF / / controleert alle de I/O pinnen en stuurt een verzending wanneer om het even welk van hen wijzigt.  Dit is een bitfield, als u niet wilt dat ze allemaal.
ATWR / / Vergeet niet deze opdracht!  Het schrijft de instellingen in het geheugen
ATAC / / dit commando zorgt ervoor dat het knooppunt dat u wilt beginnen met de nieuwe instellingen (en nauwe opdrachtmodus).

U kunt ook dwingen monster intervallen met behulp van de opdrachten het en IR, evenals--door gebruik te maken van de juiste pin--het knooppunt slaap hebben als er geen invoer aanwezig.

Mijn recieiver nodig om de wederzijdse-id, en worden opgezet voor pin-uitgang:

+++
ZIJN / / reset naar fabrieksinstellingen--laten we veilig hier!
ATMY3
ATDL2
ATID5555
ATD05 / / pin 20 is nu ingesteld om te veranderen staat afhankelijk van de gegevens ontvangen van de zender
ATWR
ATAC

Zoals u wellicht heeft gemerkt, is er niets dat de transmissie dwingt als one-way alleen.  Knooppunten zal gelukkig bidirectionally met de seriële lijnen communiceren (die nog niet getroffen door deze lijn passeren modus, laat me nota!) en ze zal gelukkig echo I/O lijnen in beide richtingen ook.

Ik adviseer hoogst om de knooppunten van de XBee praten op het breadboard voordat u start uw knop terug samen schroeven.

Oh; en het andere uiteinde?  Detecteren een "getrokken laag" is net zo eenvoudig als het loopt een draad van passende I/O pin op de XBee tot een open I/O pin van een Arduino en schrijven;

Const int xbeePin = 8;
Const int ledPin = 13;

VOID Setup
{
pinMode (xbeePin, INPUT);
pinMode (ledPin, OUTPUT);
}

void loop
{
Als (digitalRead(xbeePin) == laag)
{
digitalWrite (ledPin, hoge);
}
anders
{
digitalWrite (ledPin, laag);
}
}

(De bovenstaande code zou moeten werken maar ik getypt door oog hier in de Instructable.  Ik heb gekregen toe gewend met de Arduino-- of verwerking--IDE-check mijn syntaxis voor mij!)

Het eerste gebruik dat ik mijn Easy Button wil is de ontvanger XBee verbinden met een Arduino die ik al had ingesteld op spugen een MIDI-bericht Opmerking Wanneer het zag de juiste trigger signaal.  We gebruikten het bijna als spelshow-type zoemer voor de muzikale "Lucky Duck."  Even later ik de MIDI-kabel aangesloten op onze verlichting console en was kundig voor stormloop lichte signalen van buiten de lichte stand op een show waar tech staff short-handed.

De verschrikkelijke puinhoop in de tweede foto is mij met behulp van de knop wijzigen van programma's op de BlinkM ik ben wijzigen (aka aangesloten op mijn ISP Adafruit en schreef nieuwe software binnen de Arduino IDE).  De laatste kan een beetje verspilling voor een $20-radio, maar het toont de flexibiliteit van een self-contained draadloze knop.

Gerelateerde Artikelen

Maken van een eenvoudig blaaspijp

Maken van een eenvoudig blaaspijp

maken van een eenvoudig blaaspijp voor onder $15Stap 1: Get materialen 1.bic pen2.a volledige blikje stof af3. bbs en pellets4.a doelStap 2: Nemen, behalve de pen De pen uit elkaar te halenStap 3: Opstijgen het stro Het stro als ding off van de stof
Maken van een eenvoudige papier zweefvliegtuig

Maken van een eenvoudige papier zweefvliegtuig

Hallo! Dit is mijn eerste instructable en ik ga u tonen hoe te maken van een eenvoudige papier zweefvliegtuig dat goed vliegt. Sorry voor de beelden (ik heb hen in de verf omdat ik niet een camera vinden kon).Dankzij Aaron Hunt (aka. guessware) voor
Maken van een eenvoudige applicatie met behulp van de Win32 API

Maken van een eenvoudige applicatie met behulp van de Win32 API

vaak de gemakkelijkste manier om te leren hoe met een programmeer-interface is door codering van een eenvoudig voorbeeld. In dit geval zullen we moeten leren de Win32 API bij de programmering van een eenvoudig integer rekenmachine met behulp van Visu
Maken van een eenvoudig Operating System

Maken van een eenvoudig Operating System

Ooit wilde maken van een besturingssysteem? Ooit afgenomen om te weten hoe de opdrachtregel besturingssystemen werken? Alles is hier!Dus we make a basic Operating System in C#, maak je geen zorgen, als u weet zelfs sommige basis van c++ of java, zult
Maken van een eenvoudige laminaat longbow

Maken van een eenvoudige laminaat longbow

Dit is een korte handleiding over hoe te maken van een zeer eenvoudige laminaat longbow. Als aan het einde van deze tutorial, hebt u vragen die niet worden beantwoord, of u meer gedetailleerde instructies over Hoe te een longbow maken wenst, check ou
Maken van een eenvoudige koperen Bowl

Maken van een eenvoudige koperen Bowl

Don't love u de kleur en de textuur van een handgemaakte koperen kom?Een eenvoudige, kleine ondiepe kom om verandering, paperclips of sleutels - te houden of gewoon om te mediteren over terwijl je op een conference call kunt u gemakkelijk maken.Stap
Maken van een eenvoudige en gemakkelijke houtskool / kolen Forge

Maken van een eenvoudige en gemakkelijke houtskool / kolen Forge

In dit instructable leert u hoe te maken van een houtskool / kolen brandend forge van firebrick, een paar stalen sanitair onderdelen, een staalplaten, sommige cinder blokken en een blowerHelaas ik liep uit geld voordat ik kon afmaken de Smidse, in to
Het maken van een eenvoudige spybug.

Het maken van een eenvoudige spybug.

Hier een eenvoudig instructable te maken van een FM-spybug van een paar gemeenschappelijke componenten. Het moeilijkste deel in deze is het maken van de PCB. U annuleerteken uitsluitend toepassing perf halfpension wel als u perfer. Laten we beginnen!
Maken van een eenvoudige Box

Maken van een eenvoudige Box

IntroIn dit project, zal ik tonen u hoe maak je een eenvoudige, maar krachtige doos, ontworpen voor het opslaan van om het even wat van tools voor zware materialen. Een perfecte oplossing voor opslag van de workshop.Aangezien de workshop werd overstr
Het maken van een eenvoudig computerspel.

Het maken van een eenvoudig computerspel.

Hallo, heb je ooit wilde maken van een video game zonder te hoeven geen nieuwe codes of vaardigheden leren? Goed hebt u, u aan de wright plaats gekomen. Maar eerst moet u een hotmail-account maken.Stap 1: Waar aan de slag? Ga naar Popfly.com en klik
Maken van een eenvoudige mes met schede pvc

Maken van een eenvoudige mes met schede pvc

ik heb toevallig een gloednieuwe cirkelvormig zaagblad tegenkomen maar is dat ik niet de eigenaar ik circulaire ik heb een gebruik voor het zodat ik desided om het te maken in een eenvoudige mes.Ik wilde niet te gaan door de moeite van warmte behande
Maken van een eenvoudige kruk/Bank/salontafel/dressoir

Maken van een eenvoudige kruk/Bank/salontafel/dressoir

dit is een eenvoudige instructie van hoe met behulp van standaard gieten van een houtzagerij kunt u uw eigen meubels. Het is mogelijk om ze te maken zonder elektrische gereedschap (maar natuurlijk het is sneller en het resultaat is nauwkeuriger als j
Maken van een eenvoudige Laser-gesneden-Box met een ondersteunende bodem

Maken van een eenvoudige Laser-gesneden-Box met een ondersteunende bodem

ik was moe van het werken met mijn rommelige bureaulade, dus na het werken met een laser cutter voor een paar weken heb ik besloten om het probleem oplossen door het maken van een nette opbergdoos dat alles een plaats zou geven. Het grootste probleem
Maken van een eenvoudig LED-Lamp

Maken van een eenvoudig LED-Lamp

over het maken van een zeer eenvoudig LED-Lamp ongeveer 30 seconden, met behulp van een buffer-laptopbatterij instructable.