Управление микроконтроллером со смартфона

Носимые программируемые устройства, интерес к которым всё возрастает в последнее время, предполагают постоянное взаимодействие с непосредственным владельцем. По большому счёту, получение данных с микроконтроллера и передача команд должны быть доступны для пользователя в любое время. Для этих целей удобно использовать мобильный телефон или планшет, находящиеся практически всегда под рукой. Рассмотрим один из способов, с помощью которого можно объединить программируемую плату (на примере Arduino UNO) и смартфон на базе Android. Начинать такое знакомство лучше с простых проектов с обычными светодиодами, чтобы освоить управление их яркостью и понять принципы взаимодействия устройств. Итак, что было в моём распоряжении:

  • Микроконтроллер Arduino UNO

  • Телефон с OS Androind

  • Bluetooth-модуль HC-06 (описание на сайте "Амперки")

  • Светодиод на 3В

  • Резистор на 220 Ом

  • Макетная плата

  • Соединительные провода "папа-папа" и "мама-мама" (шлейфы)

Сразу же сделаю два примечания. А. По поводу соединительных проводов можно отметить, что хорошо бы иметь в распоряжении четыре провода "мама-папа", поскольку именно такие будут удобны для подсоединения bluetooth-модуля к плате. Б. Не все bluetooth-модули совместимы с iOS, например, в моём случае обнаружить HC-06 с помощью iPhone не удалось. Также практика показала, что приложений для управления Arduino с Android гораздо больше. Шаг 1. Подсоединяем наш тестовый светодиод к Arduino через резистор. Можно брать сразу же те выходы, которые могут использоваться для PWM (ШИМ): 3, 5, 6, 9, 10, 11. Это позволит продумать и реализовать ряд экспериментов, идеи которых могут возникнуть в ходе работы. Шаг 2. Подсоединяем bluetooth-модуль к микроконтроллеру. Модуль имеет 4 контакта: питание, земля и линии данных RXD и TXD.

Подключение осуществляется следующим образом: VCC - 5V GND - GND RXD - TX TXD - RX Если всё сделано правильно, то bluetooth-модуль отзовётся миганием расположенного на нём светодиода. Шаг 3. Программируем устройство. Один из первых скетчей, который можно использовать при тестировании соединения.

int val; int LED = 9; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); } void loop() { if (Serial.available()) { val = Serial.read(); // Ввод единицы включает светодиод if (val == '1') { digitalWrite(LED, HIGH); } // Ввод нуля выключает светодиод if ( val == '0') { digitalWrite(LED, LOW); } } }

Заливая скетч на плату, необходимо отсоединить питание от BLE-устройства, иначе запись программы не произойдёт, так как используются всё те же RX и TX. Шаг 4. Установка приложения на смартфон. По запросу "Bluetooth terminal" в Google Play можно получить множество результатов и выбрать приложение, которое будет иметь наивысший рейтинг и понравится вам по интерфейсу. Функциональность у всех подобных приложений примерно одинаковая. Я использовала BlueTerm. Шаг 5. Установка соединения и тестирование. Нам необходимо включить bluetooth на телефоне, в приложении сделать поиск устройств, выбрать среди них HC-06. Пароль для подключения вводится единожды и для данного модуля это 1234 (иногда встречаются модели с паролем 0000).

Набирая в терминале "1" и "0" наблюдаем за включением и выключением светодиода. Шаг 6. Эксперименты.

А. Используем функцию analogWrite, которая позволит задавать не только состояния "включено/выключено", но и промежуточную яркость. Например, так (кусочек кода):

if (val == '1') { analogWrite(LED, 150); }

Б. Используем оператор Switch для ступенчатого управления яркостью. Например, так (ещё один кусочек кода):

switch (val)

{ case '0': analogWrite(LED, 0); break; case '1': analogWrite(LED, 25); break; case '2': analogWrite(LED, 50); break; //и т.д. }

В. Добавляем в схему ещё несколько светодиодов или других компонент и управляем каждым через терминал по отдельности. Г. Подбираем (или создаём самостоятельно) приложения, которые смогут управлять светодиодами. Д. Подсоединяем LED-ленту к микроконтроллеру и меняем режимы её работы с помощью смартфона. Е. С помощью Android-приложений учимся получать показания датчиков Arduino.

#arduino #mobile #STEM #leds

приветствую

подписка на блог

что свежего