Дистанционное Управление Со Смартфона

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

Это было связано с высокой для комнатных условий скоростью автомобиля (около 1,2 м/с), а также длительным временем подачи команды и невозможностью оперативно вмешаться в движение с помощью меню.

Даже штатный пульт не обеспечивал управления.

В новой версии пульта дистанционного управления с графическим интерфейсом я решил использовать ШИМ для регулировки скорости и имитации рулевого управления.



Дистанционное управление со смартфона

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



Дистанционное управление со смартфона

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

  
   

GR.GET.POSITION c1, xx, yy r6=(xx-xc)*(xx-xc)+(yy-yc)*(yy-yc) IF r6<rkn THEN GR.TOUCH touched, x, y IF y < 120 THEN DO GR.TOUCH touched, x, y GR.GET.POSITION c1, x1,z1 GR.MOVE c1 ,x-x1, y1 GR.RENDER UNTIL !touched ENDIF GR.GET.POSITION c1, x1,z1 POPUP STR$(x1/w) BT.WRITE "#"+STR$(x1/w) ENDIF

Наименьшая скважность сигнала составляет 20 %, наибольшая — 80 %.

Теоретически возможная частота составляет 10 Гц.

На самом деле, наверное, около 4 - 5 Гц, так как сигналы модуляции идут в общем потоке команд и некоторые из них еще и имеют задержку по времени.

Поэтому при малой нагрузке хорошо заметна вибрация.

Две зеленые кнопки - верхняя вперед, нижняя назад. Справа красная кнопка – стоять на месте.

Две белые кнопки – остановка программ на пульте и на машинке.

Внизу экрана расположены три фиолетовые кнопки выбора направления движения влево, прямо и вправо.

В При включении соответствующего режима в центре кнопки появляется кружок меньшего диаметра и такого же, но более темного цвета.

Для управления направлением движения помимо кнопок я использовал еще акселерометр.

Когда смартфон находится в горизонтальном положении, проекция вектора ускорения силы тяжести на ось 0Y равна 0, что соответствует прямолинейному движению (см.

рисунок выше).



Дистанционное управление со смартфона

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



Дистанционное управление со смартфона

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

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



SENSORS.READ 1, sx, sy, sz IF (sy<=1)&(sy>-1)&(lrsh) THEN rsh=1 lsh=1 lrsh=0 GR.HIDE cc13 GR.HIDE cc15 GR.SHOW cc17 GR.RENDER BT.write "f" pause 100 ENDIF IF (sy>2)&(rsh) THEN rsh=0 lsh=1 lrsh=1 GR.HIDE cc13 GR.HIDE cc17 GR.SHOW cc15 GR.RENDER BT.write "r" pause 100 ENDIF IF (sy<-2)&(lsh) THEN lsh=0 rsh=1 lrsh=1 GR.HIDE cc17 GR.HIDE cc15 GR.SHOW cc13 GR.RENDER BT.write "l" pause 100 ENDIF

Вот как работает пульт дистанционного управления.

Работа программы управления автомобилем также претерпела изменения, но не очень существенные.

В будущем хочу дополнить программу функциями запоминания команд и автоматического их выполнения.

Теги: #Сделай сам или Сделай сам #Смартфоны #программирование #основы #управление устройством через Bluetooth #управление смартфоном #управление смартфоном

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.