Табло (Часть 2: Чтение UART с Bluetooth модулем)
В этой статье вы найдете, как 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)
