Главная » Статьи » Arduino с нуля » Работа с Arduino

Урок 5. Подключаем Bluetooth модуль к Arduino.


Еще один способ управления устройствами на расстоянии - это использование Bluetooth модуля. Правда расстояние ограничено, примерно 20 - 50 метров. Но и это совсем не плохо.

Например, если сравнивать с управлением через пульт ДУ, где нужна прямая видимость до ИК-приемника, то использование модуля намного упрощает управление.

 

 

Давайте, для начала, запустим Arduino IDE и напишем небольшой скетч, который будет управлять светодиодом на платформе, в зависимости от посылаемого на Arduino символа. 

#define led 13

void setup() 
{
 Serial.begin (9600);
 pinMode (led , OUTPUT);
}

void loop() 
{
 while (Serial.available() == 0);
 
 int value = Serial.read() - '0';
 
 if (value == 1)
 {
 Serial.println ("Led ON!");
 digitalWrite(led , HIGH); 
 }
 else if (value == 0)
 {
 Serial.println ("Led OFF!");
 digitalWrite(led , LOW); 
 }
 else
 {
 Serial.println ("ERROR!");
 }

delay(20); 
while(Serial.available()>0) Serial.read();

}

Давайте разберемся с кодом. 

  • Даем пину 13 имя led
    #define led 13
  • Определяем скорость передачи (обмена данными) между компьютером и Arduino. И задаем режим пина
    void setup() 
    {
     Serial.begin (9600);
     pinMode (led , OUTPUT);
    }
  • Проверяем, есть ли в буфере символы, доступные для чтения. Если есть, переходим дальше, если нет - проверяем снова. 
    while (Serial.available() == 0);
    Функция Serial.available() получает количество байт(символов) доступных для чтения из последовательного интерфейса связи. Это те байты которые уже поступили и записаны в буфер последовательного порта.
     
  • Получаем значение, которое находится в Serial. Другими словами, что отправили, то и получаем в Arduino. И записываем это значение в переменную value. 
    int value = Serial.read() - '0';
    Функция Serial.read() считывает очередной доступный байт из буфера последовательного соединения.
    Т.к считывание идет в системе счисления DEC, а мы отправляем значение в Char, то выводиться у нас будут совсем не те значения. Например при отправке 0, мы получим 48. При отправке 1 - 49, и т.д. Поэтому, чтобы мы получали то, что мы отправили, мы используем ( - '0'). 
     
  • Далее идут простые проверки. Если мы получили 1, то выводим сообщение "Led ON!" на экран и включаем светодиод
    if (value == 1)
     {
     Serial.println ("Led ON!");
     digitalWrite(led , HIGH); 
     }
  • Если первое условие не подходит, проверяем дальше. Если мы получаем 0, то тогда выводим сообщение "Led OFF!" и выключаем светодиод
     else if (value == 0)
     {
     Serial.println ("Led OFF!");
     digitalWrite(led , LOW); 
     }
    Функция Serial.println() передает данные через последовательное соединение как ASCII текст с следующим за ним символом переноса строки (ASCII символ 13 или '\r') и символом новой строки (ASCII 10 или '\n').
     
  • Если два предыдущих условия не были выполнены, тогда выводим сообщение "ERROR!"
     else
     {
     Serial.println ("ERROR!");
     }
  • Две последние строки предназначены для того, чтобы исключить ошибочные отправки символов. Например комбинаций из нескольких символов "dsfdsfds","324324","qwq".
    delay(20); 
    while(Serial.available()>0) Serial.read();

 

С кодом мы разобрались, теперь давайте проверим работу нашего устройства. 

Для этого заливаем скетч в Arduino. Потом открываем "Монитор последовательного порта". И отправляем символы. 

Например, отправили "1". И как мы видим, светодиод на платформе начал светиться, а на экран нам вывелось сообщение "Led ON!".

Теперь отправим комбинацию символов, например "fgfg". Светодиод остался в том же самом состоянии (светится), а на экран вывелось сообщение "ERROR!"

Ну и теперь можно выключить светодиод. Для этого отправляем символ "0". Светодиод потух, а на экране соответствующее сообщение: "Led OFF!".

 

Мы разобрались с работой Serial. Но управление Arduino, можно осуществлять не только через шнур USB. Можно управлять платформой с помощью Bleutooth. Все делается абсолютно также. 

Давайте подключим Bleutooth модуль к Arduino. Я использую Bleutooth HC-06. Подключаем его по схеме ниже:

 

Внимание! Когда Вы заливаете скетч на Arduino, то питание Bleutooth модуля отключайте. Иначе у Вас будет возникать ошибка при загрузке кода. 

 

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

И так, первым делом включаем Bleutooth на устройстве. Заходим в настройки и нажимаем "Поиск устройств". 

 

 

Телефон нашел наш Bleutooth модуль. Название HC-06. Нажимаем подключить. И у нас появляется окошко, в котором нас просят ввести PIN-код, чтобы выполнить сопряжение. Вводим "1234". Это стандартный PIN для Bleutooth модулей данной серии. И нажимаем "Соединение". 

 

 

Все. Теперь Bleutooth модуль в списке подключенных устройств. 

 

 

Скачиваем какой-нибудь Bleutooth клиент на телефон. Я скачал Bleutooth Terminal с Play-Market. И запускаем его. 

Нажимаем "Connect a device - Secure". 

 

 

И из списка выбираем наш Bleutooth модуль. 

 

 

Все. Теперь мы можем также отправлять команды на Arduino, а она, в свою очередь, будет их выполнять и отправлять нам сообщения о выполнении. 

Например отправим 1. И мы видим, что светодиод загорелся и пришло сообщение "Led ON!". 

 

 

Также проверяем и остальные комбинации. Отправляем цифру 2

 

 

Цифру 0 и набор символов

 

 

Как видите, все работает отлично. Можно также подключить и другие компоненты к Arduino, и управлять уже их поведением. Также можно получать какие-то значения с Arduino, например показания различных датчиков (освещения, дальности). В принципе все зависит от Вас. 

 

Задания для самостоятельного выполнения:

  1. Соберите схему из трех светодиодов. И настройте программу так, чтобы при отправке символа 1 - включался первый светодиод, при 2- второй, при 3- третий. А при подаче 0 - все светодиоды выключались. 
  2. Измените код так, чтобы при отправке символа 4, все три светодиода проморгали несколько раз (можно изобразить бегущую строку). 

 

Девятый урок проекта "Arduino с нуля" подошел к концу. Надеюсь тема была для вас полезной, и вы узнали что-нибудь новое. Также надеюсь, что при выполнении заданий у вас не возникнет вопросов и вы справитесь самостоятельно.

Если же что-нибудь не будет получаться, или у вас появятся какие-либо вопросы, не стесняйтесь, и оставляйте их в комментариях или же на форуме.  

 

Если Вам понравился наш урок, поделитесь им с друзьями.

 

 


←Предыдущий урок | Следующий урок→


 

Категория: Работа с Arduino | Добавил: GM (22.10.2015)
Просмотров: 2036 | Рейтинг: 5.0/2
Всего комментариев: 0
avatar