?

Log in

No account? Create an account

khdavid


Давид Худавердян


Previous Entry Share Next Entry
Управляемая через блютус машинка.
khdavid
Сразу хочу оговорить, что я не являюсь специалистом ни в робототехнике, ни в электронике, ни в программировании, поэтому прошу простить подкованного в этих делах читателя за, может быть, наивность и небрежность письма. Я расскажу как я сделал машинку, которая управляется с мобильного телефона. Вы не найдете тут полной исчерпывающей инфоромации как это сделать. Но я надеюсь, что эта статья вдохновит человека, который мечтает соприкоснуться с миром электроники создать что-нибудь свое.
Моей целью было сделать машинку, которую можно управлять, круча в воздухе мобильным телефоном. Надо четко понимать, что сердцем проектов такого типа является микроконтроллер. Микроконтроллер - это что то типа процессора с памятью для программы. Грубо говоря, микроконтроллер - программируемая микросхемка, у которой есть несколько входов, на которые можно подавать напряжение от 0 до 5 вольт, и есть несколько выходов, на которые микроконтроллер согласно зашитой программе, и в зависимости от входных напряжений и шага программы может выдавать напряжение или 0 В, или 5 В. Вот так выглядит типичный микроконтроллер:



Но у меня, как у новичка, была проблема, что нужно иметь специальный программатор, который прошивает микроконтроллер. Существует прекрасное решение этой проблемы - ардуино. Ардуино - это и микроконтроллер и прошиватель на одной плате. Вот так выглядит плата arduino nano, которую я использовал в машинке:



Вот, к примеру, ссылка для покупки arduino nano. Многое про ардуино я тут говорить не буду. Скажу лишь, что исчерпывающая информация об ардуино представлена на сайте arduino.cc и на его русскоязычной версии arduino.ru. Язык программирования очень похож на Си, а зашивать програмки надо через miniUSB-кабель.
Следующий шаг - это выбор машинки. Мне нужна была очень простая машинка: колеса да моторы, и чтобы крепить было все удобно. Я нашел прекрасное решение: ссылка, хотя я и не настаиваю на нем. Сгодится любая машинка с моторами.



Недостаток этой машинки в том, что там не поворачиваются влево-вправо передние колеса, поэтому во время езды надо использовать технику поворотов танков. Машинке чтобы повернуться, левые колеса должны крутиться в одну сторону, а правые в другую.
Следующий шаг немного нетривиальный. Дело в том, что, как я уже говорил, наш микроконтроллер может подавать на выходе напряжение 5 В, но не может пропускать через себя ток, достаточный для того чтобы крутить моторы. То есть этими 5 В нельзя питать моторы. Существует специальная микросхема (что-то типа транзистора), которая называется драйвером двигателей. На нее можно подавать с микроконтроллера "информационные"  5 В, а микросхема уже включает или выключает питание на моторах. Вот она: ссылка.



Следующий шаг - это выбор блютус приемника, который может общаться по беспроводной связи с мобильником. Я покупал вот этот приемник, но я сейчас бы его не купил, а купил бы этот. Они отличаются только ценой $40 против $13, характеристики у них одинаковые. 




Вот, что получилось в собранном виде:




Для меня самая сложная часть проекта была написание приложения на телефоне. У меня на телефоне система android и я не имел ни малейшего представления как писать на нем приложения. Я совершенно не знал язык Java, на котором все это пишется. Мне очень сильно помог вот этот полуторачасовой видеоролик, где очень доступно, поэтапно показывается как написать простейшее приложение.

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



На экране есть большая кнопка запуска и выводятся проекции гравитационного поля на оси координат.
Вот, собственно, что из этого всего вышло: ссылка



Спасибо за внимание.

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

Конкретно с этой машинкой я ничего большее не экспериментировал, но у меня есть еще одна машинка, которая едет на свет)

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

Помоги плиз я начал делать что то подобное но не машинку а танк купил блетус модуль ардуино уно мотор шилд сенсор шилд собрал но не смог написать прогу скетч на андроид и на ардуино прошу тебя скинь мне на почту прогу для андроид и скетч для ардуино я буду очень благодарен я не силён в этом читал книги учился но не смог!
Email: usmanov-danil1@yandex.ru

Исходники для андроида: www.david.wf/downloads/gravitometr.rar
(В исходниках прописан мак-адресс именно моего блютуса, поэтому нужно поменять этот мак-адрес на свой и сгенеровать новое приложение)
Само приложение для андроида: www.david.wf/downloads/gravitometr.apk (само приложение запустится, но связываться с вашим блютусом не будет, по указанным выше причинам)
Приложение работает в связке с другим приложением:
www.david.wf/downloads/Amarino_2_v0_55.apk
Исходник для ардуино (нужно заливать в старой версии ардуино 022. в новой версии другие расширения файлов): www.david.wf/downloads/bluetooth_robot_nano.pde

Edited at 2012-10-25 02:47 pm (UTC)

Спасибо большое но через что его редактировать ну мак и как поменять кнопку запуска на цензуру и как его генерирование ?

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

ху работал целый день изучал но всё таки не смог на еклипсе но я вроде поставил свой мак адрес без неё в исходниках через блокнот сейчас исходники под меня а теперь самый надеюсь последний вопрос как его скомпилировать андроид приложение

нет не получилось слушай помоги но не силён я в этом пожалуйста большую кнопку поставь там название запуск и цензур так как я должен буду показать это учителю и поиеняй мак адрес вот он мак блютуса на ардуино 00:12:06:05:91:74 прошу поменяй ну убей даже тогда не смогу это сделать и если не трдно можеш это залить куданибудь чтоб потом с телефона скачать это сразу на него

Просьба-совет

Давид, читаю Вас с удовольствием: ясная мысль, хороший язык, но тут вдруг, как с размаху на столб, натыкаюсь на фото после слов "Вот как оно выглядит:" [фото дисплея].

Никоим образом не хочу оспаривать Ваше право изъясняться на Вашем же сайте так, как Вы находите нужным, и уж тем более ворошить вечную тему о правомерности/допустимости сквернословия. Равно как не хочу и себя выставлять пуристом-лицемером.

Но всё же послушайтесь моего доброго совета: замените ту надпись на дисплее на ч-л цивилизованное.

Ну, хотя бы потому, что в нынешнем виде я не могу дать ссылку на эту Вашу заметку людям, отношение которых к себе я уважаю: мне стыдно отсылать их к материалу с такими "украшениями".
Но даже и это не главное. А гланое то, что умному человеку такое не к лицу.

PS У меня в эти дни исполняется сорок лет, как я сам окончил Фмзтех (ФАЛТ'73), все годы учёбы провёл в общажке, так что со "словестностью" знаком непонаслышке. И всё же: не надо на людях ТАК. Спасибо.

Re: Просьба-совет

Действительно, про уместность мата можно спорить бесконечно. К сожалению, у меня есть принцип - существенно не редактировать старые статьи.

  • 1