Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Машинка з дистанційним керуванням з Raspberry Pi

2021-04-12

Всі статті →

Машинка з дистанційним керуванням з Raspberry Pi

В золотий вік штучного інтелекту і технологій, нова область набирає обертів: групова робототехніка. Групові роботи мають безліч застосувань, таких як виконання завдань, пов'язаних з автоматикою, автономною навігацією або складанням карт на місцевостях, до яких не мають доступу люди. Основою подібних роботів є радіокерована машинка. Якщо наявна велика кількість таких машинок, можуть бути імплементовані алгоритми групових роботів.

"Мозком" цих машин є Raspberry Pi, легкодоступна в освоєнні архітектура для експериментів з практичною робототехнікою та програмуванням. Ця стаття покроково розглядає побудову подібної машинки. Вона буде оснащена модулем з камерою для дистанційного керування, GPS і компасом, таким чином машинка буде знати своє місце розташування і курс (це, знову-таки, дуже корисно в алгоритмах групової робототехніки - особливо для навігації). Отже, при великій кількості, машинки потенційно зможуть комунікувати одна з одною для виконання групових алгоритмів.

Цей проект дуже весело виконувати! Тут є багато маленьких деталей (які можуть привести до багатьох відхилень), хіба це не весело? Мені по-справжньому подобається цей проект, тому що він охоплює широке розмаїття концептів як в програмному забезпеченні (програмування на Python), так і в комп'ютерному обладнанні через Raspberry Pi, та, безумовно, пов'язує їх.

Цей проект також вельми універсальний. Ви можете використовувати ці машинки для інших задач, окрім групової робототехніки (хоча вони налаштовані, щоб працювати добре і в таких проектах теж). Він точно має немалий поріг входження, що багато чому вас навчить! На додаток, ці навички також будуть корисними для схожих проектів.

Матеріали:

Для машинки:

  • Один міні-комп'ютер  Raspberry Pi
    • Я рекомендую користуватися Raspberry Pi з 8Гб, тому що це дає вам можливість для використовування бібліотеки OpenCV для розпізнавання об'єктів, що гарантує вашій машинці більше автономних можливостей у майбутньому (а також це зробить напрямок, у якому ви будете розвивати проект у подальшому, більш універсальним)
    • Ви можете також користуватися Raspberry Pi Zero W
    • Переконайтеся, що плата має вбудований бездротовий адаптер, що важливо для дистанційного керування
  • 40-контактний роз'єм GPIO
  • 1 модуль камери Raspberry Pi
  • 1 набір шасі для машини (включаючи колеса та двигуни)
  • 1 або 2 драйвери двигунів L298N
    • Кожний драйвер контролює 2 двигуни
    • Отже, якщо ви матимете 1 драйвер, ви будете керувати 2 двигунами (що дозволить обертатися і двом іншим колесам). Але, коли машина повертатиме, вона буде обертатися навколо внутрішнього заднього колеса, що може зробити майбутні розрахунки більш складними
    • Якщо ви матимете 2 драйвери, ви будете мати можливість керувати всіма 4 двигунами, отже машинка буде обертатися навколо свого центра, так що це зробить все простіше. 
  • 1 модуль GPS (з вбудованим компасом)

Останнє:


Примітка: я рекомендую купити стартовий набір Raspberry Pi, тому що він зазвичай включає в себе радіатор, GPIO конектор, плату Raspberry Pi, карту microSD, адаптери, багато з'єднувальних проводів та безліч інших маленьких частин.

Крок 1: Установити OS Images

Матеріали: комп'ютер (Mac, Ubuntu 18.04 або Windows), карта microSD, SD адаптер

В основному, Raspberry Pi використовує Raspbian OS, отже нам треба встановити OS Images на карту microSD. Щоб це зробити, вам знадобиться SD адаптер, щоб можна було вставити microSD в звичайний SD порт комп'ютера/ноутбука (через який буде встановлено образ ОС). Потім, microSD вставляється у Pi. 

Дотримуйтесь цієї інструкції:

https://www.raspberrypi.org/documentation/install...

Крок 2: Налаштування Pi

Ми повинні мати можливість працювати на Raspberry Pi. Raspberry Pi - це одноплатний комп'ютер, отже він може підключатися безпосередньо до монітору. Переконайтеся, що ви приєднали HDMI (використовуючи адаптер), USB (вам вірогідніше знадобиться USB хаб) та роз'єм живлення. Вам також знадобляться клавіатура і миша (які ви приєднаєте за допомогою USB).

Зверніть увагу на зображення, щоб ознайомитися з робочим столом Raspberry Pi. Ви побачите іконку папки Manila, що є еквівалентом для Finder (Mac) або Windows Explorer. По суті, це візуальне представлення ваших файлів, завантажень, каталогів тощо. Для наших цілей важливо те, як ви будете керувати вашим кодом. Також ви побачите іконку чорного екрана, що є вікном терміналу. Саме тут ви будете писати ваш код.

Відкрийте вікно терміналу (іконка повинна бути у верхньому лівому куті екрана).

  • Виконайте команду "sudo raspi-config", щоб отримати меню, як показано вище
  • Увімкніть P6 serial port
  • Увімкніть P5 I2C
  • Якщо вам потрібно більше вказівок:


https://www.raspberrypi.org/documentation/configu...

З цього моменту, у вас є два варіанти:

1. Продовжити користуватися монітором

  • Кожного разу, коли ви забажаєте працювати на Raspberry Pi, просто зробіть все зазначене вище
  • Приєднайте периферійні пристрої та працюйте безпосередньо на Pi


2. Користуватися Pi без графічного інтерфейсу (використовуючи SSH)

  • https://www.raspberrypi.org/documentation/remote-a...
  • По суті, ви можете підключитися до Raspberry Pi дистанційно з іншого компьютера, аби уникнути підключення периферійний пристроїв
  • Щоб зробити це, ви ПОВИННІ увімкнути SSH, слідуючи інструкції за посиланням вище


Створіть репозиторій для проекту. Потім, у вікні терміналу, створіть новий каталог для проекту на Pi. Ви можете редагувати свої файли у вікні терміналу (vi), якщо так більш зручно, або використовуючи графічний інтерфейс.


Крок 3: Попередня підготовка

Якщо ви хочете дізнатися більше про те, як все це працює (рекомендую), треба буде трохи почитати (в Інтернеті є багато джерел і відео). Але, ось короткий огляд того, що потрібно знати, якщо ви тільки починаєте.

  • Raspberry Pi - одноплатний комп'ютер. Потрібно знати, де знаходяться ці речі (зображення вище):
    • Слот для MicroSD
    • Mini HDMI порт
    • Micro USB порт
    • Порт живлення та світлодіод, що вказує на те, що Raspberry Pi забезпечується енергією
    • Роз'єм камери
    • Процесор  (та радіатор, якщо є)
    • 40-пін кабель та GPIO піни
      • Знати SDA/SCL піни, MOSI/MISO піни та TX/RX піни


  • Комунікаційні протоколи
    • UART: універсальний асинхронний прийняття та передача
    • I2C: схема внутрішнього зв'язку
    • SPI: послідовний периферійний інтерфейс


Крок 4: Збірка шасі


У вас повинно бути шасі. Це базова рама автомобіля. Зберіть шасі так, як зазначено в інструкції.

Якщо ви купили той, на який я залишав посилання:

Спочатку відламайте вісім прямокутників уздовж пунктирних відступів (будьте обережні!).

Потім, використовуючи гайки і болти, що входили в комплект, а також викрутку, зберіть деталі, двигуни і колеса таким чином, щоб вони відповідали зображенню вище (це стосується нижньої частини автомобіля, верхня повинна бути порожньою):

Примітка: переконайтеся, що орієнтація двигунів правильна!

Тепер, візьміть та спаяйте з'єднувальні проводки 

Як тільки ви закінчите збірку, основа машинки буде готова.

Тепер зробіть маленьку перевірку, щоб переконатися, що всі двигуни працюють правильно, безпосередньо увімкнувши їх. Перевірте, щоб білі вісі поверталися. При перемиканні чорного і червоного дротів, вісь повинна повертатися в протилежному напрямку. Перевірте всі чотири колеса.

Крок 5: Контролери двигунів


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

Зараз ми зосередимось на використанні одного контролеру. Якщо ви купили два, повторіть ці кроки для другого драйвера. Примітка: ви можете запускати їх паралельно, якщо один драйвер буде живити інший.

Ось посилання, щоб зрозуміти, як працюють ці модулі:

https://components101.com/modules/l293n-motor-dri... Я б порекомендував ознайомитися з технічними характеристиками.

Скористуйтеся передбаченими з'єднувальними кабелями, щоб контролери двигунів працювали. Знов-таки, користування спочатку макетною платою може бути більш ефективним. Тут у вас є вибір: я рекомендую користуватися 12В джерелом живлення для драйверів та 5В джерелом для Raspberry Pi. Але ви можете використовувати Pi для живлення драйверів моторів теж. Існує перемичка, що перемикає між 12В і 5В - ви повинні прочитати характеристики модуля перед тим, як робити підключення. 

Крок 6: Модуль камери

Якщо ви використовуєте плату Raspberry Pi з обмеженою оперативною пам'яттю, вона підтримуватиме лише стандартний модуль камери Raspberry Pi. Якщо ви придбали Raspberry Pi 4 з більшою RAM (десь 8 ГБ), ви можете спробувати імплементувати OpenCV у камеру. В інтернеті є інструкції щодо цього.

Наразі ви можете працювати з модулем камери, цього буде достатньо.

Посилання:


Щодо коду, ви можете виконати наступну команду:
git clone https://github.com/miguelgrinberg/flask-video-str...

Крок 7: GPS та Компас


Скористуйтеся наступними ресурсами щоб налагодити GPS та компас. Проводка також на діаграмі вище.

Модуль GPS, на який я залишав посилання, має також вбудований компас.

Приклад коду для зчитування даних компаса:

https://github.com/ozzmaker/BerryIMU.git

Інший приклад формату NMEA (синтаксичний аналіз для даних координат):

http://navspark.mybigcommerc...

Крок 8: Відображення даних у веб-інтерфейсі за допомогою Flask

Це дозволить вам транслювати дані GPS та компасу, як і відео, на веб-сервер.

Ми будемо користуватися Flask, веб-платформу, що допоможе вам побудувати веб-додаток


Крок 9: Демонстрація та подальші кроки


Вітаю! Ви побудували машинку, яка може стати основою для безлічі проектів.

Вище є відео повністю робочого прототипу. Там я запрограмував машинку їздити квадратом (я починаю досліджувати груповий аспект проекту дещо більше). Ви можете також бачити, як машинка починає повертати на 90 градусів. Мені прийшлося відредагувати деякі частини, тому що виконання зайняло час (~5 хвилин). Я припускаю, що це через те, що моторчики не дуже точні, і доки напрямок руху машинки не буде точно в діапазоні градусів, вона продовжить повертати, перш ніж рухатись вперед. Так чи інакше, на машинці дуже весело кататися, особливо з відео!

Як я зазначив у вступі, багато можливостей цієї машинки корисні для групової робототехніки (особливо, коли ви побудуєте декілька машинок). У цьому контексті я б порекомендував прочитати цю статтю:
https://www.hindawi.com/journals/isrn/2013/608164/ (зверніть увагу на частини, що пояснюють концепт та мету)

Ці інструкції були на високому рівні через те, що більша частина веселощів у побудові, пробах і помилках, та кінцевому успіху! Сподіваюся, вам сподобався процес збірки. Щоб керувати автомобілем, ви можете використати клавіши зі стрілками. Відкрийте нову вкладку та перейдіть на IP адресу, щоб побачити дані GPS та компаса, а також кадри з камери.

Для будь-якої інформації або пропозицій, не соромтеся звертатися до мене
riajain3878@gmail.com

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Загальна оцінка:

Оцінка "Машинка з дистанційним керуванням з Raspberry Pi"
5 з 5
зроблена на основі 1 оцінки 1 клієнтських відгуку.

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Андрій
15.04.2021 12:52:45
Цікаво, але детальний код прошивки не завадив би
оплата картами Visa і MasterCard