Externe auto Starter via Bluetooth (5 / 8 stap)

Stap 5: Arduino Code


Waarschijnlijk de meest intimiderend stap voor mij in dit hele proces was het schrijven van de Code van de Arduino. Zoals eerder gezegd, was deze code schrijven stuff allemaal nieuw voor mij. Het ging echter vrij snel met het stroomdiagram in de hand.

U zult opmerken in het eerste deel van de code dat twee verschillende signalen kunnen worden gebruikt om de opdracht van de start van de auto worden geactiveerd:

1) een "s" te sturen naar de Arduino via de bluetooth-module (die fungeert als een seriële poort) kan worden gebruikt voor het initiëren van de eerste reeks. Dit wordt gebruikt bij het starten van het voertuig vanaf een terminal die op een computer.

2) het instellen van een pin op de Arduino hoge zal ook starten voor de eerste reeks. Deze invoer pin op de Arduino is aangesloten op de Bluetooth-bestuur. Bij het gebruik van app Daisy on/off van een Android telefoon, de app zorgt ervoor dat de pin op de Bluetooth-bestuur te hoog, die op zijn beurt zal worden gezien door de Arduino en veroorzaken de startende volgorde om te beginnen.

Hier is mijn code:

/ * Programma: externe Auto Start
* Auteur: Chris Johnson
* Herzien: 5 December 2011
*
* Ingangen: BT Module "ON" signaal
* BT Module "OFF" signaal
* Voertuig RPM Sensor
* Voertuig neutrale positie Sensor
* Voertuig snelheidssensor
* Seriële poort
* Uitgangen: Ontsteking Control Relay
* Accessoire controle Relay
* Starter controle Relay
* Koppeling schakelaar veiligheidsrelais
* Seriële poort
*/

KOMT OVEREEN
Ingangen
int BT_on = 2;                                               Bluetooth "ON" signaal inputed naar pin 2
int RPM_sens = 3;                                       Voertuig RPM sensor ingevoerd op pin 3
int neutral_sens = 4;                                    Voertuig neutrale positie Sensor ingevoerd op pin 4 (12 volt +/-0,5 volt)
int speed_sens = 5;                                     Voertuig snelheid Sesor ingevoerd naar pin 5
int BT_off = 7;                                                Bluetooth "OFF" signaal inputed op pin 7

Uitgangen
int ign_ctrl = 8;                                               Ontsteking Control relais gecontroleerd door pin 8
int start_ctrl = 9;                                             Start controle relais gecontroleerd door pin 9
int clutch_sfty = 10;                                       Koppeling veiligheidsrelais Swithc gecontroleerd door pin 10
int acc_ctrl = 11;                                            Accessoire controle relais gecontroleerd door pin 11

unsigned long start_time;                            Variabele gebruikt voor het opslaan van het tijdstip waartegen de starter is verloofd

gegevens char = 0;                                                 Variabele gebruikt voor het opslaan van gegevens die worden ontvangen via de seriële poort

DEFINITIES
VOID Setup
{
pinMode (BT_on, INPUT);                          Define pins inputs en outputs
pinMode (RPM_sens, INPUT);
pinMode (neutral_sens, INPUT);
pinMode (speed_sens, INPUT);
pinMode (BT_off, INPUT);

pinMode (ign_ctrl, OUTPUT);
pinMode (start_ctrl, OUTPUT);
pinMode (clutch_sfty, OUTPUT);
pinMode (acc_ctrl, OUTPUT);

Serial.begin(9600);                                     Initialiseren van de seriële poort met een baud-rate van 9600
}

PROGRAMMA

Lus functie: wachten op een opdracht START te ontvangen (command via seriële poort of
spanning toegepast op BT_on pin)
void loop
{
Als (Serial.available() > 0) //Check als een seriële gegevens beschikbaar
{
gegevens = Serial.read();                                Momenteel beschikbare seriële gegevens gegevensvariabele instellen "
check();                                                      Ga naar "controleren" functie neer als seriële gegevens beschikbaar
}
else if (digitalRead(BT_on) == HIGH) //Check als BT Module heeft ingesteld pin hoge
{
begin();                                                       Begin beginnen volgorde als pin is hoog
}
anders
{
loop;                                                          Herhaal deze functie totdat er een START-opdracht is ontvangen
}
}

Controleer functie: Test voor de juiste tekenset van BT
VOID check()
{
Als (gegevens == de ') //Check als een "s" is verstuurd
{
begin();                                                  Begin beginnen volgorde als "s" is verstuurd
}
anders
{
Serial.println ('Invalid Command');  Als iets anders dan een "s" is verzonden, het foutbericht 'Invalid Command stuurt'
loop;                                                    Terug naar begin van programma
}
}

Functie beginnen: zet accessoire en ontsteking
VOID begin()
{
delay(500);                                     0,5 vertraging van seconden
digitalWrite (acc_ctrl, hoge);        Draai accessoire op
digitalWrite (ign_ctrl, hoge);         Schakel ontstekingsbronnen ON
delay(500);                                      0,5 vertraging van seconden
Neutral();                                          Ga naar "neutrale" funciton
}

Neutrale functie: controleren of de overdracht van het voertuig in de neutrale stand is.
Blijven als het voertuig in neutraal is. Afrit start volgorde als voertuig is in de versnelling.
VOID neutral()
{
Als (digitalRead(neutral_sens) == HIGH) //Continue alleen als voertuig in neutraal
{
Start();                                                                Voertuig start als in neutraal
}
anders
{
Serial.println ("voertuig niet in neutraal");       Als in de versnelling, "Voertuig niet in neutraal" foutbericht verzenden
vehicle_off();                                                     Afrit start volgorde als in de versnelling
}
}

Startfunctie: Engage starter alleen als de motor nog niet actief is.
VOID start()
{
int RPM = pulseIn (RPM_sens, hoog, 1000000);    RPM-waarde krijgen
if(rpm == 0) //Continue reeks alleen starten als voertuig wordt niet uitgevoerd.
{
digitalWrite (clutch_sfty, hoge);             "Druk" koppeling
digitalWrite (acc_ctrl, laag);                   Accessoire uit te schakelen
delay(500);                                               0,5 vertraging van seconden
digitalWrite (start_ctrl, hoge);                Engage starter
start_time = millis();                                / / Capture de tijd waartegen de starter was verloofd
starter_engaged();                                 Ga naar Starter_engaged functie
}
anders
{
Serial.println ('Vehicle al actief");  "Voertuig al Running" bericht sturen als de motor was eerder gestart
vehicle_off();                                                    Afrit start volgorde als gebeurd
}
}

Starter_engaged functie: losraken van starter, nadat het voertuig is voorgerecht of als starter uitschakelen
voertuig heeft niet binnen 4 seconden gestart.
VOID starter_engaged()
{
int RPM = pulseIn (RPM_sens, hoge);            RPM-waarde krijgen
Als (RPM > 1000) //Continue als motor heeft gestart (bereikte laag stationair)
{
Serial.println ("Engine uitgevoerd");                  Signaal "Motor Running" nadat de motor is gestart
disengage_starter();                                        Ga naar disengage_starter, nadat de motor loopt
}
anders als ((start_time+4000) < millis()) //Test als 4 seconden verstreken is sinds de starter was verloofd
{

disengage_starter_timeout();                 Ga naar disengage_starter als motor niet binnen 4 seconden van starter betrokkenheid heeft gestart
}
anders
{
starter_engaged();                                    Herhaal deze functie als motor niet gestart is of 4 seconden niet is verstreken
}
}

Disengage_starter functie: losraken van de starter.
VOID disengage_starter()
{
digitalWrite (start_ctrl, laag);                   Losraken van de starter
digitalWrite (clutch_sfty, laag);               "Release" de koppeling
digitalWrite (acc_ctrl, hoge);                   Draai accessoire op
vehicle_off_sense();                                Ga naar vehicle_off_sense functie
}

Disengage_starter_timeout functie: losraken van de starter (gebruikt na 4 seconden is verstreken zonder dat een motor start)
VOID disengage_starter_timeout()
{
digitalWrite (start_ctrl, laag);                                 Losraken van de starter
digitalWrite (clutch_sfty, laag);                              "Release" de koppeling
Serial.println ("voertuig Start mislukt");      Verzenden "Voertuig Start mislukt"
vehicle_off();                                                            Afrit start volgorde
}

Vehicle_off_sense functie: wacht op een "off" signaal worden verzonden terwijl de motor draait.
Als geen "off"-signaal ontvangen, schakelt het voertuig na 30 minuten is verstreken sinds het begin van de motor.
VOID vehicle_off_sense()
{
int bewegen = pulseIn (speed_sens, hoge);                Krijgen van de snelheid van het voertuig
Als (bewegende > 1000) //Check als het voertuig in beweging is
{
Serial.println ("voertuig uit--verkeer");           Stuur "Voertuig uit--beweging" bericht ifvehcile bewegende
vehicle_off();                                                               Voertuig uitschakelen als er bewegende
}
anders als (start_time + 1800000 < millis()) //Check als 30 minuten is verstreken sinds de start van de motor
{
Serial.println ("voertuig uit--automatische time-out");  "Voertuig uit--automatische time-out" bericht sturen als de motor is geweest
draaien voor 30 minuten
vehicle_off();                                                                    Voertuig uitschakelen als de motor draait gedurende 30 minuten
}
anders als (Serial.available() > 0) //Check als een signaal is verzonden via seriële data
{
gegevens = Serial.read();                                                      Seriële gegevens op te slaan seriële verzonden
Als (gegevens == ' o ') //Check als signaal is een OFF-opdracht ("o")
{
Serial.println ('Vehicle--gebruiker geboden af");   "Voertuig uit--gebruiker geboden" bericht sturen als seriële data de OFF is
opdracht ("o")
vehicle_off();                                                                     Voertuig uitschakelen als u opdracht uit wordt verzonden via seriële data
}
}
else if (digitalRead(BT_off) == HIGH) //Check als OFF opdracht is verstuurd via BT module
{
Serial.println ('Vehicle--gebruiker geboden af");     "Voertuig uit--gebruiker geboden" boodschap als OFF
opdracht is verzonden
vehicle_off();                                                                       Voertuig uitschakelen als u opdracht uit werd gestuurd via BT module
}
anders
{
vehicle_off_sense();                                                   Herhaal deze functie als geen van de bovenstaande voorwaarden voldaan hebben geweest
}
}

Vehicle_off functie: de vechile uitgeschakeld en begint het hele programma opnieuw
VOID vehicle_off()
{
digitalWrite (ign_ctrl, laag);                           Ontsteking uitschakelen
digitalWrite (acc_ctrl, laag);                           Accessoire uit te schakelen
loop;                                                Programma (zoek opdracht start) herhalen
}

Gerelateerde Artikelen

Spark Core activeert een externe auto Starter via WiFi

Spark Core activeert een externe auto Starter via WiFi

Externe Starters op auto's zijn geweldig! Ze warm uw auto tijdens de winter en koel in de zomer. Het is leuk om te hebben een afstandsbediening, maar wat als je wilt om te werken verder weg?In mijn kantoor, mijn afstandsbediening niet bereiken helema
Uw externe auto starter verbinden met uw RPi\Arduino

Uw externe auto starter verbinden met uw RPi\Arduino

Wat u nodig hebt:MaterialenEen extra externe auto-starterDraadMicrocontroller \ computer met GPIO (Raspberry PI, Beagle Bone Black, etc...)NPN-Transistor (ik gebruikte een PN2222)Een weerstand (ik gebruikte 1 K Ohm. andere waarden zal waarschijnlijk
Arduino auto gecontroleerd via Bluetooth

Arduino auto gecontroleerd via Bluetooth

Alles wat die we weten dat Arduino een uitstekende prototyping platform, is voornamelijk omdat het een vriendelijke programmeertaal gebruikt en er zijn een heleboel extra ongelooflijke onderdelen die ons grote ervaringen bieden.We kunnen de Arduino t
Bluetooth Garage deuropener & auto Starter

Bluetooth Garage deuropener & auto Starter

Als u als me bent, u bijna altijd draag uw telefoon of zijn vaak op een computer. Ik vind het vaak handiger als ik met de dingen om me heen als de deuren van de garage auto starter, sprinklers, elektrische dekens, decoraties voor de feestdagen, etc.
Een ander Arduino afstandsbediening auto bestuurd door Android telefoon via Bluetooth-Module

Een ander Arduino afstandsbediening auto bestuurd door Android telefoon via Bluetooth-Module

Deze tutorial gaat door het opzetten van de Arduino IDE voor gebruik met een Adafruit motor shield kloon board, alsmede het opzetten van een oude RC auto, zodat het kan worden gecontroleerd met een android telefoon via bluetooth. De Code voor de RC a
Hoe u kunt besturen van een auto van de arduino via Bluetooth (voor beginners)

Hoe u kunt besturen van een auto van de arduino via Bluetooth (voor beginners)

Alles wat die we weten dat Arduino een uitstekende prototyping platform, is voornamelijk omdat het een vriendelijke programmeertaal gebruikt en er zijn een heleboel extra ongelooflijke onderdelen die ons grote ervaringen bieden.We kunnen de Arduino t
Controle van de Arduino met Android telefoon via Bluetooth

Controle van de Arduino met Android telefoon via Bluetooth

Hallo mensen, hier kunt u leren hoe u kunt besturen Arduino met Android telefoon via Bluetooth. U kunt uw smartphone als een afstandsbediening voor u verlichting van het huis systeem of u kunt gebruiken als een drone externe enz.Om de verbinding tuss
Android via Bluetooth verbinden met de Arduino Uno

Android via Bluetooth verbinden met de Arduino Uno

In dit project wordt een seriële Bluetooth-module gebruikt voor het maken van een verbinding tussen de Arduino Uno en een Android app die ik heb met MIT App uitvinder gemaakt.Arduino luistert naar de opdrachten aan het licht van enkele LED's of weerg
CxemCAR 1 - Android Control RC Car via Bluetooth

CxemCAR 1 - Android Control RC Car via Bluetooth

dit is een opensource-project van RC auto met controle van Android telefoon via Bluetooth. De controller wordt gebruikt met .NET Micro Framework: FEZ Panda II, maar u kunt elke controller werkt met .NET Micro Framework core (Netduino, GHI elektronica
Mindflex EEG met onbewerkte gegevens via Bluetooth

Mindflex EEG met onbewerkte gegevens via Bluetooth

De Mindflex (en Mindflex Duel--de bijbehorende hardware wordt verondersteld hetzelfde) speelgoed kunt u bepalen van de hoogte van een bal met mentale concentratie. Ik zal uitleggen hoe te koppelen van een Bluetooth-module voor $10, zodat deze in een
Een kopie van uw foto's en video's in uw Androïde telefoon verzenden met Raspberry Pi via Bluetooth

Een kopie van uw foto's en video's in uw Androïde telefoon verzenden met Raspberry Pi via Bluetooth

IntroductieDit instructable gebouwd op een eerder instructable "Turn Raspberry Pi in een Bluetooth-apparaat' die ik heb gemaakt.De foto's en video's op mijn Android telefoon back-up automatisch naar Google + foto wolk. Ik wil echter een kopie opslaan
Control servo via bluetooth

Control servo via bluetooth

Een servomotor is een stuk handig in DIY projecten de reden is dat u de hoek van uw servomotor door middel van verschillende opdrachten kunt controleren. Vandaag zou ik vertellen u hoe u kunt besturen van uw servomotor draadloos via bluetooth. Wij zo
Regeling van de aansluiting van de stroomvoorziening van uw smartphone via Bluetooth Smart

Regeling van de aansluiting van de stroomvoorziening van uw smartphone via Bluetooth Smart

Slimme stopcontact via Arduino, wat zou gemakkelijker. Deze macht socket controle via Bluetooth, smartphone of tablet gebruikt.Stap 1:Ter uitvoering van het project, gebruikten we de volgende onderdelen:-Arduino UNO of compatibel board.-Relais module
Externe auto controle

Externe auto controle

Dit project bestond in de ontwikkeling en het creëren van een auto die kan worden gecontroleerd door middel van arduino, met behulp van een Android app. Het ging om de integratie van verschillende componenten en een code om een functionele project te