Startseite > Elektronische Projekte > Anzeiger (Teil 2: Reading UART aus dem Bluetooth-Modul)

Scoreboard (Teil 2: Reading UART aus dem Bluetooth-Modul)

Bluetooth Module In diesem Beitrag finden Sie, wie das Bluetooth-Modul mit dem interagiert ATtiny45 im VGA-Anzeiger Projekt.

Das Bluetooth-Modul wird für eine Verbindung von einem Gerät warten (z. B. ein Android-Handy) und wird als SPP (Serial Port Profile) re-Passing-alles aus dem Gerät auf die UART-Schnittstelle empfangen zu handeln. In unserem Fall ist das ATtiny werden die Daten zu lesen, aber nicht "wieder sprechen" mit dem Modul, also ist es wirklich ein one-way Kommunikation von diesem Standpunkt aus betrachtet.


Elektrisch gesehen, brauchen wir nur noch ein Kabel an den TXD-Pin des Bluetooth-Modul (PIN 1) an den PB5 (PIN 1) des ATtiny, die als Eingang konfiguriert werden zu verbinden.

Jetzt kommt der schwierige Teil ist auf dem Mikrocontroller-Firmware Seite, da wir um die Eingabe, ohne dass der VGA-Timing lesen müssen. Unsere ATtiny wird bei 20MHz, die pro Zyklus gibt 0.05μs läuft, im Programm die Hauptschleife auf dem VGA horizontalen Timings beruht, so lesen wir können das Eingangssignal alle 635 Zyklen (31.75μs). Auf der anderen Seite das BT-Modul wird bei 2400 Baud, dass jedes Bit wird für 416.66μs letzte Mittel konfiguriert. Also, tun, eine schnelle Mathematik, 416,66 / 31,75 = 13,12, dh jedes Bit über 13 Mal gelesen. Wir nehmen die Lese Nr. 7 als gültig ein, und wir pflegen jede Art von Kontrollen zu tun.

Der UART schickt einen "High"-Signal, wenn im Leerlauf ist, sobald wir eine "low" bekommen wir wissen, dass das "Startbit" ankommt, so dass wir ein globales Flag gesetzt und starten Sie das Lesen der 8 Bit und sie in ein Register (r19). Sie können mehr über UART lesen auf dieser Wikipedia-Artikel . Wir verwenden ein anderes Register (R25) als Zähler, zu wissen, wann zu lesen und aufhören zu lesen.
Dies ist, wie der Code aussieht:

	 ;
	 ; UART Lese-Eingang
	 ; Dieser Code wird alle 635 Zyklen im Anzeiger-Code ausgeführt
	 ;
	 in r18, _SFR_IO_ADDR (PINB), 1 Uhr

	 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; hinzufügen 17
	 andi r25, 0xF1
	 rjmp chkend
 chkend3togo:
	 nop
	 nop
	 nop
 chkend:
	 nop
	 rjmp hsyncoff

 waitlow:
	 Und wartet nur auf niedrigem
	 SBR R18, INPUT
	 inc r25
	 nop
	 delay3x 4
	 nop
	 nop
	 rjmp hsyncoff

 hsyncoff:
	 ......  HSYNC Code ......
         ......  wenn R25 == 0x91 dann die UART gelesen wurde und in R19 gespeichert ......
	 ......  verarbeiten und stellen Sie jetzt beide Register ....

Da wir ein Byte gelesen zu der Zeit, so scheint es sehr nützlich für unser Projekt, eine Reihe von "Befehlen" (von einem Byte lang) zu definieren, um die Zeichen, die angezeigt wird (vier Befehle, um jedes einzelne Zeichen gesetzt) ​​gesetzt werden muss, und zusätzlich ein weiterer Befehl zum anzeigen kleinen Platz an den Ecken des Bildschirms, die anzeigen, wer gerade Dienst wird.
Hier ist unsere Liste der Befehle:

 0 0 0 1 DDDD (Zeichen 1) [0-D] -> 0 1 2 3 4 5 6 7 8 9 (SPACE) BOG
 0 0 1 0 DDDD (Zeichen 2)
 0 0 1 1 DDDD (Zeichen 3)
 0 1 0 0 DDDD (Charakter 4)
 0 1 0 1 0 0 0 1 (servieren eine oben)
 0 1 0 1 0 0 1 0 (B dienen unten)
 0 1 0 1 0 1 0 0 (servieren eine oben)
 0 1 0 1 1 0 0 0 (b dienen unten)

Alles, was wir jetzt brauchen, ist ein Gerät mit dem Bluetooth-Modul anschließen und senden Sie die Befehle.
Verpassen Sie nicht den letzten Teil dieses Projektes, dass ich in Kürze veröffentlichen, einschließlich Source-Codes und einem Controller für Android-Plattformen entwickelt.

Konfigurieren des Bluetooth-Modul mit Arduino

Das Bluetooth-Modul kommt mit einem Firmware namens "linvor1.5" standardmäßig (zumindest die, die auf DX). Um ihn zu programmieren, müssen Sie eine Reihe von AT-Befehle über die TX / RX-Pins senden müssen, scheint Arduino als ideal für diese Aufgabe. Schließen Sie zwei Kabel zwischen dem TX / RX des Arduino und der RX / TX des Bluetooth-Moduls (sie müssen überquert werden, RX mit TX und TX mit RX). Dann legen Sie den folgenden Code auf dem Arduino:

 int incomingByte = 0; / / für eingehende serielle Daten

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

 void loop () {
	 / / Daten senden nur, wenn Sie Daten zu empfangen:
	 wenn (Serial.available ()> 0) {
		 / / Lesen des ankommenden Byte:
		 incomingByte = Serial.read ();

		 / / Sagen, was du hast:
		 Serial.write (incomingByte);
	 }

 }

Laden Sie es auf der Arduino und klicken Sie auf den Monitor, erhalten Sie die folgende Antwort:

Jetzt werden wir um den vorgegebenen Namen zu "Anzeigetafel", ändern, dies zu tun, ersetzen Sie die Serial.print("AT") mit Serial.print("AT+NAMEscoreboard") und wiederholen Sie den Vorgang.
Schließlich brauchen wir, um die Baudrate auf 2400 gesetzt, mit dem folgenden Befehl: Serial.print("AT+BAUD2")


Kommentare und Fragen sind herzlich willkommen!

Related Posts
Scoreboard (Teil 1: VGA-Signal von einem ATtiny45)

Spam-Schutz durch WP Captcha-freie