Оглавление:

Система помощи при парковке на основе Pi: 9 шагов
Система помощи при парковке на основе Pi: 9 шагов

Видео: Система помощи при парковке на основе Pi: 9 шагов

Видео: Система помощи при парковке на основе Pi: 9 шагов
Видео: ТЕХНИКА БЕЗОПАСНОСТИ. Вид Грубейшего Нарушения ТРЕБОВАНИЙ ТБ при работе на СТАНКАХ. 2024, Ноябрь
Anonim
Система помощи при парковке на основе Pi
Система помощи при парковке на основе Pi

Привет! Вот небольшой крутой проект, который вы можете сделать за один день, а затем использовать каждый день. Он основан на Raspberry Pi Zero W и всегда поможет вам идеально припарковать машину.

Вот полный список необходимых деталей:

  • Raspberry Pi Zero W (в этой статье мы будем называть это «rpi» или «пи»)
  • Карта Micro SD емкостью 4 ГБ или больше для ОС Pi
  • Два модуля датчиков расстояния tinyLiDAR Time of Flight
  • Светодиодная панель 32x32 RGB (есть много производителей для этого с разным шагом точек, вы можете, например, использовать Adafruit 1484 или аналогичный, просто введите в Google поиск «32x32 LED Matrix»). Наша панель имела шаг 6 мм.
  • 25 футов кабеля CAT5
  • около 22 цветных перемычек между штекером и штекером
  • Блок питания 5v 2Amp microUSB (зарядное устройство для сотового телефона) Все готово? Пойдем!

TL; DR Резюме

  • Загрузите ОС Raspbian Lite для rpi
  • Настройте Pi для автономной работы через Wi-Fi со статическим IP-адресом
  • Настройте среду разработки ПК с помощью PuTTY, WinSCP и, возможно, SublimeText с надстройкой FTP.
  • Скачиваем, делаем и привязываем драйвер светодиодной панели
  • Скачайте и установите pigpio
  • Загрузите наш код Python
  • Подключите светодиодную панель дисплея 32x32.
  • Сделайте удлинитель CAT5 для бокового сенсора tinyLiDAR
  • Необязательный шаг (но только для продвинутых пользователей): сделайте быстрый танец счастья, когда все работает;)

Шаг 1. Что такое Pi Zero W?

Что такое Pi Zero W?
Что такое Pi Zero W?

Вы, несомненно, слышали о Raspberry Pi, но что, черт возьми, такое пи 'Zero W'?

Raspberry Pi Zero и Zero W были более поздними дополнениями к семейству Pi, которые больше предназначались для Интернета вещей и других недорогих встроенных приложений. Это урезанные версии оригинальной платы Pi, но все еще с мощным процессором с тактовой частотой 1 ГГц. Вот хорошее сравнение всех моделей.

Преимущество выбора Pi Zero W здесь по сравнению с другими платами контроллеров заключается в том, что мы можем легко запрограммировать его на языке Python более высокого уровня, по-прежнему используя быстрые драйверы светодиодной панели C / C ++. Он также по привлекательной цене всего в 10 долларов США.

Имейте в виду, что, поскольку эта плата представляет собой урезанную версию полного числа Пи, некоторые вещи изменились. В частности, был удален разъем Ethernet, разъем HDMI был уменьшен до миниатюрного размера, а четыре порта USB были упрощены до одного типа micro USB. На плате есть еще один разъем micro USB, но он только для питания платы. Устранение всех полноразмерных USB-разъемов вносит некоторые сложности. А именно, как подключить клавиатуру и мышь? Стандартные периферийные устройства USB и концентраторы используют разъемы типа A, а не микро.

Так что мы можем сделать?

Мы можем обойтись без головы!

Нет, мы не хотим сходить с ума, а хотим использовать альтернативу обычной проводной настройке. Безголовый означает удаленный «туннель» в Pi с использованием сетевого соединения с защищенной оболочкой (SSH). В этом проекте мы будем использовать безголовый подход через Wi-Fi. Отсюда и причина, по которой мы выбрали W-версию нуля пи вместо еще более низкой стоимости пи нуля.

Обратите внимание, что есть еще один способ запустить pi в безголовом режиме с помощью так называемого VNC. Для этого требуется специальное программное обеспечение VNC, работающее на вашем ПК, поскольку оно обеспечивает полноценный виртуальный графический рабочий стол на вашем ПК. Нам не нужен (и действительно не нужен) рабочий стол для нашего проекта, поэтому мы будем придерживаться более простого метода SSH.

Шаг 2: Скотти, нам нужно больше силы

Скотти, нам нужно больше силы!
Скотти, нам нужно больше силы!

Светодиодная матричная панель 32x32 может потреблять несколько ампер тока. Без шуток! Вот почему большинство этих панелей включает в себя здоровенные кабели питания для питания. К счастью для нас, нам не понадобится массивный блок питания для этого проекта. Мы смогли запитать всю эту систему только от запасного зарядного устройства microUSB для сотового телефона на 5 В / 2 А, которое у нас было. Причина более низкого тока в том, что мы используем относительно простую графику и поэтому не включаем большинство светодиодов. Если вы думаете о создании анимации или использовании видео / яркой графики, вам обязательно стоит подумать о питании панели от отдельного источника питания.

Шаг 3: Размещение датчика и программное обеспечение

Размещение сенсора и программное обеспечение
Размещение сенсора и программное обеспечение
Размещение сенсора и программное обеспечение
Размещение сенсора и программное обеспечение

Вы заметили, что в этой системе мы используем два tinyLiDAR вместо одного? Как показано на схеме установки гаража, один размещается перед автомобилем, а другой - вдоль одной стороны автомобиля.

Боковой датчик обнаружит, если вы отклонитесь от центра при парковке автомобиля, и, конечно же, передний датчик подскажет, когда остановиться.

Светодиодный дисплей 32x32 поможет вам, показывая стрелки для движения вперед, влево или вправо, а также дисплей обратного отсчета с цветными углами, указывающими, сколько вам еще предстоит проехать. Посмотрите наше короткое видео для всех состояний дисплея.

План игры

Короче говоря, мы используем неизменно популярную библиотеку C hzeller для драйвера светодиода, Python для управляющего кода и библиотеку pipgpio C для правильного управления нашими датчиками по протоколу I2C.

Python - это очень простой язык высокого уровня, который вы можете легко редактировать в любом текстовом редакторе. Обычно мы используем SublimeText, и для этого проекта мы также использовали очень полезный плагин FTP, который позволяет нам редактировать файлы сценария непосредственно на пи. Это необязательный шаг, поскольку он нужен только в том случае, если вы хотите отредактировать код. Более подробная информация доступна в конце этой статьи.

Как вы знаете, все платы rpi изначально не поддерживают растяжение тактовой частоты I2C. Поэтому мы снова использовали библиотеку pigpio для этого проекта, чтобы управлять датчиками tinyLiDAR, но на этот раз с небольшим поворотом …

Несколько tinyLiDAR

Когда вы покупаете tinyLiDAR, он всегда устанавливается на ведомый адрес по умолчанию 0x10. Это нормально, когда вы используете один датчик, но если у вас более одного на шине, может возникнуть проблема, если вы напишете команду на 0x10, и все они ответят!

Итак, у нас есть 3 варианта:

Во-первых, мы можем использовать команду (tinyLiDAR) «R», чтобы записать новый адрес подчиненного устройства в один датчик, подключенный к шине I2C. Затем повторите это для каждого датчика. Физически прикрепляя, записывая и отсоединяя каждый датчик для этой процедуры. tinyLiDAR сохранит данный адрес во встроенной энергонезависимой памяти. Адрес будет сохраняться даже после включения и выключения питания, пока вы не очистите его, введя команду RESET.

Второй вариант - использовать удобную функцию автоматического назначения, которую мы создали в качестве расширенной цели в кампании IGG. Это включает в себя отправку команды «AR» и последующее указание пальцем на каждый датчик в отдельности, чтобы автоматически назначать последовательные адреса I2C отдельным датчикам, как в первом варианте, но для этого вам не нужно физически отключать каждый датчик.

Третий вариант - это тот, который мы используем здесь, в этом проекте, и он возможен благодаря библиотеке pigpio. Чтобы правильно реализовать стандарт I2C, pigpio использует битовый бит GPIO. Таким образом, из-за этого мы можем легко создать отдельные шины I2C практически на любой паре запасных контактов GPIO.

Следовательно, нет необходимости перепрограммировать адреса подчиненных устройств для нескольких датчиков LiDAR. Мы можем просто использовать для каждой отдельную шину:)

Обратите внимание, что шина I2C со скоростью 100 Кбит / с на самом деле довольно надежна. Мы используем простой старый Ethernet-кабель CAT5 для вывода шины I2C на боковой датчик tinyLiDAR, который находится на расстоянии 25 футов без каких-либо активных компонентов ретранслятора! Детали подключения датчика показаны выше.

Ладно, хватит трепа, приступим к загрузке кода!

Шаг 4: настройка Pi

Настройка Pi
Настройка Pi
Настройка Pi
Настройка Pi

Внимание: Pi использует файловую систему Linux, поэтому лучше всего выполнить следующие шаги в системе на основе Linux. Вы можете переформатировать SD-карту, если сделаете это в Windows. Мы использовали потрясающий и бесплатный рабочий стол Ubuntu 18.04, работающий в виртуальной среде на ПК с Windows 10, но вы можете попробовать что-то подобное.

Вам нужно будет сначала загрузить ОС с raspberrypi.org, а затем записать ее на карту microSD. Итак, выполните следующие действия:

(1) В Ubuntu перейдите сюда и возьмите образ Raspbian Lite. Сохраните его в папку загрузок.

(2) Затем загрузите утилиту записи на SD-карту Etcher. К вашему сведению - официальная ссылка для загрузки Etcher для версии Linux на их домашней странице не сработала для нас, поэтому вместо этого мы использовали метод, описанный здесь:

В итоге шаги, описанные в ссылке, были:

Добавьте репозиторий Etcher debian:

echo "deb https://dl.bintray.com/resin-io/debian стабильный etcher" | sudo tee /etc/apt/sources.list.d/etcher.list

Доверяйте ключу GPG Bintray.com:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61

Обновите и установите:

sudo apt-get update

sudo apt-get установить etcher-electronics

После завершения вы можете запустить Etcher со своего рабочего стола Ubuntu. Он попросит вас указать исходный файл (который вы поместите в папку загрузок). Следующим шагом в Etcher является выбор правильной цели. Etcher отлично справляется с обнаружением вашей карты micro SD, но вы должны быть здесь параноиком. Чтобы убедиться, что он находит правильное место назначения, попробуйте извлечь карту microSD, нажав кнопку извлечения в окне проводника файлов Ubuntu, и убедитесь, что она исчезает как целевой параметр внутри Etcher. Затем вставьте его обратно и перейдите к последнему шагу, а именно к записи файла на эту карту microSD.

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

Шаг 5: время WiFi

Время WiFi
Время WiFi
Время WiFi
Время WiFi

Хорошо, теперь пришло время ввести данные вашего Wi-Fi.

Совет: вы всегда можете скопировать (Ctrl + C) и вставить (щелкните правой кнопкой мыши, Вставить) информацию из этой статьи на экран терминала PuTTY вместо того, чтобы вводить команды. В конце этой статьи также есть несколько полезных команд Linux.

Когда Etcher закончит запись на карту micro SD, появятся 2 диска, как показано выше. Один называется загрузочным, другой - rootfs

Нам нужно использовать файловый менеджер, чтобы зайти в загрузочную папку и создать файл с именем wpa_supplicant.conf.

Чтобы сделать этот шаг, вы можете просто щелкнуть в левой части, где написано «загрузка», а затем в правой части экрана вы можете щелкнуть правой кнопкой мыши по белому фону и выбрать «Открыть в терминале».

Откроется окно терминала (похожее на CMD в Windows), где вы можете ввести следующее:

sudo nano wpa_supplicant.conf Совет: вам нужно будет ввести свой системный пароль Linux, чтобы он мог работать от имени суперпользователя. Это необходимо, иначе вы не сможете сохранить файлы, когда закончите редактирование.

Приведенная выше команда запустит текстовый редактор "nano", в котором вы можете ввести следующую информацию:

страна = США

ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}

Примечание. Не забудьте заменить WiFi_SSID и WiFi_Password своим именем и паролем сети WiFi.

Когда вы закончите, просто нажмите Ctrl + X, чтобы выйти, и ответьте Да на запись файла при выходе.

Наш следующий шаг - создать пустой файл с именем ssh. Для этого мы просто набираем в окне терминала следующее:

коснитесь ssh

Теперь нам нужно дать нашему пи статический IP-адрес, чтобы мы знали, где он находится, каждый раз, когда мы хотим к нему подключиться. В окне терминала введите следующее:

sudo nano /etc/dhcpcd.conf

Это должно снова открыть текстовый редактор nano, и мы можем добавить этот текст в конец файла:

интерфейс wlan0

статический ip_address = 192.168.0. статические маршрутизаторы = 192.168.0.1 статические domain_name_servers = 192.168.0.1 8.8.8.8

Примечание. Предполагается, что ваш сетевой префикс 192.168.0. Если у вас 192.168.1 и т. Д., Используйте вместо этого свою сеть. Сервер доменных имен 8.8.8.8 предназначен для Google и здесь не является обязательным.

Введите "exit" в Терминале, чтобы закрыть его. Затем щелкните правой кнопкой мыши имя загрузки в левой части окна диспетчера файлов и выберите «Извлечь».

Теперь вы можете подключить эту карту microSD к пи и подключить кабель питания microUSB для питания пи.

Если все пойдет хорошо, зеленый светодиод некоторое время будет мигать, как будто он обращается к жесткому диску, и он должен зарегистрировать вас в вашей сети Wi-Fi. Подождите около минуты, чтобы он успокоился, и подождите, пока светодиод не загорится зеленым.

Чтобы убедиться, что все работает, мы можем попробовать пропинговать его.

Так что просто введите строку ниже и проверьте, есть ли ответ.

пинг 192.168.0.200

В Ubuntu должно получиться примерно следующее:

пинг 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) байтов данных. 64 байта из 192.168.0.200: icmp_seq = 1 ttl = 128 time = 752 мс 64 байта из 192.168.0.200: icmp_seq = 2 ttl = 128 time = 5,77 мс 64 байта из 192.168.0.200: icmp_seq = 3 ttl = 128 time = 7,33 мс ^ C --- 192.168.0.200 статистика ping --- 3 пакета передано, 3 получено, потеря пакетов 0%, время 2001 мс rtt min / avg / max / mdev = 5.777 / 255.346 / 752.922 / 351.839 мс

Обратите внимание, что проверка связи продолжается, пока вы не нажмете Ctrl + C для выхода.

В Windows должно получиться что-то вроде этого:

пинг 192.168.0.200

Пинг 192.168.0.200 с 32 байтами данных: ответ от 192.168.0.200: байты = 32 время = 4 мс TTL = 64 Ответ от 192.168.0.200: байты = 32 время = 5 мс TTL = 64 Ответ от 192.168.0.200: байты = 32 времени = 6 мс TTL = 64 Ответ от 192.168.0.200: байты = 32 время = 5 мс TTL = 64 Статистика эхо-запросов для 192.168.0.200: Пакеты: отправлено = 4, принято = 4, потеряно = 0 (потеря 0%), приблизительное время приема-передачи в миллисекундах: минимум = 4 мс, максимум = 6 мс, средний = 5 мс

Все хорошо? Вперед…

Шаг 6: вход в систему

Вход в систему
Вход в систему

Теперь, когда у нас есть подключение к пи, мы хотим отправлять ему команды. Но как? Конечно же, PuTTY! Вы можете скачать PuTTY отсюда Настройка PuTTY После загрузки программного обеспечения PuTTY создайте профиль для вашего Pi со следующей информацией:

Имя хоста (или IP-адрес): 192.168.0.200 Тип подключения: SSH Дайте этому профилю имя в разделе «Сохраненные сеансы» и нажмите «Сохранить». Вы можете использовать любое имя, например "rpizw_200"

Чтобы войти, просто выберите его из списка и нажмите «Загрузить». Затем нажмите «Открыть». Введите имя пользователя и пароль для входа:

логин: пи

Пароль по умолчанию: малина

Вот пример сеанса, показанный в PuTTY при входе в систему:

войти как: пи

pi @ 192.168.0.200 пароль: Linux raspberrypi 4.14.34+ # 1110 Mon Apr 16 14:51:42 BST 2018 armv6l Программы, входящие в состав системы Debian GNU / Linux, являются бесплатными; точные условия распространения для каждой программы описаны в отдельных файлах в / usr / share / doc / * / copyright. Debian GNU / Linux поставляется с АБСОЛЮТНО НИКАКИХ ГАРАНТИЙ, насколько это разрешено действующим законодательством. Последний вход в систему: [дата и время] с адреса 192.168.0. [IP-адрес] SSH включен, а пароль по умолчанию для пользователя pi не был изменен. Это угроза безопасности - войдите в систему как пользователь pi и введите passwd, чтобы установить новый пароль.

При первом входе в систему он предупредит, что вы еще не изменили пароль. Вы должны изменить его на что-то сильное, но простое для запоминания, так что смените его, набрав passwd и следуя подсказкам.

Затем мы должны обновить программное обеспечение на Pi, набрав это:

sudo apt-get update && sudo apt-get upgrade

Все необходимые обновления будут загружены через ваше интернет-соединение. Ответьте ДА, если будет предложено продолжить, а затем дайте ему время на обновление.

В это время мы, вероятно, также должны отключить звук на пи, так как он имеет некоторую плохую работу с библиотекой драйверов светодиодов. Скопируйте, вставьте следующие строки по одной и нажимайте Enter после каждой строки:

cd ~

кошка << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf черный список snd_bcm2835 EOF sudo update-initramfs -u

Результат будет примерно таким:

pi @ raspberrypi: ~ $ cd ~

pi @ raspberrypi: ~ $ cat <> blacklist snd_bcm2835>> Черный список EOF snd_bcm2835 pi @ raspberrypi: ~ $ sudo update-initramfs -u pi @ raspberrypi: ~ $

Затем мы должны перезагрузить пи, чтобы изменения вступили в силу, поэтому введите следующее:

sudo перезагрузить сейчас

Соединение, конечно же, разорвется, так как пи перезагружается, поэтому вы можете закрыть PuTTY. Попробуйте снова войти через минуту.

Пришло время получить графический файловый менеджер FTP под названием WinSCP. Вы можете скачать WinSCP отсюда

WinSCP очень похож на файловый менеджер в Windows и Ubuntu. Это позволяет нам легко перетаскивать файлы в и из пи и создавать каталоги одним щелчком правой кнопки мыши.

После загрузки вам нужно будет настроить профиль для вашего пи.

Настройка WinSCP Во всплывающем окне входа в систему выберите «Новый сайт». Используйте следующие настройки для сеанса:

Файловый протокол: SFTP Имя хоста: 192.168.0.200 Имя пользователя: pi Пароль: {любой пароль, который вы изменили по умолчанию на шаге PuTTY выше}

В дополнительных настройках сайта перейдите в Environment | Каталоги и введите / home / pi для удаленного каталога и все, что вам нужно для настройки локального каталога.

В Advanced Site Settings перейдите в Environment | Shell и выберите sudo su - в раскрывающемся списке Shell.

Затем нажмите «Сохранить».

Не закрывайте и WinSCP, и PuTTY, выполняя следующие шаги

Перейдите в терминал PuTTY и введите следующее:

cd ~

Это приведет нас к нашему домашнему каталогу внутри файла pi.

Теперь мы можем получить библиотеку драйверов светодиодов с github. Чтобы использовать последний код, нам нужно получить репозиторий, поэтому нам нужно установить утилиту git.

Введите это в PuTTY:

sudo apt-get install git

ответьте Y, чтобы продолжить, и нам потребуется несколько секунд, чтобы установить git из Интернета.

Результат должен выглядеть примерно так:

pi @ raspberrypi: ~ $ sudo apt-get install git

Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово Будут установлены следующие дополнительные пакеты: git-man liberror-perl Предлагаемые пакеты: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Будут установлены следующие НОВЫЕ пакеты: git git-man liberror-perl 0 обновлено, 3 недавно установлен, 0 для удаления и 0 без обновления. Необходимо получить 4 848 КБ архивов. После этой операции будет использовано 26,4 МБ дополнительного дискового пространства. Вы хотите продолжить? [Y / n] y Get: 1 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf liberror-perl все 0.17024-1 [26.9 kB] Get: 2 https://muug.ca/mirror/ raspbian / raspbian stretch / main armhf git-man all 1: 2.11.0-3 + deb9u3 [1, 433 kB] Get: 3 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf git armhf 1: 2.11.0-3 + deb9u3 [3, 388 kB] Получено 4, 848 kB за 5 секунд (878 kB / s) Выбор ранее невыбранного пакета liberror-perl.(Чтение базы данных… 34363 установленных файла и каталогов.) Подготовка к распаковке… / liberror-perl_0.17024-1_all.deb… Распаковка liberror-perl (0.17024-1)… Выбор ранее невыбранного пакета git-man. Подготовка к распаковке… / git-man_1% 3a2.11.0-3 + deb9u3_all.deb… Распаковка git-man (1: 2.11.0-3 + deb9u3)… Выбор ранее невыбранного пакета git. Подготовка к распаковке… / git_1% 3a2.11.0-3 + deb9u3_armhf.deb… Распаковка git (1: 2.11.0-3 + deb9u3)… Настройка git-man (1: 2.11.0-3 + deb9u3)… Настройка liberror-perl (0.17024-1)… Обработка триггеров для man-db (2.7.6.1-2)… Настройка git (1: 2.11.0-3 + deb9u3)…

Теперь вернитесь в WinSCP и перейдите в папку / home / pi. Затем в правой части окна WinScp щелкните правой кнопкой мыши и выберите создание нового каталога под названием «парковка».

Вернувшись на экран PuTTY, вы можете ввести ls, чтобы подтвердить, что вы только что создали новую папку в pi. Затем введите это:

cd p [TAB]Совет: нажатие клавиши TAB автоматически заполнит часть имени.

Нажмите клавишу ввода, чтобы попасть в этот каталог.

pi @ raspberrypi: ~ $ cd парковка /

pi @ raspberrypi: ~ / парковка $ ls

Теперь мы можем получить файлы драйвера, введя в PuTTY следующее:

git clone

Результат будет выглядеть примерно так:

pi @ raspberrypi: ~ / парковка $ git clone

Клонирование в 'rpi-rgb-led-matrix'… удаленный: Подсчет объектов: 3740, готово. удаленный: Всего 3740 (дельта 0), повторно используется 0 (дельта 0), повторно используется пакет 3740 Получение объектов: 100% (3740/3740), 20,61 МиБ | 1,32 Мбайт / с, готово. Разрешение дельт: 100% (2550/2550), готово.

Теперь скомпилируйте файлы драйвера светодиода, перейдя в этот новый каталог rpi-rgb-led-matrix и набрав команду make:

cd r [TAB]

делать А вот как это выглядело на нашей доске

pi @ raspberrypi: ~ / парковка $ cd rpi-rgb-led-matrix /

pi @ raspberrypi: ~ / Parking / rpi-rgb-led-matrix $ make make -C./lib make [1]: Вход в каталог '/ home / pi / Parking / rpi-rgb-led-matrix / lib' g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o gpio.o gpio.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o led-matrix.o led-matrix.cc g ++ -I../ include - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o options-initialize.o options-initialize.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o framebuffer.o framebuffer.cc g ++ -I../ include -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = ' "обычный" '-Wextra -Wno-unused-parameter -fno-exceptions -c -o bdf-font.o bdf-fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o graphics.o graphics.cc g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o transformer.o transformer.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o led-matrix-co led-matrix-c.cc cc -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -c -o hardware-mapping.o hardware-mapping.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o content-streamer.o content-streamer.cc g ++ -I../ include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o pixel-mapper.o pixel-mapper.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обычный"' -Wextra -Wno-unused-parameter -fno-excep tions -c -o multiplex-mappers.o multiplex-mappers.cc ar rcs librgbmatrix.a gpio.o led-matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers.o g ++ -shared -Wl, -soname, librgbmatrix.so.1 -o librgbmatrix.so.1 gpio.o led -matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make [1]: Выход из каталога '/ home / pi / Parking / rpi-rgb-led-matrix / lib' make -C examples-api-use make [1]: Вход в каталог ' / home / pi / Parking / rpi-rgb-led-matrix / examples-api-use 'g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o demo-main. o demo-main.cc make -C../lib make [2]: вход в каталог '/ home / pi / Parking / rpi-rgb-led-matrix / lib' make [2]: выход из каталога '/ home / pi / парковка / rpi-rgb-led-matrix / lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o minimal-example.o minimal-example.cc g ++ minimal-example.o - o минимальный-пример -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o c-example.o c- example.c cc c-example.o -o c-example -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused- параметр -c -o text-example.o text-example.cc g ++ text-example.o -o text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall - O3 -g -Wextra -Wno-unused-parameter -c -o scrolling-text-example.o scrolling-text-example.cc g ++ scrolling-text-example.o -o scrolling-text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o clock.o clock.cc g ++ clock.o -o clock -L.. / lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: Выход из каталога '/ home / pi / Parking / rpi-rgb-led-matrix / examples-api-use' pi @raspberrypi: ~ / парковка / rpi-rgb-led-matrix $

Нашим следующим шагом будет привязка библиотеки матриц RGB к Python. Мы использовали Python 2 по умолчанию для этого проекта. Итак, чтобы выполнить эту привязку, мы вводим следующую строку за раз, как и раньше:

sudo apt-get update && sudo apt-get install python2.7-dev python-Pillow -y

сделать build-python sudo сделать install-python

Примечание. Вы можете спокойно игнорировать одно предупреждение о «-Wstrict-prototype», которое появляется при запуске двух операторов make. Команды make запускаются через пару минут, и пока они заняты, они ничего не говорят. Так что не бойтесь - ваш пи скоро вернется;)

Вот частичный вывод первого оператора make:

создание расширения 'графика'

arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -fPIC -I../../ include -I / usr / include / python2.7 -c rgbmatrix / graphics.cpp -o build / temp.linux- armv6l-2.7 / rgbmatrix / graphics.o -O3 -Wall cc1plus: warning: параметр командной строки '-Wstrict-prototypes' действителен для C / ObjC, но не для C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functions -Wl, -z, relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix -map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -Wl, -z, relro -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7 -2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security build / temp.linux-armv6l-2.7 / rgbmatrix / graphics.o -L../../ lib -lrgbmatrix -o./rgbmatrix/graphics.so make [1]: Выход из каталога '/ home / pi / Parking / rpi-rgb-led-matrix / bindings / python' pi @ raspberrypi: ~ / Parking / rpi-rgb-led-matrix $

Далее мы установим библиотеку Pigpio C. Чтобы сделать это правильно, нам нужно сделать это из исходного кода, поэтому просто введите следующие строки:

cd ~

sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip распаковать pigpio.zip cd PIGPIO make sudo make install rm pigpio.zip

Вышеупомянутая установка занимает около 3 минут.

Пришло время получить файлы нашего проекта Python. Введите следующее:

cd ~

cd / home / pi / Parking / rpi-rgb-led-matrix / bindings / python / samples wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip unzip -j tinyL_parking.zip rm tinyL_parking.zip

Затем, чтобы выполнить его, введите следующее:

sudo python Parking.py

Но вам не нужно делать это прямо сейчас, так как нам еще нужно все это подключить…

Шаг 7: Провода

Провода
Провода
Провода
Провода
Провода
Провода
Провода
Провода

Как упоминалось ранее, мы запитали светодиодную панель от того же адаптера питания, что и Pi. Для этого вам нужно будет соединить здоровенные красный и черный провода с штырьками штекерного разъема, чтобы их можно было подключить к контактам 2 и 9 40-контактного разъема Pi.

Теперь отключите питание от пи и подключите светодиодную панель в соответствии с иллюстративной схемой выше. Пока оставьте контакт 2 отключенным.

ПРИМЕЧАНИЕ. Панель со светодиодной матрицей иногда может включиться в неуправляемом состоянии. Если это произойдет, он может серьезно перегрузить ваш источник питания, независимо от его текущей емкости. Мы заметили это во время разработки нашего настольного источника питания, который может обеспечить более 4 ампер. Решение - сначала запустить пи-код, а затем подключить контакт 2 для питания светодиодной панели. Таким образом, панель должна перейти в состояние низкого энергопотребления, поскольку она сбрасывает случайные состояния светодиодов. Ток покоя (все светодиоды выключены) для нашей светодиодной панели составлял всего 50 мА при 5 В.

CAT5

Мы использовали 25-футовый кабель Ethernet CAT5 и модифицировали его, чтобы подключить его к контактам pi-заголовка на одном конце и принять контакты разъема GROVE с другой стороны, чтобы мы могли увеличить расстояние, чтобы разместить боковой датчик tinyLiDAR. На фотографиях выше показан этот кабель до и после модификации. Не обращайте внимания на цвета проводов контактов заголовка, поскольку они не соответствуют схемам. Просто убедитесь, что вы подключили свою систему, как показано на схемах подключения, показанных ранее в шаге 3.

Шаг 8: зажгите

Image
Image
Необязательный шаг и полезные команды
Необязательный шаг и полезные команды

Правильная первоначальная последовательность включения питания должна заключаться в том, чтобы подключить зарядное устройство microUSB к Pi и дождаться, пока синие светодиоды на датчиках tinyLiDAR быстро начнут мигать, показывая, что они проводят измерения. Это доказывает, что код работает правильно.

Затем вы можете медленно, но надежно подключить контакт 2 для питания светодиодной панели. Будьте осторожны, не допускайте сбоев при этом! Если на светодиодной панели отображается несколько замороженных ярких светодиодов, вероятно, произошел сбой, поэтому отключите питание microUSB от пи и подождите несколько секунд, чтобы снова попробовать последовательность включения питания.

Чтобы запустить код, введите следующее:

cd / home / pi / парковка / rpi-rgb-led-матрица / привязки / питон / образцы

sudo python Parking.py

Если все пойдет хорошо, вы должны получить дисплей, аналогичный показанному на видео.

Взгляните на код Parking.py, чтобы понять, какие ограничения мы использовали. По умолчанию для переднего датчика установлено значение 200 мм. Поскольку диапазон датчика составляет от 11 мм до 2 м, рекомендуется оставлять расстояние nom_parked_Front равным 200 мм или выше. Боковой датчик nom_parked_Side установлен на 600 мм. На рисунке выше показан код Python, показывающий эти параметры конфигурации.

Если все работает, вы можете смонтировать систему в своем гараже и при необходимости отрегулировать указанные выше параметры. Поскольку ваш Pi подключен к вашему Wi-Fi, вы всегда можете войти и отредактировать настройки расстояния, как вам нужно для вашей конкретной настройки гаража, пока он все еще установлен.

Это сейчас?

Почему да, это так! - пора танцевать свой счастливый танец:)

Спасибо за чтение и наслаждайтесь своим новым помощником по парковке!

Шаг 9. Необязательный шаг и полезные команды

Необязательный шаг - надстройка FTP для Sublime Text

Чтобы редактировать файлы сценария Python непосредственно на пи, мы можем установить надстройку FTP под названием Sublime SFTP от Wbond. Вы можете скачать это дополнение, следуя инструкциям здесь

Чтобы установить это дополнение, нам нужно настроить учетные данные FTP в File | SFTP / FTP | Страница настройки сервера….

Для нашей установки мы использовали:

«type»: «sftp», «sync_down_on_open»: true, «sync_same_age»: true, «host»: «192.168.0.200», «user»: «pi», «password»: «YOUR_RPI_PASSWORD_HERE», «port»: «22», «remote_path»: «/ home / pi /», «file_permissions»: «664», «dir_permissions»: «775», Используйте Ctrl + S или Файл | Сохраните, чтобы сохранить эту информацию. Вам будет предложено ввести имя для вызова этой конфигурации. Мы просто назвали его "rpizw_0_200"

Теперь, чтобы войти в Пи из SublimeText, перейдите в Файл | SFTP / FTP | Обзор сервера…

Выберите из всплывающего списка опций. Вам нужно будет выбрать профиль с именем, которое вы указали выше;) Следуйте подсказкам, чтобы перемещаться по папкам и редактировать нужный файл.

Полезные дополнения

Полезные команды Linux для использования на pi.

Перед отключением пи, ВСЕГДА обязательно выключайте его, чтобы не повредить файл на карте microSD. Введите эту команду:

sudo выключение сейчас

и дождитесь, пока зеленый светодиод не погаснет, прежде чем отключать питание. Аналогично, чтобы перезапустить его, вы можете ввести:

sudo перезагрузить сейчас

Чтобы вывести список файлов в каталоге, используйте это:

ls

Вы можете найти другие полезные команды Linux здесь

Рекомендуемые: