Remote control (17 / 17 steg)

Steg 17: Uppdatera :) Seriell kommunikation protokoll



Eftersom den anslutning delen av min kod var inte så bra och jag sett att bilen får bara 1 från 5 paket med data att fjärrkontrollen sända den jag tryd att göra någon form av protokollet så bilen och remote skicka förfrågningar och ge feedback om data var komplett eller sånt och också kontrollera anslutningsstatus och försöka återansluta om frånkopplad.

På hårdvara delen jag la till 3 ledde på fjärrkontrollen, en indikera anslutningsstatus och de andra 2 när du sänder eller tar emot data, lysdioderna är ansluten till 3 digitala pins

Fjärrparten ansluta funktion:

void connect() {
IF(Serial.available() > 0) {
byte först = Serial.read();
IF(First == request_connect) {
Serial.flush();
Serial.write(OK);
connect_accepted = 1;
}
om (första == request_data & & connect_accepted == 1) {
anslutna = 1;
connect_accepted = 0;
Send_data();
}
}
}

Receiver(Car) sidan ansluta funktion:

void connect() {
IF(Serial.available() > 0) {
IF(Serial.Read() == ok) {
anslutna = 1;
Delay(10);
Serial.write(request_data);
Serial.flush();
}
}
annat {
Delay(100);
Serial.write(request_connect);
}
}

Som ni ser bilen skicka request_connect tills fjärrkontrollen skickar ett "ok" sedan bil uppsättningar anslutningen och skicka begäran om data. Fjärrkontrollen bara vänta på request_connect och ta bort resten av seriell data som kan vara tillgängliga (eftersom bilen bara skicka request_data varje 100ms tills det blir ok), skicka "ok" och uppsättningar connect_accepted sant så, bara bara när det får request_data ställer in anslutningen sant och start skickar data.

Fjärrparten anslutning funktion

void communication() {
om (connected){digitalWrite(ledConnected,HIGH);} //light upp connec ledde
annat {digitalWrite (ledConnected, låg);}
om (kör) {/ / kör, du kanna sätta den till false när du gör några setins i menyerna remote
IF(!Connected) {
last_time_recived = millis();
Connect();
}
IF(Connected) {
om (Serial.available() > 0) {
int first_byte = Serial.read();
lcd.setCursor(0,5); debug
LCD.Print(first_byte); debug
växel (first_byte) {
fall request_data:
last_time_recived = millis();
Send_data();
digitalWrite (ledSend, hög); Lys upp skicka ledde
bryta;
fall inkommande:
last_time_recived = millis();
Recive_data();
digitalWrite (ledRecive, hög); Lys upp emot ledde
bryta;
fall recived_ok: //case får du en registrerad ok feedback skicka begäran data
last_time_recived = millis();
Serial.write(request_data);
bryta;
fall err_max_packet_overflow: //case bilen säger du skicka för många byte
last_time_recived = millis();
Serial.flush();
lcd.setCursor(0,5); debug
LCD.Print("RRerr_max_packet"); debug
Send_data();
bryta;
fall err_data_overflow: //case bilen säger du skicka för många värden
last_time_recived = millis();
Serial.flush();
lcd.setCursor(0,6); debug
LCD.Print("RRerr_data_"); debug
Send_data();
bryta;
standard:
Serial.flush();
}
}
}
}

}

Mottagare communication() är nästan samma, jag lägger hela koden i en fil.

Fjärrparten send_data()

void Send_data() {
Serial.write(Incomming); Skicka en head's up så bilen kan gå till recive_data()
Serial.write(nr_data_send); nr av data att skicka (om mer skickas ett för många värden-fel)
Serial.write(Throttle); Skicka värdena
Serial.write(break_);
Serial.write(stear);
Serial.write(EEPROMReadInt(76)); läsa från eprom värdet
Serial.write(EEPROMReadInt(72));
}

Fjärrparten receive_data()

void Recive_data() {
IF(Serial.available() > 0) {
medan (Serial.available() > 0) {
Paket [Cur_Packet_Index ++] = Serial.read(); SAVEING data i en matris matrisen måste vara
Delay(2); tillräckligt länge för att lagra alla uppgifter
om (Cur_Packet_Index > = MaxPacketNum) {//send alltför många byte fel
Serial.write(err_max_packet_overflow);
Serial.flush();
lcd.setCursor(0,5); debug
LCD.Print("err_max_packet"); debug
Cur_Packet_Index = 0;
bryta;
}
}
om (paket [0]! = Cur_Packet_Index - 1) {//send för många värden fel
Serial.write(err_data_overflow);
Serial.flush();
lcd.setCursor(0,6); debug
LCD.Print("err_data_"); debug
}
annat {//save värden om inget fel
car_bat_motor = paket [1].
car_bat_controler = paket [2].
RPM = paket [3].

last_time_recived = millis(); Ange den tid referensen för time out för anslutning
Serial.write(recived_ok);
}
Cur_Packet_Index = 0;
}

}

Jag lägger här fjärrkontrollen och bil arkivera, uppdaterad och också bara meddelande filer för mottagaren en fjärrkontroll, och du kan hitta dem alla på google drive här

Se Steg
Relaterade Ämnen

Remote Control sällskapsdjur dörren

Dilemma:6 på morgonen den 1 januari. Du festade till 03: 00. Nu ska du sova det off när du väcks av ett påträngande avlysningen kommer från bakdörren. Din hund behöver gå ut och ta hand om sin verksamhet, men du är varm, skön, och golvet är kallt och...

Remote Control pipig leksak

detta är en enkel leksak för sällskapsdjur. Jag kom upp med detta att underhålla min hund. Du kan använda olika storlek fjärrkontroll bilar för olika stora hundar och olika typer av terräng.Steg 1: material Vad som behövs:Remote Control bilPipig leks...

Laddning Remote Control Robot

laddning Remote Control RobotFÖRST AV ALLT VILL JAG KLARA DIN ALLA TVIVEL INNAN DU BÖRJAR. JAG ÄR INTE NÅGON TEKNISK OCH MEKANISK EXPERT I MASKIN SÅ DU INTE BEHÖVER SPENDERA 100 DOLLAR I DETTA PROJEKT DET ÄR SÅ BILLIGT OCH ENKELT PROJEKT. Du kan bygg...

Spela in IR-koder för någon fjärrkontroll för användning med Linux Infrared Remote Control (LIRC) på Raspberry Pi GPIO-baserade infraröd mottagare

IntroduktionDe fjärrkontroller som är föräldralösa när enheten kontrollerar de kan slutat fungera återanvändas på din Raspberry Pi. Efter att ha avslutat detta instructable, du kan bli intresserad i försökande ute den följande instructables:Återanvän...

Installera Linux Infrared Remote Control (LIRC) paket

IntroduktionLinux Infrared Remote Control (LIRC) är en svit av program som styr den IR hårdvaran av Pi-hallon. Lirc debian-paketet innehåller ett antal program:ircat - Skriv ut strängar när du trycker på knapparnairrecord - ansökan om inspelning IR-k...

Hur man gör en Remote Controlled Stunt bil hemma

I detta Instructable lär vi att göra en fantastisk gadget som varje kille önskat och hade också iallafall försökte en gång göra det under hans barndom. Det är inget annat än en Remote Controlled bil och gissa vad, i detta instructable, vi kommer inte...

Remote Controlled Arduino Car

Jag har alltid gillat att gå till lägren, etc där det finns många av mina vänner, jag har alltid gillat att ha en massa vänner och en dag när jag letade upp youtube för fjärrkontroll bilar, och hur de gjordes, jag listat ut att jag kunde göra en till...

Öka känsligheten för IR Remote Control

detta instructables är att guida dig på hur du kan förbättra känsligheten av IR-fjärrkontrollen. Modell av fjärrkontrollen är AXD7461 för din information.Steg 1: Höljet blockerar IR-signalen Gemensamma anledningen till att IR-fjärrkontrollen inte är...

RS-232 IR-mottagare i en seriell anslutning (LIRC) dator Remote Control

detta instructable avser att visa dig hur du skapar en liten och enkel infraröda (IR) mottagare för din dator. Konfigurationen av programvaran är utanför omfånget för detta instructable, men jag använder denna mottagare med LIRC (Linux Infrared Remot...

Remote Control mörkar för $20

Så jag var trött på den mödosamma uppgiften att manuellt öppna och stänga mörkarna varje dag... och jag hade gjort motoriserade persienner innan med en kontinuerlig revolution servo vända staven när jag var liten men som inte ser trevligt med en serv...

Remote Control Robot Arm

detta är talet High School Science Olympiad Robot Arm som tävlade på Minnesota 2012 staten Science Olympiad turneringen med 32 andra lag. Jag byggde och körde denna fjärrkontroll robotarm för turneringen, utsläppande 8 (på grund av oförutsedda proble...

LinkSprite Ethernet Shield + yeelink WEB remote control IO

Ethernet-Shield kan omedelbart Internetkonnektivitet för Arduino projekt. En ombord Wiz5100 ethernet styrenhet hanterar upp till fyra TCP och UDP-anslutningar, stack bara det till en Arduino att skapa dina egna enheter på nätverket. Enkelt kontroller...

Grunderna i förvandlar ditt Remote Controll fordon till ett autonomt System (Drone) genom att använda en Arduino

jag började detta projekt med målet att billigt vrida min RC helikopter till något av en UAV eller åtminstone att passa vissa sensorer att minska kollisioner och andra "mis haps."Nu är tyvärr i början av projektet missbedömde jag min lilla helik...

Trådlös Phone Remote-Controlled LED Strips: RasPi w / Fadecandy driver w / WS2811/WS2812 adresserbara LED Strips med TouchOSC Smartphone App med Iphone eller Droid

Här går en allt mer omfattande design översikt över mitt senaste projekt. Nedan är en video som jag har lagt upp visar vissa funktioner:Den ursprungliga idén progressionen gick ungefär så här:Adresserbara lysdiodsrand (s vi vill alltid ha mer skinand...

Remote control Gripper bot

Ett par månader tillbaka min son bad mig att göra honom en avlägsen kontrollerade bot. Han gav mig en lista över vad han ville och vi minskat ner en hanterbar lista det :) Detta är vad jag hamnade byggnaden för honom...Möt klämmor, en mobil remote gr...

Teddy Bear Remote Control

nallebjörn fjärrkontrollen sitter bra på din soffa eller säng och kan användas för att styra din iPod eller dator. Det är en söt ändring till en RF-fjärrkontroll och är förvånansvärt mjuk! Projektet är svårt att göra och kräver en hel del udda materi...

Remote control via GPRS/GSM SMS(Arduino)

fjärrkontroll, särskilt när detta nr ethernet och Wifi i den utomhus, har varit en mycket djupgående saker tidigare. När jag var barn, bilden jag alltid som jag har en utrustning som kan styra alla vitvaror. Nu, detta blir verklighet, med Arduino och...

Touch skärmen Soundbar IR Remote Control

Min son har Cambridge Audio Sound bar med en hund tuggade fjärrkontroll! Jag sa jag skulle prova och göra en ny fjärrkontroll!Jag har testat detta instructable (på / av- & ljud av) på min Samsung TV och det fungerar bra, jag har ännu att testa den på...

Kindle Web Remote Control

BeskrivningDetta är en systemlösning till remote Sidändring på en kindle. Kort sagt, kör jag en webbserver från min kindle. Detta tjänar ett cgi-skript som imiterar en knapptryckning på min kindle. Jag åt skript från en webbläsare på min telefon.Dett...

TV Remote Controlled bil

ingenting är värre än att förlora den registeransvarige som följde med din fjärrkontroll bil. Ersätta att sucker med en arduino och en fjärrkontroll som alltid verkar vara runt, TV-fjärrkontroll!Steg 1: material Material för detta projekt är ganska r...