Arduino trådlös programmering med XBee serie 1 eller 2 (2 / 5 steg)

Steg 2: Krets och kod



Detta är den krets som kommer att Händel programmering av Arduino Duemilanove. Lustigt nog, dess baserad på en Arduino mikrokontroller själv. Jag bifogade en bild på schematiskt ifall du inte kan öppna filen eagle.

En bakgrund på banan:
Det mest unika med denna krets är förmodligen det faktum att den använder ett avbrott på digital stift 2 som är ansluten till RX stift målet Arduino (Arduino som är avsett för att programmeras). Detta är att upptäcka den första låg bit av seriell data, som kommer att vara IDE försöker återställa arduino för en skiss uppladdning. IDE går inte att återställa målet Arduino direkt, men det är därför jag tagit förmedlande Arduino (The Arduino som återställer målet Arduino). När ett avbrott utlöses en timer, verkligen en fördröjning funktion, kommer att börja som utlöser en låg till hög puls på D8. I sin tur D8 är ansluten till destination Arduino Återställ linje och kommer att få den att återställa.

Jag hittade en bra tid att skjuta var nästan 500ms, eller 499500us att vara exakt. Jag kom på detta genom att övervaka seriell kommunikation och Återställ linje av en Arduino som var ansluten VIA USB till min laptop medan jag laddade upp ett program till det, och prova. Jag postat en bild av resultaten i detta steg, det är en med Matlab programmet fungerar som ett oscilloskop. Detta kan vara en punkt av förbättring, eftersom enligt bilden kan jag förkorta dröjsmålet till 100ms eller 250ms från det första seriella Återställ kommandot. Jag fastnade med 499500us eftersom det fungerade och en halv en andra kortare uppladdning inte var värt en annan timmes felsökning för mig. Du kan se att 499500us inte är ett mycket genral tal att komma fram till. Jag var tvungen att prova 490ms, 495ms, 499ms, 500ms, 501ms, 505ms,... innan jag kom till 499500us.

För att hålla avbrottet från reseting målet Arduino på varje mottagna seriell överförings medan uppladdning jag tagit en timeout av 60-talet. Som verkar vara hur lång tid det skulle ta att ladda upp ännu en ~ 30kb program; den maximala storleken som möjligt. Men tid att ladda upp en 1100 byte program är ca 5s så jag inkluderat en annan avbrott som kommer att stoppa tidsgränsen om en hög spänning har upptäckts på den A0 pin av målet Arduino. Därför, om du tar några kodrader som pulserar en hög nivå på A0 stift i rutinen setup() av din destination Arduino du kommer att avsevärt förkorta tiden mellan inlagda för dina små skisser. Jag programmerat en blå LED-ljus på när timeout är aktiv. Anger att du överför, och inget annat kan överföras på gång.

En sista anmärkning för detta steg. Jag rekommenderar starkt att sätta denna krets på en sköld, och använda de kvinnliga rubrikerna för att montera XBee. Detta kommer inte bara göra din krets mycket kraftigare, ett konstverk, inte permanent kommissionen en XBee, men också fart upp din prototyper. vilket är förmodligen vad du gör när din uppladdning koden tillräckligt ofta till benift från att göra det trådlöst. Om du inte är inte redo löda, ändå, eller inte tror mig lol, kan du alltid breadboard ciruit och använda det sådär. Vilket är vad jag gjorde när jag var prototyper denna krets.

Av någon anledning jag inte kan koppla min kod här, vet du varför? Jag har provat Chrome och Explorer. Så jag klistrade det nedan.

/*
Denna skiss är avsedd att monteras på en Arduino (jag använde en UNO 5v) som kommer att användas
Om du vill återställa en Arduino Duemilanove som är tänkt att trådlöst programmeras. Den har en
avbryta på stift 2 (knuten till RX på destination Arduino att veta när en uppladdning
försök och därför återställa målet Arduino på approriate gång.
En annan avbrott finns på stift 3 (knuten till A0 på destination Arduino) som används
som en signalering pin av programmerade Arduino att berätta denna Arduino som den
Programming process har ingått. Visas ett exempel på en sådan signalering rutin
nedan. För bästa praxis, ta med det som den första raden i din setup() rutin av din
programmerade Arduino.

pinMode (A0, OUTPUT);
digitalWrite (A0, låg);
Delay(1);
digitalWrite (A0, hög);
Delay(1);
digitalWrite (A0, låg);
pinMode (A0, indata);

Detta är emellertid inte nödvändigt, eftersom detta program omfattar en 60s timeout efter
som du kan återigen programmera detta chip. Den tidigare nämnda kod helt enkelt slutar den
timeout, så att du kan ladda upp koden immeadelty efter din tidigare uppladdning. I någon
fall du inte kan ladda upp tills den blå lampan på D4 stängs av.
*/

flyktiga booleska start = false;
flyktiga boolean = false;

statiska byte resetpin = 8;
statiska byte blueledpin = 4;
void setup()
{
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(blueledpin,OUTPUT);
pinMode(resetpin,OUTPUT);
pinMode(13,OUTPUT);
digitalWrite(blueledpin,LOW);
digitalWrite(resetpin,HIGH);

attachInterrupt (0, resetter, låg); denna pin är kopplad till raden RX i andra Arduino
attachInterrupt (1, stopignore, hög); denna pin är kopplad till A0 av andra Arduino
detachInterrupt(1); Men detta avbrott är bara nödvändigt när den första som har utlöst

}

void loop()
{
IF(Startup)
{
detachInterrupt(0); så vi inte Återställ igen mitt i uppladdningen
digitalWrite(resetpin,LOW);

delayMicroseconds(499500); 499500us fungerade bra

digitalWrite(blueledpin,HIGH);
digitalWrite(resetpin,HIGH); få hög för att stoppa reseting Arduino
kanske sätta in en liten fördröjning här
attachInterrupt (1, stopignore, hög);
Start = false;

för (unsigned int jag = 0; jag < 60000; i = i + 50) //delay sammanlagt 60-talet om inte "gjort" stämmer
{
digitalWrite(blueledpin,LOW);
Delay(25);
digitalWrite(blueledpin,HIGH);
Delay(25);
IF(Done) //then stoppa timeout eftersom uppladdningen är klar
{
Jag = 60000;
bryta;
}
}

återställa för nästa kod uppladdning
attachInterrupt (0, resetter, låg);
detachInterrupt(1);
= false;
digitalWrite(blueledpin,LOW);

}
}

void resetter() //triggered endast i början av en uppladdning. T.ex. första låg byten i en uppladdning
{
Start = sant;
digitalWrite(blueledpin,HIGH);
}

void stopignore()
{
= sant;
}

Se Steg
Relaterade Ämnen

Arduino solar storma controller + effektreglering och data loggning online med Xbee WiFi

För ett tag sedan jag började arbeta på en sol laddningsregulatorn, det var baserat på en PIC mikrokontroller, en 20 x 4 tecken display och koden är skriven i assembler. Det fungerade bra och arbetade fortfarande när jag bestämde mig att lägga mer ti...

Programmera en Arduino på språng med din Android-telefon eller surfplatta

genom åren Android har blivit en formidabel mobil plattform som erbjuder en hel del funktioner som tidigare endast finns på datorer. Idag vill jag ge dig ett sätt att skriva, kompilera och ladda upp Arduino program på språng med en Android-enhet.Steg...

AVR programmering med Arduino, AVRdude och AVR-gcc

AVR är en gemensam, billig typ av mikro-controller som kan verka skrämmande att arbeta med, men oroa dig inte! När du har Ställ in grundläggande kunskap och kan de bli inte bara nyttigt, men viktigt att nya projektidéer som du drömmer upp!Denna handl...

Hur du använder repa eller Arduino för att programmera en mBot med Makeblock

För några dagar sedan, gjorde jag en robot av Makeblock. Vi kallar det mBot---en robot som bättre passar utbildning och hemmabruk. Det är enkelt att använda och billigare. Vi anser att detta är den bästa robotic produkten i samma kategori.MBot är utf...

Rowan University mekatronik projekt. Trådlös bil/Xbee serie 2 avsnitt och Xbee flera Potentiometer kontroll

När du väljer xbees, måste du bestämma mellan serie 1 och 2-serien. Serie 1 xbees använda punkt till punkt kommunikation. Detta gör programmering dem enkelt eftersom en serie 1 xbee kan bara prata med en andra serie 1 xbee och inte mer därefter. Seri...

Använda xbees (serie 2) för att styra en motor

med två xbees, en arduino, xbee exploreroch en h-bron, trådlöst styra en likströmsmotor att snurra åt båda hållen (senaste video).Obs: Jag använde xbee jag länkade till, men i en meddelande, i stället för ett nätverk av trådlösa enheter, xbee serie 1...

Från Arduino och perfboard att PCB med fristående MCU

Detta Instructable är en direkt efterföljare av denna. I slutet av detta bygga upp är min skivspelare projekt nästan klar (äntligen).Målet är att utveckla en snygg och arbetar PCB med SMD elektronisk med en arbetande ATtiny85 + programvara!Så är det...

Bearbetning kontroller R/C bil med XBee moduler

detta instructable är en modifiering av min presentation till Bearbetning Chicago gemenskapen vid (EVL) elektroniska visualisering Laboratory, University of Illinois i Chicago den 1 okt 2012. I ämnetBearbetning bibliotek serienBearbetning och trådlös...

Använda Arduino vederbörlig att programmera och testa ESP8266

Om du vill programmera en ESP8266 (Wifi SoC) kommer du normalt använda en USB till seriell adapter som denna. Om du inte har ett men du har kan en Arduino vederbörlig liggandes du rigga Arduino som en bro till programmet och testa ESP8266. Observera...

Hur till restaurera den Arduino UNO R3 ATmega16U2 Firmware med Arduino IDE

Om du har en behov till Re-blixt ATmega16U2 chip med stock firmware återställa Arduino UNO tillbaka till det normala, detta sker ofta på kommandoraden med hjälp av avrdude eller dfu-programmer, eller med programmet Windows Flip. Den lättare väg för m...

Baserade Arduino House värmare Controler med SMS användargränssnitt

projektet innehåller instruktioner och koden för att bygga en uppvärmning controller för ditt hem eller avlägsna land hus, som kan kontrolleras och övervakas av GSM via SMS-kommandon. Jag började att utforma det så vi behövde en pålitlig och Register...

Arduino Bluetooth Garage dörrkontroll med sensorer och anpassningsbara Android App

Använda en arduino till aktivera reläer för att öppna garageportar och elektriska dörrlås.En anpassningsbar Android App, ansluter till arduino via lösenordsskyddade bluetooth-ihopparningen.En bluetooth hc-05 modul tar emot kommandon från en android-t...

Arduino lösenord säkerhetssystem med magnetisk dörr sensorer

I handboken Instructables kommer jag visa dig hur man gör ditt eget lösenord säkerhetssystem genom att använda Arduino uno styrelsen och vissa magnetiska dörren växlar. Jag gjorde min egen krets med hjälp av ATmega328 micro controller men detta är et...

Arduino ultraljud avståndsmätare med I²C lcd uppvisning!

Heji detta projekt vill jag Visa och förklara du en rad sensor med ultraljud och en 20 x 04 LCD-skärm. Jag skrev koden för detta projekt själv och lade till massor av kommentarer, så att alla kan förstå det och använda det för andra projekt (kanske e...

Start programmering med ett flödesdiagram

börjar använda PIC mikrokontrollanter för dina projekt? de är mycket användbara men mycket frustrerande när din programmet bara inte fungerar.Detta är ett sätt att reda ut dina idéer genom att rita ett flödesschema. Detta är hur professionella progra...

Setup Arduino programvara för Atmega328P med intern kristall på skärbräda

en skärbräda Arduino kommer att kräva en Atmega328P styrenhet för dessa instruktioner. Observera "P" i slutet av namnet. Du kan inte använda en Atmega328 eftersom den har en något annorlunda enhet ID-nummer. Det kommer att kräva en olika styrels...

Arduino Nano: Ultraljud Ranger(Ping) med Visuino

Vi alla vill veta hur långt Santa är julen här, och vad passar bättre för detta än Arduino med Ultraljud Ranger.I detta Instructable kommer jag visa dig hur lätt det är att ansluta Ultrasonic Sensor till Arduino och styra med hjälp av Visuino - en en...

Börjar Arduino (hamnar, Pins och programmering)

alla rätt, så jag lär mig konsten att Arduinoing och tänkte jag skulle ta dig med på resan...I denna tutorial:Pins--hålen på din Arduino och hur man använder demHamnar--samlingar av stiftProgrammering--Basic programmering med arduinoSteg 1: Vad du be...

Skapa en åtgärdssekvens med en serie bilder

det är mycket givande att skapa en bild som förmedlar mycket mer än vad kan fångas i en bild. Om det är barnets första steg eller en olympisk gymnast, är processen här förmedla rörelse i en statisk bild.Sammanfoga flera bilder är en form av fotografe...