Как связать две ардуино по блютуз

Обновлено: 04.07.2024

Trema-модуль Bluetooth HC-05 - это модуль беспроводной связи позволяющий передавать и принимать данные по радиоканалу на разрешённом ISM (Industry, Science and Medicine) диапазоне частот, от 2.4 ГГц до 2.5 ГГц, предназначенном для использования в индустриальных, научных и медицинских целях, используя метод AFH (Adaptive Frequency Hopping Feature) - адаптивной скачкообразной перестройки несущей частоты.

Видео:

Спецификация:

Все модули линейки "Trema" выполнены в одном формате

Подключение:

Trema Bluetooth модуль HC-05 подключается к Arduino по шине UART (можно использовать как аппаратную так и программную шину).

  • Вывод модуля TX подключается к аппаратному (фиксированному) или программному (назначенному) выводу RX Arduino. Это линия шины UART для передачи данных от модуля к Arduino.
  • Вывод модуля RX подключается к аппаратному (фиксированному) или программному (назначенному) выводу TX Arduino. Это линия шины UART для передачи данных в модуль от Arduino.
  • Вывод модуля K подключается к любому выводу Arduino номер которого указывается в скетче. Это линия перевода модуля в режим AT-команд. Модуль в обычном режиме будет воспринимать AT-команды, только после того как на этот вывод кратковременно подать высокий уровень. Модуль перейдёт в режим AT-команд (на скорости 38400 бит/с и не будет соединяться с другими модулями) если на нём будет установлен высокий логический уровень при подаче питания или перезагрузке.

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Способ - 1 : Используя проводной шлейф и Piranha UNO

Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.


Способ - 2 : Используя Trema Set Shield

Модуль можно подключить к UART входу Trema Set Shield.


Способ - 3 : Используя проводной шлейф и Shield

Используя 2-х и 3-х проводные шлейфы, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.


Trema Bluetooth модуль HC-05 можно подключить и непосредственно к компьютеру (через адаптер USB-UART), передавая AT-команды из программ терминалов, о том как это сделать описано в разделе Wiki AT-команды Bluetooth .

Питание:

Подробнее о модуле:

В ISM диапазоне частот работают и радио модули nRF24L01+, но в отличии от этих модулей, которые работают на определённой частоте диапазона, Trema-модуль Bluetooth HC-05 используют метод AFH (Adaptive Frequency Hopping Feature) адаптивной скачкообразной перестройки несущей частоты (он меняет свою частоту 1600 раз в секунду). Несущая частота меняется псевдослучайным образом и заранее известна только паре «ведущий - ведомый», что обеспечивает не только устойчивость к помехам (занят канал? не беда, перейдём на другой) но и сохранение конфиденциальности передаваемых данных.

Преимуществом Bluetooth модулей перед другими модулями беспроводной передачи данных заключается в простоте работы (Вам не нужно знать протоколы, работать с регистрами, отслеживать сигналы и т.д.) и широкой распространённости данного типа передачи данных (Вы можете управлять Вашими устройствами, или получать их показания, практически с любого телефона, планшета, ноутбука).

Модуль не требует подключения антенны, т.к. она встроена (присутствует на ПП модуля).

В роли ведомого, Trema Bluetooth модуль HC-05 поддерживает метод автоматического сопряжения (создания пары) с другими Bluetooth устройствами выступающими в роли ведущих и инициировавших сопряжение.

Trema Bluetooth модуль HC-05 поддерживает автоматическое переподключение к последнему устройству (если информация о сопряжении с ним не была стёрта пользователем из списка пар). Если Вы установили подключение к другому Bluetooth устройству и связь с ним пропала (отключилось питание, увеличилось расстояние и т.д.), то после устранения причины пропадания связи, устройства вновь будут готовы передавать/принимать данные, без Вашего вмешательства.

Trema Bluetooth модуль HC-05, в отличие от Bluetooth модулей HC-06, может работать не только в роли ведомого (slave), ожидая подключение, но и в роли ведущего (Master), инициируя поиск (обнаружение), сопряжение и подключение к другим Bluetooth модулям находящимся в радиусе действия. Модуль способен принимать и отправлять данные как в роли ведущего (master), так и в роли ведомого (slave).

Используя Trema Bluetooth модули HC-05 можно создавать связь между двумя Arduino, или между Arduino и другими устройствами, как ведущими (телефон, планшет, компьютер, . ), так и ведомыми (гарнитуры, клавиатуры, мышки, . ).

Специально для Trema Bluetooth модуль HC-05 нами разработана библиотека iarduino_Bluetooth_HC05 которая значительно упрощает процесс поиска любых Bluetooth устройств, создания ролей (master/slave) и сопряжения. Поиск и подключение к другим модулям Bluetooth осуществляется по их именам а не адресам. При использовании библиотеки для связи двух Trema Bluetooth модулей HC-05 можно передавать строки, значения и массивы любых типов, при этом библиотека осуществляет проверку доставки данных используя циклически избыточный код, так что Trema Bluetooth модуль HC-05 передавший данные получает подтверждение приёма, а Trema Bluetooth модуль HC-05 получивший данные может оперировать информацией о количестве элементов массива и его размере.

Подробнее про установку библиотеки читайте в нашей инструкции..

Примеры:

Trema Bluetooth модуль в роли ведомого (Slave) принимает данные:

Связь осуществляется между двумя Trema Bluetooth модулями HC-05 использующими библиотеку iarduino_Bluetooth_HC05. Скетч модуля исполняющего роль master приведён в следующем примере.

Инициализация модуля hc05.begin(); и создание ведомой роли hc05.createSlave(); может занять несколько секунд.
В этом примере модуль подключается через программный UART используя библиотеку SoftwareSerial, а при инициализации работы с модулем hc05.begin() указывается объект softSerial. Но модуль можно подключать и к аппаратному UART, тогда при инициализации работы с модулем hc05.begin() нужно указать Serial или Serial1, Serial2, Serial3, см. пример подключения к Arduino Mega.

При использовании Trema Bluetooth модуля HC-05 в качестве ведомого можно однократно вызвать функцию createSlave() с указанием имени и pin кода, после чего навсегда исключить эту функцию из кода. Тогда, при подаче питания, Trema Bluetooth модуля HC-05 будет стартовать в режиме ведомого и соединяться с первым ведущим который правильно укажет имя и pin ведомого.

Функция createSlave() объекта hc05 позволяет создать ведомую роль Trema Bluetooth модулю HC-05 при подключении к любым Bluetooth модулям, но функции available() и read() объекта hc05 работают только при организации связи между двумя Trema Bluetooth модулями HC-05 использующими библиотеку iarduino_Bluetooth_HC05! Если данные принимаются от другого Bluetooth модуля, то их нужно читать посимвольно из UART, тогда код loop будет выглядеть так:

Строки кода до функции loop остаются без изменений. Все данные отправленные внешним Bluetooth модулем принимаются как строки.

Trema Bluetooth модуль в роли ведущего (Master) передаёт данные:

Связь осуществляется между двумя Trema Bluetooth модулями HC-05 использующими библиотеку iarduino_Bluetooth_HC05. Скетч модуля исполняющего роль slave приведён в предыдущем примере.

Инициализация модуля hc05.begin(); и создание ведущей роли с подключением к ведомому hc05.createMaster(); может занять до минуты.
В этом примере модуль подключается через программный UART используя библиотеку SoftwareSerial, а при инициализации работы с модулем hc05.begin() указывается объект softSerial. Но модуль можно подключать и к аппаратному UART, тогда при инициализации работы с модулем hc05.begin() нужно указать Serial или Serial1, Serial2, Serial3, см. пример подключения к Arduino Mega.

Строки кода до функции loop остаются без изменений. Все данные передаются символами (байтами) или строками. По этому элементы массива отправляются по отдельности.

Скетч поиска любых Bluetooth устройств в радиусе действия:

Инициализация модуля hc05.begin(); может занять несколько секунд.
В этом примере модуль подключается через программный UART используя библиотеку SoftwareSerial, а при инициализации работы с модулем hc05.begin() указывается объект softSerial. Но модуль можно подключать и к аппаратному UART, тогда при инициализации работы с модулем hc05.begin() нужно указать Serial или Serial1, Serial2, Serial3, см. пример подключения к Arduino Mega.

Скетч поиска любых Bluetooth устройств при подключении модуля к аппаратной шине UART1 платы Arduino Mega:

Инициализация модуля hc05.begin(); может занять несколько секунд.
В этом примере модуль подключается к Arduino MEGA через аппаратный UART1, а при инициализации работы с модулем hc05.begin() указывается объект Serial1. Подключение дополнительных библиотек и инициализация шины UART1 не нужна Serial1.begin(38400); . У платы Arduino MEGA имеется 4 аппаратных шины UART с которыми работают классы: Serial, Serial1, Serial2, Serial3, любой из них можно использовать при инициализации модуля для работы с ним.

Описание основных функций библиотеки:

Подключение библиотеки:

Функция begin();

  • Назначение: Инициализация работы с модулем по шине UART.
  • Синтаксис: begin( ОБЪЕКТ_UART );
  • Параметры:
    • ОБЪЕКТ - класс или объект который используется для работы с шиной UART к которой подключён модуль.
    • Функция вызывается 1 раз в коде setup.
    • Используемый ОБЪЕКТ_UART не нуждается в предварительной инициализации ( Serial.begin( СКОРОСТЬ ); )
    • Можно указать объект программной шины UART или класс Serial, Serial1, Serial2, Serial3 и т.д. в зависимости от используемой платы Arduino. Если указать класс Serial, то при загрузке скетча потребуется отключать модуль от Arduino, а все выводы данных в монитор последовательного порта будут восприниматься модулем как команды.
    • Пример:

    Функция createSlave();

    • Назначение: Создания ведомого Bluetooth устройства (Slave) ожидающего подключение.
    • Синтаксис: createSlave( ИМЯ , PIN-КОД );
    • Параметры:
      • ИМЯ - строка содержащая имя назначаемое данному Bluetooth модулю.
      • PIN-КОД - строка содержащая код доступа к данному Bluetooth модулю.
      • ИМЯ не должно превышать 32 символа.
      • PIN-КОД не должен превышать 16 символов.
      • Ранее установленные соединения (если они были) будут разорваны.
      • Если функция вернула true, то её дальнейший вызов не обязателен (даже после отключения питания).
        Модуль будет соединяться с любыми ведущими (Master) Bluetooth устройствами, которые правильно введут Имя и PIN.

      Функция createMaster();

      • Назначение: Создания ведущего Bluetooth устройства (Master) с подключением к ведомому устройству.
      • Синтаксис: createMaster( ИМЯ , PIN-КОД );
      • Параметры:
        • ИМЯ - строка содержащая имя ведомого Bluetooth устройства к которому требуется подключиться.
        • PIN-КОД - строка содержащая код доступа ведомого Bluetooth устройства к которому требуется подключиться.
        • ИМЯ не должно превышать 32 символа.
        • PIN-КОД не должен превышать 16 символов.
        • Ранее установленные соединения (если они были) будут разорваны.
        • Ведомое устройство (Slave) должно находиться в радиусе действия и ожидать подключения.
        • Если функция вернула true, то её дальнейший вызов не обязателен (даже после отключения питания).
          Модуль будет автоматически соединяться с указанным ведомым (Slave) Bluetooth устройством, пока не будет вызвана функция библиотеки разрывающая данное соединение, как на ведущем (Master), так и на ведомом (Slave) Bluetooth устройстве.

        Функция find();

        • Назначение: Поиск любых устройств Bluetooth в радиусе действия.
        • Синтаксис: find( ВРЕМЯ , [ ФЛАГ ] );
        • Параметры:
          • ВРЕМЯ - число от 1 до 48 определяющее максимальное время поиска Bluetooth устройств.
          • ФЛАГ - значение (true или false) разрешающее поиск по уровню сигнала.
          • Время поиска рассчитывается умножением числа ВРЕМЯ на 1,28 секунд.
          • Необязательный параметр ФЛАГ по умолчанию сброшен (поиск ведётся в стандартном режиме).
          • Функция прекращает поиск при обнаружении 5 устройств или по достижении указанного времени.
          • Ранее установленные соединения (если они были) будут разорваны.
          • Функция только находит Bluetooth устройства, но не сопрягает и не соединяет модуль с ними.
          • Имена и адреса найденных устройств доступны в строковых массивах findName и findAddr.

          Функция end();

          • Назначение: Разрыв подключения к внешнему Bluetooth устройству.
          • Синтаксис: end();
          • Параметры: Нет.
          • Возвращаемые значения: Нет.
          • Примечание:
            • Функция работает вне зависимости от роли модуля и того было подключение или нет.
            • После выполнения функции, роль модуля сохраняется.
            • После выполнения функции, автоматическое переподключение к последнему Bluetooth устройству будет недоступно.

            Функция checkConnect();

            • Назначение: Проверка подключения к внешнему Bluetooth устройству.
            • Синтаксис: checkConnect();
            • Параметры: Нет.
            • Возвращаемые значения: bool - наличие соединения (true или false).
            • Примечание: Функция работает вне зависимости от роли модуля.
            • Пример:

            Функция send();

            Функция available();

            • Назначение: Проверка наличия принятых данных от внешнего Trema Bluetooth модуля, так же использующего эту библиотеку.
            • Синтаксис: available( [ &ЭЛЕМЕНТЫ [ ,& БАЙТЫ ] );
            • Параметры:
              • ЭЛЕМЕНТЫ - необязательная ссылка на переменную в которую вернётся количество элементов в принятом массиве. Если принята переменная, а не массив, то вернётся 0.
              • БАЙТЫ - необязательная ссылка на переменную в которую вернётся количество байт в принятом массиве или переменной.
              • Функция работает только при организации связи между двумя Trema Bluetooth модулями использующими эту библиотеку.
              • Если нет принятых данных, то функция вернёт false, а переменные на которые указывают ссылки останутся без изменений.
              • Если есть принятые данные доступные для чтения, то функция вернет true, а сами данные можно прочитать функцией read().
              • Если данные приняты с ошибкой (не совпал CRC16) то функция поведёт себя так, как будто нет принятых данных.
              • Принимать данные модуль может вне зависимости от установленной роли (как Master, так и Slave).
              • Функцию нельзя использовать для проверки получения данных от Bluetooth модулей не использующих эту библиотеку, так как в их данных не будет присутствовать CRC16.

              Функция read();

              • Назначение: Чтение данных пришедших от внешнего Trema Bluetooth модуля, так же использующего эту библиотеку.
              • Синтаксис: read( ПЕРЕМЕННАЯ );
              • Параметры:
                • ПЕРЕМЕННАЯ - в которую будут записаны принятые данные (строки, числа, массивы).
                • Функция работает только при организации связи между двумя Trema Bluetooth модулями использующими эту библиотеку.
                • До приёма данных необходимо проверить их наличие функцией available().
                • Тип переменной в которую читаются данные должен совпадать с типом передаваемых данных.
                  Чтение произойдёт даже если типы не совпадают, но принятые данные могут отличаться от переданных.
                • Принимать данные модуль может вне зависимости от установленной роли (как Master, так и Slave).
                • Если после функции available() и до функции read() выполнить любые другие функции библиотеки, то принятые данные будут потеряны.
                • Функцию нельзя использовать для получения данных от Bluetooth модулей не использующих эту библиотеку, так как перед данной функцией требуется обратиться к функции available().
                • Пример:

                Функция runAT();

                • Назначение: Выполнение AT-команд и вывод результата.
                • Синтаксис: runAT( КОМАНДА [ , ВРЕМЯ [ , ВЫХОД ]] );
                • Параметры:
                  • КОМАНДА - строка содержащая AT-команду которую требуется выполнить.
                  • ВРЕМЯ - положительное целое число миллисекунд которое отводится на выполнение команды (по умолчанию 500 мс).
                  • ВЫХОД - флаг (true или false) разрешающий досрочный выход при успешном выполнении команды (по умолчанию true).
                  • Данная функция позволяет выполнять операции с модулем которые не вошли в функционал библиотеки.
                  • Результат выполнения AT-команды можно анализировать как по строке ответа модуля, так и по значению переменной flgResult.
                  • Пример:

                  Переменная flgResult:

                  Содержит результат выполнения последней AT-команды (тип int8_t), -1: Error(*), 0: Неизвестно, 1: OK.

                  Массив findName:

                  Содержит пять строк с именами (или адресами) найденных Bluetooth устройств (тип char*).

                  Массив findAddr:

                  Содержит пять строк с адресами найденных Bluetooth устройств (тип char*).

                  Если требуется принять или передать данные Bluetooth устройству которое не является Trema-модулем, или не использует данную библиотеку, то соединение с этим устройством выполняется функциями createMaster() или createSlave(), а передача и приём данных осуществляется через стандартные функции объекта UART через который осуществляется связь с модулем, см. дополнение к первым двум примерам.

                  О том, что такое Bluetooth, и зачем он нужен, много рассказывать не надо. Тем не менее, с точки зрения его использования в образовательной робототехнике следует особо подчеркнуть некоторые моменты. Это распространенный и универсальный тип беспроводной связи. Если укомплектовать робоплатформу модулем Bluetooth, управлять ей становится возможно и с компьютера, и с планшета, и, потенциально с любого другого устройства. А за счет доступности, Bluetooth часто оказывается единственной возможностью беспроводной связи, которую нам предоставляют разработчики. Особенно это касается мобильных робоплатформ начального уровня на базе Arduino.

                  Некоторые программные продукты, такие как ScratchDuino и Scratch4Ardino (“S4A”), требуют постоянного соединения робототехнического контроллера с компьютером, а в большинстве случаев нам хотелось бы отказаться от подключения проводом. Таким образом, мы вынуждены задействовать Bluetooth. В виде альтернативы — переход к Arduino IDE, либо визуальным средствам, позволяющие запрограммировать робоплатформу для автономной работы ( ArduBlock , Snap4Arduino , mBlock ). Но даже для автономных роботов Bluetooth продолжает быть востребованным. Нам может потребоваться отладка, переключение программ работы, либо переход в режим ручного управления. В дополнение - было бы здорово научиться сопрягать разные устройства между собой. Например, использовать ScratchDuino лабораторию как пульт дистанционного управления робоплатформой. Это легко осуществимо, но… лишь при посредничестве компьютера. Вопрос первый, как их связать напрямую?

                  Существует и другой важный аспект, на который нельзя не указать. К сожалению, использование Bluetooth в ходе занятий сопряжено с тем, что сбои связи происходят слишком часто, и на восстановление соединения приходится тратить массу времени. Иногда помогает лишь перезагрузка компьютера, удаление сохраненных настроек и сопряжение устройств заново, с нуля. А иногда не помогают никакие «танцы с бубном». Вопрос второй, как избежать всех этих проблем?

                  Чтобы найти решение, нам придется уйти немного в сторону и прояснить некоторые особенности работы Bluetooth. Для передачи данных используется профиль последовательного порта (SPP) и топология «точка-точка». Когда соединение установлено, между двумя устройствами образуется «прозрачный» беспроводной канал связи, который выглядит так, как будто бы устройства связаны проводом. Точнее, двумя. Первый «проводочек» передает сигнал протокола последовательного обмена данными в одном направлении, второй - в обратном. Единственная существенная особенность — этот канал работает на какой-то конкретной предопределенной скорости обмена. Информация передается в обоих направлениях, и оба устройства находятся в равном положении.

                  Итак, мы вплотную подошли к решению. То, что нам нужно, это настроить наш модуль так, чтобы он был способен самостоятельно играть роль мастера, и устанавливать соединение, не дожидаясь указаний со стороны операционной системы. Для этого годится HC-05, один из самых распространенных внешних Bluetooth модулей. Он, в отличие от HC-06, обладает всем необходимым нам функционалом. Для удобства подключения следует использовать модуль, смонтированный на плате DIY с внешними «ногами» (на фотографии синего цвета).



                  Еще нам понадобится преобразователь USB-TTL UART. Я заказывал все отсюда и отсюда . Вот варианты поближе: раз и два .


                  Настройка HC-05 на инициализацию соединения с подчиненным Bluetooth модулем позволяет получить отказоустойчивый канал связи между двумя произвольными устройствами. Условием является лишь их способность использовать UART . Мы будем рассматривать все на примере коммуникации между двумя Arduino контроллерами, но аналогичным образом можно соединить Raspberry Pi и Espruino , например. Подключив мастер-модуль HC-05 к преобразователю USB-UART, мы получаем «брелок», связывающий подчиненное устройство с компьютером без необходимости настраивать сопряжение на уровне операционной системы. Когда каждая робоплатформа в учебном классе укомплектована собственным управляющим «брелком», нет нужды тратить время занятий на настройки. Bluetooth соединение работает надежно, а при обрыве связи восстанавливается за секунды.

                  Прежде, чем приступить, давайте поймем, на какую скорость обмена настроен Bluetooth робоплатформы, которой мы собираемся управлять. Скорость можно проверить, открыв файл прошивки в Arduino IDE. Если это ScratchDuino робоплатформа — 38400. Для S4A и Snap4Arduino «родная» скорость — 57600. Для робоконтроллеров компании MakeBlock – 115200. Если мы подключаем к самодельной робоплатформе только что купленный модуль HC-05 или HC-06, нам следует знать, что его скорость 9600. Первым делом нужно будет поменять ее на что-то более востребованное. Если собираемся использовать программную среду Snap4Arduino – 57600, mBlock – 115200. Меняются настройки при помощи AT-команд, и в подробностях все описано ниже. Напомню, робоплатформа будет играть роль подчиненного устройства. И master-модуль, и slave-модуль, и управляющая программа (среда программирования: Snap4Arduino, mBlock, etc.) должны использовать одну и ту же скорость. И та же самая скорость должна быть прописана в скетче, загруженном в робоплатформу. Если Вы используете готовый робототехнический набор, например ScratchDuino, узнайте имя Bluetooth модуля и PIN-код для подключения. Имя скорее всего написано снизу, а PIN-код - «1234».

                  Нам потребуется ПО, посредством которого мы будем отправлять AT-команды модулю. Тут все просто, сгодится любая терминальная программа (например, Termite ) или Arduino IDE, в состав которого входит монитор последовательного порта.
                  Будем для определенности считать, что мы используем самодельную робоплатформу на базе Arduino Uno, и хотим добавить ей возможность Bluetooth коммуникации с другим Arduino устройством, а также подключения к компьютеру при помощи собственного преднастроенного USB «брелка». Тот, у кого уже есть готовая робоплатформа с встроенным Bluetooth модулем, легко адаптирует данное руководство применительно к своей ситуации.

                  Итак, вводные данные. Что у нас есть:
                  • компьютер с установленной Arduino IDE и драйверами для нашей платы;
                  • две платы Arduino Uno или подобные с USB кабелем для подключения к компьютеру, одна плата для робоплатформы, а другая для сопряженного устройства, например, пульта управления;
                  • автономный источник питания для одной из плат - сетевой адаптер или аккумуляторная батарея (для наглядности);
                  • два модуля HC-05 (в «большом» варианте, с внешними «ногами»), один будет «master», другой «slave» (на роль «slave» допустимо взять и HC-06);
                  • проводочки Dupont, «папа-мама» 8 штук, «мама-мама» 4 штуки, «папа-папа» 1 штука;
                  • скотч прозрачный узкий;
                  • кусочек стирательной резинки или любой другой плоский кусок резины;
                  • ручка и бумага для записей;
                  • преобразователь интерфейса USB-UART и драйвера для него.

                  Перед началом работы стоит вспомнить о том, что мы имеем дело с электронными компонентами, чувствительными к электростатическому напряжению и неправильному подключению. Поэтому делаем все аккуратно, как любят писать разработчики свободных аппаратных платформ и ПО – «на свой страх и риск».

                  Начинаем со смены настроек slave-модуля Bluetooth. Для этого его надо подключить к компьютеру посредством преобразователя USB-UART. Здесь мне опять придется отвлечься, чтобы развеять одно распространенное заблуждение. Несмотря на то, то напряжение работы микросхемы модуля 3.3V, питаться он должен от 5V и только от них. Связано это с тем, что на плате «обвязки» расположен собственный стабилизатор напряжения, который «съедает» как минимум 0.3 вольта. Таким образом минимально допустимое напряжение питания 3.6V. Практика показывает, что от 3.3V модуль тоже работает, но лишь до тех пор, пока батарейки чуть-чуть не просядут или мы не попытаемся переключиться в режим повышенного энергопотребления. А чем выше скорость обмена, тем выше энергопотребление. Итак, модуль требует питания от 5V. И в нашем случае нет нужды использовать делитель напряжения для «ног» Rx и Tx. Подключаем простыми проводочками «мама-мама» модуль Bluetooth к USB-UART по следующей схеме:
                  • +5V (USB-UART) – VCC (Bluetooth)
                  • GND (USB-UART) – GND (Bluetooth)
                  • TXD (USB-UART) – RXD (Bluetooth)
                  • RXD (USB-UART) – TXD (Bluetooth)
                  • +3.3V (USB-UART) – KEY (Bluetooth)

                  Обратите внимание, контакт «Transmit Data» одного устройства подключен к контакту «Receive Data» другого!

                  Про пятый пункт требуется сказать отдельно. Для перехода в режим AT-команд необходимо подать логическую единицу (3.3V) на контакт с названием «Key». Скорее всего, такой «ноги» Вы не увидите. Но выход существует, надо использовать контакт 34 на мини- плате модуля. Если смотреть сверху, расположив Bluetooth модуль «ногами» к себе, это самый дальний контакт в правом ряду.


                  Заводим провод под прозрачную пластиковую изоляцию, чтобы он коснулся этого контакта. Если изоляции на модуле нет, фиксируем скотчем. Другой конец провода подключаем к контакту +3.3V преобразователя USB-UART. В результате должно получиться вот что.

                  В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных Bluetooth Serial модулей для DIY-устройств. Цена на них не сильно высока: 5-10$ за модуль (с учетом бесплатной доставки в любую страну). Их легко можно найти на широко известной площадке AliExpress введя в поисковую строку одно из словосочетаний: Bluetooth RS232, Bluetooth Serial, HC-03, HC-04, HC-05, HC-06 или нажать на эту ссылку.

                  Bluetooth модули

                  В большинстве модулей используется чип BC417, плюс Flash-память. Чип поддерживает спецификацию Bluetooth v2.0 + EDR, AT-команды, может работать в режиме Master или Slave (модули HC-03/HC-5, может устанавливаться AT-командой), поддерживает скорость обмена от 2400 до 1382400.
                  Напряжение питание модуля составляет 3.3В, ток потребления

                  50мА.
                  Модули HC-03/HC-05 более функциональные, чем HC-04/HC-06.

                  Схема подключения Bluetooth модуля HC-06 (BMX-02A)

                  Основные выводы модулей HC-04/HC-06:
                  UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) - пины UART.
                  3,3V (pin 12) - питание 3.3В.
                  GND (pin 13) - общий.
                  PIO1 (pin 24) - индикатор рабочего режима. Если соединение не установлено - то светодиод мигает, если установлено, то постоянно горит.

                  Для модулей HC-03/HC-05 есть некоторые отличия. Линии UART и питания те же самые, но:
                  PIO8 (pin 31) - индикатор рабочего режима.
                  PIO9 (pin 32) - статус соединения, если соединение установлено, то на выходе будет высокий уровень.
                  PIO11 (pin 34) - вход включения режима AT-команд (необходимо подать лог. 1).

                  За более подробной документацией обращайтесь к PDF.

                  Плата Bluetooth модулей

                  Итак, соберем простую схему для подключения Bluetooth модуля HC-06 к плате Arduino Nano V3.

                  Подключение Bluetooth модуля HC-06 к Arduino

                  Обратите внимание, что выводы TX и RX в плате Arduino Nano поменяны местами в отличии от Ardunio UNO и др. Поэтому внимательно смотрите распиновку своей Arduino платы.

                  Шаг между выводами в модуле составляет всего 1.5мм, поэтому придется взяться за паяльник и припаять провода к модулю. Всего необходимо припаять 5 проводов, однако светодиод подключать необязательно, он служит для индикации состояния.

                  Итак припаиваем провода и подключаем Bluetooth модуль следующим образом:
                  вывод Arduino 3.3В - к 12 пину модуля
                  вывод Arduino GND - к 13 пину модуля
                  вывод Arduino TX - к 2 пину модуля RX
                  вывод Arduino RX - к 1 пину модуля TX

                  Передача данных из Arduino по Bluetooth

                  Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной cnt, которая затем с текстовой надписью выводится в последовательный порт на Bluetooth модуль. Обратите внимание, что скорость порта установлена в значение 9600. При покупке модуля, спрашивайте на какое значение установлена скорость обмена по последовательному интерфейсу. Но в большинстве случаев это 9600. При необходимости, скорость обмена можно изменить АТ-командами.

                  Откройте данный скетч в Arduino IDE, скомпилируйте и прошейте ваш Arduino. Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение.

                  Внимание! Если при прошивке платы Arduino ругается прошивальщик, то отключите питание 3.3В с Bluetooth модуля.

                  Bluetooth флэшка

                  На компьютере, в качестве Bluetooth модуля использовался самый дешевый китайский Bluetooth USB адаптер, стоимостью около 200 руб. После того, как адаптер подключается к компьютеру, установите необходимые драйвера (в Windows 7 x64 у меня все драйвера поставились автоматом).
                  Затем щелкаем в трее по иконке Bluetooth модуля и выбираем "Добавить устройство":

                  Добавление нового Bluetooth устройства

                  Имя моего модуля BOLUTEK, у вас оно скорее всего будет другим. Нажимаем "Далее" и переходим к окну, где необходимо ввести пароль для устройства:

                  Код образования пары для Bluetooth устройства

                  Выбираем второй пункт: "Введите код образования пары устройства". С завода, код установлен 1234. Его и вводим. Программа настроит и пропишет в системе виртуальные COM-порты (у меня прописало 2 шт, но может быть и один):

                  Виртуальные COM-порты

                  В дальнейшем, можно посмотреть на какой COM-порт назначилось и его параметры. Для этого щелкаем правой кнопкой мыши по устройству и выбираем "Свойства" и вкладку "Оборудование". Там можно посмотреть и изменить параметры виртуального COM-порта:

                  Параметры COM-порта

                  Теперь, для приема и передачи данных на виртуальный COM порт можно использовать любую терминал программу. Я использовал бесплатную Tera Term. При каждом запуске программы предлагается выбор соединения, переключаем флажок на Serial и выбираем COM порт вашего Bluetooth модуля. У меня это COM4.

                  Tera Term

                  В терминале мы видим данные счетчика с платы Arduino:

                  Данные с Arduino

                  Как видим, данные успешно передаются по Bluetooth соединению. Ниже в статье вы можете посмотреть видео.

                  Двунаправленный обмен данными по Bluetooth

                  Следующим шагом будет написание простенькой программы двунаправленного обмена данными между Arduino и компьютером. В схему я добавил светодиод, подключив его к 12 пину Arduino, через токоограничительный резистор. Но можно использовать и встроенный LED (обычно 13 пин).

                  Обмен данными

                  Подключаем к Android

                  Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего.

                  В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем "Connect a device - Secure" и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала.


                  блютуз является одним из беспроводные персональные сети ( WPAN ), он направлен на продвижение передачи данных и голоса с разных устройств через ссылку радиочастота в диапазоне ISM 2,4 ГГц. Это сделало этот инструмент одной из лучших альтернатив, когда реализация проекта Arduino .

                  Как правило, устройства, использующие эту технологию, могут общаться друг с другом, когда они находятся в пределах досягаемости . Эта связь осуществляется с помощью радиочастоты, поэтому устройства не нужно выстраивать в линию, они могут даже находиться в разных местах, если они находятся далеко. объем подключения.

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

                  Каковы преимущества использования Bluetooth-соединений с Arduino?

                  Без сомнения, возможность использовать это тип подключения в ваших проектах Arduino принесет вам определенные преимущества, главным образом потому, что это дает вам гораздо больше возможностей, когда создание и программирование .

                  Вот как мы собираемся показать вам основные преимущества, которые все это дает вам:

                  • Облегчает общение между мобильные компьютеры.
                  • Позволяет разрабатывать электронные проекты которым вы можете управлять с помощью своего мобильного устройства.
                  • ликвидировать любой подключение de кабель и разъемы .
                  • Это позволяет создавать маленький беспроводные сети и облегчить la синхронизация данные между персональные компьютеры.
                  • Это становится вариантом дополнительно для программистыArduinoи разработчикиProjets .
                  • Bluetooth интегрирован в целом технологические устройства сегодня это позволит вам подключи свой проектArduino с любым технологическим устройством, которое у вас под рукой.

                  Какие самые лучшие модули подключения Bluetooth, которые мы можем использовать?

                  Одно из преимуществ возможности работать с Arduino в том, что он предлагает возможность создавать соединения с другими устройствами без кабелей , для этого он предлагает возможность сделать это через модули bluetooth , это позволит вам включить их в каждый из ваши проекты электроники и робототехники и таким образом получить лучшие результаты. Вот как мы вам покажем какие модули подключения bluetooth самые лучшие что вы можете начать использовать на платформа Arduino.

                  Для этого следуйте списку, который мы вам покажем ниже:

                  Модуль HC-05 и HC-06


                  Оба модули bluetooth которые можно использовать для коммуникации различных проектов Arduino с этим беспроводное соединение , по сути, это два наиболее часто используемых модуля для этого вида деятельности. В настоящее время большинство людей думают, что этот тип подключение устаревшая технология , но правда в том, что благодаря ему можно разработать множество очень важных действий и действий.

                  Необходимо учитывать, что в случае Модуль HC-06, он ведет себя как подчиненное устройство, то есть постоянно ждет запросов на соединение. Следовательно, если устройство подключено, модуль HC-06 ему передает все данные, полученные от Ардуино и наоборот . Когда вы физически видите модуль HC-06, вы можете видеть, что он очень похож на другие, доступные на рынке.

                  Также следует отметить, что HC-06 работает как ведомый, а HC-05 как ведущий и ведомый , в этом случае HC-05 имеет в общей сложности 6 контактов, в то время как HC-06 имеет всего 4 контакта .

                  Модуль Bluefruit EZ-Key


                  Блюфрут EZ-Key используется для создания того, что из контроллеры клавиатуры беспроводной именно поэтому этот модуль считается довольно быстрым и простым в обращении. Так что этот bluetooth-контроллер отлично работает с любыми Устройство с поддержкой BT, будь то Mac, Linux, Windows, Android или iOS.

                  Он также имеет в общей сложности 12 входных контактов , нажатие одной из его кнопок автоматически отправит набор текста на компьютере . Таким образом, Блюфрут EZ-Key стал идеальным вариантом для всех проекты arduino где нужна клавиатура.

                  Пошагово узнайте, как подключить свой проект Arduino к Bluetooth и синхронизировать его с другими устройствами.

                  Учитывая все вышесказанное в статье, следующее, что нужно сделать, - это научиться подключите свой проект Arduino к bluetooth и синхронизируйте его с другими устройствами , это позволит вам загружайте свои программы на карту без необходимости использовать для этого кабели или разъемы . Этот тип технологии идеально подходит для программ, в которых ардуино должен быть вне досягаемости или должны использоваться с управление или мобильное устройство .

                  В соответствии со всем этим ниже мы покажем вам, как выполнить эту процедуру просто и быстро:

                  Необходимые материалы

                  В соответствии с этим, вот оборудование, которое вам понадобится для выполнения этой процедуры:

                  Настройка модуля HC-05 для беспроводного программирования Arduino через Bluetooth

                  Следует иметь в виду, что до того, как этот модуль начнет функционировать как программист arduino , вам необходимо настроить его так, чтобы он вел себя так, как вы хотите.

                  Для этого важно, чтобы HC-05 имел следующие параметры:

                  • Для Arduino Uno с Optiboot: UART установлен на 115200 бод, 8 бит, 1 стоповый бит, без остановки.
                  • ЧтобыArduino Duemilanove / Diecimila: UART установлен на 56700 бод, 8 бит, 1 стоповый бит, без остановки.
                  • Определяет полярность из переворотом от брошь для правильной полярности.

                  Команды для настройки модуля HC-05

                  Также важно, чтобы вы приняли во внимание ряд очень важных команд для настройки в HC-05, которые мы покажем вам ниже:

                  • AT + ORGL
                  • AT + роль = 0
                  • AT + POLAR = 1,0
                  • AT + UART = 115200,0,0,0
                  • AT + INIT

                  Теперь построчно нужно выполнить следующие шаги для его настройки:

                  • Первое, что нужно сделать является восстановить заводские настройки .
                  • Теперь вам нужно его настроить en рабский режим , для этого он устанавливает прозрачный последовательный мост от ПК.
                  • Установите полярность от контакт 32 помечен как Состояние на модуле HC-05, от чтобы он стал слабым при подключении устройства к модулю.
                  • Следующее делать будет соответствовать скорость передачи à скорость загрузчика.
                  • Наконец-то ты должен бросить режим конфигурации и начать нормальную работу модуля HC-05 .

                  Монтажная схема Arduino для программирования bluetooth

                  На этом этапе необходимо подключите контакты TX и RX Bluetooth к Контакты Arduino RX и TX соответственно , имейте в виду, что они пересекаются. В случае контакта статуса Bluetooth, он будет работать как сброс и должен быть подключен к пин сброса arduino через керамический конденсатор емкостью 100 нФ. В этом случае резисторы, показанные на схеме, должны уменьшить напряжение вывода TX (выход 5 вольт) Arduino к чему-то близкому 3,3 вольта, это наиболее логичный уровень, поддерживаемый Модуль Bluetooth .

                  В этом случае соединения должны быть такими, как показано на следующем изображении:


                  • Когда цепь уже поставлена ​​на охрану, это можно увидеть на экране следующим образом. модель.

                  «MISE À JOUR ✅ Voulez-vous utiliser vos projets Arduino pour vous connecter via Bluetooth? ⭐ ENTREZ ICI ⭐ et apprenez tout à partir de zéro!»


                  • После этого, материал готов попробовать выполнить Программирование Arduino через bluetooth .

                  Беспроводное программирование Arduino через Bluetooth

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

                  Таким образом, вам придется пройти процесс сопряжения, и таким же образом есть последовательный порт через Блютуз где он правильно отображается в диспетчере устройств. Процедура сопряжение устройства Bluetooth варьируется в зависимости от операционной системы. Вы также должны проверить le Диспетчер устройств Windows.

                  Там виртуальные последовательные порты должны отображаться правильно, как это видно на изображении, которое мы представляем ниже:


                  • Следующее, что нужно будет открыть IDE Arduino и там вам нужно выбрать новый последовательный порт, который был создан, когда HC-05 имеет был связан с компьютером.



                  Загрузка программы должна продолжаться обычным образом до тех пор, пока программа не будет запущена. код, загруженный на Arduino начинать . Теперь, если возникает ошибка, возможно, это связано с тем, что был подключен плохой сигнал или полярность статусный пин не было выполнено правильно в конфигурации .

                  Если по какой-то причине эскиз не может быть сохранен в Arduino , тогда необходимо будет испытать емкость конденсатора , очень хорошей идеей для этого является увеличение его значения до тех пор, пока оно не будет гарантировать, что Arduino сбрасывается правильно при открытии последовательного порта на Блютуз , в этом случае рекомендуемые значения От 100 нФ до 1 мкФ .

                  Лучшие проекты Arduino с беспроводным подключением через Bluetooth, которые вы можете сделать сами

                  Как уже упоминалось, Bluetooth-соединения стали одним из лучших инструментов для достижения определенных типов Проекты Arduino, в особенно те, которыми мы хотим управлять или дистанционное управление . Вот почему мы покажем вам здесь лучшие проекты Arduino с беспроводным подключением что вы можете сделать сами.

                  Для этого подробно следуйте списку, который мы вам покажем ниже:

                  Универсальный пульт дистанционного управления


                  Le управление вашим телевизором или аудиооборудованием конечно был поврежден и у вас больше нет возможности управлять им, для этого вы можете начать создавать универсальный пульт дистанционного управления, объединив технологии Arduino с беспроводным подключением. Вот как можно создать этот проект с помощью Bluetooth или USB соединение, для этого вам просто нужно иметь 3D принтер и распечатать корпус, добавить кнопки и джойстик и вуаля, вы снова можете контролировать ситуацию.

                  BB8 в натуральную величину

                  Этот проект считался одним из самых популярных в робототехника он состоит из использования простых шариковые дезодоранты для чего будет база BB8, а также другие переработанные материалы, которые наверняка будут у вас дома.

                  Для его работы потребуется наличие Плата Arduino и возможность подключения по Bluetooth, поэтому у вас есть возможность управлять им из твой собственный смартфон . Без сомнения, этот проект стал очень мотивирующим из-за того, что материалы для вторичной переработки что можно иметь дома, не используя его.

                  Умный холодильник


                  Если вы один из тех людей, у кого есть холодильник на колесиках для экскурсии или поездки и, таким образом, возможность загрузить свои напитки и другие продукты, тогда вы можете начать давать жизнь, чтобы она могла самостоятельно ходить туда, куда она хочет, чтобы вы пошли, чтобы избежать необходимости загружать ее самостоятельно.

                  Для этого вам просто понадобится плата arduino , Из соединение Bluetooth, смартфон и мобильный подвал или холодильник. Запрограммировав все это и превратив в шикарный винный погреб, вы можете контролировать это через ваш смартфон через соединение bluetooth , таким образом, он будет следовать за вами, куда бы вы ни пошли.

                  Читайте также: