Главная > Электронные Проекты > Scoreboard (Часть 2: Чтение UART с Bluetooth модулем)

Табло (Часть 2: Чтение UART с Bluetooth модулем)

Bluetooth Module В этой статье вы найдете, как Bluetooth модуль взаимодействует с Attiny45 в VGA табло проекта.

Bluetooth модуль будет ожидать соединения с устройством (например, телефон Android) и будет действовать как SPP (Serial Port Profile) повторного прохождения все полученные от устройств с интерфейсом UART. В нашем случае ATtiny будет читать данные, но не будет "говорить обратно" с модулем, так что это действительно один из способов связи с этой точки зрения.


Электрические говоря, нам просто нужно один провод для соединения TXD выводом модуля Bluetooth (PIN 1) PB5 (PIN 1) ATtiny, который будет настроен в качестве входных данных.

Теперь сложная часть находится на стороне прошивки микроконтроллера, так как нам нужно прочитать входные, не нарушая сроков VGA. Наши ATtiny работает на 20МГц, что дает 0.05μs за такт, в программу основного цикла базируется на VGA горизонтальной тайминги, чтобы мы могли прочитать каждый вход 635 циклов (31.75μs). С другой стороны, модуль BT настроен на 2400 бод, что означает, что каждый бит будет длиться 416.66μs. Таким образом, делая быстрый математике, 416,66 / 31,75 = 13,12, то есть каждый бит будет прочитан примерно в 13 раз. Будем считать, читать # 7, допустимым и мы не будем делать любые проверки.

UART будут отправлять «высокий» сигнал, когда находится в режиме ожидания, как только мы получаем "низкий" Мы знаем, что "старт-бит" прибывает, поэтому мы ставим перед собой глобальный флаг и начать читать 8 бит и положить их в регистр (R19). Вы можете прочитать больше о UART на эту статью Википедии . Мы используем другой регистр (R25) в качестве счетчика, чтобы знать, когда читал и прекратить чтение.
Вот как выглядит код:

	 ;
	 ; UART для чтения входных
	 ; Этот код выполняется каждые 635 циклов в табло код
	 ;
	 В r18, _SFR_IO_ADDR (PINB), 1 часы

	 r25 дюйм, 0
	 breq waitlow
	 вкл r25
	 r16 MOV, r25
	 r16 Энди, 0x0F
	 r16 дюйм, 7
	 Brne chkfornext5togo
	 ЛСР r19
	 sbrc r18, INPUT
	 r19 ориентации, 0x80
	 NOP
	 rjmp chkfornext
 chkfornext5togo:
	 NOP
	 NOP
	 NOP
	 NOP
	 NOP
 chkfornext:
	 r16 дюйм, 14
	 Brne chkend3togo
	 r25 SUBI, 0xEF, добавить 17
	 r25 Энди, 0xF1
	 rjmp chkend
 chkend3togo:
	 NOP
	 NOP
	 NOP
 chkend:
	 NOP
	 rjmp hsyncoff

 waitlow:
	 , Ожидая низкого
	 sbrs r18, INPUT
	 вкл r25
	 NOP
	 delay3x 4
	 NOP
	 NOP
	 rjmp hsyncoff

 hsyncoff:
	 ......  HSYNC код ......
         ......  если r25 == 0x91, то UART читали и хранили в R19 ......
	 ......  обработки и сброса обоих регистров ....

Так как мы читаем один байт в то время, кажется, очень удобно для нашего проекта, чтобы определить набор «команды» (в один байт), установить знаки, которые должны отображаться (четыре команды для каждого из знаков), и дополнительно другую команду, чтобы отобразить маленькой площади по углам экрана, который будет показывать, кто в настоящее время отбывает.
Вот наш список команд:

 0 0 0 1 DDDD (символ 1) [0-D] -> 0 1 2 3 4 5 6 7 8 9 (пробел) BOG
 0 0 1 0 DDDD (символ 2)
 0 0 1 1 DDDD (символ 3)
 0 1 0 0 DDDD (символ 4)
 0 1 0 1 0 0 0 1 (служить последняя)
 0 1 0 1 0 0 1 0 (служить Б внизу)
 0 1 0 1 0 1 0 0 (служить последняя)
 0 1 0 1 1 0 0 0 (б служить внизу)

Все, что нам сейчас нужно, это устройство для подключения к Bluetooth-модуль и отправить команды.
Не пропустите заключительную часть этого проекта, что я скоро опубликую в том числе исходные коды и контроллер разработан для Android платформ.

Настройка модуля Bluetooth с Arduino

Bluetooth-модуль поставляется с прошивкой под названием "linvor1.5" по умолчанию (по крайней мере один на DX). Чтобы запрограммировать его, вам нужно отправить серии AT команды через TX / RX штифты, Arduino, кажется, идеально подходит для этой задачи. Соединение двух кабелей между TX / RX в Arduino и RX / TX по Bluetooth модуль (они должны быть преодолены, RX с TX и RX TX с). Затем вставьте следующий код на Arduino:

 Int incomingByte = 0; / / для входящих последовательных данных

 пустота установки () {
   Serial.begin (9600);
   Serial.print ("В");
 }

 пустота цикла () {
	 / / Отправлять данные только при получении данных:
	 если (Serial.available ()> 0) {
		 / / Чтение входящих байт:
		 incomingByte = Serial.read ();

		 / / Говорят, что вы получили:
		 Serial.write (incomingByte);
	 }

 }

Добавить его к Arduino и нажмите на монитор, вы получите следующий ответ:

Теперь мы собираемся изменить имя по умолчанию на «табло», сделать так, замените Serial.print("AT") с Serial.print("AT+NAMEscoreboard") и повторите процедуру.
Наконец, нам нужно установить скорость передачи данных до 2400, используя следующую команду: Serial.print("AT+BAUD2")


Комментарии и вопросы приветствуются!

Похожие сообщения
Табло (Часть 1: VGA сигнал от Attiny45)

  1. Пока нет комментариев.

Защита от спама на WP Captcha-Free