Accueil > Projets électroniques > Tableau de bord (partie 2: Lecture UART du module Bluetooth)

Tableau de bord (partie 2: Lecture UART du module Bluetooth)

Bluetooth Module Dans ce post, vous trouverez comment le module Bluetooth interagit avec le ATTINY45 dans le tableau de bord VGA projet.

Le module Bluetooth attente d'une connexion à partir d'un périphérique (par exemple un téléphone Android) et agira comme un SPP (Serial Port Profile) re-passage tout reçu de l'appareil à l'interface UART. Dans notre cas, le ATtiny va lire les données, mais ne sera pas «parler de retour" pour le module, donc c'est vraiment une communication à sens unique de ce point de vue.


Électriquement parlant, nous avons juste besoin d'un fil pour relier la broche TXD du module bluetooth (PIN 1) à l'PB5 (PIN 1) de la ATtiny, qui sera configuré comme une entrée.

Maintenant, la partie la plus délicate est sur le côté du firmware du microcontrôleur, depuis que nous avons besoin de lire l'entrée sans perturber le calendrier VGA. Notre ATtiny fonctionne à 20Mhz ce qui donne 0.05μs par cycle, dans le programme de la boucle principale est basée sur les synchronisations VGA horizontales afin que nous puissions lire l'entrée tous les 635 cycles (31.75μs). De l'autre côté du module BT est configuré à 2400 bauds ce qui signifie que chaque bit durera 416.66μs. Donc, en faisant un calcul rapide, 416,66 / 31,75 = 13,12, ce qui signifie chaque bit sera lu environ 13 fois. Nous supposons que le lire N ° 7 que celui valable et nous n'allons pas le faire n'importe quel type de contrôles.

L'UART sera l'envoi d'une "haute" signal lorsque est inactif, dès que nous aurons un «faible», nous savons que le "bit de départ" est arrivée, nous avons donc mis un drapeau global et commencer à lire les 8 bits et de les mettre en un registre (r19). Vous pouvez en savoir plus sur UART sur cet article de Wikipedia . Nous utilisons un autre registre (r25) comme un compteur, pour savoir quand à lire et à arrêter la lecture.
C'est ainsi que le code ressemble à:

	 ;
	 ; UART lecture d'entrée
	 ; Ce code est exécuté tous les cycles de 635 dans le code tableau de bord
	 ;
	 en r18, _SFR_IO_ADDR (PINB); 1 horloge

	 cpi r25, 0
	 BREQ waitlow
	 inc r25
	 mov r16, r25
	 andi r16, 0x0F
	 cpi r16, 7
	 Brne chkfornext5togo
	 lsr r19
	 SBRC r18, INPUT
	 ori r19, 0x80
	 nop
	 rjmp chkfornext
 chkfornext5togo:
	 nop
	 nop
	 nop
	 nop
	 nop
 chkfornext:
	 cpi r16, 14
	 Brne chkend3togo
	 Subi r25, 0xEF; ajoutez 17
	 andi r25, 0xF1
	 rjmp chkend
 chkend3togo:
	 nop
	 nop
	 nop
 chkend:
	 nop
	 rjmp hsyncoff

 waitlow:
	 ; D'attente à faible
	 SBR r18, INPUT
	 inc r25
	 nop
	 delay3x 4
	 nop
	 nop
	 rjmp hsyncoff

 hsyncoff:
	 ......  Code HSYNC ......
         ......  si r25 == 0x91 puis l'UART est lu et stocké dans r19 ......
	 ......  de traiter et de réinitialiser les deux registres ....

Depuis que nous avons lu un octet à la fois, il semble assez pratique pour notre projet visant à définir un ensemble de "Commandes" (d'un octet de long), pour définir les caractères qui doivent être affichées (quatre commandes pour configurer chacun des personnages), et en outre une autre commande pour afficher petit carré sur les coins de l'écran qui vous indiquera qui purge actuellement.
Voici notre liste des commandes:

 0 0 0 1 DDDD (caractère 1) [0-D] -> 0 1 2 3 4 5 6 7 8 9 (SPACE) BOG
 0 0 1 0 DDDD (caractère 2)
 0 0 1 1 DDDD (3 caractères)
 0 1 0 0 DDDD (caractère 4)
 0 1 0 1 0 0 0 1 (A servir en haut)
 0 1 0 1 0 0 1 0 (en bas servent B)
 0 1 0 1 0 1 0 0 (A servir en haut)
 0 1 0 1 1 0 0 0 (servir de fond b)

Tous nous avons besoin maintenant est un appareil pour se connecter au module bluetooth et d'envoyer les commandes.
Ne manquez pas la dernière partie de ce projet, que je vais publier bientôt y compris les codes sources et un contrôleur développé pour les plates-formes Android.

Configuration du module Bluetooth avec Arduino

Le module bluetooth est livré avec un firmware appelé "linvor1.5" par défaut (du moins celle sur le modèle DX). Pour le programmer, vous devez envoyer une série de commandes AT via les broches TX / RX, Arduino semble être idéal pour cette tâche. Branchez deux câbles entre le TX / RX de l'Arduino et le RX / TX du module Bluetooth (ils ont besoin pour être traversé, RX avec TX et TX avec RX). Ensuite, mettez le code suivant sur l'Arduino:

 int incomingByte = 0; / / pour les données entrantes en série

 void setup () {
   Serial.begin (9600);
   Serial.print ("AT");
 }

 void loop () {
	 / / Envoyer des données uniquement lorsque vous recevez des données:
	 si (Serial.available ()> 0) {
		 / / Lire l'octet entrant:
		 incomingByte = Serial.read ();

		 / / Dire ce que vous avez obtenu:
		 Serial.write (incomingByte);
	 }

 }

De le transférer à l'Arduino et cliquez sur le moniteur, vous obtiendrez la réponse suivante:

Maintenant, nous allons changer le nom par défaut à "tableau de bord», de le faire, remplacer le Serial.print("AT") avec Serial.print("AT+NAMEscoreboard") et répéter la procédure.
Enfin, nous avons besoin de fixer le taux de transmission à 2400, en utilisant la commande suivante: Serial.print("AT+BAUD2")


Commentaires et questions sont les bienvenues!

Related Posts
Tableau de bord (partie 1: signal VGA à partir d'un ATTINY45)

  1. Pas encore de commentaires.

Protection contre les spams par WP Captcha-Free