Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

От головы человека к голове робота

Компоненты и расходные материалы

Arduino UNO
× 1
серводвигатель
× 3
Android-устройство
× 1
Плата регулируемого источника питания
× 1

Необходимые инструменты и машины

Паяльник (общий)

Приложения и онлайн-сервисы

SensoDuino

Об этом проекте

Планируйте сделать что-нибудь новое, но не такое дорогостоящее. Мне очень нравится робототехника. Но из-за того, что требуются сервоприводы и другие детали, я не люблю это делать. Сейчас у меня 4 серводвигателя всего 13 $. У меня уже есть связка одной платы и платы Arduino.

Итак, запланируйте создание головы робота, которая двигалась бы так же, как наша голова по всем осям, но с дешевизной. Изучите различные датчики и методы, но, наконец, найдите способ со всеми предметами в руке. Я много чего изучаю во время этого проекта. Давай, я объясню, что я изучаю. Я выделяю то, что я узнаю, жирным шрифтом .

Используйте датчик наклона Smart Mobile для управления головой

Шаг 1. Необходимые материалы

Используемые мной материалы

1) Arduino uno.

2) Ссылка на одну доску.

3) 3 серводвигателя.

4) Бесплатное приложение SensoDuino для Android. Загрузите отсюда.

5) Плата регулируемого источника питания (12 В, 5 В, 3,3 В).

6) Обычная печатная плата.

7) Штекерные разъемы для печатной платы

8) Отработанный алюминиевый отрезок подачи.

9) Горячий клеевой пистолет.

10) Адаптер 12 В и 5 В.

11) Еще несколько предметов для украшения.

Зачем объединять одну плату и Arduino uno

Если у вас есть одна плата Linkit и серводвигатель 3 В, тогда нет необходимости в Arduino UNO, потому что мой сервопривод 5 В не работает нормально Свяжите одну доску.

Если у вас есть Arduino uno и модуль Blue Tooth, то в этом нет необходимости Свяжите одну доску.

У меня нет щита с синими зубами, поэтому я использую плату Linkit one и Arduino uno.

Шаг 2:Собственный серво щит

1) Сделайте щит серводвигателя для Arduino (будьте осторожны, если вы даже используете сервоприводы 3 В, у Linkit один только 2 контакта PWM)

2) Я делаю щит как печатная плата для серводвигателя.

3) Используя эту плату, мы можем управлять 6 сервомоторами с пинда Arduino (3,5,6,9,10,11).

4) Здесь используются 3-проводные сервоприводы. где питание осуществляется от платы питания внешнего регулятора 5 В.

5) При управлении сервоприводом используйте адаптер для платы Arduino. Поскольку источник питания USB ПК вызывает вибрацию. Это вызывает перегрев серводвигателя и повреждение Серводвигатель . (одно из моих повреждений сервопривода)

Шаг 3. Установите Linkit одно соединение

1) Linkit хочет поговорить с arduino для управления сервоприводами.

2) Для этого подключите Tx одной платы Linkit к Rx платы Arduino и оба Gnd.

3) когда бы ни были получены данные, они отправляются в Arduino.

Примечание:-

Если у вас есть Bluetooth Shield для Arduino, тогда вы управляете всей установкой с одной платы.

Шаг 4. Положение сервопривода

1) Установите все серводвигатели на 90 градусов. Для этого загрузите указанную выше программу на Arduino ..

2) Подключите питание сервопривода и питание Arduino к плате блока питания регулятора на выводах 5 В и 12 В.

3) Подключите гнездовой соединитель сервопривода к штекерному соединителю, если на печатной плате мы делаем цифровые контакты 3,5,6 Arduino.

3) Подключите адаптер 12 В к плате питания регулятора.

4) Включите адаптер.

5) Теперь все моторы поворачиваются на 90 градусов согласно программе.

Теперь отсоедините двигатели, чтобы соединить их вместе и не беспокоить ротор.

Позиционный код IDE Arduino представлен как Servoposition.ino


Шаг 5. Составьте план

1) Голова вращается по 3 осям x, y, z.

2) Вращения

а) Рыскание - смотрите налево и направо.

б) Шаг - смотреть вверх и вниз

в) Ролл-встряхивание сбоку.

3) Сначала используйте двустороннюю ленту, чтобы спланировать сервоприводы.

4) Отрежьте алюминиевую перегородку до L-образной формы, чтобы прикрепить верхний сервопривод ко второму.

5) Подключите рог серводвигателя в соответствии с планом или как показано на рисунке

6) Центр всех сервоприводов должен быть прямым, когда они повернуты на 90 градусов.

7) приклейте все сервоприводы и алюминиевый L-образный элемент с помощью двусторонней ленты и убедитесь, что движение не мешает другим сервоприводам.

Шаг 6. Строительство

1) Теперь пришло время исправить это навсегда.

2) Удалите двухстороннюю наклейку одну за другой и навсегда закрепите ее с помощью пистолета для горячего клея.

3) Будьте осторожны, не повредите сервоприводы.

4) Снова подключите серворазъем к плате Arduino и включите питание

5) установите все стойки прямо, как на последнем изображении.

Шаг 7. Сведения о приложении для Android

1) Откройте SensoDuino на своем телефоне Android. У него есть опции для просмотра всех показаний мобильного датчика и возможность отправлять их через синий зуб.

2) В списке перечислены все новейшие датчики, и мы можем только выбрать датчики, доступные в нашем телефоне.

3) Перейдите в меню и выберите «Подключить Bluetooth».

4) В списке показаны доступные устройства с голубыми зубами.

5) Выберите Linkit one bluetooth.

6) В нашем проекте мы используем датчик ориентации. Установите первый флажок, чтобы включить, а второй - для отправки данных через синий зуб.

7) Мы также устанавливаем производительность каждого датчика, выбирая опцию производительности в меню. Измените временной интервал для каждого чтения.

Шаг 8. Кодирование

1) Здесь две кодировки - одна для Linkit.

Используя синий зуб, он получает данные с мобильного телефона и отправляет их в Arduino через последовательный порт

2) Программа Arduino

Когда данные поступают в последовательный порт, символы объединяются в строку. И используя indexof и substring, делите один полный результат. В этом наборе снова используйте indexof и substring для получения каждой позиции. Отсюда использование карты в Arduino для управления сервоприводом от 0 до 180 градусов. Если вы используете Bluetooth Shield, измените программу в соответствии с требованиями.

Как работает программа

1) Используя датчик ориентации, робот поворачивает голову, как мы.

a) Рыскание - это вращение от 0 до 360 градусов в соответствии с магнитным положением. Для этого мы используем от 90 до 270 градусов, где 180 - это 90 градусов для сервопривода. Поэтому мы хотим, чтобы при ношении кепки смотрели на 180 градусов как на веревку.

б) Шаг лицевой стороной вверх и вниз. Его показания датчика составляют от -180 до + 180. Мы используем от -90 до +90.

c) Бросок при встряхивании составляет от 0 до 90 до 0 до -90 до 0. Мы используем от -90 до 90.


Ссылка на один код приведена в Linkitonehead.ino

Код Arduino приведен в Arduinohead.ino


Шаг 9. Заказ досок

1) Подключите обе экранированные платы к верхней части обоих микроконтроллеров.

2) Наклейте все это двусторонней наклейкой друг на друга.

3) Будьте осторожны, не стреляйте ни в какие терминалы.

Шаг 10. Следуйте рукой

Теперь включите все питание и используйте мобильный телефон в руке. Сядьте лицом на 180 градусов по курсу и используйте мобиль для управления всеми тремя серводвигателями.

Шаг 11. Исправьте лицо

1) Сейчас Рождество, поэтому в магазине было много кукол санта-клауса.

2) Купите одну куклу и закрепите голову с помощью двойного бокового крана на верхнем рычаге сервопривода.

Шаг 12. Подготовьте контрольную шляпу

1) Возьмите нормальную шапку.

2) Наклейте двустороннюю наклейку на переднюю часть крышки, как показано на рисунке.

3) Наклейте мобильный телефон на двусторонний скотч.

Шаг 13:Тестирование видео

Проверка низкой производительности означает частоту обновления датчика каждые 250 миллисекунд .

Шаг 14:финальное видео

Наблюдайте за действием при скорости считывания датчика одно показание за 100 миллисекунд

Код

  • Servoposition.ino
  • Linkitonehead.ino
  • Arduinohead.ino
Servoposition.ino Arduino
 #include  Сервопривод влево-вправо; Сервопривод обновляется; Встряхивание сервопривода; void setup () {Serial.begin (9600); leftright.attach (3); updown.attach (5); встряхнуть. прикрепить (6); leftright.write (90); updown.write (90); встряхнуть.write (90); } void loop () {} 
Linkitonehead.ino Arduino
 #include  #include  int readval; String inputString =""; String outputString =""; int firstpoint =0; int secondpoint =0; void setup () {if (! LBTServer.begin ((uint8_t *) "Sivam_LIO")) {return; } // Serial.begin (9600); Serial1.begin (9600); } void loop () {uint8_t buf [64]; int bytesRead; если (LBTServer.connected ()) {в то время как (истина) {bytesRead =LBTServer.readBytes (buf, 32); если (! bytesRead) перерыв; inputString =""; для (int j =0; j <32; j ++) {char inChar =char (buf [j]); // добавляем его к inputString:inputString + =inChar; } // Serial.println (inputString); Serial1.println (inputString); // firstpoint =inputString.indexOf ('>'); // Serial.println (inputString); // Serial.println (firstpoint); // if (firstpoint> 0) // {/ / secondpoint =inputString.indexOf ('>', firstpoint + 1); // if (secondpoint> 0) // {// outputString =inputString.substring (firstpoint, secondpoint); // inputString =inputString.substring (вторая точка); // Serial.println (outputString); //} //}} delay (100); } еще {LBTServer.accept (5); }} 
Arduinohead.ino Arduino
 #include  Servo leftright; Servo updown; Servo shake; String inputString =""; логическое stringComplete =false; String teststr2; String sensorid; String sensorrecid; String sensorval1; String sensorval2; String sensorval3; int S1; int S2; int S3; int startchr =0; int endchr =0; int rot1; int rot2; int rot3; void setup () {Serial.begin (9600); // inputString.reserve (200); leftright.attach (3); updown.attach (5); shake.attach (6);} void loop () {} void serialEvent () {в то время как (Serial.available ()) {char inChar =(char) Serial.read (); если (inChar! ='\ п') {inputString + =inChar; }} startchr =inputString.indexOf ('>'); если (startchr> =0) {endchr =inputString.indexOf ('>', startchr + 1); если (endchr> 0) {teststr2 =inputString.substring (startchr, endchr); inputString =inputString.substring (endchr); startchr =teststr2.indexOf (','); sensorid =teststr2.substring (1, startchr); endchr =teststr2.indexOf (',', startchr + 1); sensorrecid =teststr2.substring (startchr + 1, endchr); startchr =endchr; endchr =teststr2.indexOf (',', startchr + 1); sensorval1 =teststr2.substring (startchr + 1, endchr); startchr =endchr; endchr =teststr2.indexOf (',', startchr + 1); sensorval2 =teststr2.substring (startchr + 1, endchr); startchr =endchr; sensorval3 =teststr2.substring (startchr + 1); S1 =sensorval1.toInt (); S2 =sensorval2.toInt (); S3 =sensorval3.toInt (); rot1 =карта (S1, 90, 270, 180, 0); если (rot1 <0) rot1 =0; иначе, если (rot1> 180) rot1 =180; rot2 =карта (S2, -90, 90, 0, 180); если (rot2 <0) rot2 =0; иначе, если (rot2> 180) rot2 =180; rot3 =карта (S3, 90, -90, 0, 180); если (rot3 <0) rot3 =0; иначе, если (rot3> 180) rot3 =180; если (rot1! =0 &rot1! =180) {leftright.write (rot1); } если (rot1! =0 &rot1! =180) {updown.write (rot2); } если (rot1! =0 &rot1! =180) {shake.write (rot3); } задержка (15); // Serial.print ("Sensor -"); // Serial.println (sensorid); // Serial.print ("Sensor Val1 -"); // Serial.println (rot1); // Serial.print (" Датчик Val2 - "); // Serial.println (rot2); // Serial.print ("Sensor Val3 -"); // Serial.println (rot3); }}} 

Производственный процесс

  1. Робот-бокс для компакт-дисков Raspberry Pi
  2. Робот с подвижной сигнализацией
  3. RaspiRobot Board V2
  4. Создайте робота Minecraft Creeper
  5. Архимед:ИИ-робот-сова
  6. Робот для открытия резюме
  7. Робот ROS
  8. ОБНАРУЖЕНИЕ ЧЕЛОВЕКА РОБОТА SONBI С ИСПОЛЬЗОВАНИЕМ KINECT И МАЛИНЫ PI
  9. Простой робот Pi
  10. Человеческий капитал