Please reload

что свежего

тому, кто забрёл

29.06.2017

1/1
Please reload

приветствую

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

24.12.2015

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

Рассмотрим один из способов, с помощью которого можно объединить программируемую плату (на примере 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.


 

Please reload