• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Примитивный автопилот для машины на raspberry pi, arduino. OpenCV

2 апреля, 2021

В данном примере используется:
Raspberry pi: http://ali.pub/58qrm4
Arduino: http://alli.pub/5ojm17
Servo: http://alli.pub/5ojm4p

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

В данной статье попробую показаться, как можно сделать автопилот для автомобиля или например какого-нибудь робота. Который будет определять разметку дороги. И если разметка начинает поворачивать, то и автопилот будет подруливать в сторону поворота импровизированным рулем. В роли руля будет выступать сервопривод.
Вся эта система будет работать следующим образом:
В роли мозга который будет обрабатывать информацию. Будет выступать raspberry pi. У меня она 3 версии.
Собственно к raspberry pi будет подключена камера. Как-раз raspberry pi и будет обрабатывать информацию которая будет приходить с камеры.
Для обработки информации с камеры будет использоваться библиотека OpenCV и numpy.
OpenCV (Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом.
Сама программа распознавания линий у нас будет работать на python.
Управлять сервоприводом у нас будет arduino. Сервопривод будет подключен к 10 пину arduino.
Подключения arduino к raspberry pi будет выглядеть следующим образом:
Arduino Raspberry pi
0 Pin 7 pin (GPIO4)
1 Pin 8 pin (GPIO14)

Ну а теперь после того как Мы все подключили, давайте установим операционную систему наraspberry pi. Устанавливать будем rasbian. Как это сделать полно информации в интернете. Ну или можно посмотреть в конце статьи в видео.

А вот подготовку системы я распишу.

Сначала нужно обновить все репозитории и пакеты:

sudo apt-get update
sudo apt-get dist-upgrade
Далее установим все необходимые компоненты для установки OpenCV и для работы будущего Python скрипта.
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
Далее переходим в домашнюю папку и клонируем репозитории OpenCV необходимые для работы нашего примера.
cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
Теперь создадим в каталоге opencv папку buid где будем собирать OpenCV из исходников:
cd ~/opencv
mkdir build
cd build
И перейдем в нее.
Ну и следующей командой соберем из исходников OpenCV:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
Теперь скомпилируем все что у нас собралось. Компилировать будем командой
make -j1
Где -j1 – Это количество ядер используемых в компиляции. Я пытался делать на -j3 но так как у меня только пассивное охлаждение. Моя малинка зависала. И так как процесс компиляции занимает несколько часов, попробовав 3 раза на большем количестве ядер. Плюнул. И собрал на -j1.
Курим где-то несколько часов. Так как компиляция занимает очень много времени, особенно на одном ядре.
Теперь установим библиотеки:
sudo make install
Теперь зайдем в конфиг Raspi-config
sudo raspi-config
И тут в меню выбираем Interface Options и там включаем VNC и CAMERA .
После этого выходим из меню. При выходе у нас попросит перезагрузить систему. Соглашаемся.
После перезагрузки системы включим VNC командой:
vncserver :1

(Но сервер VNC отключится после перезагрузки системы. Если хотите его включить в автозагрузку, то сделайте это как описано в этой статье: https://psenyukov.ru/%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-raspberry-pi-%D0%BF%D0%BE-vnc/)

Ну собственно после запуска сервера, он будет доступен по порту 5901.

Теперь на своем компьютере запускаем vnc viewer и подключаемся к raspberry pi введя ip адрес:5901 и введя учетные данные от raspberry pi.

Ну собственно теперь что касается python скрипта. Его можно скачать от сюда: https://disk.yandex.ru/d/uklKeupsiJZYaw

Открываем Thonny программу и вставляем скаченный код туда. Убедитесь что у Вас все вставилось корректно и все отступы на тех же местах где и должны быть.

Ну и после этого нажимаем кнопку RUN. После чего у нас запустится камера и программа начнет определять все черные линии. Попутно писать в монитор порта действие которое пытается предпринять увидев линию, а именно поворот: Right, Left, Straight.

 

Теперь давайте приступим к arduino. Скачаем скетч: https://disk.yandex.ru/d/CYLJaNxC-A37rQ

Отключим во время прошивки от пинов 0 и 1 arduino raspberry pi. И после того как все прошьется. Поключим обратно все так как описал выше. И теперь вместе с надписями: Right, Left, Straigh у нас будут выполняться те же действия поворотами сервопривода:

 

 

На этом все. Надеюсь Вам понравилось.

Все действия продемонстрированы в видео:

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·