Привет, Хабр.
Наверное, у каждого человека дома завалялись старые мобильные телефоны.
Аккумулятор сдох, экран поцарапался, мне это просто надоело.
В ряде случаев такой «старый» телефон представляет собой достаточно продвинутое устройство.
Например, бывший SonyEricsson Z310i моей дочери - ява, блютуз, камера, gprs. Почему бы не использовать его, чтобы воплотить в жизнь свою давнюю детскую мечту – радиоуправляемую машину с камерой на борту? И тут сошлось несколько обстоятельств: валялся телефон, откуда-то взялась сломанная машинка без пульта, вырос младший сын, попал в хакерскую ловушку.
статья , нашел в Интернете Веб-сайт .
Итак, алгоритм:
- пользователь P нажимает кнопки на мобильном телефоне T1
- Т1 передает команды через Bluetooth
- машина оснащена сотовым телефоном Т2, который принимает их и передает по аудиоканалу (проводной в режиме громкой связи) на микроконтроллер.
- МК, в свою очередь, распознает команды и управляет моторами, лампочками и всем остальным.
- Т2 снимает происходящее на камеру и передает обратно на Т1,
- Т1 передает полученное изображение по оптической связи P
- ????
- П радуется
Инструменты и материалы
Заказ поступил в один из магазинов, и через некоторое время я стал обладателем отладочной платы STM32L-DISCOVERY, макетной платы, драйвера двигателя L293D и всяких штекерно-проводных мелочей.В качестве первого шага была загерметизирована сломанная подвеска автомобиля, проверены двигатели и замерен их расход. Документацию на плату, процессор и L293D нашла в интернете.
В качестве IDE был выбран IAR.
Действия руками
Естественно, все этапы программирования МК были пройдены - моргание, запись чего-то на ЖКИ, пищание.Тестер, детский электронный конструктор и старый осциллограф очень помогли в отладке работы периферии.
В целом написание кода в МК заключается в основном в доработке и объединении стандартных примеров.
Следующий шаг — подготовить плату, припаять драйвер мотора и попробовать настоящее управление.
По краям платы МК почти все ее ножки выложены на достаточно длинных штырях со стандартным шагом 2,5 мм как вверх, так и вниз.
Для подвесных соединений использовались соединители ПБС-6. Готовое устройство на самой машине представляет собой кусок макетной платы с такими же разъемами, т.е.
самодельную щитовую плату.
И вот драйвер моторчика подключен, и мы уже моргаем лампочкой накаливания от конструктора.
Теперь припаиваем питание к разъему под пины GND и EXT_5V. Очень повезло, что ножки блока питания и управления расположены по диагонали — платы хорошо скрепляются всего двумя разъемами.
Припаиваем к моторчикам аккумулятор и провода (забавно, что их можно перепутать — перепрограммировать контроллер проще, чем распутывать провода).
Небольшая программа — и вот слепая и глухая машинка ездит туда-сюда, и выполняет поворот за 12 шагов.
Команда
После некоторого гугления и вдумчивых взглядов на осциллограф было принято самое простое решение — команды кодируются синусоидальными сигналами разных частот. На стороне телефона частоты формируются путем воспроизведения WAV-потока 8 бит, моно, сэмплирование 8 кГц.В качестве командных частот выбираются делители частоты дискретизации, т.е.
160, 200, 250.2000 Гц.
Таким образом, на данном этапе у нас есть 9 команд, из которых 7 используются для движения (вперед, назад, вперед-влево, назад-вправо.
стоп).
Для измерения частоты на стороне МК используются таймер, прерывание и компаратор.
Отрицательный вход компаратора переключается на внутреннее опорное напряжение 0,3 В (Vref/4), выход компаратора настроен на запуск прерывания при прохождении переднего фронта импульса.
16-битный таймер считает импульсы с частотой 8 МГц.
В момент прерывания значение счетчика таймера считывается и сравнивается с предыдущим отсчетом.
Если подряд обнаружено 5 примерно одинаковых импульсов, команда считается принятой.
Чтобы машина остановилась в случае выхода из зоны приема, телефонный пульт в перерывах между командами периодически передает нулевые байты.
Если телефон-приемник не получает никаких команд в течение примерно 200 мс, моторы отключаются.
И на этой радостной ноте начинаются проблемы.
Оказалось, что выбранный телефон не поддерживает блютуз от явы.
Другой полуживой телефон - SonyEricsson C702 - имеет настолько высокие АЧХ, что команды не распознаются.
Третий телефон - мой основной Samsung B2100 - имеет невероятное количество ошибок в java, что работать с ним практически невозможно.
Камера C702 умудряется делать фотографии невероятного размера, которые затем долго и утомительно передаются через Bluetooth. Помимо всего этого, при отладке схемы воспроизведения звука я неудачно ткнул щупом осциллографа в плату.
Веселый свет и струйка дыма заставили меня попрощаться с доской МК, но оказалось, что все не так уж и страшно.
У меня просто сгорел диод в цепи питания программатора и на одном из выходов МК.
Теперь для прошивки и отладки программы необходимо подключать не только USB, но и аккумулятор, а сгоревший вывод пришлось припаивать к свободному рабочему контакту.
В результате в первоначальную идею были внесены коррективы — напряжение в аудиотракте сравнивается с землей, а полученные с камеры фотографии перед передачей сжимаются в JPEG 100*160 пикселей.
Звуковой тракт, провод и фары
Наличие на борту ЦАП-контроллера и достаточно большого объёма флеш-памяти (128кб) позволяло предположить, что машину можно научить говорить.Для этого мы с сыном записали 2 файла WAV и добавили их в программу.
Пришлось записывать звуки на нетбук жены с Windows XP, потому что.
Стандартными средствами 7 невозможно записать WAV-файл в формате PCM 8bit. (кстати, подскажите более простую программу для конвертации звуковых файлов).
Для усиления звука использована микросхема к174ун24, звук выводится на 2 динамика 8 Ом 1 Вт. Страница проекта на SourceForge В качестве последнего штриха батарейки типа АА были заменены на свинцовые аккумуляторы напряжением 6 В и емкостью 4,7 Ач.
Белые светодиоды были припаяны параллельно основному двигателю в качестве фар.
Автомобиль обзавелся «мальчишеским» ксеноном, весом и динамикой настоящего джипа, провисающей подвеской и ревом двигателя.
И вот проект завершился.
Машина может двигаться по команде, фотографировать и говорить нечеловеческим голосом.
Этот проект стал моим первым шагом в мир кустарной робототехники, который свел меня с замечательными людьми и заново научил меня держать паяльник в руках.
Однако продолжения этот проект не получит, поскольку первоначальная идея себя не особо оправдала.
Платформа j2me продемонстрировала всю свою врожденную убогость.
Несмотря на, казалось бы, унифицированный и разветвленный API, распространенность ошибок и недостатков в реализациях не позволяет использовать все встроенные возможности.
Система безопасности постоянно запрашивает доступ к ресурсам телефона.
На панели управления с этим можно смириться, а вот на машинке это жутко раздражает. Обработка и передача даже небольших снимков занимает безумное количество времени – около 5 секунд. Говорить о передаче видео или изображений в каком-либо реальном времени нет смысла.
Железо
Микросхема L293D очень удобна в использовании, но, к сожалению, она выполнена на биполярных транзисторах, и при напряжении питания 5-6В половина энергии батареи уходит на нагрев мирового пространства.Что ж, недорогая машинка из супермаркета – это не хорошая механическая платформа.
Осознав все это, я решил прекратить разработку проекта, и за первым шагом последовал второй — Wi-Fi, камеры и более совершенная электроника.
Теги: #arm #DIY или Сделай сам #diy #Bluetooth #j2me #stm32l-discovery
-
Индустриальная Психология
19 Oct, 24 -
Композитные Материалы
19 Oct, 24 -
Законы Робототехники Сегодня
19 Oct, 24 -
Идея Для Капчи. Генерация Шрифтов.
19 Oct, 24 -
«Красавицы» В Zend Studio 5.5
19 Oct, 24 -
Нейронные Сети На Основе Правил
19 Oct, 24 -
Как Сейчас Живут Тестировщики? Часть 2
19 Oct, 24 -
Создаем Шаблон 1С-Битрикс На Базе Bootstrap.
19 Oct, 24