Есть задача, регулировать пультом скорость коллекторного двигателя. Сам пока только познаю азы в понятиях Ардуино. Нашел в нете подходящий по-помему мнению скетч, с регулировкой светодиода, но при компиляции он выдает ошибку в строке 46. Подскажите, господа разбирающиеся, что здесь неправильно?
Да, это не заметил, но увы — не полегчало. Выдает вот такую ошибку:
sketch_mar29e:46: error: ‘pinl’ was not declared in this scope
exit status 1
‘pinl’ was not declared in this scope
Нашел еще один скетч, он нормально заливается в плату, но ничего не работает. (коды пульта изменены на мои):
Какой из них предпочтительнее и легче привести в рабочее состояние?
Потому что в строке 13 написано pin1, а в строке 46 написано pinl. Разницу видите?
Спасибо, уже увидел! А по второму скетчу навскидку ничего не видно проблематичного?
В первом: int RECV_PIN = 11;
Во втором: int RECEIVE_PIN = 2;
К какой ноге реально подключен датчик?
Датчик пульта перевешивал на нужную ногу. Скорее всего где-то контакта не было. Сейчас заработали оба скетча, первый оказался немного не такой как надо — регулировка одной кнопкой по кругу минимум-максимум. Во второй добавляю регулировку второго двидателя — опять какая-то засада. Знаний мало, а хочется сделать что-то сразу. Вот переделанный скетч, посмотрите, ПОЖАЛУЙСТА, что я не так наковырял?
- Дистанционное управление QUADRUPED по ИК
- Введение:
- Видео:
- Нам понадобится:
- Библиотеки:
- Схема подключения ИК-приёмника:
- Схема подключения робота QUADRUPED:
- Код программы для чтения сигналов с пульта:
- Код программы для робота QUADRUPED:
- Управление:
- Робот-автопилот с управлением и программированием с ИК пульта
- Видео:
Видео:v.01 Arduino IR motor Управление моторами с ИК пульта и Скоростью ШИМ (PWM) Pan & TiltСкачать
Дистанционное управление QUADRUPED по ИК
Видео:Как настроить ПУЛЬТ для Arduino?! Инфракрасный приемник датчик CHQ1838 VS1838B 38кГцСкачать
Введение:
В этом уроке мы дополним робота QUADRUPED модулем ИК-приёмник и будем управлять направлением и скоростью движения робота с помощью ИК-пульта.
Скорость и направление движения робота будет зависеть от нажатой клавиши на пульте. Робот сможет выполнять такие команды как движение вперёд или назад, с заворотом или без, разворот на месте влево или вправо.
Видео:Управление моторами с ArduinoСкачать
Видео:
Видео:Arduino Start #2. Управление arduino ИК-пультомСкачать
Нам понадобится:
Библиотеки:
Для реализации проекта нам необходимо установить библиотеки:
- Библиотека iarduino_IR_RX — для работы с ИК-приёмниками/передатчиками;
- Библиотеки SoftwareSerial и Servo входят в базовый набор Arduino IDE и не требуют установки.
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.
Видео:Теперь можно управлять ЛЮБЫМ прибором с помощью одного ЛЮБОГО пульта с кнопками.Скачать
Схема подключения ИК-приёмника:
Trema ИК-приёмник | Trema Shield |
---|---|
вывод G | чёрная колодка «Земля» |
вывод V | красная колодка «+5V» |
вывод S | 12 цифровой вывод (D10) |
Вы можете изменить вывод D12 для подключения ИК-приёмника на любой другой, указав его в скетче при определении константы IR .
Видео:Управляем Ардуино ИК пультом!Скачать
Схема подключения робота QUADRUPED:
Соберите механику, подключите Trema Shield, сервоприводы и откалибруйте робота, как это описано на странице Сборка QUADRUPED. Электроника + Калибровка. Далее на боковую панель установите ИК-приёмник.
Сервоприводы | Trema Shield | |
---|---|---|
1 конечность | Горизонтальный сустав (№ 0) | вывод 4 на белой колодке |
Вертикальный сустав (№ 1) | вывод 5 на белой колодке | |
2 конечность | Горизонтальный сустав (№ 2) | вывод 6 на белой колодке |
Вертикальный сустав (№ 3) | вывод 7 на белой колодке | |
3 конечность | Горизонтальный сустав (№ 4) | вывод 8 на белой колодке |
Вертикальный сустав (№ 5) | вывод 9 на белой колодке | |
4 конечность | Горизонтальный сустав (№ 6) | вывод 10 на белой колодке |
Вертикальный сустав (№ 7) | вывод 11 на белой колодке |
Вы можете изменить выводы 4-11 для подключения сервоприводов на любые другие, указав их в скетче при объявлении массива объектов PIN_SERVO[8] . Трехпроводные шлейфы сервоприводов устанавливаются следующим образом:
- Оранжевый провод подключается к выводу на белой колодке.
- Красный провод подключается к выводу на красной колодке.
- Коричневый провод подключается к выводу на чёрной колодке.
Видео:Уроки Arduino. Управление моторами с библиотекой GyverMotorСкачать
Код программы для чтения сигналов с пульта:
Данный скетч пригодится вам в том случае, если вы решите взять любой другой ИК-пульт вместо нашего. В этом случае вам надо будет определить коды кнопок, используя данный скетч, а затем указать их уже в основном коде QUADRUPED, там где указана функция IR.data .
Видео:Дистанционное управление 8 нагрузками по ИК каналу.Пульт ДУ и приемникСкачать
Код программы для робота QUADRUPED:
Значения массива CENTR_ANGLE должны быть изменены (откалиброваны) на действительные углы сервоприводов в градусах, при которых все суставы робота находятся в центральном положении. Это выполняется с использованием калибровочного скетча, как описано на странице Сборка QUADRUPED. Электроника + Калибровка.
Получение данных с пульта
- Данный блок начинается с оператора if в условии которого написано IR.check(true) . Это условие верно, если с ИК-пульта приходят пакеты на ИК-приёмник.
- Далее следует оператор if условием которого является IR.data == . Далее указан код кнопки ИК-пульта. Если код совпадает, то выполняется код в теле оператора, код которого совпал с принятым от ИК-пульта.
- При выполнении кода в теле оператора if так же обновляется значение счётчика времени FlgTime , который в последствии будет использоваться для ограничения времени на получение пакета (в скетче выше время получения указано ниже в виде (FlgTime + IR_SIGNAL_WAITING_TIME) > millis()) .
В данном коде управление роботом осуществляется через функции:
- joint_move_func — установка одного сустава выбранной конечности в значение от -100 до 100.
- Если указать joint_move_func(4,1,100) , то у 4 конечности, вертикальный сустав, поднимется максимально вверх.
- Если указать joint_move_func(4,1,-100) , то у 4 конечности, горизонтальный сустав, сдвинется максимально влево.
- Если указать limb_step_func(4,x,0,50) , где x будет увеличиваться от 0 до 255, то 4 конечность совершит следующие действия: плавный сдвиг внизу назад, резкий подъём, быстрый проход сверху вперёд и резкий спуск, остановившись в той же позиции с которой начинались движения. Что похоже на реальное движение лап при движении вперёд.
- Если указать limb_step_func(4,x,0,50) , где x будет уменьшаться от 255 до 0, то 4 конечность совершит те же действия, но в обратном порядке. Что похоже на реальное движение лап при движении назад.
- Предпоследний аргумент функции можно указывать в пределах от -100 до +100, он будет ограничивать амплитуду движений левых или правых конечностей, что вызовет заворачивание (поворот) влево (-100. 0) или вправо (0. +100).
- Последний аргумент функции можно указывать в пределах от 0 до 100, это высота подъёма корпуса в процентах, если указать 0, то QUADRUPED будет «ползти», чем больше значение, тем выше QUADRUPED. Средний подъём корпуса соответствует значению 50.
- Если указать limb_step_fun(1,X,0,50) , где x будет увеличиваться от 0 до 255, то все конечности совершат действия при которых QUADRUPED пройдёт вперёд и прямо на один полный шаг, а его конечности вернутся в ту же позицию с которой этот шаг начинался.
- Если указать limb_step_func(1,X,0,50) , где x будет уменьшаться от 255 до 0, то все конечности совершат те же действия, но в обратном порядке. Следовательно, QUADRUPED пройдёт тот же шаг но назад.
- Если указать limb_step_func(0,X,0,50) , где x будет увеличиваться от 0 до 255, то все конечности совершат действия при которых QUADRUPED выполнит разворот вправо на один полный шаг, а его конечности вернутся в ту же позицию с которой этот разворот начинался.
- Последний и предпоследний аргументы выполняют те же действия что и аргументы функции limb_step_func той же позиции, а именно, выполняют заворот (поворот) и поднятие корпуса.
- Вы можете дополнить функцию gait_func придумав свои варианты походок.
Видео:15 - Управление устройствами с помощью ИК пульта дистанционного управленияСкачать
Управление:
Управление QUADRUPEDом начинается после того, как на него будет подано питание и все сервоприводы будут выставлены в центральные положения (требуется предварительная калибровка). После этого кнопками пульта со стрелками можно управлять направлением движения робота.
Видео:Управление двигателем постоянного тока. Схема управления мотором Ардуино проекты.Скачать
Робот-автопилот с управлением и программированием с ИК пульта
Поломанную детскую машинку я захотел превратить в управляемого робота, с различными режимами работы. А именно, как контролируемого вручную с помощью пульта от телевизионной приставки, так и способного перемещаться по квартире самостоятельно, что называется «на автопилоте». Плюс, в процессе игры, хотелось бы предоставить ребенку возможность задавать этому роботу произвольные последовательности действий или способы реакции на препятствия, то есть «программировать» его, так же с помощью пульта, без подключения к среде разработки.
За основу я взял вот такой, однажды поломанный, игрушечный квадроцикл.
От него я оставляю только корпус, а всю внутренность и механику ему придется заменить. Соответственно, разбираем полностью.
Электронной платформой для самоделки будет всем известная Arduino nano, точнее, её недорогой китайский аналог. Так же мне понадобились:
1. Arduino Nano
2. Мотор-редуктор с колесами для Ардуино 2шт. (ссылка на Алиэкспресс)
3. Драйвер мотора MX1508 1шт. (ссылка на Алиэкспресс)
4. Ультразвуковой датчик для измерения расстояния HC-SR04 1шт. (ссылка на Алиэкспресс)
5. Зарядный модуль для литий-ионных аккумуляторов TP4056 1шт. (ссылка на Алиэкспресс)
6. Повышающий преобразователь напряжения MT3608 1шт. (ссылка на Алиэкспресс)
7. Модуль инфракрасного приемника 1шт. (ссылка на Алиэкспресс)
8. Фоторезистор GL5528 (20кOм) 1шт. (ссылка на Алиэкспресс)
9. Светодиоды 2шт.
10. Пьезоизлучатель, зуммер 1шт. (ссылка на Алиэкспресс)
11. Выключатель 1шт.
12. Аккумулятор литий-ионный 18650 1шт. (ссылка на Алиэкспресс)
13. Провода.
14. Еще одно маленькое колесо.
15. ИК пульт дистанционного управления.1. Паяльник.
2. Отвертка.
3. Нож.
4. Кусачки.
5. Пилка.
6. Клеевой пистолет.Затем необходимо подобрать и подготовить места под всю электронную начинку внутри корпуса игрушки. Для этого кое-какие элементы пришлось подпилить, а также, выломать некоторые перегородки между внутренними отделениями. После доработки примеряем каждый модуль на его будущее место расположения в корпусе.
Например, сам контроллер я решил установить под сиденьем
Драйвер моторов — в задней части машинки, поближе к движкам. Для этого пришлось укоротить выхлопную трубу.
Пьезоизлучатель будет находиться на том же месте, где стоял родной динамик машинки
Преобразователь напряжения и контроллер аккумулятора установятся внутри корпуса
Светодиоды, имитирующие фары — в передней части
Там же будет установлен фоторезистор
И сверху расположатся датчик расстояния и инфракрасный приемник
Собирать будем по следующей схеме:
Здесь АКБ Li-ion 18650 – это аккумуляторная батарея питающая устройство. Для заряда батареи и защиты от переразряда, она подключается к схеме, через контроллер TP4056 на выводы B+ и B-. Далее с выходов контроллера TP4056 напряжение подается на повышающий преобразователь MT3608, где поднимется с 4.2 до 5 В, а также на драйвер моторов MX1508. И уже с выходов MT3608, питание подается на контроллер Ардуино nano и на подключенные к его пинам датчики.
Собственно, из датчиков мы имеем на борту только три: это ультразвуковой датчик расстояния, датчик освещенности в виде фоторезистора и инфракрасный приемник для управления роботом с ИК пульта. Фоторезистор подключен к аналоговому пину А6 на Ардуино, с подтягивающим резистором 10 кОм на массу. А датчик расстояния к цифровым пинам D10 и D12, на контакты trig и echo, соответственно. Инфракрасный датчик подсоединен к цифровому пину D8.
Помимо датчиков к Ардуино подключены также входящие контакты драйвера моторов IN1, IN2, IN3, IN4, на пины: D5, D4, D6, D7, соответственно. Пьезо пищалка для звукового сопровождения — пин D11. И два красных индикационных светодиода, для подсветки робота в темноте. Светодиоды подключаются анодами к цифровым пинам D2 и D3, и катодом к GND c ограничивающим резистором на 160 Ом.
Для возможности физического отключения питания, в цепь батареи будет вставлен выключатель.
Чтобы паять контакты прямо к Ардуино, и тем самым сэкономить пространство и обеспечить компактность расположения элементов внутри робота, мне пришлось удалить все ножки с контроллера.
После чего я приступил к распайке .
И настройке повышающего преобразователя MT3608 с помощью подстроечного резистора так, чтобы на out контактах было 5V.
Соединив все модули согласны схеме,
Я занялся сборкой робота в его окончательном виде, стараясь максимально скрыть внутри все компоненты и соединительные провода. Так же, с помощью термоклея, я установил моторы с колесами и выключатель.
Аккумулятор будет располагаться сзади, над моторами. Я подпаял провода прямо к батарее, хоть это делать и нежелательно, но так всё будет немного компактнее.
В задней части сиденья я проделал отверстие для подключения mini USB кабеля к разъему на Ардуино, чтобы иметь возможность программировать контроллер ничего не раскручивая.
Зарядный модуль я расположил внутри с таким расчетом, чтобы разъем для подключения кабеля выходил снизу, в днище корпуса.
Пока аккумулятор заряжается, индикатор на модуле светится красным. Как только зарядится, загорится синий.
Еще я решил прикрыть тыльную часть ультразвукового датчика расстояния небольшим пластиковым прямоугольником. Так и симпатичнее и безопасней для электроники.
Получился вот такой робот, и он уже почти готов к работе.
Осталось составить скетч в Arduino IDE и залить его в контроллер.
В процессе написания программы, я, хоть и не использовал никаких экзотических библиотек, только стандартные и проверенные временем, столкнулся с необычной проблемой: после обновления до последней версии, библиотека IRremote, ответственная за обработку сигналов получаемых с инфракрасного приемника, перестала работать. Но после отката на версию 2.8.0, все снова заработало, как надо. Так что, если кто будет использовать аналогичный моему код, имейте ввиду, что версия указанной библиотеки должна быть не выше 2.8.0. Так же, возможно, вам придется изменить в этой библиотеке таймер по умолчанию в файле:
(Более подробно об этом сказано в самом скетче)
И еще по поводу ИК управления. Поскольку ваш пульт ДУ почти наверняка будет отличаться от моего,то и коды клавиш у вас будут другими. Определить их можно раскомментировав строчку:
Находящуюся внутри функции и открыв «монитор порта».
При нажатии кнопок на ИК пульте в мониторе появятся соответствующие цифры. Их нужно будет вставить после команд:на место «********», которые ответственны за обработку сигналов от нужных кнопок. Будьте внимательны, операторы в программе встречаются аж целых 4 раза.
Скачать скетч можно здесь.Первые испытания показали, что сдвоенные передние колеса сильно снижают манёвренность.
Поэтому я заменил их на одинарное.
И после этого способность робота делать повороты сразу возросла.
Кстати поворачивать он может за счет разного направления и скорости вращения задних колес с моторами. Например, если заставить левое колесо крутиться вперед, а правое назад, то робот будет совершать разворот вправо, стоя при этом на месте. Тот же принцип, но с обратным направлением вращения колес, развернет робота влево. Это достигается подачей разных сигналов на цифровые выходы подключенные к контроллеру моторов. Подробнее о комбинациях сигналов определяющих разные направления движения робота можно ознакомиться в функции .Вкратце программа работает следующим образом:
Сразу после включения, робот попадает в режим ожидания, после чего игрок должен выбрать режим дальнейшей работы. Всего же предусмотрено 6 режимов. 4 из них предназначены для различных способов управления и 2 для программирования:
1.Ручное управление. Полный контроль передвижений робота пультом. Куда жмем, туда и едет.
2.Простой автопилот. В этом режиме робот сам определяет направление своего движения, избегая при этом столкновений с близкими препятствиями с помощью метода «отъезд назад, разворот» и т.д..
3.Программируемый пультом автопилот. Войдя в этот режим робот будет передвигаться реагируя на разные расстояния до препятствий такими действиями, которые пропишет в его память игрок с помощью ИК пульта.
4.В этом режиме робот просто выполнит те действия, которые запрограммирует в него игрок, не обращая никакого внимания на препятствия.
И еще 2 режима для программирования действий в режимах 3 и 4.
Чтобы выйти из «сна» и начать управлять роботом, на моем пульте надо нажать одну из цветных кнопок:
Например, нажатие на красную кнопку позволяет манипулировать роботом, просто, как радиоуправляемой игрушкой.Из доступных действий в него заложены:
1.Движение вперед.
2.Назад.
3.Вперед и направо, налево.
4.Развороты на месте.
5.Движение назад с поворотом направо или налево.
6.Остановка.Выполнение роботом команд задаваемых с ИК пульта:
Управление роботом с пульта:
Зеленая кнопка включает простой автопилот, после чего робот действует полностью самостоятельно, постоянно двигаясь вперед и всячески избегая любых препятствий. Делая небольшой отъезд назад и затем поворачиваясь на месте в поисках свободного пространства. Программу этого автопилота нельзя изменить в процессе игры.
Желтая кнопка — включает автопилот в котором изначально отсутствуют заданные действия, кроме движения веред. Их нужно прописывать вручную с помощью пульта. Делается это в специальном режиме, войдя в который нужно установить робота на определенном расстоянии до препятствия и последовательно нажимая на нужные кнопки, прописать в память те действия, которые робот должен выполнить наткнувшись на стены впереди. Причем, если прописать несколько вариантов действий (до 20 вариантов от 1 до 20 действий в каждом), то выбран будет тот, в котором записана наиболее подходящая дистанция до преграды.
Программирование с пульта:
Робот катается сам, реагируя на препятствия серией из 20 команд, введенных с ИК пульта:
Синяя кнопка запускает серию действий (до 100 шагов) записанных в память, при этом препятствия игнорируются. Первоначально это будут 100 случайных команд продолжительностью выполнения по 500 мсек каждая.
Но есть возможность изменить эту последовательность, запрограммировав пультом любые другие команды в количестве от 1 до 100, и робот их так же выполнит, не обращая внимания на препятствия.
Последние два режима позволяют ребенку не только развлекаться с помощью робота, как с забавной игрушкой, но и в игровой форме приобщаться к понятиям алгоритмизации и принципов робототехники.
Более подробно о том, как управлять и программировать робота описано в комментариях к скетчу.
Также, созданные вручную серии команд можно сохранять в энергонезависимой памяти робота, которая продолжает хранить данные даже после выключения.
Считывая данные с датчика света, робот автоматически включает фары, если попадает в затененную область, благодаря чему, его всегда будет видно в темноте или «под диваном», при этом издавая серию рандомных звуков.
Радиус действия пульта ограничен несколькими метрами, но для квартиры этого достаточно.
Если говорить о затратах, то на покупку всех необходимых модулей у меня ушло меньше 1Круб. Аккумулятор, пульт, светодиоды и ИК приемник были добыты из разного хлама.
В заключение хочу прояснить, что не являюсь специалистом в области электроники, программирования и роботостроения, так что, возможны ошибки, недочеты и недоработки, видимые более опытному глазу.
Тем не менее, считаю, что подобный эксперимент по созданию такого небольшого робота, может послужить стимулом для тех, кто, как и я, не обладая глубокими познаниями, все же желает приобщиться к миру робототехники и создать что-то своими руками, порадовав себя и своих детишек забавным изобретением.
🔥 Видео
ИК-управление на ардуино с любого пультаСкачать
Как ИК пультом управлять мощной нагрузкой на расстоянииСкачать
Пульт для всего из ничего)Скачать
Урок 13. Дистанционное управление с ИК-пульта, машинкой Roborace на базе ArduinoСкачать
Теперь можно управлять ЛЮБЫМ прибором с помощью одного пульта ДУ! Одна из самых полезных самоделок!Скачать
КАК СДЕЛАТЬ МАШИНКУ С УПРАВЛЕНИЕМ от ИК пульта ЛЮБОГО ТЕЛЕВИЗОРА / How to make a car with IR controlСкачать
Управление Ардуино с помощью ИК приемника и пультаСкачать
Подменяем пульт дистанционного управления при помощи ArduinoСкачать
Уроки Arduino - управление бесколлекторным моторомСкачать
ИК пульт управления ардуино, подключение пульта.Скачать