CxemCAR sur Arduino - Contrôle de voiture Bluetooth depuis Android. Voiture bluetooth simple sur Arduino

La large diffusion et le faible coût de la plate-forme Arduino et de diverses plates-formes robotiques ont permis aux amateurs de créer des voitures radiocommandées pour tous les goûts. Et l'utilisation généralisée des smartphones a permis de les utiliser comme contrôleurs pour ces machines. Le principal problème pour de nombreux amateurs d'Arduino est leur manque d'expérience avec la programmation Android. Aujourd'hui, je vais vous expliquer comment résoudre facilement ce problème en utilisant l'environnement de développement visuel pour les applications Android App Inventor 2.



La construction de toute machine à écrire doit être démarrée avec du "matériel", je vais donc décrire brièvement ce que j'ai utilisé pour ma machine à écrire :
arduino nano
module bluetooth HC-05
Bouclier de capteur de moteur Z-Mini L293D
Châssis moteur 2RM
La configuration matérielle ne joue pas un grand rôle dans ce projet, donc le châssis, le bouclier et l'arduino lui-même peuvent être remplacés par n'importe quel analogue.

Passons maintenant à la création d'une application Android. App Inventor est un environnement de développement visuel pour les applications Android qui fonctionne à partir d'un navigateur. Nous allons sur le site, permettons l'accès à votre compte Google, cliquez sur le bouton "créer" et créons un nouveau projet. Dans un nouveau projet, en utilisant la méthode "Drag and Drop", créez 4 boutons pour choisir la direction du mouvement et un pour se connecter à notre module bluetooth. Plus ou moins comme ça :

Reste maintenant à compiler l'application en cliquant sur le bouton "Build".

Je pense que les fans d'arduino n'auront aucun problème pour écrire un croquis, je dirai seulement que vous pouvez choisir parmi des croquis prêts à l'emploi, où la machine est contrôlée depuis un ordinateur via un port siréal. j'ai utilisé ça

esquisser

valeur int;
entier IN1 = 4;
entier IN2 = 7 ;
entier EN1 = 6;
entier EN2 = 5;

Void setup ()
{
Serial.begin (9600);
pinMode (IN1, SORTIE);
pinMode (IN2, SORTIE);
pinMode (EN1, SORTIE) ;
pinMode (EN2, SORTIE) ;

}
boucle vide ()
{
si (Série.disponible ())
{
val = Serial.read ();

// Définit le mouvement vers l'avant
if (val == "W") // En appuyant sur la touche "W"
{
// Les broches sont configurées en fonction du fonctionnement du Motor Shield "a
// Les moteurs tournent en avant
digitalWrite (EN1, HAUT);
digitalWrite (EN2, ÉLEVÉ);
digitalWrite (IN1, HAUT);
digitalWrite (IN2, HAUT);
}

// Remet le mouvement en arrière
si (val == "S")
{
digitalWrite (EN1, HAUT);
digitalWrite (EN2, ÉLEVÉ);
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
}

// Déplacement vers la droite
si (val == "D")
{
digitalWrite (EN1, HAUT);
digitalWrite (EN2, ÉLEVÉ);
digitalWrite (IN1, HAUT);
digitalWrite (IN2, LOW);
}

// Définit le mouvement vers la gauche
si (val == "A")
{
digitalWrite (EN1, HAUT);
digitalWrite (EN2, ÉLEVÉ);
digitalWrite (IN1, LOW);
digitalWrite (IN2, HAUT);
}

// Mode d'arrêt
// Lorsque les clés sont relâchées dans le programme, "T" est envoyé au port
if (val == "T") // Lorsque la touche "T" est enfoncée
{
// Les broches ENABLE sont tirées vers le moins, les moteurs ne fonctionnent pas
digitalWrite (EN1, BAS);
digitalWrite (EN2, LOW);
}
}
}


Voici donc ma machine :

Pour ceux qui aiment le design de leurs applications, ils peuvent faire un petit ajustement. Je ne décrirai pas en détail comment faire cela, il n'est pas difficile de le comprendre par vous-même. Je dirai juste que pour cela, vous devez principalement utiliser des fichiers .png, au lieu de fichiers .jpeg, qui ne supportent pas arrière-plan transparent... Par exemple, toute personne non préparée peut réaliser un tel dessin en une demi-heure ou une heure :

P.S. Pour ceux qui n'ont pas expérimenté le développement d'applications dans App Inventor 2, j'en ai fait plus guide détaillé sur le développement de cette application (vous devez vous rendre sur YouTube pour la visualiser).

P.P.S. Une collection de plus de 100 tutoriels Arduino pour débutants et pros

Il existe également des sources pour Android et autres information utile... Dans cet article, je vais montrer l'assemblage de CxemCAR pour la plate-forme Arduino. Presque toutes les cartes compatibles Arduino peuvent être utilisées comme cartes Arduino : UNO, Nano, Mega, Leonardo et même Arduino DUE basé sur STM32. J'ai utilisé une carte Arduino Nano V3 achetée sur eBay pour 9 $.

Schème Connexions Arduino au module Bluetooth HC-06 et au pilote de moteur L298N :

Dans le circuit j'ai utilisé un cavalier (dans le schéma Jmp1), car lorsque le module Bluetooth était connecté, il était impossible de télécharger le croquis sur l'Arduino. Pendant la durée du firmware, le retrait du cavalier désactive le module Bluetooth.

Comme plate-forme, j'ai utilisé une petite plate-forme de bricolage RC que j'ai achetée pour 25 $. La plate-forme elle-même est une base en aluminium, où sont montés deux moteurs, une boîte de vitesses et 4 entraînements à cardan pour 4 roues. Au-dessus, sur 3 grilles, une planche à pain est placée.

La plate-forme n'est pas de fabrication de haute qualité. Après l'avoir assemblé, j'ai essayé de brancher l'alimentation - le moteur n'a même pas bougé, il y a beaucoup de distorsions, de défauts, etc. J'ai dû tout démonter, desserrer un peu les fixations, l'aiguiser à certains endroits, bien graisser le tout, et aussi retirer 2 arbres à cardan de l'essieu avant. Le résultat est une version à propulsion arrière de la voiture.

Après cela, j'ai soudé le module Bluetooth à l'Arduino et j'ai fait apparaître une LED d'état pour celui-ci. À propos des types de modules Bluetooth, de leur connexion à Arduino, de leur utilisation, etc. vous pouvez lire dans cet article :. Module HC-06 placé dans un tube thermorétractable de 10 mm. La LED d'état Bluetooth avec résistance de limitation de courant a également été emballée sous film rétractable, mais plus fine - 5 mm.

Dans la maquette fournie avec la plate-forme, j'ai percé des trous et sécurisé le pilote de moteur L298N. J'ai attaché la carte Arduino à l'aide de ruban adhésif double face.

Entre la plate-forme en aluminium de la voiture et planche à pain J'ai placé 3 accus Li-Po 3.7V 1100 mAh. Le contrôleur et les moteurs sont alimentés séparément : l'Arduino est alimenté par une batterie de 3,7 V, et les moteurs et le pilote L298N sont alimentés par deux batteries de 3,7 V connectées en série. Il y a deux interrupteurs d'alimentation à 2 positions - dans une position, l'alimentation va des batteries aux consommateurs, dans l'autre position aux bornes de charge.

Photo d'une voiture en recharge :

Logiciel

Le programme a été écrit dans l'IDE Arduino 1.01. J'ai bien essayé de commenter le code du programme, mais si vous avez des questions, posez-les sur le forum, in.

#include "EEPROM.h" #define D1 2 // sens de rotation du moteur 1 #define M1 3 // Broche PWM pour contrôler le moteur 1 (gauche) #define D2 4 // sens de rotation du moteur 2 #define M2 5 // sens de rotation moteur 2 (droite) #define HORN 13 // add. le canal 1 est connecté à la broche 13 // # define autoOFF 2500 // nombre de millisecondes après lequel le robot s'arrête lorsque la communication est perdue #define cmdL "L" // Commande UART pour le moteur gauche #define cmdR "R" // UART commande pour le moteur droit #define cmdH "H" // Commande UART pour l'ajout. canal 1 (par exemple, signal de klaxon) #define cmdF "F" // Commande UART pour travailler avec la mémoire EEPROM de MK pour stocker les paramètres #define cmdr "r" // Commande UART pour travailler avec la mémoire EEPROM de MK pour stocker les paramètres ( read) # define cmdw "w" // Commande UART pour travailler avec la mémoire EEPROM de MK pour stocker les paramètres (écrire) char entrantByte; // données entrantes char L_Data; // tableau de chaînes pour les données du moteur gauche L octet L_index = 0; // index du tableau de caractères R_Data; // tableau de chaînes pour les données du moteur droit R octet R_index = 0; // index du tableau de caractères H_Data; // tableau de chaînes pour plus octet de canal H_index = 0 ; // index du tableau H char F_Data; // tableau de données de chaîne pour travailler avec l'octet EEPROM F_index = 0; // index de tableau F char commande; // commande : transfert des coordonnées R, L ou fin de ligne non signé long currentTime, lastTimeCommand, autoOFF; void setup () (Serial.begin (9600); // initialisation du port pinMode (HORN, OUTPUT); // canal supplémentaire pinMode (D1, SORTIE); // sortie pour définir le sens de rotation du moteur pinMode (D2, OUTPUT); // sortie pour définir le sens de rotation du moteur /*EEPROM.write(0,255); EEPROM.write (1.255); EEPROM.write (2 255); EEPROM.write (3 255); * / timer_init (); // initialise le timer logiciel) void timer_init() (uint8_t sw_autoOFF = EEPROM.read (0) ; // lit depuis l'EEPROM le paramètre "si la fonction d'arrêt de la machine sur perte de communication est activée" if (sw_autoOFF == " 1") (/ / si le temporisateur d'arrêt est activé char var_Data; var_Data = EEPROM.read (1); var_Data = EEPROM.read (2); var_Data = EEPROM.read (3); autoOFF = atoi (var_Data) * 100 ; // variable auto off pour le nombre de ms de stockage) else if (sw_autoOFF == "0") (autoOFF = 999999;) else if (sw_autoOFF == 255) (autoOFF = 2500; // si rien n'est écrit dans l'EEPROM, puis par défaut 2.5 sec) currentTime = millis (); // lire le temps écoulé depuis le début du programme) void loop () (if (Serial.available ()> 0) (// si les données UART sont arrivées en entrantByte = Serial .read (); // lire l'octet if (incomingByte == cmdL) (// si les données pour le moteur L sont entrées dans la commande = cmdL; // commande actuelle memset (L_Data, 0, sizeof (L_Data)); // effacer le tableau L_index = 0; // réinitialiser l'index du tableau ) else if (incomingByt e == cmdR) (// si les données pour le moteur R sont venues commande = cmdR; memset (R_Data, 0, sizeof (R_Data)); R_index = 0 ; ) else if (incomingByte == cmdH) (// si les données sont arrivées pour la commande supplémentaire du canal 1 = cmdH; memset (H_Data, 0, sizeof (H_Data)); H_index = 0;) else if (incomingByte == cmdF) ( / / si les données pour travailler avec la mémoire sont venues command = cmdF; memset (F_Data, 0, sizeof (F_Data)); F_index = 0;) else if (incomingByte == "\ r") command = "e"; // fin de ligne else if (incomingByte == "\ t") command = "t"; // fin de ligne pour les commandes pour travailler avec la mémoire if (commande == cmdL && entrantByte! = cmdL) (L_Data = entrantByte; // enregistre chaque octet reçu dans le tableau L_index ++; // augmente l'index actuel du tableau) else if (commande == cmdR && entrantByte! = cmdR) (R_Data = entrantByte; R_index ++;) else if (commande == cmdH && entrantByte! = cmdH) (H_Data = entrantByte; H_index ++;) else if (commande = = cmdF && entrantByte! = cmdF) (F_Data = entrantByte; F_index ++;) else if (commande == "e") (// si vous avez reçu la fin de la ligne Control4WD (atoi (L_Data), atoi (R_Data) , atoi (H_Data)); delay (10);) else if ( command == "t") (// si la fin de la ligne a été acceptée pour travailler avec la mémoire Flash_Op (F_Data, F_Data, F_Data, F_Data, F_Data) ;) lastTimeCommand = millis (); // lit le temps actuel écoulé depuis le démarrage du programme) if (millis ()> = (lastTimeCommand + autoOFF)) (// compare le timer actuel avec la variable lastTimeCommand + autoOFF Control4WD (0,0,0); / / arrêter la machine) ) void Control4WD (int mLeft, int mRight, uint8_t Horn) (bool directionL, directionR; // sens de rotation pour L298N octet valueL, valueR; // valeur PWM M1, M2 (0-255) if ( mLeft> 0) (valueL = mLeft; directionL = 0;) else if (mLeft< 0){ valueL = 255 - abs(mLeft); directionL = 1; } else { directionL = 0; valueL = 0; } if(mRight >0) (valueR = mRight ; directionR = 0 ;) else if (mRight< 0){ valueR = 255 - abs(mRight); directionR = 1; } else { directionR = 0; valueR = 0; } analogWrite(M1, valueL); // задаем скорость вращения для L analogWrite(M2, valueR); // задаем скорость вращения для R digitalWrite(D1, directionL); // задаем направление вращения для L digitalWrite(D2, directionR); // задаем направление вращения для R digitalWrite(HORN, Horn); // дополнительный канал } void Flash_Op(char FCMD, uint8_t z1, uint8_t z2, uint8_t z3, uint8_t z4){ if(FCMD == cmdr){ // если команда чтения EEPROM данных Serial.print("FData:"); // посылаем данные с EEPROM Serial.write(EEPROM.read(0)); // считываем значение ячейки памяти с 0 адресом и выводим в UART Serial.write(EEPROM.read(1)); Serial.write(EEPROM.read(2)); Serial.write(EEPROM.read(3)); Serial.print("\r\n"); // маркер конца передачи EEPROM данных } else if(FCMD == cmdw){ // если команда записи EEPROM данных EEPROM.write(0,z1); // запись z1 в ячейку памяти с адресом 0 EEPROM.write(1,z2); EEPROM.write(2,z3); EEPROM.write(3,z4); timer_init(); // переинициализируем таймер Serial.print("FWOK\r\n"); // посылаем сообщение, что данные успешно записаны } }

Le code utilise une bibliothèque pour travailler avec la mémoire EEPROM AVR. Un paramètre est stocké en mémoire : le nombre de millisecondes au bout duquel la machine s'arrête lorsque la connexion est perdue. Vous pouvez coder en dur ce paramètre dans le programme, pour cela décommentez la ligne #define autoOFF 2500 (où 2500 est le nombre de millisecondes). Après cela, la fonction Flash_Op peut être supprimée, il faudra également apporter de petites modifications au code chargé de recevoir les commandes pour travailler avec la mémoire EEPROM.

Mais aussi avec l'achat d'un robot à part entière prêt à l'emploi basé sur cette carte. Pour les enfants école primaire ou l'âge préscolaire est si prêt Projets Arduino même préférable, car Le tableau "mort" a l'air ennuyeux. Par ici convient à ceux qui ne sont pas particulièrement attirés par les circuits électriques.

En achetant un modèle de robot fonctionnel, c'est-à-dire en fait, un jouet de haute technologie prêt à l'emploi, vous pouvez éveiller l'intérêt pour l'auto-conception et la création de robots. Après avoir suffisamment joué avec un tel jouet et compris son fonctionnement, vous pouvez commencer à améliorer le modèle, tout démonter et commencer à assembler de nouveaux projets sur Arduino, en utilisant la carte, les lecteurs et les capteurs libérés. L'ouverture de la plate-forme Arduino permet une seule et même composants fabriquez-vous de nouveaux jouets.

Nous vous proposons un petit aperçu des robots prêts à l'emploi sur la carte Arduino.

Machine Arduino contrôlée via Bluetooth

Voiture contrôlée par Bluetooth, coûtant un peu moins de 100 $. Livré non monté. En plus de la carrosserie, du moteur, des roues, de la batterie au lithium et chargeur, nous obtenons la carte Arduino UNO328, le contrôleur de moteur, l'adaptateur Bluetooth, la télécommande télécommande etc.

Vidéo présentant ceci et un autre robot :

Suite Description détaillée jouets et la possibilité d'acheter sur le site de la boutique en ligne DealExtreme.

Robot tortue Arduino

Kit de montage robot tortue coûte environ 90 $. Il ne manque plus que la coque, tout le reste nécessaire à la vie de ce héros est inclus dans le kit : carte Arduino Uno, servos, capteurs, modules de tracking, récepteur IR et télécommande, batterie.

La tortue peut être achetée sur le site Web DealExtreme, un robot similaire moins cher sur Aliexpress.

Véhicule à chenilles sur Arduino, contrôlé depuis un téléphone portable

Véhicule à chenilles contrôlé par Bluetooth avec téléphone portable , d'une valeur de 94 $. En plus de la base à chenilles, nous obtenons une carte Arduino Uno et une carte d'extension, une carte Bluetooth, une batterie et un chargeur.

Un véhicule à chenilles peut également être acheté sur le site Web DealExtreme, il y a aussi une description détaillée. Fer peut-être plus intéressant Réservoir Arduino sur Aliexpress.

Voiture Arduino roulant dans des labyrinthes

Voiture roulant dans des labyrinthes, d'une valeur de 83 $. En plus des moteurs, des cartes Arduino Uno et d'autres éléments nécessaires, il contient des modules de suivi et des modules d'évitement d'obstacles.

Robot fini ou châssis de robot

En plus de la possibilité d'utiliser des kits prêts à l'emploi pour créer des robots Arduino discutés dans la revue, vous pouvez acheter un cadre (corps) séparé du robot - il peut s'agir d'une plate-forme sur roues ou d'une chenille, d'un humanoïde, d'une araignée et autres modèles. Dans ce cas, vous devrez effectuer vous-même le remplissage du robot. Un aperçu de ces cas est donné dans notre.

Où d'autre acheter des robots prêts à l'emploi

Dans la revue, nous avons sélectionné les robots Arduino prêts à l'emploi les moins chers et les plus intéressants, à notre avis, dans les magasins en ligne chinois. S'il n'y a pas le temps d'attendre un colis en provenance de Chine, il existe un grand choix de robots prêts à l'emploi dans les boutiques en ligne Amperka et DESSY. Bas prix et une livraison rapide est offerte par la boutique en ligne ROBstore. Liste des magasins recommandés.

Vous pouvez également être intéressé par nos revues de projets Arduino :


Apprentissage Arduino

Vous ne savez pas par où commencer pour apprendre Arduino ? Pensez à ce qui est plus proche de vous - assembler vos propres modèles simples et les compliquer progressivement ou apprendre à connaître des solutions plus complexes, mais toutes faites ?

La principale source d'information - easyelectronics.com

Une arduina ne suffit pas ici. Vous aurez également besoin de :
-modules de puissance pour contrôler les moteurs et les lumières
-module d'alimentation
- module de communication

Arduin n'est que des cerveaux, et plutôt faibles.

La question de la compatibilité du moteur avec l'arduino n'a pas beaucoup de sens. Le fait est que presque aucun moteur ne peut être connecté directement à l'arduino, il grillera.
Il y aura un intermédiaire entre l'arduino et le moteur - le module d'alimentation. Grâce à cela, Arduina est pratiquement compatible avec n'importe quel moteur.

A propos de "où acheter" - soit boutiques en ligne, ou des magasins Composants electroniques... Recherche par moteur de recherche dans votre ville. Dans les grandes villes, vous pouvez tout acheter au même endroit, mais en payant 1,5 à 5 fois trop cher par rapport à Ali.

Comment ferais-je une machine à écrire.

En tant que cerveaux haut niveau et le module de communication je prendrais quelque chose d'ESP32 ou d'ESP8266. Le premier fonctionne en bluetooth et wifi. Le second ne fonctionne qu'avec le wi-fi.

Arduin fera office de contrôleur périphérique. Mais! Je ne ferais pas un jardin avec un tas de planches et de fils - très probablement, cela ne rentrera pas dans le corps de la machine, et si c'est le cas, ce sera très effrayant.

Par conséquent, je placerais tous les composants de cette structure sur un circuit imprimé, qui sera ensuite réalisé par un certain Rezonit sur ma commande.

1) Dépend de votre emplacement et de l'hypothèse d'un petit trop-payé. Vous pouvez commander tout ce dont vous avez besoin en Chine, si vous êtes prêt à attendre 14 à 40 jours, ce qui vous fera économiser une petite partie du montant total.
J'ai personnellement commandé aux camarades suivants :

En conséquence, il n'y a eu aucun problème.
2) D'ailleurs, vous avez besoin de deux moteurs à courant continu et d'un servo. Tapez simplement "moteur à courant continu" et "Servo".
Exemples d'émission :

Lors du choix d'un servo, vous devez faire attention aux engrenages et, bien sûr, à la poussée développée. En principe, pour une voiture jouet banale, la première option de l'exemple donné dans l'exemple suffit. Mais pour l'avenir, gardez à l'esprit que l'huissier « MG » désigne des engrenages métalliques, ce qui ne appareil général plus résistant à la casse, bien qu'il ne les annule pas.
Pour contrôler l'ensemble de ce système, vous avez également besoin d'un "blindage moteur" :

Le premier de ces exemples, grâce à la présence d'un registre à décalage et de deux ponts, permet de piloter simultanément quatre moteurs. Le seul problème sera l'alimentation. pour un fonctionnement adéquat de chacun, 5V est nécessaire, sinon il peut y avoir des problèmes avec la puissance développée.
En principe, le second peut également être contrôlé par quatre roues à la fois, en les reliant simplement par paires (utiliser la différence des vitesses des côtés pour tourner). Mais dans votre cas, la deuxième option suffira. De plus, il permet l'utilisation de courants plus élevés que le premier.
3) Il suffit d'acheter des LED et de les connecter directement (sans oublier les résistances) ou via l'un des microcircuits.
"Diode"

4) Installez simplement vous-même l'IDE Arduino et utilisez C/C++

Ressources pour apprendre :

p.s. concernant accès à distance, puis faites attention à la réponse de l'ami ci-dessus

1) Où acheter l'Arduino lui-même ?
Oui
2) Quels moteurs seront compatibles avec cette seule carte ? Vous avez besoin d'une paire de moteurs pour déplacer la voiture, et si je comprends bien, vous avez besoin d'un moteur pas à pas pour faire tourner la voiture.
N'importe lequel, mais vous ne pouvez connecter aucun moteur directement, vous avez besoin d'un blindage de commande de moteur spécial, par exemple celui-ci. Pour le mécanisme rotatif, on n'utilise pas de moteurs pas à pas, mais

voiture Arduino avec Contrôle Bluetooth je viens de téléphone Android Est un projet Arduino UNO très simple mais intéressant utilisant le module Motor Shield. Sur cette page, vous découvrirez quels composants sont nécessaires pour fabriquer une machine à écrire robot sur Arduino de vos propres mains, instructions étape par étape au montage circuit électrique et vous pouvez tout télécharger programmes requis pour Android et Arduino.

Vidéo. Machine Bluetooth avec contrôle arduino

Pour ce projet, un module Motor Shield L293D, deux roues dentées, une carte Arduino UNO, un module bluetooth HC-05 et deux LED de phare ont été utilisés. Le contrôle s'effectue à distance via un signal Bluetooth depuis un smartphone ou une tablette. Après avoir assemblé le modèle et installé les programmes, vous pouvez utiliser l'application sur votre smartphone pour faire tourner la machine, faire des allers-retours, allumer et éteindre les phares.

Machine Arduino bricolage

Pour ce projet nous avons besoin de :

  • carte Arduino UNO ;
  • Blindage de commande de moteur L293D ;
  • module Bluetooth HC-05/06;
  • deux moteurs avec réducteurs et roues;
  • pile 9V (couronne);
  • 2 résistances et 2 LED ;
  • carrosserie et roues d'une vieille voiture;
  • fer à souder, pistolet thermique, couteau de papeterie;
  • fils, soudure et ruban électrique.
Pièces pour le robot - voitures sur Arduino UNO

Schéma de montage de voiture Arduino

Si vous avez tous les détails nécessaires (vous pouvez vous passer de LED et de résistances dans le projet), nous examinerons ensuite comment fabriquer une machine arduino de vos propres mains. Tout d'abord, vous devez souder les fils aux contacts des moteurs et les fixer avec du ruban isolant afin que les contacts ne se détachent pas. Les fils doivent être connectés aux bornes M1 et M2 sur le Motor Shield (la polarité peut alors être modifiée).


L'alimentation du module Bluetooth provient des contacts du servo, nous n'aurons pas besoin du servo dans le projet. Et l'alimentation est une tension stabilisée de 5 volts, ce qui nous convient. Il sera plus pratique de souder les connecteurs femelles aux ports TX et RX, et de souder les broches (BLS) aux ports Pin0 et Pin1 sur le Motor Shield. De cette façon, vous pouvez facilement déconnecter le module Bluetooth de l'Arduino lorsque vous devez télécharger un croquis.

Les LED sont contrôlées depuis le port "Pin2", ici le fil peut être soudé directement sur le port. Si vous faites plusieurs machines avec Bluetooth, que vous contrôlerez en même temps, nous vous recommandons de reflasher le module HC-05. Le firmware du module se fait très simplement, et alors vous ne confondrez plus les voitures, puisque chacune affichera son propre nom unique sur Android.

Application et croquis pour une machine à écrire sur Arduino

Après avoir monté le circuit, téléchargez le croquis suivant pour la voiture (n'oubliez pas de déconnecter le module Bluetooth de l'Arduino lors du chargement) et installez l'application sur votre smartphone. Tous les fichiers du projet (bibliothèque AFMotor.h, un croquis pour une machine à écrire et une application pour Android) peuvent être téléchargés dans une archive à l'aide d'un lien direct.

#comprendre // inclure la bibliothèque pour le bouclier AF_DCMoteur moteur1 (1) ; // connecter le moteur au bornier M1 AF_DCMoteur moteur2 (2) ; // connecter le moteur au bornier M2 valeur int; // libérer de la mémoire dans le contrôleur void setup () (Serial .begin (9600); pinMode (2, OUTPUT); // Port pour LED motor1.setSpeed ​​​​(250); motor1.run (RELÂCHER); // arrête le moteur motor2.setSpeed ​​​​(250); // ensemble vitesse maximum moteur motor2.run (RELÂCHER) ; // arrête le moteur) void loop () (if (Serial .available ()) // vérifie si des commandes sont reçues(val = Serial .read (); if (val == "f") (// avancer motor1.run (FORWARD); motor1.setSpeed ​​​​(250); motor2.run (FORWARD); motor2.setSpeed ​​​​(250) ;) if (val == "b") (// revenir en arrière motor1.run (BACKWARD); motor1.setSpeed ​​​​(200); motor2.run (BACKWARD); motor2.setSpeed ​​​​(200 );) if (val == "s") ( // arrêter motor1.run (RELÂCHER); motor2.run (RELÂCHER) ; ) si (val == "l") ( // Tourner à gauche motor1.run (AVANT); motor1.setSpeed ​​(100); motor2.run (ARRIÈRE); motor2.setSpeed ​​​​(250); ) si (val == "r") ( // Tournez à droite motor1.run (ARRIÈRE); motor1.setSpeed ​​​​(250); motor2.run (AVANT); motor2.setSpeed ​​(100); ) si (val == "1") ( // allume les LED digitalWrite (2, HAUT); ) si (val == "0") ( // éteint les LED digitalWrite (2, FAIBLE); )))

Explications du code :

  1. Pour les tests, vous pouvez envoyer des commandes depuis un ordinateur via USB ;
  2. La rotation des moteurs lorsqu'ils sont connectés à la batterie sera différente;
  3. Vous pouvez régler votre vitesse de rotation avec les moteurs.

Après avoir vérifié le fonctionnement de la machine, installez l'application sur votre smartphone ou votre tablette. Lors de la première connexion au module Bluetooth HC-05/06, vous devrez le coupler avec Android (le couplage sera alors effectué automatiquement). Si vous rencontrez des difficultés de connexion, lisez cet article.

Vous avez aimé l'article ? A partager avec des amis :