На цій установки можна закріпити різні предмети, від фотокамери, до ліхтарика або лазерної указки і потім управляти їх переміщенням по горизонталі і вертикалі за допомогою джойстика або клавіатури комп’ютера.

Всі файли пристрою знаходяться у відкритому доступі, і при бажанні можна змінити код або дизайн корпусу.інструменти та матеріали: -3d-принтер;-кроковий двигун nema 17 (mt-1703hs168a або аналогічний ) – 2 шт;-дроти підключення;-шків gt2 20 зубів – 2 шт;-кульковий підшипник 6002rs або 6002zz – 2 шт;-кабельний стяжки (довжина 100 мм, ширина 5 мм) 10 шт;-ремінь 200 мм (200 gt2) – 3 шт;-силіконові накладки;-плата управління devia ( або еквівалентна arduino m0 , esp8266);-драйвери двигуна a4988 + радіатори – 2; – кабель usb 1 м ( роз’єм micro usb ); – джерело живлення 12 в / 2 а;болти і гайки: болт m3 6 мм – 6 шт. Болт m3 10 мм – 14 шт. Болт м3 15 мм – 10 шт. Болт m3 45 мм – 4 шт. Гайки м3 – 6 шт.

Крок перший: технічні характеристикипри проектуванні пристрою майстер враховував наступні умови: простота друку і настройкисумісність з arduino / керований код pythonплавні, але швидкі двіженіяточностьпростота і портативностьадаптіруемость і легкість модифікаціїк пристрою можна прикріпити: веб-камерифотокамерулазерфонарік і т. Д….технічні характеристики пристрою наступні: висота: 200 мм.кількість осей: 2 траєкторія: від -60 ° до + 240 ° по горизонталі, від 0 ° до ± 180 ° по вертикалімаксимальная швидкість обертання: 360 ° / сек.загальна вага: 920 грам: 0,1 градусмаксимальне корисне навантаження без необхідності балансування ваги: 120 граммпривідні двигуни: два крокових двигуна nema17 1,8 °може управляти світлом / лазером від 12 в до 0,5 а через програмне забезпечення при підключенні до порту aux на платі управління devia.прошивка: код arduino. Керуюче програмне забезпечення: python.сумісність з контролерами xbox / рѕ4портативний (можна використовувати будь-яку акумуляторну батарею від 9 до 15 в постійного струму або джерело живлення)

Крок другий: 3d-друкбільшість деталей цього робота були надруковані на 3d-принтері. Завантажити файли для друку можна тут.

Крок третій: сборкапісля друку деталей можна приступити до складання.почнемо з простого: прикріпимо один з 20 зубчастих шківів до одного з двигунів nema17.

Далі прикручуємо нижній важіль до опори нижнього важеля. Поки не затягуємо повністю болти, так як ще потрібно прикріпити двигун nema17.

Встановлюємо шарикопідшипник 6002 (червона стрілка) в шків 80. Виступаюче кільце шківа повинно знаходитися збоку, торкаючись опори нижнього важеля. Потім із зусиллям вдавлюємо шарикопідшипник 6002 і шків в «ручку» опори шківа нижнього важеля. Щоб підшипник щільно сідав в посадочне місце, можна підмотати скотч.

Встановіть і прикрутіть кришку.

Тепер встановлюємо інший шарикопідшипник 6002 в гніздо верхньої опори важеля. Потім переверніть деталь і закріпіть двигун зі шківом використовуючи болти 2×6 мм для верхніх отворів і 2 болта 10 мм, щоб прикріпити праву частину деталі upper arm motor holder.

Перевіряємо орієнтацію двигуна. Роз’єм кабелю двигуна повинен бути орієнтований таким чином, як на фото. Знімаємо два болта в червоних кружках. Вони будуть замінені на довші.

Беремо частину шківа і один з ременів gt2. Встановлюємо шків в отвір для шарикопідшипника 6002 і надягаємо ремінь. Тепер можна повністю затягнути болти, які будуть утримувати двигун на місці.

Далі потрібно прикрутити один з декількох власників.

Доступні кілька “власників” для різних предметів(лазерні указки, світлодіодні ліхтарі, фотоапарати, ліхтарики…).

Користувачі можуть самостійно розробити тримач, головне, щоб вони не виходили за параметри зазначені на фото.

Далі з’єднуємо дві деталі разом. На шківі є чотири кріпильних отвори для цього.

Прикручуємо верхній важіль двигуна і закручуємо два гвинти.

Встановлюємо двигун.

Встановлюємо другий двигун і надягаємо ремінь.

Прикручуємо ніжки.

За допомогою болтів 15 мм і 6 мм, прикручуємо плату управління devia до ніжки штатива.

Прикручуємо деталь.

Крок четвертий: програмування плати deviaустановіть arduino ide на комп’ютер. Цей код був протестований і розроблений для ide версії 1.8.11 і пізніших версій.завантажте звідси всі файли arduino. Скопіюйте файли в папку laser_pointer_v x на жорсткому диску.скомпілюйте і відправте код на плату управління devia: відкрийте arduino ide.відкрийте основний код в / laser_pointer_v x / laser_pointer_v x .іпопідключіть плату devia за допомогою кабелю usb до пк (якщо це перше підключення arduino до комп’ютера можливо, буде потрібно встановити драйвер).вибираємо плату arduino / genuino zero (власний порт usb). У меню інструменти ->доскавиберіть послідовний порт в інструментах ->послідовний порт.завантажте код (кнопка завантажити : стрілка вказує вправо).

Підключається все згідно схеми.

Ще раз перевірте полярність кабелів двигуна, підключених до плати управління. Якщо підключити кабель неправильно, мотор буде обертатися в зворотному напрямку.ніколи не підключайте кабель або модуль a4988 при включеному харчуванні.встановлюючи радіатори зверху модулів a4988, стежте, щоб вони не торкалися металевих колекторів, які виступають з модулів.кабелі повинні дозволяти роботу вільно рухатися. Якщо вони будуть занадто натягнуті, вони обмежать рух робота. Переконавшись, що кабелі не заважають рухам, закріпіть їх стяжками.крок шостий: управління роботом, код python і arduinoзавантажуємо код python звідси.при цьому вже повинен бути встановлений python 3.8 на комп’ютері. І бібліотеки: pygameserialtkinterвремяздесь можна дізнатися, як встановити бібліотеки.по суті, код python надсилає лазерному покажчику два кути: азимут і висоту.

Можна відправити ці два параметри через послідовний порт (usb-кабель, підключений до плати управління devia) або через wi-fi.необхідно знати, який com-порт призначений комп’ютером платі управління devia. Він буде відрізнятися на різних комп’ютерах. Його можна дізнатися, відкривши arduino ide і перевіривши меню tools ->port.

В даному випадку комп’ютер призначив com3 пристрою devia.це необхідно вказати в коді python в цьому рядку:

com_port = com3 # you could check the serial port number on arduino

Просто міняємо порт com3 на будь-який інший, який йому був призначений. Потім запускаємо (натиснувши f5) код після збереження змін.в якості альтернативи, якщо потрібно управляти роботом через wi-fi, просто підключаємо свій комп’ютер до мережі. Панель управління devia створить з’єднання через кілька секунд після включення. Його ім’я має бути щось на зразок jjrobots_xx . Використовуємо цей пароль для доступу до мережі: 87654321по замовчуванням з’єднання буде встановлено по wi-fi. Якщо потрібно управляти роботом з лазерною указкою за допомогою usb-кабелю, міняємо цей рядок коду і встановлюємо її як «істинну» :

serial_port = false—>serial_port =true

Азимут може змінюватися від 0 ° (початкове положення лазерного покажчика) до 360 °. Позитивні значення приведуть робота в рух, як показано на зображенні. Можна встановити 120° як за допомогою команди

sendangles2(120,0,1)

, так і за допомогою

sendangles2(-240,0,1)

.висота може варіюватися від 0° (початкове положення лазерної указки) до 360°. Позитивні значення приведуть робота в рух, як показано на зображенні стрілками переміщення. Можна встановити 120° за допомогою команди

sendangles2 (0,120,1)

Значення висоти обмежені розмірами гаджета, який кріпиться до власника. Є ще одна команда для настройки. Вона встановить максимальну швидкість і прискорення робота:

sendcommand(b’jjas’,50,0,70,0)

Де b’jjas-ідентифікатор заголовка команди повідомлення, що відправляється. І наступні значення:

sendcommand (b’jjas ‘, 50 , 0, 70 , 0)

, де 50 вказує, що ми переміщуємо лазерний покажчик motor1 на 50% від його максимальної швидкості і 70% від максимального прискорення.

sendcommand (b’jjas’,motor1 % speed, motor2 % speed, motor1%accel, motor2%accel)

Параметри max speed і max accel визначені в коді arduino.якщо відкрити файл configuration.h, arduino ide, там будуть всі параметри, які визначають поведінку пристрою: обмеження руху для обох двигунів, а також максимальні швидкості і прискорення. Так, наприклад: якщо в коді arduino максимальна швидкість і прискорення визначені наступним чином: #define max_speed_m1 16000 , #define max_accel_m1 30 . І віддається ця команду: sendcommand (b’jjas ‘, 50,0,70,0), ми даємо вказівку лазерної указки переміщати motor1 зі швидкістю 50% від 16000 кроків в секунду (8000) і використовувати до 70% його максимального прискорення (21).нижче параметри”прошивки”, які arduino буде використовувати для переміщення лазерної указки.

Показати / приховати текст

Якщо запустити файл laserpointer_control.py (керуючий додаток), ми побачимо спливаюче меню, подібне до цього:

У віконці є три рядки. Можна відправити азимут і висоту, просто скопіювавши синтаксис, створений програмним забезпеченнямstellariumможна скопіювати і вставити ці координати в поле “az / alt”, і після натискання ” go!”важіль переміститься і вкаже на цю точку.

121 ° 13’32,2″ + 21 ° 53’33,7

Можна просто заповнити файли кут 1 (азимут) і кут 2 (висота) кутами, на які ми хочемо перемістити важіль.крім того, можна переміщати лазерний покажчик за допомогою клавіатури комп’ютера та / або контролера xbox / ps4, підключеного до пк.для клавіатури: використовуємо клавіші зі стрілками.клавіші зі стрілками: нормальний рухcontrol + клавіші зі стрілками: більш точний рухshift + клавіші зі стрілками : більш швидкий рухщоб керувати лазерною указкою за допомогою контролера, просто підключіть його до комп’ютера. Потім запустіть програму управління і перемістіть важіль, використовуючи правий джойстик.

Елемент керування python: приклад кодазавантажте приклад коду звідси (laserpointer_control example 1.zip) в цьому коді є додаткові лінії, які будуть переміщати лазерний покажчик в певні положення. У цьому випадку лазер 10 разів намалює свого роду “хрест”: визначається лінією (для i в діапазоні (0,10):) рух робота визначається командою sendangles2 (азимут, висота, час). Даємо роботу 0,2 секунди на завершення руху (з коду t = 0,2 ). Якщо “мета” не буде досягнута протягом цих 0,2 секунди, робот перейде до наступної точки і спробує переміститися до неї протягом часу, призначеного для цього нового руху (знову ж таки, 0,2 секунди). Координати, на які буде вказувати робот: 8,0 ->0,0 ->-8,0 ->0,0 ->0,8 …

<код>######################################### ### custom movement########################################for i in range (0,10): t=0.2 #time we are giving the robot to get there. If the movement takes too long to reproduce, #the robot will move to the next one even when the previous has not been completed. Sendangles2(8,0,t) sendangles2(0,0,t) sendangles2(-8,0,t) sendangles2(0,0,t) sendangles2(0,8,t) sendangles2(0,0,t) sendangles2(0,-8,t) sendangles2(0,0,t) джерело (source)

Стаєте автором сайту, публікуйте власні статті, описи саморобок з оплатою за текст.детальніше тут.