Démarreur à distance via Bluetooth (5 / 8 étapes)

Étape 5: Arduino Code

Probablement l’étape plus intimidante pour moi dans tout ce processus a été écrit le Code de l’Arduino. Comme j’ai mentionné précédemment, ce code, écrire des choses était tout nouveau pour moi. Toutefois, il est allé assez vite avec l’organigramme dans la main.

Dans la première partie du code, vous remarquerez que les deux signaux différents peuvent être utilisés pour lancer la commande de démarrage de voiture :

1) en envoyant un « s » à l’Arduino via le module bluetooth (qui agit comme un port série) peut être utilisé pour lancer la séquence de démarrage. Il est utilisé lors du démarrage du véhicule depuis un terminal sur un ordinateur.

2) définissant une épingle sur l’Arduino haute lancera également la séquence de démarrage. Cette broche d’entrée sur l’Arduino est connectée à la carte Bluetooth. Lorsque vous utilisez l’application Daisy on/off d’un téléphone Android, l’application provoquera la broche sur le plateau de Bluetooth pour être placée haute, qui à son tour, on le verra par l’Arduino et générer la séquence de départ commencer.

Voici mon code :

/ * Programme : distance Auto Start
* Auteur : Chris Johnson
* Révisé: 5 décembre 2011
*
* Entrées : BT Module signal « ON »
* Signal sonore de « Coupure » Module BT
* Véhicule capteur de régime
* Capteur de Position neutre du véhicule
* Capteur de vitesse du véhicule
* Serial port
* Sorties : Relais de commande d’allumage
* Relais de commande accessoire
* Relais de commande de starter
* Embrayage sécurité interrupteur relais
* Port série
*/

ÉQUIVAUT
Entrées
int BT_on = 2 ;                                               Bluetooth « ON » signal inscription sur broche 2
int RPM_sens = 3 ;                                       Capteur de régime de véhicule entré à la broche 3
int neutral_sens = 4 ;                                    Capteur de Position de neutre de véhicule entré à la borne 4 (12 volts +/-0,5 volts)
int speed_sens = 5 ;                                     Véhicule vitesse Sesor, entré à la broche 5
int BT_off = 7 ;                                                Inscription sur la broche 7 du signal Bluetooth « OFF »

Sorties
int ign_ctrl = 8 ;                                               Relais de commande d’allumage commandé par broche 8
int start_ctrl = 9 ;                                             Relais de contrôle de démarrage contrôlé par broche 9
int clutch_sfty = 10 ;                                       Embrayage sécurité Swithc relais commandé par broche 10
int acc_ctrl = 11 ;                                            Accessoire relais de commande contrôlée par broche 11

start_time long non signé ;                            Variable utilisée pour stocker le temps auquel le démarreur est engagé

char de données = 0 ;                                                 Variable utilisée pour stocker les données reçues via le port série

DÉFINITIONS
void setup()
{
pinMode (entrée, BT_on) ;                          Définir les broches entrées et sorties
pinMode (entrée, RPM_sens) ;
pinMode (neutral_sens, entrée) ;
pinMode (speed_sens, entrée) ;
pinMode (entrée, BT_off) ;

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

Serial.Begin(9600) ;                                     Initialiser le port série avec une vitesse de transmission 9600
}

PROGRAMME

Fonction de boucle : attendez une commande de démarrage être reçu (commande via un port série ou
tension appliquée à la broche de BT_on)
void loop()
{
Si (Serial.available() > 0) //Check si toutes les données séries sont disponibles
{
données = Serial.read() ;                                Variable « Données » données série actuellement disponible
Check() ;                                                      Passer à « vérification » funtion s’il dispose des données série
}
ElseIf (digitalRead(BT_on) == HIGH) //Check si Module BT a mis des broches haute
{
Begin() ;                                                       BEGIN commencer séquence si la broche est élevée
}
d’autre
{
Loop() ;                                                          Répétez cette fonction jusqu'à la réception d’une commande de démarrage
}
}

Vérifier la fonction : Test pour le jeu de caractères approprié de BT
check() Sub
{
Si (données == de ') //Check si un « s » a été envoyé
{
Begin() ;                                                  BEGIN commencer séquence si « s » a été envoyé
}
d’autre
{
Serial.println ("commande non valide") ;  Si rien d’autre qu’un « s » a été envoyé, envoyer message d’erreur « Commande non valide »
Loop() ;                                                    Revenir au début du programme
}
}

Amorcer : mettre l’accessoire et d’allumage
void begin()
{
Delay(500) ;                                     0,5 délai de secondes
digitalWrite (acc_ctrl, HIGH) ;        Allumer accessoire sur
digitalWrite (ign_ctrl, HIGH) ;         Mettez en marche d’allumage
Delay(500) ;                                      0,5 délai de secondes
Neutral() ;                                          Aller à « neutre » funciton
}

Fonction de neutre : vérifier si la transmission du véhicule est en position neutre.
Continuer si le véhicule est au point mort. Sortie début séquence si le véhicule est en train.
Sub neutral()
{
Si (digitalRead(neutral_sens) == haute) //Continue que si le véhicule est au point mort
{
Start() ;                                                                Démarrez le véhicule en cas de neutre
}
d’autre
{
Serial.println ("véhicule pas au point mort") ;       En cas de gear, envoyer message d’erreur « Véhicule pas au neutre »
vehicle_off() ;                                                     Sortie début séquence en cas de vitesse
}
}

Fonction de démarrage : démarreur s’engager que si le moteur n’est pas déjà en cours d’exécution.
void start()
{
int t/mn = pulseIn (RPM_sens, haute, 1000000) ;    Valoriser les tr/min
if(RPM == 0) //Continue commencer séquence uniquement si le véhicule n’est pas en cours d’exécution.
{
digitalWrite (clutch_sfty, HIGH) ;             Embrayage « Appuyer sur »
digitalWrite (acc_ctrl, basse) ;                   Désactiver (OFF) accessoire
Delay(500) ;                                               0,5 délai de secondes
digitalWrite (start_ctrl, HIGH) ;                Actionnez le starter
start_time = millis() ;                                Saisir le temps qui a été engagé le démarreur
starter_engaged() ;                                 Aller à Starter_engaged fonction
}
d’autre
{
Serial.println ("véhicule en cours d’exécution") ;  Envoyer message « Véhicule déjà en marche » si le moteur a été démarré précédemment
vehicle_off() ;                                                    Sortie début séquence si déjà en cours d’exécution
}
}

Starter_engaged fonction : désengager le démarreur une fois véhicule démarreur ou désactiver le démarrage si
véhicule n’a pas commencé dans les 4 secondes.
Sub starter_engaged()
{
int t/mn = pulseIn (RPM_sens, élevé) ;            Valoriser les tr/min
Si //Continue (> 1000 RPM) si le moteur a démarré (faible atteint inactif)
{
Serial.println ("moteur marche") ;                  Envoyer message « Moteur marche » après avoir démarré le moteur
disengage_starter() ;                                        Aller à disengage_starter après que le moteur est en marche
}
sinon si ((start_time+4000) < millis()) //Test si 4 secondes s’est écoulé depuis le démarrage a été engagé
{

disengage_starter_timeout() ;                 Aller à disengage_starter si le moteur n’a pas commencé dans les 4 secondes de l’engagement de démarreur
}
d’autre
{
starter_engaged() ;                                    Répétez cette fonction si le moteur n’a pas démarré ou 4 secondes soit écoulé pas
}
}

Disengage_starter fonction : dégager le démarreur.
Sub disengage_starter()
{
digitalWrite (start_ctrl, basse) ;                   Dégager le démarreur
digitalWrite (clutch_sfty, basse) ;               « Libérer » l’embrayage
digitalWrite (acc_ctrl, HIGH) ;                   Allumer accessoire sur
vehicle_off_sense() ;                                Aller à vehicle_off_sense fonction
}

Disengage_starter_timeout fonction : dégager le démarreur (utilisé après 4 secondes soit écoulé sans démarrage moteur)
Sub disengage_starter_timeout()
{
digitalWrite (start_ctrl, basse) ;                                 Dégager le démarreur
digitalWrite (clutch_sfty, basse) ;                              « Libérer » l’embrayage
Serial.println ("véhicule Start infructueuse") ;      Envoyer « Véhicule Start infructueuse »
vehicle_off() ;                                                            Séquence de démarrage de sortie
}

Vehicle_off_sense fonction : attend un signal « off » à envoyer lorsque le moteur est en marche.
Si aucun signal « off » est reçu, s’éteint le véhicule après 30 minutes s’est écoulé depuis le démarrage du moteur.
Sub vehicle_off_sense()
{
int déplacement = pulseIn (speed_sens, HIGH) ;                Obtenir la vitesse du véhicule
Si (déplacement > 1000) //Check si le véhicule est en mouvement
{
Serial.println (« véhicule hors--mouvement ») ;           Envoyer « Véhicule hors ‑‑ mouvement » message ifvehcile est en mouvement
vehicle_off() ;                                                               Éteignez véhicule s’il se déplace
}
ElseIf (start_time + 1800000 < millis()) //Check si 30 minutes s’est écoulé depuis le démarrage du moteur
{
Serial.println ("véhicule hors--délai d’expiration automatique") ;  Envoyer le message « Véhicule hors ‑‑ automatique Timeout » si le moteur a été
en cours d’exécution pendant 30 minutes
vehicle_off() ;                                                                    Éteignez véhicule moteur en marche pendant 30 minutes
}
ElseIf (Serial.available() > 0) //Check si un signal a été envoyé par l’intermédiaire de données série
{
données = Serial.read() ;                                                      Magasin de série envoyé des données série
Si (données == ' o ') //Check si le signal transmis est une commande d’arrêt ("o")
{
Serial.println (« véhicule hors--utilisateur commandé ») ;   Envoyer message « Véhicule hors ‑‑ l’utilisateur commande automatique » si les données en série sont OFF
commande ("o")
vehicle_off() ;                                                                     Éteignez véhicule si la commande est envoyée par l’intermédiaire de données série
}
}
ElseIf (digitalRead(BT_off) == HIGH) //Check si large de commande a été envoyé via le module BT
{
Serial.println (« véhicule hors--utilisateur commandé ») ;     Envoyer le message « Véhicule hors ‑‑ l’utilisateur commande automatique » si OFF
commande a été envoyée
vehicle_off() ;                                                                       Désactiver le véhicule si commande a été envoyée via le module BT
}
d’autre
{
vehicle_off_sense() ;                                                   Si aucune des conditions ci-dessus sont remplies, répétez cette fonction
}
}

Fonction Vehicle_off : désactive le vechile et recommence l’ensemble du programme
Sub vehicle_off()
{
digitalWrite (ign_ctrl, basse) ;                           Coupez contact
digitalWrite (acc_ctrl, basse) ;                           Désactiver (OFF) accessoire
Loop() ;                                                Programme de répétition (recherchez la commande start)
}

Articles Liés

Spark base active un démarreur à distance via WiFi

Spark base active un démarreur à distance via WiFi

Démarreurs à distance sur les voitures sont impressionnantes ! Ils réchauffent votre voiture pendant l'hiver et fraîche pendant l'été. Il est agréable d'avoir une télécommande, mais que se passe-t-il si vous voulez qu'il fonctionne plus loin ?Dans mo
Connecter l’Arduino Uno pour Android via Bluetooth

Connecter l’Arduino Uno pour Android via Bluetooth

Dans ce projet, un module Bluetooth serial est utilisé pour créer une connexion entre l'Arduino Uno et une application Android que j'ai créé avec MIT App Inventor.Arduino à l'écoute des commandes en lumière certaines de LED ou de montrer son statut.
Contrôler l’Arduino avec un téléphone Android via Bluetooth

Contrôler l’Arduino avec un téléphone Android via Bluetooth

Bonjour les gens, ici vous pouvez apprendre comment contrôler Arduino avec un téléphone Android via Bluetooth. Vous pouvez utiliser votre smartphone comme télécommande pour vous système d'éclairage à la maison, ou vous pouvez utiliser comme un etc. d
Raspberry Pi Robot contrôlé via Bluetooth

Raspberry Pi Robot contrôlé via Bluetooth

ce tutoriel est basé sur un précédent Instructable -Robots de bâtiment avec Raspberry Pi et PythonLe but est de présenter un exemple de comment mettre en place une connexion série Bluetooth avec Arduino pour contrôler un robot Raspberry Pi. Mais perm
Mindflex EEG avec des données brutes via Bluetooth

Mindflex EEG avec des données brutes via Bluetooth

Le Mindflex (et Mindflex Duel--le matériel concerné est censé pour être le même) jouet vous permet de contrôler la hauteur d'une boule avec la concentration mentale. Je vais vous expliquer comment attacher un module Bluetooth de 10 $ pour que cela so
Arduino - moteur à courant continu commande via Bluetooth

Arduino - moteur à courant continu commande via Bluetooth

Salut les gars,Dans ce projet nous commandera un moteur DC avec un smartphone via bluetooth. Ce projet est idéal pour en savoir plus sur :-Moteur DC-Arduino interfaçage avec votre smartphoneModule Bluetooth--L293Dvous pouvez visiter mon site Web pour
CxemCAR 1 - Android contrôle RC voiture via Bluetooth

CxemCAR 1 - Android contrôle RC voiture via Bluetooth

il s'agit d'un projet open source de voiture RC avec contrôle à partir d'un téléphone Android via Bluetooth. Le contrôleur est utilisé avec .NET Micro Framework: FEZ Panda II, mais vous pouvez utiliser n'importe quel contrôleur de travaux avec .NET M
Faire une appli Android pour contrôler via Bluetooth un Arduino contrôler votre maison par l’intermédiaire de RF, climatisées et dotées de AppInventor

Faire une appli Android pour contrôler via Bluetooth un Arduino contrôler votre maison par l’intermédiaire de RF, climatisées et dotées de AppInventor

Je sais que le titre est tout à fait une bouchée, mais c'est exactement ce que c'est.Quelque temps auparavant, j'ai fait une instructable décrivant un circuit autour d'un atmega328 (ou un « Arduino ») qui était de dissuader les cambrioleurs en simula
Reconnaissance vocale Arduino Via Bluetooth HC-05

Reconnaissance vocale Arduino Via Bluetooth HC-05

Il est vraiment facile et rapide d'ajouter la commande vocale à votre projet arduino. Que ce soit commande vocale home automation ou serrure ou robots, pourrait être un accrocheur fonctionnalité dans un projet arduino. Dans ce tutoriel je « ll vous m
Mise en place sans fil Laser coupé boite à lumière via Bluetooth (TfCD)

Mise en place sans fil Laser coupé boite à lumière via Bluetooth (TfCD)

Cette instructable montre comment mettre en place un éclairage sans fil à un Arduino UNO. La lumière est contrôlée creux un téléphone android via Bluetooth.MatériauxCircuit de matériel :Module Bluetooth HC-05Levier de vitesses niveau logiqueCondensat
Comment contrôler une voiture arduino via Bluetooth (pour débutants)

Comment contrôler une voiture arduino via Bluetooth (pour débutants)

Tous que nous savons que l'Arduino est une plate-forme de prototypage excellente, principalement parce qu'il utilise un langage de programmation convivial et il y a beaucoup de composants supplémentaires incroyables qui nous offrent des expériences e
Communication série entre android et arduino via bluetooth portable

Communication série entre android et arduino via bluetooth portable

A propos de :Cette instructable parle de communication série entre android et arduino via intégré portable Bluetooth. Je n'ai pas de module Bluetooth séparé. J'ai donc décidé d'utiliser mon ordinateur portable intégré Bluetooth pour une communication
Puce de contrôle de douille de puissance de votre smartphone via Bluetooth

Puce de contrôle de douille de puissance de votre smartphone via Bluetooth

Prise d'alimentation intelligente via Arduino, ce qui pourrait être plus facile. Cette prise de pouvoir controll via Bluetooth, smartphone ou tablette utilisée.Étape 1 :Pour mettre en œuvre le projet, nous avons utilisé les composants suivants :-Ardu
Comment faire pour télécharger le croquis à Pro Micro/Leonardo via bluetooth serial

Comment faire pour télécharger le croquis à Pro Micro/Leonardo via bluetooth serial

À l'aide de Optiboot bootloader avec Arduino axée sur les ATmega32U4 télécharger des sketches via le matériel UART et module Bluetooth au lieu de l'USBExpansion de l'ordre de faire ici :http://Makezine.com/Projects/DIY-Arduino-Bluetooth-Programming-S