Программирование под Android для среднего школьного возраста


Просмотров: 1 266
Управление по Bluetooth

Управляем машинкой с телефона!

Я уже писал что у меня есть один приятель 🙂 Щас он уже большой — первоклашка! И он жоско зарубается на тему роботов. У него есть примерно ведро всяких деталек Lego и он постоянно констролит из них всяких персонажей. Причём ему не интересно собирать по инструкции, гораздо круче ваять собственных франкенштейнов 🙂

Ну я и подумал что роботы хорошо, а самодвижущиеся роботы — лучше!

В том смысле что надо не просто собирать фигурки, а делать так чтобы они двигались, управлялись, а ещё лучше — программировались.

Сначала я думал подогнать ему вездеход Знаток Лидер. Я думаю, для старта — самое оно. По сравнению с другими наборами Знаток  он интересен тем что после сборки получается, так сказать, зримо работающее устройство. Он ездит! Это гораздо круче чем если бы он просто мигал лампочками или пел через динамик. А если сборка схем человека не увлечёт, то хотя бы останется забавная игрушка. Всё собирается из крупных деталей без инструмента.

Но с Лидером вышла неувязка. Он был снят с производства и закончился в магазинах. Я связывался со Знатоком, они обещали что вновь начнут продавать набор, называли какие-то сроки, но что-то всё не складывалось. Сейчас вездеход, вроде, снова продаётся, но паровоз уже ушёл 🙂

Я стал смотреть что нам предлагает алё-экспресс. Там, конечно, много всего, да…. Меня заинтересовала тема смарт-каров. Это платформа с двигателями (2-, 4-колёсная или гусеничная), контроллер (обычно Arduino) и набор механизмов и датчиков позволяющих реализовать некий функционал помимо собственно движения.

Тут есть некая проблема. Во-первых, сборка даже готового конструктора не такая простая: есть много мелких деталек и требуется инструмент, как минимум, отвёртка. Во-вторых, Arduino надо уметь программировать или хотя бы заливать готовый скетч. Т.е. задача явно не для первоклашки, хотя

С другой стороны, задача сложная, а значит интересная. Как бы, набор «на вырост». И я решил рискнуть 🙂

Рыская по aliexpress, я пришёл к выводу что «брендом» среди таких ардуино-мобилей является фирма Keyestudio. Уж не знаю, они разработали эти модели или просто уделяют большое внимание исполнению, но я решил остановиться на их наборе. Всё-таки, это подарок, так пусть придёт не кулёк с детальками, а набор в красивой коробке, с книжками и т.п. Я выбрал вариант 4-колёсного смарт-кара. Как он собирается и работает можно посмотреть на YouTube. Это довольно большая машинка в комплектации «полный фарш» 🙂 Что входит в набор и какие проекты можно с ним реализовать можно посмотреть в wiki продавца.

Важно! Аккумуляторов и зарядника в комплекте нет. Литий-ионные аккумуляторы формата 18650 оказалось проще, быстрее и дешевле купить в Москве, вот такая странность.

Набор приехал и я отправился в гости 🙂 Там меня постиг небольшой фейл. Товарищ интересовался проектом ровно пол-часа… и ушёл рубать в планшет… Так что заканчивал сборку я в полном одиночестве. К тому же, без паяльника обойтись не удалось: проводки батарейного отсека надо паять к выключателю. Но я предусмотрительно его прихватил с собой 🙂

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

Ну ладно, машину мы собрали, скетч я залил. Встаёт вопрос управления. С ИК-пультика управлять не прикольно, к тому же канал получается не очень надёжный. В видео есть вариант управления с телефона/планшета по Bluetooth. На сайте Keyestudio можно скачать программку. Но она мне не очень понравилась. Там для остановки машины надо жать кнопку «Stop», а так как наша моделька довольно шустрая, то пока ищешь кнопку, она успеет куда-нибудь упороться. Логичнее чтобы модель останавливалась при отпускании кнопки хода. К тому же, интерфейс программы не оптимизирован для работы двумя руками. А если наш телефон — это пульт управления, то держать его надо именно двумя руками как настоящий геймпад!

И я решил колхозить своё! Надо сказать что я совсем не программист. Я тут ради интереса посмотрел курс по Android на одном из учебных сайтов. Там, конечно, мрак… ООП, классы, методы в полный рост. К тому же, надо хорошо изучить хотя бы стандартные библиотеки Android. Это и понятно, профессиональное программирование и всё такое… но низким порог вхождения не назовёшь. Но! Как оказалось, для примитивно-типовых задач существует среда программирования MIT App Inventor, которая позволяет конструировать пользовательский интерфейс и программную логику визуальным способом — с помощью блоков.

Я впервые узнал об этой среде когда рылся в интернетах в поисках этой самой машинки для подарка. И вот увидел что девушка 10-11 лет очень лихо решает ту самую задачу, которая мне казалась очень сложной! Ну а раз она смогла, то я, такой … далее длинный список регалий … не смогу?! Дудки, смогу! Или нет 🙂 В общем, надо попробовать!

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

Пока в программе работают не все элементы интерфейса. Собственно, работают только кнопки Вперёд/Назад/Влево/Вправо. Управлять скоростью движения и радаром, а также получать данные с борта (например, расстояние до препятствия) пока нельзя т.к. в прошивке Arduino такие функции не предусмотрены. Возможно, если я смогу освоить Ардуино, то функционал программы управления можно будет существенно расширить.

Наверняка, не всё в моей программке сделано правильно и красиво. Ну, это же моё первое приложение. И пока не всё понятно с некоторыми возможностями. Например, надо разобраться с массивами (Lists), интуитивно очень нужная фича, но пока непонятно как их готовить.

Также мне не удалось понять возможно ли средствами App Inventor реализовать мультитач, т.е. управлять одновременно двумя элементами интерфейса. Поэтому сейчас в один момент времени может быть активна только одна кнопка. А значит закладывать виражи (с одновременным зажатием, например, «Вперёд» и «Вправо») моя машинка не может. Надо разбираться можно ли подобное сделать в Инвенторе и, в любом случае, корректировать скетч для Ардуино.

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

Что касается самого MIT App Inventor, то это классная среда, позволяющая создавать простые приложения людям, имеющим базовые понятия об алгоритмах, но не имеющим серьёзного опыта программирования. Из недостатков можно отметить следующее:

  • она работает только на сайте, нельзя скачать дистрибутив и работать без подключения к Интернет;
  • я пока не обнаружил хорошей документации. Есть справочник по блокам, но там только краткие сведения, не объясняющие что конкретно делает каждый элемент, с примерами использования. Есть обучающие видео для детей, но это не совсем то;
  • конструктор интерфейса уж очень примитивный. В моей программе не особо много элементов на экране, но даже с ней пришлось сильно помучаться и обильно навтыкать костылей чтобы оно более-менее смотрелось.

В общем, я теперь дофига Моделист-Конструктор-Робототехник и Андроид-Девелопер! При этом, есть куда расти, так что продолжение, видимо, следует 🙂

Приложения:
Ks0192_Control — архив с программой и исходным проектом;
Программа на сайте App Inventor.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *