«Дистанционное управление радиоуправляемым автомобилем с клавиатуры компьютера»
« Дистанционное управление радиоуправляемым
автомобилем с клавиатуры компьютера»
Руководитель: Учитель высшей категории, Народный учитель РФ учитель физики МОУ СОШ № 2
Г. Дзержинск 2012 г.
2. Теоретическая часть — 3.
3. Практическая часть — 3.
4. Заключение — 5.
5. Литература — 6.
6. Приложения — 7
В настоящее время очень широко используется управление различными устройствами, машинами, механизмами и роботами с помощью радиоволн. Такое управление имеет много преимуществ по сравнению с управлением по проводам. Дело в том, что провода могут запутаться, оборваться, а попав агрессивную среду и испортиться. Кроме того, управление по проводам имеет ограничение по расстоянию, так как длина проводов ограничена мощностью двигателей управляемого устройства, а следовательно и ресурсами аккумуляторных батарей, если они находятся на борту управляемого устройства. Поэтому гораздо лучше управлять такими устройствами с помощью радиоканала связи.
Применение радиоканала связи целесообразно тогда, когда:
дальность связи по радиоканалу должна быть гораздо больше связи по проводам и может осуществляться при отсутствии прямой видимости между приемной и передающей антеннами.
2. Теоретическая часть —
Управление устройствами по радиоканалу производится с помощью специального пульта управления или различных джойстиков. Я решил разработать такое устройство управления, чтобы радиоуправляемой моделью автомобиля можно было управлять с клавиатуры компьютера.
Сначала нужно было доработать пульт управления радиоуправляемой моделью автомобиля для того чтобы он смог работать не от нажатия кнопок, а от сигналов уровня «логической единицы» ( 2,4 – 5 В), поступающих с компьютера. С этой целью я собрал 4 управляющих транзисторных ключа, срабатывающих от «логических единиц», поступающих с компьютера, на выходе которых были установлены герконовые реле.
Для сопряжения транзисторных ключей с USB портом компьютера я применил микроконтроллер KE-USB24A. И, наконец, с помощью руководителя написал программу для компьютера на языке программирования Delphi, которая позволила управлять с клавиатуры компьютера радиоуправляемой моделью автомобиля.
3. Практическая часть.
Устройство для дистанционного управление радиоуправляемым автомобилем с клавиатуры компьютера состоит из двух блоков :
1. Микроконтроллера KE-USB 24A.
2. Блок транзисторных ключей.
1. Микроконтроллера KE-USB 24A.
Для подключения приборов и различного оборудования к ПК через USB порт необходимо промежуточное устройство, которое называется контроллером. В настоящее время существует довольно много контроллеров и модулей, позволяющих подключить к USB внешние устройства.
В своем устройстве я решил использовать микроконтроллер KE-USB24A ( рис. 1), так как для него есть хорошее программное обеспечения начального уровня на языке С++ и Дельфи. У микроконтроллера KE-USB24A есть 24 контакта для передачи информации из ПК на внешние устройства и обратно. С помощью них, используя транзисторные ключи, можно управлять различными внешними устройствами – лампами накаливания, Рис. 1. электромоторами, электромагнитами, электромагнитными реле и т. д. Помимо возможности управления линиями ввода/вывода модуль также имеет встроенный 10-ти разрядный АЦП с частотой дискретизации до 400 Гц.
Мне понадобились 4 канала передачи информации для управления движением модели автомобиля : вперед, назад, вправо, влево.
Сначала я собрал схему ( рис. 2) , состоящую из микроконтроллера KЕ-USB24A и четырех светодиодов HL1-HL8 , последовательно с которыми соединены ограничительные сопротивления.
Потом загрузил программу в ПК, написанную на Delphi 7.
Рабочий стол программы изображен на рисунке 3.
Нажимая на кнопки со стрелками на клавиатуре компьютера я добился зажигания светодиодов при нажатии соответствующих кнопок :
— вперед – кнопка со стрелкой вверх,
— назад – кнопка со стрелкой вниз,
— влево –кнопка со стрелкой влево,
— вправо – кнопка со стрелкой вправо.
2. Блок транзисторных ключей.
Для управления радиоуправляемым автомобилем нужно на пульте управления нажимать соответствующие кнопки. Я заменил эти кнопки электромагнитными реле на герконах. Электромагнитные реле на герконах включены в коллекторные цепи транзисторных ключей. На рисунке 4 изображена схема транзисторного ключа на транзисторе типа n-p-n МП 37.
Работает транзисторный ключ. следующим образом. Пока на входе транзистора присутствует «логический нуль», т. е. напряжение практически отсуствует, то транзистор закрыт, ток через него не течет, следовательно, ток не течет и через электромагнитное реле и контакты реле разомкнуты.
Если на вход транзистора c линий 3 – 6
Рис. 4. микроконтроллера KE-USB-24A подать «логическую единицу», то транзистор откроется и через него, а, следовательно, и через электромагнитное реле потечет ток. Контакты реле замкнутся. А так как контакты реле соединены с кнопками пульта управления радиоуправляемого автомобиля, то автомобиль выполнит определенную команду.
В приложении 1. представлены фотографии блока управления на транзисторных ключах и фотография всей установки.
С помощью микроконтроллера KE-USB-24A, транзисторных ключей можно управлять самыми разнообразными внешними устройствами : электромагнитами, электромоторами и различными физическими приборами и установками. При использовании бинарных линий микроконтроллера не только на выход, но и на вход, а также возможности встроенного АЦП, можно, используя обратную связь, создавать устройства с простейшим искусственным интеллектом. Следующим моим проектом с использованием микроконтроллера KE-USB-24A будет проект «Умный дом».
1. У. Томпкис, Дж. Убстер. «Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC» Москва «Мир» 1992.
2. «Прикладная физика». Москва «Просвещение» 1989.
3. «Компьютерная лаборатория в школе». Москва «Горячая линия – Телеком» 2004.
4. «Школьная компьютерная физическая лаборатория». Москва Педагогический университет «Первое сентября» 2007.
Источник статьи: http://pandia.ru/text/77/386/78822.php
Wi-Fi машинка
Введение
В данном проекте описано создание Wi-Fi машинки с управлением моделькой автомобиля через интернет или при помощи ноутбука с Wi-Fi на расстоянии до 500м. На машинке установлена камера, работающая в реальном времени, что позволяет управлять машинкой глядя в экран ноутбука.
Некоторое время назад я нашел маршрутизатор Linksys WRT54GL. Он очень удобен для хака и модификации, т.к. он работает под управлением Linux. Для данного маршрутизатора была написана куча альтернативных прошивок. В этом проекте используется настраиваемая прошивка Linux Open-WRT. Кроме больших возможностей модификации программного обеспечения этого маршрутизатора, есть куча возможных аппаратных модификаций и хаков. То есть в моем распоряжении был дешевый и взламываемый маршрутизатор со встроенным Linux — я знал, что делать что-то с ним хорошо и удобно. Таким образом родилась идея Wi-Fi машинки.
Целью данной статьи является предоставить общий обзор проекта и показать некоторые особенности реализации программной и электронной части. Эта статья не является руководством по сборке машинки шаг за шагом, но имеет достаточно информации для людей с хорошей мотивацией и базовыми знаниями в электронике и программировании. Все программы написаны на условиях Открытого лицензионного соглашения GNU v2, так что код можно свободно использовать и улучшать.
Аппаратная часть
Машинка
Добавление сетевой камеры, маршрутизатора, тяжелых батарей, дополнительных схем, и кучи проводов добавляют много лишнего веса, а большинство моделей для этого не предназначено. Поэтому из-за всех дополнений необходимо найти довольно большую радиоуправляемую машинку. В интернете можно найти б/у радиоуправляемые транспортные средства без пульта за 200-300 руб. Я купил несколько машинок для того, чтобы вытащить из них детали. Транспорт размера 1:10 или больше вполне подойдет, и вероятно вы не захотите меньше. Я купил эту машинку за 150 руб.
Я разобрал около 20 радиоуправляемых автомобилей. Почти в каждом из них используется чип Realtek RX2/TX2 или его полные аналоги с аналогичной цоколевкой. Документацию на них можно найти в интернете или по ссылкам. Это означает, что машинкой очень легко управлять при помощи штатной электроники без добавления собственных схем. Можно подключить микроконтроллер непосредственно к выводам (вперед, назад, влево, вправо) и управлять автомобилем. Возможность использования штатной электроники автомобиля экономит много сил и времени.
Маршрутизатор
Я модифицировал свой WRT54GL так, что он имеет 2 последовательных порта и SD карту на 1Гб (работает как жесткий диск на 1 Гб). В этом проекте SD карта не используется, но используется один из последовательных портов. У моего маршрутизатора есть два последовательных порта: консольный порт и TTS/1, который мы и будем использовать. Для этого проекта я использую OpenWRT White Russian v0.9. Есть и более поздние версии, но для этого проекта нам они не нужны. В руководстве по компиляции программ (смотрите ниже), используется эта версия, поэтому я выбрал её.
Ниже в этой статье будут ссылки и информация, которая поможет вам подключить последовательный порт и заставить его работать.
Выбормикроконтроллера
Я оценил три различных микроконтроллера для этого проекта. Ниже показано краткое изложение оценки.
Микроконтроллер
PIC16F628A
Arduino (ATmega168) Freeduino MaxSerial
AVR Butterfly (ATmega169)
За
Цена. Уровень программного управления.
Очень прост в программировании (C со множеством встроенных библиотек). Интегрированный последовательный интерфейс. Готовый комплект разработчика, практически нет необходимости в пайке.
Легче для программирования, чем PIC. Интегрированный последовательный интерфейс. Пайка необходима редко.
Против
Труден для программирования (ассемблер). Необходимо соединять цепи вручную. Необходимы дополнительные аппаратные средства(MAX232A). Требуется программатор.
Ошибки загрузчика (см. ниже). Интегрированные периферийные устройства имеют странные выходные напряжения. Цена.
Я выбирал PIC16F628A по нескольким причинам:
У меня их было много.
Я имею небольшой опыт работы с ними.
Я хотел маленькую плату, и плата PIC оказалась самой маленькой из всех 3 вариантов.
Я хотел иметь полный контроль над действиями программы, и это вполне возможно при программировании на ассемблере.
Arduino (Freeduino MaxSerial) стал моим вторым выбором, который мне очень понравился простотой сборки и запуска. Также есть хорошая поддержка сообщества, и простота использования.
Первоначально я использовал отладочную плату AVR Butterfly. Она работала хорошо, пока один раз не разрядились батарейки. В загрузчике AVR Butterfly существует ошибка, которая подробно описана тут. Она портит код и не позволяет перепрограммировать его другим загрузчиком. Машинка работала в один день, а на другой нет. Потребовалось некоторое время, чтобы найти проблему и совсем немного времени, чтобы исправить её, поэтому я не стал дальше использовать эту плату в качестве системы управления. Я также обнаружил, что выходное напряжение на выводах может быть непредсказуемыми, так как кроме управления периферийными устройствами, они управляют ЖК-экраном.
Ниже приведён исходный код для PIC и Arduino. Оба были протестированы, так что используйте то, в чем вы лучше разбираетесь и чувствуете себя комфортнее. Arduino (Freeduino MaxSerial) является наиболее оптимальным вариантом для быстрого старта. Я купил его.
Управляющая схема
На самом деле в моей машинке используется две управляющие платы. Так сделано потому, что я сжег управляющие транзисторы на штатной плате машинки. К счастью, я смог отпаять их и RX2 чип (который также сгорел) и сохранить схему управления. Большинство игрушечных радиоуправляемых машинок используют около 6 проводов для управления двигателем. Это так, потому что в собранной машинке есть металлический скользящий контакт, который движется с двигателем и дополнительные провода используются для реле. Каждая радиоуправляемая машинка имеет различные параметры этого контакта, так что намного лучше использовать штатную схему.
Я сжег транзисторы, подав напряжение питания 16В, вместо штатных 9.6В. Транзисторы рассчитаны на ток 5А, но вероятно я нагрузил их слишком сильно и они живописно задымились. Я взял плату из другой радиоуправляемой машинки и использовал транзисторы оттуда. Я запустил эту схему от 12В, и это не вызвало никаких проблем, хотя транзисторы довольно сильно грелись. Использование штатных плат машинки вместо изготовления собственного Н-моста экономит много времени и денег.
Аккумуляторы
Этот проект использует мощные аккумуляторы. Я купил их для радиоуправляемых машинок высокого класса за $ 50 + доставка с eBay. Они имеют 3800 мАч и зарядное устройство 1,8А в комплекте. Их можно найти в поиске eBay. Одна батарея заряжается примерно 1.5 часа (от полного разряда). Их напряжение 7.2В, однако, когда они только заряженные их напряжение около 8.3В, а когда они полностью разряжены (уже не в состоянии питать машину) они дают примерно 7.1В.
Я заменил все разъемы на аккумуляторах на стандартные Molex ATX разъемы. Это сделано для того, чтобы использовать дешевые разъёмы которых у меня было много, которые позволяют легко сделать разветвитель для замера тока. Батареи соединённые последовательно дают около 16В при полной зарядке.
Питание
5В (7805 1A)
9.2В (из 12V от 7812)
12VВ (7812 1A)
12В (Регулятор LT1083 7.5A)
Камера Сигнал Плата управления
Линия 9.6В получена путем установки 4 диодов последовательно с шиной 12В берущейся с 7812. Падение напряжения на диоде около 0.7В. Поставив 4 диода в ряд, мы теряем около 2.8В, и получаем 9В для устройств, которым необходимо меньше 12В. После того как я сжег транзисторы, я решил питать схему более низким напряжением. 7812 рассчитан на 1А, а двигатели потребляют значительно больше. Digikey продает регулятор 7.5A 12В примерно за 14$, и я купил его. Я прикрепил его к радиатору, потому что думал, что он может греться. После некоторого времени работы он даже не нагрелся, поэтому радиатор не требуется. Я не хочу рисковать схемой управления, поэтому я питаю его напряжением максимально приближены к штатному. Камера требует 9В, сигнал работает довольно тихо при питании от 5В, поэтому все эти устройства работают от линии 9.2В.
Вся силовая электроника собрана на макетной плате и находится в корпусе.
Схемы
PIC:
Arduino:
Подключение Arduino: Вперед — Pin 8 Назад — Pin 9 Влево — Pin 10 Вправо — Pin 11 Зеленый LED — Pin 7 Красный LED — Pin 6 Сигнал — Pin 5
Последовательный порт Freeduino MaxSerial можно связать с последовательным портом маршрутизатора при помощи стандартного последовательного кабеля.
Последовательный порт Freeduino MaxSerial можно связать с последовательным портом маршрутизатора при помощи стандартного последовательного кабеля.
Freeduino MaxSerial использует последовательный вывод 4 — DTR (Data Terminal Ready) для сброса микроконтроллера и разрешения на загрузку нового кода. При нормальной работе с компьютером на этом выводе либо +10 В либо -10В в зависимости от того, подключен ли последовательный порт. Однако на последовательном порту маршрутизатора этот вывод заземлен и неактивен. Когда маршрутизатор начинает передачу данных через последовательный порт, MaxSerial сбрасывается. Это нам не подходит. Мы подтянем вывод DTR к +9В. Это простое изменение включает режим закрытой программы, то есть микроконтроллер не может быть перепрошит и сброшен по последовательному порту. Если необходимо перепрошить микроконтроллер, то достаточно просто щелкнуть выключателем.
Примечание: Если вы используете USB версию Arduino, вы можете просто подключить RX и TX контакты к MAX232A, а затем к последовательному порту маршрутизатора.
Камера
Одним из основных аспектов этого проекта является то, что машинкой можно управлять без прямой видимости при помощи сетевой камеры Panasonic BL-C1A. Это почти самая дешевая проводная сетевая камера с хорошими отзывами. Программное обеспечение есть только для Windows – это небольшой, но терпимый минус. Для просмотра изображения программное обеспечение не требуется. В более дорогих моделях есть панорамирование и возможность наклона, но они значительно дороже и их функциональность не нужна.
Камера имеет очень удобный веб-интерфейс, что делает её не только Windows устройством. Просмотреть изображение с камеры можно при помощи следующей команды: http:///ImageViewer?Resolution=320×240?Quality=standard Доступные разрешения 640×480, 320×120, 160×60. Доступное качество (сжатие) precision(качество), standard(стандартное), motion(движение ).
Качество видео неплохое. Тем не менее, оно часто замирает на 1 секунду даже при хорошей связи. Я предполагаю, что электроника камеры недостаточно мощна, чтобы поддерживать постоянный прямой эфир с автофокусом. В целом я доволен ей.
Глядя на внутреннюю часть камеры, видно, что она работает на ARM процессоре 250 МГц. По информации с официального сайта она также имеет 64Мб оперативной памяти. Интересно, как трудно было бы заставить Linux работать на этом…
Сигнал
Я добавил забавную возможность сигналить людям. Это довольно просто. Я купил зуммер за 3$ и подключил его к микроконтроллеру через транзистор для увеличения мощности.
Сборка
От машинки было использовано только шасси. Все декоративные и нефункциональные части были сняты. Камера была установлена на переднюю часть с небольшим изменением штатного крепления. Плата была установлена на переднюю часть машинки и прикручена с использованием пластиковых гаек и болтов во избежание замыкания.
Плата микроконтроллера PIC также надежно закреплена болтами на другой стороне. Все провода были умышленно взяты длиннее чем требуется, для их легкого перемещения во время сборки. После сборки лишние куски провода были собраны и связаны. Было очень много проводов, вероятно около 30, которые нужно было провести из/в переднюю и заднюю часть машинки, не считая Ethernet кабеля.
Все силовые цепи были размещены в корпусе в задней части машинки, за исключением LT1083 7.5A, который находится в нижней части автомобиля. Я не ставил его в корпус, потому что это было дополнение к проекту, и так его было проще всего добавить. Когда светодиод на задней стороне коробки светится красным, маршрутизатор загружается. Когда маршрутизатор загрузился, он посылает сигнал микроконтроллеру, загорается зеленый светодиод, и я знаю, что могу соединиться с машинкой. Этот индикатор был очень полезным при отладке.
Вся электроника была собрана на макетной плате пред пайкой и установкой машинку. Батареи прикреплены с помощью термоклея и кабельных стяжек. Маршрутизатор был слишком широкий, чтобы стать на машинку без дополнений. Я добавил два куска плексигласа, чтобы сделать машинку шире.
Программная часть
Для данного проекта необходимы 3 программы. Приложение-клиент VB6 Wifi_Robot на Windows, CarServer написанный на C и работающий на маршрутизаторе работающем под управлением OpenWRT WhiteRussian v0.9 (Linux), а также микропрограмма микроконтроллера. Я испытывал прошивки для микроконтроллера PIC16F628A и популярного Arduino (Freeduino MaxSerial). Все программное обеспечение распространяется на основе открытого лицензионного соглашения GNU v2.
Следующие инструкции предполагают, что у вас есть подключенный к интернету Linksys WRT54GL с установленный OpenWRT WhiteRussian v0.9. Руководстве по установке OpenWRT можно найти по ссылке.
Установка CarServer Если вы хотите использовать программное обеспечение Войдите по SSH в своем маршрутизатор, затем. # cd /tmp # wget http://www.jbprojects.net/projects/wifirobot/carserver_1_mipsel.ipk # ipkg install ./carserver_1_mipsel.ipk
Компиляция и установка CarServer Если вы хотите увидеть, как он работает или модифицировать его
Вам нужно будет скачать OpenWRT SDK (только для Linux) и следовать этому руководству по составлению программ: Написание и компиляция простой программы для OpenWRT от Eric Bishop (просто следуйте первой части) Makefile находится в /OpenWrt-SDK-Linux-i686-1/package/carserver/ Makefile находится в /OpenWrt-SDK-Linux-i686-1/package/carserver/src carserver.c находится в /OpenWrt-SDK-Linux-i686-1/package/carserver/src Ваш скомпилированный ipkg будет отображаться в /OpenWrt-SDK-Linux-i686-1/bin/packages. Затем: # scp carserver_1_mipsel.ipk root@:/tmp/. для копирования в маршрутизатор. Войдите по SSH и установите
Есть бесплатная электронная книга посвящённая серии маршрутизаторов WRT54G которая называют Linksys WRT54G Максимальный взлом. Я считаю что она бесплатна. Её можно просмотреть в Google Books. Она также может быть загружена по ссылке. В этой книге рассказывается как добавить последовательный порт, настроить программное обеспечение, а также о многих других взломах и модификациях. Я связался с одним из авторов. Это не бесплатная электронная книга. Вы можете просмотреть её в Google Books, и поддержать авторов, купив её Amazon. Это отличная книга!
Получение рабочего последовательно порта Мы используем TTS/1, так что если вы добавили один последовательный порт – убедитесь что это он. Если у вас установлен OpenWRT WhiteRussian v0.9 войдите в SSH. Инструкции в книге указанной выше немного устарела. Вот обновленная версия: # ipkg update # ipkg install setserial
# cd /usr/sbin # wget http://www.jbprojects.net/projects/wifirobot/stty.tgz # tar -zxvf stty.tgz # chmod 755 stty
Добавьте следующие строки в /etc/init.d/custom-user-startup чтобы сделать последовательный порт рабочим при запуске и автоматического запуска CarServer. /usr/sbin/setserial /dev/tts/1 irq 3 /usr/sbin/stty -F /dev/tts/1 raw speed 9600 /bin/carserver&
Запуск клиентского приложения Wifi_Robot
Этот файл содержит исходный код VB6 и скомпилированный EXE. Вы можете просто извлечь wifi_robot_client.exe и config.txt, если вы не хотите заниматься программированием. Вы можете открыть и компилировать VB6, если вы хотите изменить его. Эта программа — это просто слегка измененная программа проекта радиоуправляемая машинка, управляемая компьютером.
ПО микроконтроллера
PIC Вам понадобится программатор для PIC. Я использую P16PRO40, купленный на eBay. Есть много программаторов, которые можно купить или собрать самому. Вы можете самостоятельно скомпилировать HEX с помощью Microchip MPLAB или просто скачать и прошить готовый HEX файл. PIC asm базируется на этом тесте PIC16F628 UART.
Arduino (Freeduino MaxSerial) Программу можно загрузить в Freeduino MaxSerial без дополнительного программатора. Если вы используете Freeduino MaxSerial, убедитесь, что вы сделали небольшую модификацию оборудования, которая предотвратит сброс Freeduino каждый раз при получении данных от маршрутизатора через последовательный порт. См. выше для получения более подробной информации.
Измерения и тесты
Максимальная скорость Чтобы вычислить максимальную скорость я сделал две отметки на расстоянии 3м друг от друга и несколько раз снимал машинку. Камера записывает 30 кадров в секунду, так что возможная ошибка камеры +/- 3,3% и +/- 1% ошибка расстояния.
Автомобиль проезжает 3м за 0,7 секунды (21 из 30 кадров за 1 секунду). Максимальная скорость: 4,3 м/с = 15.5 км/ч = 9.6 миль/ч
Расстояние Я взял маршрутизатор в большое поле. Я смог подключится со своего ноутбука на расстоянии до 500 м (по 1Мбит). Дальше этого расстояния, я уже не смог подключиться. Альтернативные прошивки (OpenWRT) позволяют увеличить выходную мощность. Я пытался изменить это значение, но это не повлияло на расстояние. Возможно, мой ноутбук (Dell Inspiron 6000), который всегда имел хороший WiFi (лучше, чем 6400 моего друга), может быть ограничивающим фактором.
Скорость передачи данных Управляющий сигнал: 3.5 Кб/с Камера: 50-190 Кб/с Камера использует большую/меньшую пропускную способность в зависимости от того, сколько света в изображение. Если света много, она будет использовать более высокую пропускную способность. Если машинка заехала очень далеко, маршрутизатор будет постоянно понижать скорость, пока не достигнет 1 Мб (мегабит). На такой скорости, камера не сможет отправлять данные, но управление будет работать.
Измерение энергопотребления Измерения энергопотребления проводились до тех пор, пока напряжение на контактах батареи не упало ниже необходимого. Измерения проводились, когда батареи использовались примерно 10 минут, и напряжение было 15.3В. Из-за измерения тока, в устройство поступает более низкое напряжение, и ток выше. Все измерения были выполнены с помощью мультиметра Fluke 187 True RMS. Последнее измерение было произведено когда устройство остановилось из-за разряда.
Источник статьи: http://cxem.net/uprav/uprav34.php