Съдържание:
- Стъпка 1: Какво е Pi Zero W?
- Стъпка 2: Скоти, имаме нужда от повече енергия
- Стъпка 3: Поставяне на сензори и софтуер
- Стъпка 4: Настройване на Pi
- Стъпка 5: Време за WiFi
- Стъпка 6: Влизане
- Стъпка 7: Проводници
- Стъпка 8: Запалете го
- Стъпка 9: По избор стъпка и полезни команди
Видео: Система за помощ при паркиране на базата на Pi: 9 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Здравей! Ето един готин малък проект, който можете да направите за един следобед и след това да го използвате ежедневно. Той е базиран на Raspberry Pi Zero W и ще ви помогне да паркирате колата си перфектно всеки път.
Ето пълния списък на частите, които ще ви трябват:
- Raspberry Pi Zero W (в тази статия ще наричаме това 'rpi' или 'pi')
- 4GB или по -голяма микро SD карта за pi OS
- Два малки модула на сензора за разстояние на полета на MiniLiDAR
- 32x32 RGB LED панел (има много производители за това с различна височина на точките, можете например да използвате Adafruit 1484 или подобен, просто потърсете „32x32 LED Matrix“в Google). Нашият панел имаше стъпка от 6 мм.
- 25 фута кабел CAT5
- приблизително 22 цветни проводника за закрепване на щифта за мъже към мъже
- 5v 2Amp microUSB захранване (зарядно за мобилен телефон) Всичко готово? Да тръгваме!
TL; DR Резюме
- Изтеглете Raspbian Lite OS за rpi
- Конфигурирайте pi да работи без глава през WiFi със статичен IP
- Настройка на вашата среда за разработка на вашия компютър с PuTTY, WinSCP и по избор SublimeText w/ FTP добавка
- Изтеглете, създайте и свържете драйвера на LED панела
- Изтеглете и инсталирайте pigpio
- Изтеглете нашия код на Python
- Свържете 32x32 LED дисплея
- Направете удължителния кабел CAT5 за страничния сензор tinyLiDAR
- По избор стъпка (но само за напреднали потребители): направете бърз щастлив танц, когато всичко работи;)
Стъпка 1: Какво е Pi Zero W?
Несъмнено сте чували за Raspberry Pi, но какво, по дяволите, е pi 'Zero W'?
Raspberry Pi Zero и Zero W бяха по -нови допълнения към семейството Pi, което означаваше повече за IoT и други евтини вградени приложения. Те са съкратени версии на оригиналната пи платка, но все още с мощен 1GHz процесор. Ето едно добро сравнение на всички модели.
Ползата за нас при избора на Pi Zero W тук пред други контролни платки е, че можем лесно да го програмираме на езика Python от по -високо ниво, като същевременно използваме бързите драйвери за C/C ++ LED панел. Освен това е на атрактивна цена само 10 щатски долара.
Имайте предвид, че тъй като тази дъска е съкратена версия на пълно пи - някои неща са се променили. По -специално, етернет жакът е елиминиран, HDMI конекторът е променен на мини размер и четирите USB порта са опростени до само един тип микро USB. Има и друг микро USB конектор на борда, но той е само за захранване на платката. Премахването на всички USB конектори в пълен размер въвежда някои сложности. А именно, как можете да свържете клавиатура и мишка? Стандартните USB перфиферали и хъбове използват конектори тип А, а не микро.
И така, какво можем да направим?
Можем да останем без глава!
Не, не искаме да полудеем, а да използваме алтернатива на нормалната директна кабелна настройка. Без глава означава да "тунелирате" в pi дистанционно, като използвате мрежова връзка със защитена обвивка (SSH). За този проект ще използваме безглавия подход през WiFi. Оттук и причината за нас да изберем W версията на pi нула вместо още по -ниската цена pi нула.
Имайте предвид, че има и друг начин за стартиране на pi в режим без глава, използвайки нещо, наречено VNC. Той се нуждае от специален VNC софтуер, работещ на вашия компютър, тъй като осигурява пълен виртуален графичен работен плот на вашия компютър. Ние не изискваме (и наистина не искаме) работния плот за нашия проект, така че ще се придържаме към по -простия SSH метод.
Стъпка 2: Скоти, имаме нужда от повече енергия
32x32 LED матричният панел може сам по себе си да поеме няколко ампера ток. Без майтап! Ето защо повечето от тези панели включват някои мощни кабели за захранване. За щастие за нас обаче няма да се наложи да получаваме огромно захранване за този проект. Успяхме да захранваме цялата тази система само от резервно 5V/2amp зарядно устройство за мобилен телефон microUSB, което бяхме лежали наоколо. Причината за по -ниския ток е, че използваме сравнително прости графики и затова не включваме повечето светодиоди. Ако мислите да направите анимация или да използвате видео/ярки графики, определено трябва да помислите за захранване на панела от отделно захранване.
Стъпка 3: Поставяне на сензори и софтуер
Забелязали ли сте, че използваме два tinyLiDAR в тази система вместо само един? Както е показано на диаграмата за настройка на гаража, едната е поставена пред колата, а другата е разположена от едната страна на колата.
Страничният сензор ще разпознае дали се отклонявате от центъра, докато паркирате колата и разбира се предният ще ви каже кога да спрете.
32x32 LED дисплеят ще ви помогне, като показва стрелки за придвижване напред, наляво или надясно и дисплей за обратно броене с цветни ъгли, за да покаже колко далеч все още трябва да шофирате. Разгледайте нашия кратък видеоклип за всички състояния на дисплея.
План за игра
Накратко, използваме все по -популярната библиотека hzeller C за LED драйвера, Python за управляващия код и pipgpio C библиотеката за правилен I2C контрол на нашите сензори.
Python е супер лесен език на високо ниво, който лесно можете да редактирате във всеки текстов редактор. Обикновено използваме SublimeText и за този проект използвахме и много полезен FTP плъгин, който ни позволява да редактираме скриптовите файлове директно на pi. Това е незадължителна стъпка, тъй като е необходима само ако искате да редактирате кода. Повече подробности са достъпни в края на тази статия.
Всички rpi платки, както може би знаете, не поддържат първоначално разтягане на часовника I2C. Затова отново използвахме библиотеката pigpio за този проект, за да контролираме малките сензори LiDAR, но този път с лек обрат …
Множество малкиLiDAR
Когато купувате tinyLiDAR, той винаги е настроен на подчинен адрес по подразбиране на 0x10. Това е добре, когато използвате един сензор, но ако имате повече от един в шината, това може да е проблем, ако напишете команда до 0x10 и всички те отговорят!
Така че имаме 3 възможности тук:
Първо, можем да използваме командата (tinyLiDAR) "R", за да напишем нов подчинен адрес към един сензор, свързан към I2C шината. След това повторете това за всеки сензор. Физическо свързване, записване и отделяне на всеки сензор за тази процедура. tinyLiDAR ще съхранява дадения адрес в своята вградена енергонезависима памет. Адресът ще продължи дори след включване на захранването, докато не го изчистите, като издадете командата RESET.
Вторият вариант е да използвате удобната функция за автоматично присвояване, която създадохме като стречинг цел в кампанията на IGG. Това включва изпращане на командата "AR" и след това насочване с пръст към всеки сензор поотделно за автоматично присвояване на последователни I2C адреси на отделните сензори, подобно на първата опция, но не е необходимо физически да изключвате всеки сензор, за да направите това.
Третият вариант е този, който използваме тук в този проект и е възможен благодарение на библиотеката pigpio. За да приложите правилно стандарта I2C, pigpio bitbangs GPIO. Поради това можем лесно да създадем отделни I2C шини върху почти всеки чифт резервни GPIO щифтове.
Следователно няма нужда от препрограмиране на подчинени адреси за множество LiDAR сензори. Можем просто да използваме отделен автобус за всеки:)
Имайте предвид, че I2C шината, работеща със 100Kbps, всъщност е доста здрава. Използваме обикновен стар Ethernet кабел CAT5, за да пуснем I2C шината към страничния сензор tinyLiDAR, който е на цели 25 фута без активни компоненти на повторителя! Подробностите за окабеляването на сензора са показани по -горе.
Добре, стига джиббър, нека започнем да изтегляме кода!
Стъпка 4: Настройване на Pi
Внимание: Pi използва Linux файлова система, така че е най -добре да изпълните следните стъпки на Linux базирана система. Може да завършите преформатирането на SD картата си, ако направите това в Windows. Използвахме страхотния и безплатен настолен компютър Ubuntu 18.04, работещ във виртуална среда на компютър с Windows 10, но можете да опитате нещо подобно.
Първо ще трябва да изтеглите операционната система от raspberrypi.org и след това да я запишете на вашата microSD карта. Така че следвайте тези стъпки:
(1) В Ubuntu отидете тук и вземете изображението на Raspbian Lite. Запазете го в папката за изтегляне.
(2) След това изтеглете помощната програма за писане на SD карта Etcher. FYI - официалната връзка за изтегляне на Etcher за версията на Linux на началната им страница не работи за нас, затова използвахме описания тук метод вместо това:
В обобщение стъпките, описани в линка, бяха:
Добавете хранилище на Etcher debian:
ехо "deb https://dl.bintray.com/resin-io/debian стабилен етчер" | 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-electron
След като приключите, можете да продължите и да стартирате Etcher от вашия работен плот на Ubuntu. Той ще ви поиска изходния файл (който сте поставили в папката за изтегляне). Следващата стъпка в Etcher е да изберете правилната цел. Etcher се справя добре с откриването на вашата micro SD карта, но тук трябва да сте параноик. За да проверите дали намира подходящата дестинация - опитайте да извадите microSD картата, като щракнете върху изваждане в прозореца на Ubuntu File Explorer и проверете дали тя изчезва като целевата опция вътре в Etcher. След това го поставете отново и продължете към последната стъпка, която е да запишете файла на тази microSD карта.
Изчакайте известно време, докато свърши и след това продължете напред.
Стъпка 5: Време за WiFi
Добре, сега е време да въведете данните си за WiFi.
Съвет: винаги можете да копирате (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
Това трябва да отвори нано текстовия редактор и можем да добавим този текст в долната част на файла:
интерфейс wlan0
статичен ip_address = 192.168.0.статични рутери = 192.168.0.1 статични сървъри на име на домейн = 192.168.0.1 8.8.8.8
Забележка: Това предполага, че вашият мрежов префикс е 192.168.0. Ако имате 192.168.1 и т.н., вместо това използвайте мрежата си. Сървърът с имена на домейни 8.8.8.8 е за Google и тук не е задължителен.
Въведете „exit“в терминала, за да го затворите. След това щракнете с десния бутон върху името на зареждане в лявата част на прозореца на мениджъра на файлове и изберете Изхвърляне.
Вече можете да включите тази microSD карта във вашето pi и да включите захранващия кабел microUSB, за да захранвате вашето pi.
Ако всичко върви добре, зеленият светодиод ще мига известно време, сякаш има достъп до твърд диск и трябва да ви влезе във вашата WiFi мрежа. Дайте му около минута да се успокои и изчакайте светодиодът да стане постоянно зелен.
За да проверим дали всичко работи, можем да опитаме да го пинг.
Затова просто напишете долния ред и проверете за отговор.
пинг 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 време = 752 ms 64 байта от 192.168.0.200: icmp_seq = 2 ttl = 128 време = 5.77 ms 64 байта от 192.168.0.200: icmp_seq = 3 ttl = 128 време = 7.33 ms ^C --- 192.168.0.200 ping статистика --- 3 предадени пакета, 3 получени, 0% загуба на пакет, време 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms
Имайте предвид, че пингът продължава да работи, докато не натиснете Ctrl+C, за да излезете.
В Windows трябва да получите нещо подобно:
пинг 192.168.0.200
Пинг 192.168.0.200 с 32 байта данни: Отговор от 192.168.0.200: байтове = 32 време = 4ms TTL = 64 Отговор от 192.168.0.200: байтове = 32 време = 5ms TTL = 64 Отговор от 192.168.0.200: байтове = 32 време = 6ms TTL = 64 Отговор от 192.168.0.200: байтове = 32 време = 5ms TTL = 64 Статистика на пинг за 192.168.0.200: Пакети: Изпратени = 4, Получени = 4, Загубени = 0 (загуба от 0%), Приблизително време за връщане в милисекунди: минимум = 4ms, максимум = 6ms, средно = 5ms
Всичко е наред? Нататък…
Стъпка 6: Влизане
Сега, когато имаме връзка с pi, искаме да му изпратим команди. Но как? PuTTY разбира се! Можете да изтеглите PuTTY от тук Настройване на PuTTY След като изтеглите софтуера PuTTY, направете профил за вашето пи със следната информация:
Име на хост (или IP адрес): 192.168.0.200 Тип връзка: SSH Дайте на този профил име под Запазени сесии и натиснете Запиши. Можете да използвате всяко име, което харесвате, например "rpizw_200"
За да влезете, просто го изберете от списъка и натиснете Зареждане. След това натиснете Open. Въведете потребителското име и паролата за влизане:
име за вход: pi
Парола за обезвреждане: малина
Ето примерна сесия, показана в PuTTY, когато влезете:
влезте като: pi
парола на [email protected]: 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
Това ще изтегли всички необходими актуализации от вашата интернет връзка. Отговорете с ДА, ако бъдете подканени да му позволите да продължи и след това му дайте известно време за актуализиране.
По това време вероятно би трябвало също да изключим звука на pi, тъй като има лош juju с библиотеката с LED драйвери. Копирайте, поставете следните редове един по един и натиснете 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 <> черен списък snd_bcm2835>> EOF черен списък snd_bcm2835 pi@raspberrypi: ~ $ sudo update -initramfs -u pi@raspberrypi: ~ $
След това трябва да рестартираме pi, за да влязат в сила промените, затова въведете следното:
sudo рестартирайте сега
Разбира се, връзката ще прекъсне, когато pi се рестартира, така че можете да затворите PuTTY. Опитайте да влезете отново след минута.
Сега е време да вземете графичен FTP файлов мениджър, наречен WinSCP. Можете да изтеглите WinSCP от тук
WinSCP много прилича на администратора на файлове в Windows и Ubuntu. Позволява ни лесно да плъзгаме и пускаме файлове към и от pi и да създаваме директории само с десен бутон на мишката.
След като бъде изтеглен, ще трябва да настроите профил за вашето пи.
Настройка на WinSCP В изскачащия прозорец Login изберете New Site. Използвайте следните настройки за сесията:
Файлов протокол: SFTP Име на хост: 192.168.0.200 Потребителско име: pi Парола: {каквато и парола да смените по подразбиране в стъпката PuTTY по -горе}
В разширените настройки на сайта отидете на Околна среда | Директории и въведете /home /pi за отдалечената директория и каквото искате за настройката за локална директория.
В разширените настройки на сайта отидете на Околна среда | Shell и изберете sudo su - в падащия списък Shell.
След това натиснете Запазване.
Дръжте WinSCP и PuTTY отворени, докато изпълнявате следните стъпки
Отидете на терминала PuTTY и въведете следното:
cd ~
Това ще ни отведе до нашата домашна директория вътре в pi.
Вече можем да вземем библиотеката с LED драйвери от 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 kB архиви. След тази операция ще се използват 26,4 MB допълнително дисково пространство. Искаш ли да продължиш? [Y/n] y Вземете: 1 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf liberror-perl всички 0.17024-1 [26.9 kB] Вземете: 2 https://muug.ca/mirror/ raspbian/raspbian stretch/main armhf git-man всички 1: 2.11.0-3+deb9u3 [1, 433 kB] Вземете: 3 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 kB] Извлечено 4, 848 kB за 5s (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 автоматично ще довърши частичното име вместо вас
Натиснете клавиша enter, за да влезете в тази директория.
pi@raspberrypi: ~ $ cd паркинг/
pi@raspberrypi: ~/parking $ ls
Сега можем да получим файловете на драйверите, като въведем следното в PuTTY:
git клонинг
Изходът ще изглежда така:
pi@raspberrypi: ~/parking $ git clone
Клониране в 'rpi-rgb-led-matrix' … дистанционно: Преброяване на обекти: 3740, готово. дистанционно: Общо 3740 (делта 0), повторно използвано 0 (делта 0), пакетно повторно 3740 Получаващи обекти: 100% (3740/3740), 20.61 MiB | 1.32 MiB/s, направено. Разрешаване на делти: 100% (2550/2550), направено.
Сега компилирайте файловете с LED драйвери, като влезете в тази нова директория '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../ включвам -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = "" обикновен "" -Wextra -Wno -unused -параметър -fno -изключения -c -o gpio.o gpio.cc g ++ -I../ включвам -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = "" обикновен "" -Wextra -Wno -unused -параметър -fno -изключения -c -o led -matrix.o led-matrix.cc g ++ -I../ включва - 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 -параметър -fno -изключения -c -o framebuffer.o framebuffer.cc g ++ -I../ включва -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 = ' "regular" '-Wextra -Wno -unused -parameter -fno -exceptions -c -o bdf -font.o bdf -fon t.cc g ++ -I../ включва -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = "" обикновен "" -Wextra -Wno -unused -parameter -fno -exceptions -c -o graphics.o graphics.cc g ++ - I../ включвам -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обикновен"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o transformer.o transformer.cc g ++ -I../ включвам -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o led -matrix -co led-matrix-c.cc cc -I../ включва -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = "" обикновен "" -Wextra -Wno -unused -parameter -c -o хардуерно картографиране.o хардуерно картографиране.c g ++ -I../ включва -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обикновен"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o content -streamer.o content-streamer.cc g ++ -I../ включва -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"обикновен"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o pixel -mapper.o pixel-mapper.cc g ++ -I../ включва -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"обикновен"' -Wextra -Wno -unused -параметър -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 хардуерно картографиране.o content-streamer.o pixel-mapper.o мултиплексни карти. 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 /parking/rpi-rgb-led-matrix/lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ включва -Wall -O3 -g -Wextra -Wno -unused -parameter -c -o минимален -пример.o минимален- пример.cc g ++ минимален -пример.o - o минимален пример -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ включва -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../ включва -Wall -O3 -g -Wextra -Wno -unused- параметър -c -o текст -пример.o текст- пример.cc g ++ текст -пример.o -o текст -пример -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ включва -Wall - O3 -g -Wextra -Wno-unused-parameter -c -o scrolling-text-example.o scrolling-text-example.cc g ++ scrolling-text-example.o -o превъртане-text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ включва -Wall -O3 -g -Wextra -Wno -unused -parameter -c -o clock.o clock.cc g ++ clock.o -o часовник -L.. /lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ включва -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: ~/parking/rpi-rgb-led-matrix $
Следващата ни стъпка ще бъде свързването на библиотеката с RGB матрици към Python. Използвахме стандартния Python 2 за този проект. За да направим това свързване, въвеждаме следния ред по ред както преди:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
make build-python sudo make install-python
Забележка: Можете спокойно да игнорирате едното предупреждение за „-Wstrict-prototype“, което се показва при изпълнението на двата изявления make. Изпълнението на командите make отнема няколко минути и те не казват нищо, докато са заети. Така че не се страхувайте - вашето пи трябва да се върне скоро;)
Ето частичен изход за първото изявление на make:
изграждане на разширение "графика"
arm -linux -gnueabihf -gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -прототипи -fno -строго -псевдоним -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: предупреждение: опцията за командния ред '-Wstrict-prototypes' е валидна за C/ObjC, но не и за C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic -functions -Wl, -z, relro -fno -strik -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 направи sudo направи инсталиране на rm pigpio.zip
Горната инсталация отнема около 3 минути.
Сега е време да вземем нашите проектни файлове на Python. Въведете следния:
cd ~
cd/home/pi/parking/rpi-rgb-led-matrix/bindings/python/sample wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip разархивирайте -j tinyL_parking.zip rm tinyL_parking.zip
След това, за да го изпълните, въведете следното:
sudo python parking.py
Но не е нужно да правите това в момента, тъй като все още трябва да свържем всичко …
Стъпка 7: Проводници
Както бе споменато по -рано, захранвахме LED панела от същия захранващ адаптер, който захранва pi. За да направите това, ще трябва да сдвоите огромните червени и черни проводници към мъжки щифтове на заглавката, така че да могат да бъдат включени в щифтове 2 и 9 на 40 -пиновия конектор pi.
Изключете захранването към pi сега и свържете LED панела, както е показано по -горе. Дръжте щифт 2 изключен засега.
ЗАБЕЛЕЖКА: LED матричният панел понякога може да се включи във фънки състояние. Ако това се случи, то може да натовари силно вашето захранване, независимо какъв токов капацитет има. Забелязахме това по време на разработването на нашата пейка, която може да осигури над 4 ампера. Решението на това е първо да стартирате pi кода и след това да включите пин 2, за да захранвате LED панела. По този начин панелът трябва да излезе в състояние на ниска мощност, тъй като изчиства случайните състояния на LED. Токът на покой (всички светодиоди са изключени) за нашия LED панел беше само 50mA при 5v.
CAT5
Използвахме 25 -футов Ethernet кабел CAT5 и го модифицирахме, за да се включи в щифтовете на pi заглавието от единия край и да приемем щифтовете на конектора GROVE от другата страна, за да можем да удължим разстоянието, за да поставим нашата страна сензор tinyLiDAR. Снимките по -горе показват този кабел преди и след модификации. Не пренебрегвайте цветовете на проводниците на заглавката, тъй като те не са свързани с диаграмите. Просто се уверете, че сте свързали системата си, както е показано на графичните схеми за свързване, показани по -рано в стъпка 3.
Стъпка 8: Запалете го
Правилната първоначална последователност при включване трябва да бъде да включите зарядното устройство microUSB в pi и да изчакате сините светодиоди на малките сензори LiDAR да мигат бързо, показвайки, че правят измервания. Това доказва, че кодът работи правилно.
След това можете бавно, но здраво да свържете щифт 2 за захранване на LED панела. Внимавайте да не го повредите, докато правите това! Ако светодиодният панел показва няколко замразени ярки светодиода, тогава той вероятно е объркан, така че изключете захранването на microUSB от pi и изчакайте няколко секунди, за да опитате отново последователността на включване.
За да стартирате кода, въведете следното:
cd/home/pi/parking/rpi-rgb-led-matrix/bindings/python/проби
sudo python parking.py
Ако всичко върви добре, трябва да получите дисплей, подобен на този, показан във видеото.
Разгледайте бързо кода на parking.py, за да разберете какви ограничения използвахме. По подразбиране за предния сензор е 200 мм. Тъй като обхватът на сензора е от 11 мм до 2 м, добра идея е да запазите разстоянието nom_parked_Front на 200 мм или по -високо. Страничният сензор nom_parked_Side е настроен на 600 мм. Вижте горната снимка за кода на Python, показващ тези опции за конфигуриране.
Ако всичко работи, можете да продължите и да монтирате системата във вашия гараж и да коригирате горните параметри, ако е необходимо. Тъй като пи е свързан с вашата WiFi, винаги можете да влезете и да редактирате настройките за разстояние, както ви е необходимо за вашата конкретна настройка на гаража, докато тя все още е монтирана.
Това сега ли е?
Защо да, да, така е! - време е за щастлив танц:)
Благодарим ви за четенето и се наслаждавайте на новия си помощник за паркиране!
Стъпка 9: По избор стъпка и полезни команди
Незадължителна стъпка - FTP добавка за възвишен текст
За да редактирате скриптовите файлове на Python директно на pi, можем да инсталираме добавката FTP, наречена Sublime SFTP от Wbond. Можете да изтеглите тази добавка, като следвате инструкциите тук
За да настроим тази добавка, трябва да конфигурираме FTP идентификационните данни под Файл | 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 или File | Запазете, за да запазите тази информация. Ще бъдете подканени за име, което да извика тази конфигурация. Ние просто го нарекохме "rpizw_0_200"
Сега, за да влезете в pi от SublimeText, отидете на File | SFTP/FTP | Преглед на сървъра …
Изберете от изскачащия списък с опции. Ще искате да изберете профила с името, което сте посочили по -горе;) Следвайте подканите, за да навигирате в папките и да редактирате желания файл.
Полезни екстри
Полезни команди на Linux за използване на pi.
Преди да изключите pi, ВИНАГИ го изключете, за да не получите повреда на файла на вашата microSD карта. Въведете тази команда:
sudo изключване сега
и изчакайте зеленият светодиод да се изключи, преди да изключите захранването. По същия начин, за да го рестартирате, можете да въведете:
sudo рестартирайте сега
За да изброите файлове в директория, използвайте това:
ls
Тук можете да намерите други полезни команди на Linux
Препоръчано:
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати
Помощ при паркиране Лесен ремонт / Диагностика: 4 стъпки
Помощ при паркиране Лесен ремонт / Диагностика: Добре, нека започнем, имам Chevrolet Avalanche от 2010 г. и той има 4 сензора за помощ при паркиране в задната броня. Този неразрешим може да се използва на и превозно средство доколкото ми е известно, независимо дали имате отпред или Rea или и двете. Затова отидох на любимия си
Интелигентно паркиране на базата на IOT: 7 стъпки
Интелигентно паркиране на базата на IOT: От Tanmay Pathak и Utkarsh Mishra. Студенти @ Международен институт по информационни технологии, Хайдерабад (IIITH) РЕЗЮМЕ Успешно внедрихме система за интелигентно паркиране, базирана на IOT. С помощта на отделни възли (сензори за близост) винаги
Индукционен металдетектор на базата на Arduino на базата на DIY: 5 стъпки
DIY Ардуино базиран импулсен метален детектор: Това е сравнително прост металдетектор с отлични характеристики
Помощ за паркиране при заден ход в гаража, използвайки съществуващ сензор за безопасност и аналогова верига: 5 стъпки
Помощ за обратно паркиране в гаража, използвайки съществуващ сензор за безопасност и аналогова верига: Подозирам, че много изобретения в историята на човечеството са направени поради оплакващи се съпруги. Пералнята и хладилникът определено изглеждат като жизнеспособни кандидати. Моето мъничко " изобретение " описан в тази инструкция е електронен