Remote control (17 / 17 stap)

Stap 17: Update :) Seriële communicatie protocol


Omdat het verbindingsdeel van mijn code niet zo goed was en ik gezien dat de auto ontvangen slechts 1 uit 5 gegevenspakket dat remote sturen ik tryd te maken een soort van protocol zodat de auto als de externe aanvragen sturen en feedback geven als de gegevens compleet was of soort dingen en ook de status van de verbinding en probeer opnieuw verbinden als de verbinding verbroken.

Op het hardware gedeelte dat ik heb toegevoegd 3 geleid op de afstandsbediening, een geven de status van de verbinding en de andere 2 bij het verzenden of ontvangen van gegevens, de LED's zijn aangesloten op 3 digitale pinnen

Remote kant sluit functie:

 void connect(){ if(Serial.available() > 0){ byte first = Serial.read(); if(first == request_connect){ Serial.flush(); Serial.write(ok); connect_accepted = 1; } if (first == request_data && connect_accepted == 1){ connected = 1; connect_accepted = 0; Send_data(); } } } 

Receiver(Car) kant sluit functie:

 void connect(){ if(Serial.available() > 0){ if(Serial.read() == ok){ connected = 1; delay(10); Serial.write(request_data); Serial.flush(); } } else{ delay(100); Serial.write(request_connect); } } 

Zoals u dat de auto de request_connect zien kunt totdat de afstandsbediening een "ok" dan de auto sets stuurt de verbinding en stuur gegevensaanvraag. De afstandsbediening gewoon wachten van de request_connect en verwijder de rest van seriële gegevens die mogelijk beschikbaar (omdat de auto Stuur request_data elke 100ms totdat het de ok), stuur de "ok" en sets connect_accepted true, maar alleen als het ontvangen de request_data verbinding waar en start verzenden gegevens ingesteld.

Remote kant verbinding functie

 void communication(){ if (connected){digitalWrite(ledConnected,HIGH);} //light up the connec led else {digitalWrite(ledConnected, LOW);} if (running){ //running, you can set it to false when you make some setins in the remote menus if(!connected){ last_time_recived = millis(); connect(); } if(connected){ if (Serial.available() > 0){ int first_byte = Serial.read(); lcd.setCursor(0,5); //debug lcd.print(first_byte); //debug switch (first_byte) { case request_data: last_time_recived = millis(); Send_data(); digitalWrite(ledSend, HIGH); //light up the send led break; case incomming: last_time_recived = millis(); Recive_data(); digitalWrite(ledRecive, HIGH); //light up the receive led break; case recived_ok: //case you get a recive ok feedback send request data last_time_recived = millis(); Serial.write(request_data); break; case err_max_packet_overflow: //case the car say you send too many bytes last_time_recived = millis(); Serial.flush(); lcd.setCursor(0,5); //debug lcd.print("RRerr_max_packet"); //debug Send_data(); break; case err_data_overflow: //case the car say you send too many values last_time_recived = millis(); Serial.flush(); lcd.setCursor(0,6); //debug lcd.print("RRerr_data_"); //debug Send_data(); break; default: Serial.flush(); } } } } } 

De communication() van de ontvanger is bijna hetzelfde, ik zet de gehele code in een bestand.

Remote kant send_data()

 void Send_data(){ Serial.write(incomming); // send a head's up so the car can go to recive_data() Serial.write(nr_data_send); //nr of data to send (if more it will send a too many values error) Serial.write(throttle); // sending the values Serial.write(break_); Serial.write(stear); Serial.write(EEPROMReadInt(76)); // read from the eprom the value Serial.write(EEPROMReadInt(72)); } 

Remote kant receive_data()

 void Recive_data(){ if(Serial.available() > 0){ while (Serial.available() > 0) { packets[Cur_Packet_Index++] = Serial.read(); //saveing the data in an array the array must be delay(2); //long enough to store all the data if (Cur_Packet_Index >= MaxPacketNum){ //send too many byte error Serial.write(err_max_packet_overflow); Serial.flush(); lcd.setCursor(0,5); //debug lcd.print("err_max_packet"); //debug Cur_Packet_Index = 0; break; } } if(packets[0] != Cur_Packet_Index - 1){ //send too many values error Serial.write(err_data_overflow); Serial.flush(); lcd.setCursor(0,6); //debug lcd.print("err_data_"); //debug } else{ //save the values if no error car_bat_motor = packets[1]; car_bat_controler = packets[2]; RPM = packets[3]; last_time_recived = millis(); // set the time reference for time out connection Serial.write(recived_ok); } Cur_Packet_Index = 0; } } 

Ik zet hier de afstandsbediening en de auto-bestanden, bijgewerkt en ook alleen de communicatie-bestanden voor de ontvanger die een remote, en u ze allemaal op google drive hier vinden kunt

Gerelateerde Artikelen

Remote Controlled Confetti kanon

Remote Controlled Confetti kanon

Confetti kanonnen zijn een heleboel plezier. Een explosie van confetti kan een feest beter maken. Maar het is niet altijd handig zijn als iemand naast het kanon te verrekenen. Dus vandaag ga ik u tonen hoe te maken van een externe gecontroleerde conf
DIY Arduino Remote Control en Lego RC voertuig!

DIY Arduino Remote Control en Lego RC voertuig!

UPDATE (8/29/13): dank u lezers voor uw enthousiasme en soort opmerkingen met betrekking tot dit project! Het is een geweldige reis sinds ik begon dit project terug in maart, maar ik ben erg blij met het resulterende product en de opwinding waarmee h
Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Web in te schakelen voor uw interactieve sensoren over desktop, smartphone en tablet apparaten.Deze tutorial beschrijft in detail hoe met de gratis SensorMonkey -service op afstand besturen van een pan en tilt webcam aangesloten op een Arduino met ni
Arduino Remote Control (ARC)

Arduino Remote Control (ARC)

In dit project, zullen we het maken van een Arduino Remote Control (ARC) die elke infrarood (IR) afstandsbediening in hex of enige andere vorm ontcijferen en deze gebruiken om te schakelen LED on/off!Het is een vrij eenvoudig project en zou kunnen wo
Remote Controlled onderzeeër / Underwater ROV

Remote Controlled onderzeeër / Underwater ROV

wat is er leuker dan het verkennen van de diepten van donker, het vinden van nieuwe visplaatsen, boot onderhoud of schat met uw zeer eigen Remote Controlled onderzeeër ontdekken? I 'm gonna worden verwijst naar de extern gecontroleerde onderzeeër als
IOS/Android Remote Controlled Blimp met Video-Feedback

IOS/Android Remote Controlled Blimp met Video-Feedback

In een luchtballon van een oog.Dit project was de blikvanger van mijn artiest In residentie in Instructables.Zoals RC blimps mijn passie zijn, wilde ik zeker doen van sommige blimp project tijdens mijn verblijf op Instructables.  Toen kwam ik de Dens
Hoe aan remote controle van uw iPhone, iPad van computer - via USB

Hoe aan remote controle van uw iPhone, iPad van computer - via USB

Hoe om remote control afstandsbediening,, iPhone iPad vanaf computer verbinding maakt via USB - werken op Windows of MacUw iOS-apparaat moet zijn jailbroken voor dit om te werken. Deze tutorial zal niet gaan over hoe jailbreak uw apparaat.Zorgen voor
Bouwen van een enorme RC MONSTER TRUCK - Golf Cart wielen - bromfiets Motor - Remote Controlled

Bouwen van een enorme RC MONSTER TRUCK - Golf Cart wielen - bromfiets Motor - Remote Controlled

hier is een DIY te bouwen van een enorme RC Monster Truck. U zult moeten hebben een lasser.Ik heb genoten zien remote controlled vrachtwagens een lange weg afgelegd in de afgelopen paar decennia. Ik heb zelfs het bezit verscheidene van hen langs de w
Remote Controlled kreeft

Remote Controlled kreeft

ik weet dit gekke klein kind, alles wat hij wilde voor Kerstmis een externe gecontroleerde Kreeft was.Hij vroeg zijn ouders... hij gevraagd Santa... hij vroeg iedereen die wilde luisteren.Helaas...  "Surf - Remote Controlled kreeft - niet overeenkome
Aflevering 7: Remote Controlled ballon van het Water

Aflevering 7: Remote Controlled ballon van het Water

deze zomer, zorg ervoor dat u bereid bent om het loon van een water gevecht met The Remote Controlled ballon van het Water!De nieuwste creatie van dom uitvindingen zorgt ervoor dat u droge blijven zult terwijl uw vijanden doorweekte krijgen!Gewoon ki
Met behulp van 433 MHz Remote Controlled schakelaars op Arduino

Met behulp van 433 MHz Remote Controlled schakelaars op Arduino

Ik denk dat iedereen weet die extern gecontroleerde schakelaars die in hun meest eenvoudige vorm komen in een aantal (meestal 3) voor switcheable apparaten aansluiten op het lichtnet stopcontact en die ontvangt een stekker van een lamp of iets en dat
Remote controlled Robotic Arm (MeArm) met behulp van pfodApp

Remote controlled Robotic Arm (MeArm) met behulp van pfodApp

Update: 27 augustus 2015Dit project is bijgewerkt met de correcties die nodig zijn om het werk van MeArm betrouwbaar. Deze oplossingen bestaan uita) met behulp van een aanbod van de 5V 3A en het verwijderen van de Uno-polyfuse enb) toe te voegen een
Remote Controlled Band Flyer Lamp

Remote Controlled Band Flyer Lamp

Laten we aftrap dit ding met een paar prejudiciële vragen.Heb je ogen?Marajk ontzagwekkende dingen?Als u hebt ja geantwoord op meer dan geen van deze vragen, dan heb ik het perfecte project voor u!Ik ga u tonen hoe te maken van een externe gecontrole
Remote Controlled Pan en Tilt hoofd

Remote Controlled Pan en Tilt hoofd

ik wilde altijd al een remote controlled pan en tilt kop. Misschien was het voor mijn videocamera, een elastiekje shooter of een waterpistool aimer. Het maakt eigenlijk niet uit wat je op het bovenste dek (zolang het is niet te zwaar), met dit kleine
Remote Controlled grasmaaier

Remote Controlled grasmaaier

Remote controlled grasmaaier.  De maaier dek is een 22 inch Weedeater van WalMart.  De rolstoel motoren zijn verdiensten.  De motoren draaien op 12 volt en de batterij wordt opgeladen door de Dynamo van een GM.  De zender is een Futaba T4YF. De snelh