Bluetooth to rs232 схема
Миниатюрный модуль позволяет подключиться к телефонам, PDA, наладонникам, смартфонам, ноутбукам, к любым устройствам, имеющим на борту модуль Bluetooth в режиме master, и передавать данные через стандартный RS-232.
Модуль HC-04 (так коротко он называется в даташите) питается от 3.3 вольт, снабжен малогабаритной антенной, имеет TTL сигналы приема и передачи RXD и TXD стандартного RS-232, а также выход на светодиод, отображающий статус радиоканала.
Процедура подключения выглядит следующим образом: сразу после включения питания модуль отвечает на нехитрый набор AT-команд (см. далее). Настройки порта по умолчанию 9600 бод, 8 бит данных, 1 стоп-бит, без бита четности (скорость можно менять AT-командой в широких пределах). При отсутствии связи по радиоканалу индикационный светодиод часто мигает. После того, как master Bluetooth установил соединение, светодиод переходит на постоянное свечение, модуль перестает отвечать на AT-команды, и начинает просто передавать данные. Образуется следующий канал связи:
Таким образом, можно по радиоканалу Bluetooth передавать данные на стандартный UART, имеющийся в большинстве встраиваемых систем (этот порт имеется почти во всех микроконтроллерах, либо легко организуется программно). На стороне master-устройства BlueTooth (телефон, PDA, ноутбук с Linux или Windows и проч.) появляется виртуальный COM-порт, с которым можно легко работать программно.
Модуль построен на чипе BC417143B-IQN-E4 (BlueCore4-External device) компании CSR (Cambridge Silicon Radio), см. [2], и 8-мегабитном чипе FLASH-памяти ES29LV800DB, в котором записано firmware BC417143B.
[Технические параметры модуля HC-04]
— используемые радиочастоты 2.40 .. 2.48 ГГц, диапазон ISM (регистрация и лицензирование частот не требуется), уровень мощности Class2 (+6 dBm), чувствительность приемника -85 dBm.
— протокол BlueTooth V2.0.
— возможные скорости передачи данных 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400 бод. Скорость может быть выбрана пользователем с помощью AT-команд, по умолчанию скорость 9600 бод, 8 бит данных, 1 стоп-бит, без бита четности
— напряжение питания 3.3 вольт, ток потребления 35 мА в режиме поиска радиосоединения, и около 8 мА, когда радиоканал установлен и функционирует, ток в режиме сна — рабочий температурный диапазон -40 .. +105 o C.
— размеры 28 x 15 x 2.35 мм.
[Система AT-команд модуля HC-04]
Модуль отвечает на команды AT, когда радиоканал не установлен.
AT проверка RS-232 (в ответ на эту команду модуль выдает OK).
AT+BAUDx установка скорости, где x шестнадцатеричное число от 1 до C (1 соответствует 1200 бод, C соответствует 1382400 бод), подробности см. в даташите (пакет [3]). Измененная настройка скорости сохраняется при выключении питания.
AT+NAMEname изменение имени устройства (в нашем примере linvor) на другое имя name.
AT+PINpppp изменение пароля (PIN-кода), где pppp новый пароль. Пароль по умолчанию 1234.
[Тестирование модуля HC-04]
1. Нужно подключить светодиод и подать 3.3 вольта на модуль. Получается следующая простая схема:
2. После подачи питания светодиод на модуле начинает часто мигать, сигнализируя о готовности к подключению радиоканала. В качестве master BlueTooth я использовал телефон HTC TOUCH pro2 T7373 (Windows Mobile 6.1 Professional, OS CE 5.2.21048). Чтобы установит канал связи, нужно сначала через меню настроек включить радиоинтерфейс Bluetooth.
3. После того, как интерфейс BlueTooth включен, нужно запустить поиск новых устройств Bluetooth через Меню -> Добавить устройство. После поиска телефон обнаружит новое Bluetooth-устройство linvor, это и есть наш радиомодуль. Для соединения с устройством щелкните на имя linvor, появится запрос пароля. В качестве пароля (PIN-код) нужно ввести 1234. После успешного подключения будет предложено выбрать имя COM-порта, с которым будет связано Bluetooth-подключение (например COM2).
4. Чтобы соединиться с устройством, нужно выбрать его в списке и щелкнуть на надписи «Соединить». Как только соединение установлено, светодиод на модуле HC-04 переключится на постоянное свечение, и через COM2 можно передавать и принимать данные.
5. Для проверки передачи данных я использовал putty (на телефоне putty Windows Mobile, см. [4], а на компьютере putty для Windows XP, см. [5]). К TTL-сигналам порта RS-232 модуля я подключил микроконтроллер Atmel AVR AT90USB162MU (установленный на макетной плате AVR-USB162MU). При таком подключении питание +3.3 вольта подается на модуль Bluetooth от внутреннего стабилизатора напряжения микроконтроллера AT90USB162MU (перемычка SJ1 должна стоять в положении 2-3).
Передачу данных я контролировал через виртуальный COM-порт USB CDC, скомпилированный из примеров библиотеки LUFA. Получилась такая тестовая цепочка:
К сожалению, связь между двумя модулями HC-04 не поддерживается, связь возможна только с master-устройством Bluetooth (любой телефон, смартфон, наладонник или ноутбук, у которого есть интерфейс Bluetooth). Однако есть возможность написать для модуля HC-04 своё firmware с любым функционалом, в том числе и с поддержкой режима master Bluetooth (см. [2] и [8]).
Резюме: радиомодуль Bluetooth HC-04 очень удобен для быстрой и недорогой реализации двухсторонней беспроводной связи с различными embedded-системами — различными датчиками, роботами, бытовыми приборами. Модуль стоит на dealextreme.com всего лишь 7.2 доллара (бесплатная доставка free shipping), его можно легко заказать по предоплате через PayPal или картой VISA, MasterCard, получите прямо на почте. Мои модули я получил через 22 дня после заказа.
[Программатор для HC-04]
Компания CSR предлагает довольно дорогие программаторы, самый простой и дешевый из них стоит около $300 (USB SPI Converter, Product ID: DEV-SYS-1808-1A), и его в России нигде не купить. К счастью, можно собрать самому довольно простой программатор, подключающийся через порт LPT компьютера. Этот же программатор позволяет делать полноценную отладку по исходному коду программы и по дизассемблированному коду, просматривать значения регистров процессора и ячеек памяти.
Внешний вид собранного программатора:
С программатором работают GUI-программы PSTool и BlueFlash, которые позволяют скачивать данные настроек и firmware из чипа FLASH, а также стирать и перезаписывать настройки и firmware. Утилиты PSTool и BlueFlash находятся в пакете по ссылке [8]. Кроме того, этот LPT-флешер работает как полноценный аппаратный отладчик в среде разработки xIDE фирмы CSR (находится в том же пакете).
Программа PSTool позволяет считывать, сохранять, редактировать, сливать вместе (merge), записывать в память FLASH чипа настройки модуля и настройки firmware. Настройки сохраняются в виде текстового файла с расширением *.psr. Внешний вид интерфейса программы PSTool:
Для сохранения всей FLASH-памяти целиком и для её перезаписи служит программа BlueFlash.
1. Wireless Bluetooth RS232 TTL Transceiver Module site:dx.com .
2. BlueCore4-Ext™ site:csr.com — общее описание BlueCore4-External device на сайте компании CSR.
3. Документация на модуль (описание модуля, AT-команды, даташит на чип BC417143B).
4. PocketPuTTY download site:pocketputty.net — Putty для Windows Mobile.
5. PuTTY Download Page site:chiark.greenend.org.uk — putty для Windows XP и других платформ.
6. Как покупать на dealextreme site:dealextreme.spb.ru .
7. LUFA — бесплатная библиотека USB для микроконтроллеров Atmel AVR.
8. 180318CSR_CASIRA_BLUELAB_SDK_v4.1.zip — CSR CASIRA BLUELAB SDK v4.1, пароль на архив casira (пароль установлен потому, что иначе Deposit удаляет файл). Здесь есть все необходимое для разработки и отладки firmware для HC-04 (документация, среда разработки xIDE3, примеры кода, библиотеки, утилиты для прошивки и бекапа памяти).
9. Дампы настроек (.psr) и firmware HC-04 (.xdv и .xpv), сделанные программами PSTool и BlueFlash.
Bluetooth RS232 Module
Before you get too stuck into this page, please bear a few things in mind:
- Much of this page is my interpretation of the datasheet. I could have misunderstood something, or I could have completely got something wrong. Don’t take this page as gospel. If you think anything is wrong, then contact me: Feel free to send feedback, suggestions, corrections.
- If you find this page useful, please consider donating a small sum of money (of your choosing) to help fund my time and the upkeep of this server. This site is run entirely out of my own pocket, with no advertising because that’s how I feel it should be. Anything you could spare would make a difference.
The WLS123A1M RS232 Bluetooth module was bought for me as a present by Aaron Brown from Seeed Studio. It was a little hard to get the device going, and the instructions a little hard to follow so I decided to document my results with the module here. I also developed an Arduino Shield for the device, which can be found further down this page.
Documentation
The part was purchased from SeeedStudio, and can be found here: Serial Port Bluetooth Module (Master/Slave). The Serial Port Bluetooth Module (Master/Slave) Wiki Page has some basic information, but the key to success for me was in the Bluetooth Module Manual v1.2.pdf document. There is also some interesting discussion on the forums of SeeedStudio, here: Set up connections between two BluetoothBee step by step.
Arduino Shield – Connecting It Up
As mentioned previously, I made an Arduino Shield for the WLS123A1M Bluetooth RS232 Module. The PCB layout is available for you to do as you please, in line with my standard Disclaimer & Copyright.
With my Arduino shield it is possible to connect the bluetooth module directly to the FTDI chip. The Arduino device was programmed to just flash an LED (digital #13) so it left the serial communications lines. Simply connecting the RS232 UART lines of the bluetooth module to the TX/RX lines of the Arduino does the trick: Arduino-RX to Bluetooth-TX and visa-versa allows them to communicate (This may not be true when communicating from the Arduino’s MCU and not FTDI-USB – check the connections!).
Signal PIO1 (pin #24) gives a status instruction port; high when connected, low when disconnected. Signals PIO10 (pin #33) and PIO11 (pin #34) also give indications to the modules status. See the Software Features section of the device’s datasheet for more details on their intended use.
Talking to the Module
The biggest thing to remember is that the WLS123A1M Bluetooth Module expects a carriage-return (\r) and line-feed (\n) combination (\r\n) before and after every command. To ensure this, I always sent a blank like before I entered the command, and once again after it. Sending too many \r\n sequences does not cause any problems. Not sending enough causes lots of errors. The logic inputs are TTL inputs, supposedly at 3.3v. The data-sheet says they will tolerate 5V logic from the FTDI/Atmel chips, and in my experience do.
I used two computers to develop with the WLS123A1M module. My Apple MacBook Pro was used on the USB side of the Arduino board, as the local control of the board. My Ubuntu desktop machine was used to connect with the module via bluetooth. On the MacBook, I used a program called CoolTerm to act as a dump terminal, and the standard Mac OS X drivers were used to communicate with the Arduino’s FTDI chipset. The default speed of this specific model was 38400 bps, but this can be changed in software (see the +INBD command).
Presented below is a mixture of my own experience and what various data-sheets claim. If a command is mentioned in the datasheet and not in this section, it means I haven’t personally tried it. Any changes made to these settings are retained even when the device is powered off.
Commands for Setting Up
It is also important to note that the module has two separate modes: Master and Slave. Changing between these is the first topic of discussion.
Mode (STWMOD)
The WLS123A1M module has two separate modes: Master and Slave modes. In master mode, it is the module that initiates connections, requiring it to scan for slave devices. In slave mode the module broadcasts itself as being available and waits for a master device to initiate a connection with it. These modules are in one state or another, they cannot be in both at the same time (that I know of), where as a PC can be. In my brief experience with the module, it seems to be easier (at least for what I am doing) to use slave mode, thus transferring the control to the more powerful device (such as a PC) with a better user interface.
To set the device into Master (server) mode, you would send the following command:
To set the device into Slave (client) mode, you would send:
The module will respond with