Мазмуну:

Pi негизделген паркинг системасы: 9 кадам
Pi негизделген паркинг системасы: 9 кадам

Video: Pi негизделген паркинг системасы: 9 кадам

Video: Pi негизделген паркинг системасы: 9 кадам
Video: More than Coffee: Golang. Почему Java разработчики учат GO как второй язык. 2024, Ноябрь
Anonim
Pi негизделген паркинг системасы
Pi негизделген паркинг системасы

Эй! Бул жерде сиз түштөн кийин жасай турган, анан аны күн сайын колдоно турган сонун кичинекей долбоор. Бул Raspberry Pi Zero Wге негизделген жана машинаңызды ар дайым кемчиликсиз токтотууга жардам берет.

Бул жерде сизге керектүү бөлүктөрдүн толук тизмеси:

  • Raspberry Pi Zero W (биз бул макалада "rpi" же "pi" деп атайбыз)
  • Пи OS үчүн 4 ГБ же андан чоң микро SD карта
  • Учуу аралык сенсорунун эки tinyLiDAR убактысы
  • 32x32 RGB LED панели (бул үчүн ар кандай чекиттер менен көптөгөн өндүрүүчүлөр бар, мисалы, Adafruit 1484 же ушул сыяктуу нерселерди колдонсоңуз болот, жөн гана Google'дан '32x32 LED матрицасын' издеңиз). Биздин панелде 6мм чайыр бар болчу.
  • 25 фут CAT5 кабели
  • болжол менен 22 түстүү эркектен эркектин башына төөнөгүч зымдары
  • 5v 2Amp microUSB энергия менен камсыздоо (уюлдук телефондун кубаттагычы) Баары даярбы? Кеттик!

TL; DR Корутундусу

  • Rpi үчүн Raspbian Lite OS жүктөп алыңыз
  • Пити статикалык IP менен WiFi аркылуу башсыз иштетүү үчүн конфигурациялаңыз
  • PuTTY, WinSCP жана милдеттүү түрдө SublimeText w/ FTP addon менен компьютериңиздин чөйрөсүн орнотуңуз.
  • Жүктөө, жасоо жана LED панелинин драйверин байлоо
  • Пигпиону жүктөп алып, орнотуңуз
  • Биздин Python кодун жүктөп алыңыз
  • 32x32 LED дисплей панелин өткөрүңүз
  • Капталдагы tinyLiDAR сенсоруна CAT5 узартуу кабелин жасаңыз
  • Кошумча кадам (бирок өнүккөн колдонуучулар үчүн гана): баары иштеп турганда тез бактылуу бийлеңиз;)

1 -кадам: Pi Zero W деген эмне?

Pi Zero W деген эмне?
Pi Zero W деген эмне?

Сиз, албетте, Raspberry Pi жөнүндө уккансыз, бирок бул эмне "pi Zero W"?

Raspberry Pi Zero жана Zero W IoT жана башка арзан баада камтылган тиркемелер үчүн көбүрөөк мааниге ээ болгон Pi үй -бүлөсүнүн акыркы толуктоолору болду. Алар баштапкы пи тактасынын версияларынан ажыратылган, бирок дагы деле күчтүү 1 ГГц процессору бар. Бул жерде бардык моделдердин жакшы салыштыруусу.

Бул жерде Pi Zero Wди башка контроллер такталарынан тандап алуунун пайдасы, биз аны дагы жогорку деңгээлдеги Python тилинде оңой программалай алабыз, ошол эле учурда тез C/C ++ LED панели драйверлерин колдонуп жатабыз. Ал ошондой эле жагымдуу гана $ 10USD бааланат.

Эсиңизде болсун, бул такта толук пинин ажыратылган версиясы болгондуктан - кээ бир нерселер өзгөрдү. Атап айтканда, Ethernet уячасы жок кылынды, HDMI коннектору мини өлчөмгө өзгөрдү жана төрт USB порту бир микро USB түрүнө чейин жөнөкөйлөштүрүлдү. Бортто дагы бир микро USB туташтыргычы бар, бирок ал тактага кубат берүү үчүн гана. Бардык толук көлөмдөгү USB коннекторлорун жоюу кээ бир татаалдыктарды киргизет. Тактап айтканда, клавиатура менен чычканды кантип кошсо болот? Стандарттык USB перифериялык түзүлүштөрү жана хабдары микро түрү эмес, А типтеги коннекторлорду колдонушат.

Ошентип, биз эмне кыла алабыз?

Биз башы жок кете алабыз!

Жок, биз жинди болгубуз келбейт, бирок кадимки түз зымдуу орнотууга альтернатива колдонуу керек. Башы жок, коопсуз кабык (SSH) тармагынын туташуусун колдонуп, пига "туннелдөө" дегенди билдирет. Бул долбоор үчүн биз WiFi аркылуу башсыз ыкманы колдонобуз. Демек, биз үчүн азыраак пи нөлдүн ордуна pi нөлүнүн W версиясын тандообуздун себеби.

VNC деп аталган нерсени колдонуп, башсыз режимде пи иштетүүнүн дагы бир жолу бар экенин эске алыңыз. Бул сиздин компьютериңизде иштеген атайын VNC программасына муктаж, бирок ал сиздин компьютериңизде толук виртуалдык графикалык рабочийди камсыз кылат. Биз проектибиздин үстөлүн талап кылбайбыз (жана чын эле каалабайм), ошондуктан биз жөнөкөй SSH ыкмасын карманабыз.

2 -кадам: Скотти, бизге көбүрөөк күч керек

Скотти, бизге дагы күч керек!
Скотти, бизге дагы күч керек!

32x32 LED матрицалык панели, өзү жалгыз, бир нече ампер токту алат. Тамашасыз! Ошол себептен бул панелдердин көпчүлүгүндө аны иштетүү үчүн кээ бир оор көрүнүүчү электр кабелдери камтылган. Бактыга жараша, биз үчүн бул долбоор үчүн массалык түрдө электр энергиясын алуунун кажети жок. Биз бүтүндөй системаны 5В/2амп microUSB уюлдук телефон заряддагычынан гана кубаттай алдык. Төмөнкү токтун себеби, биз салыштырмалуу жөнөкөй графиканы колдонобуз, андыктан диоддордун көбүн күйгүзбөйбүз. Эгерде сиз анимация жасоону же видео/жаркыраган графиканы колдонууну ойлонуп жатсаңыз, анда панелди өзүнчө электр булагынан иштетүүнү ойлонушуңуз керек.

3 -кадам: Сенсорду жайгаштыруу жана программалык камсыздоо

Сенсорду жайгаштыруу жана программалык камсыздоо
Сенсорду жайгаштыруу жана программалык камсыздоо
Сенсорду жайгаштыруу жана программалык камсыздоо
Сенсорду жайгаштыруу жана программалык камсыздоо

Сиз бул системада биринин ордуна эки tinyLiDAR колдонуп жатканыбызды байкадыңызбы? Гараждын орнотуу схемасында көрсөтүлгөндөй, бири машинанын алдына, экинчиси машинанын бир капталына жайгаштырылган.

Каптал сенсор сиз машинаны токтотуп жатканда борбордон бурулуп кетсеңиз, аныктайт жана албетте алдыңкы бөлүгү качан токтошуңуз керектигин айтат.

32x32 LED дисплейи алдыга, солго же оңго жылуу үчүн жебелерди көрсөтүү жана түстүү бурчтары бар саноо дисплейи дагы канчалык айдаш керек экенин көрсөтүү менен сизге жардам берет. Бардык дисплейдин абалы үчүн биздин кыска видеобузду караңыз.

Оюн планы

Кыскача айтканда, биз LED драйвери үчүн дайыма популярдуу hzeller C китепканасын, башкаруу коду үчүн Pythonду жана сенсорлорубузду туура I2C көзөмөлдөө үчүн pipgpio C китепканасын колдонуп жатабыз.

Python - бул ар кандай текст редакторунда оңой оңдой ала турган супер оңой деңгээлдеги тил. Биз, адатта, SublimeTextти колдонобуз жана бул долбоор үчүн биз абдан пайдалуу FTP плагинин колдондук, ал скрипт файлдарын түздөн -түз пи боюнча түзөтүүгө мүмкүндүк берет. Бул кошумча кадам, анткени бул кодду түзөткүңүз келсе гана керек. Көбүрөөк маалымат бул макаланын аягында жеткиликтүү.

Бардык rpi такталары, сиз билгендей, I2C саатынын созулушун колдобойт. Ошентип, биз бул долбоор үчүн pigpio китепканасын кайрадан tinyLiDAR сенсорлорун көзөмөлдөө үчүн колдондук, бирок бул жолу бир аз бурулуш менен …

Бир нече tinyLiDARs

Сиз tinyLiDAR сатып алганда, ал ар дайым демейки 0x10 кул дарегине коюлат. Бул бир сенсорду колдонуп жүргөнүңүз үчүн жакшы, бирок эгер сизде автобуста бир нече жолоочу болсо, анда 0x10го буйрук жазсаңыз жана алардын баары жооп берсе, анда көйгөй болушу мүмкүн!

Ошентип, бизде бул жерде 3 вариант бар:

Биринчиден, биз (tinyLiDAR) "R" буйругун колдонуп, I2C автобусуна туташкан бир сенсорго жаңы кулдун дарегин жазабыз. Андан кийин муну ар бир сенсор үчүн кайталаңыз. Бул процедуранын ар бир сенсорун физикалык жактан тиркөө, жазуу жана ажыратуу. tinyLiDAR берилген даректи өзүнүн туруктуу эстутумунда сактайт. Дарек RESET буйругун берүү менен тазаланмайынча, электр велосипединен кийин деле сакталып калат.

Экинчи вариант - IGG кампаниясында созулган максат катары түзүлгөн ыңгайлуу Авто Таптоо мүмкүнчүлүгүн колдонуу. Бул "AR" буйругун жөнөтүүнү камтыйт, андан кийин биринчи вариантка окшош жеке сенсорлорго ырааттуу I2C даректерин автоматтык түрдө берүү үчүн манжаңызды ар бир сенсорго көрсөтүүнү камтыйт, бирок бул үчүн ар бир сенсорду физикалык түрдө ажыратуунун кажети жок.

Үчүнчү вариант - бул биз бул жерде колдонуп жаткан вариант жана бул pigpio китепканасынын жардамы менен мүмкүн. I2C стандартын туура ишке ашыруу үчүн, pigpio GPIO битбанг кылат. Ушундан улам, биз дээрлик каалаган жуп запастагы GPIO казыктарында өзүнчө I2C автобустарын түзө алабыз.

Ошентип, бир нече LiDAR сенсорлору үчүн кул даректерин кайра программалоонун кажети жок. Биз ар бирине өзүнчө автобус колдонсок болот:)

100Kbps ылдамдыкта иштеген I2C автобусу чындыгында абдан күчтүү экенин эске алыңыз. Биз I2C автобусун 25 фут алыстыкта, эч кандай активдүү кайталануучу компоненттери жок, tinyLiDAR сенсоруна алып баруу үчүн жөнөкөй эски CAT5 ethernet кабелин колдонуп жатабыз! Сенсордун зымдары жөнүндө маалыматтар жогоруда көрсөтүлгөн.

Жарайт, жетиштүү jibber jabber, кодду жүктөп баштайлы!

4 -кадам: Pi орнотуу

Pi орнотуу
Pi орнотуу
Pi орнотуу
Pi орнотуу

Эскертүү: pi Linux файл тутумун колдонот, андыктан Linux негизделген системада төмөнкү кадамдарды жасоо эң жакшы. Сиз муну Windowsто кылсаңыз, SD картты кайра форматтоону токтотушуңуз мүмкүн. Биз Windows 10 компьютеринде виртуалдык чөйрөдө иштеген укмуштуу жана бекер Ubuntu 18.04 рабочийин колдондук, бирок сиз дагы ушуга окшош нерсени сынап көрсөңүз болот.

Сиз адегенде OSти raspberrypi.org сайтынан жүктөп алып, анан microSD картаңызга өрттөшүңүз керек болот. Андыктан бул кадамдарды аткарыңыз:

(1) Ubuntu'го бул жерге барып, Raspbian Lite сүрөтүн алыңыз. Аны жүктөөлөр папкаңызга сактаңыз.

(2) Кийинки Etcher SD картасын жазуу утилитасын жүктөп алыңыз. FYI - Linux версиясы үчүн башкы беттеги Etcher жүктөөчү расмий шилтемеси биз үчүн иштеген жок, андыктан биз бул жерде сүрөттөлгөн ыкманы колдондук:

Кыскача айтканда, шилтемеде сүрөттөлгөн кадамдар:

Etcher debian репозиторийин кошуу:

echo "deb https://dl.bintray.com/resin-io/debian stabil etcher" | sudo tee /etc/apt/sources.list.d/etcher.list

Trust Bintray.comдун GPG ачкычы:

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

Жаңыртуу жана орнотуу:

sudo apt-get update

sudo apt-get etcher-electron орнотуу

Аяктагандан кийин, сиз Ubuntu столунан Etcherди иштете аласыз. Бул сизден баштапкы файлды сурайт (сиз жүктөө папкасына саласыз). Этчердеги кийинки кадам - туура бута тандоо. Etcher сиздин микро SD картаңызды аныктоодо жакшы иштейт, бирок сиз бул жерде параноид болушуңуз керек. Тийиштүү жерди таап жатканын текшерүү үчүн - Ubuntu файл изилдөөчү терезесинен чыгарууну чыкылдатуу менен microSD картасын чыгарууга аракет кылыңыз жана анын Etcher ичиндеги максаттуу вариант катары кеткенин текшериңиз. Андан кийин аны кайра киргизип, акыркы кадамга өтүңүз, бул файлды бул microSD картасына жазуу.

Ал бүткөнчө бир аз күтө туруңуз жана андан ары улантыңыз.

5 -кадам: WiFi убактысы

WiFi убактысы
WiFi убактысы
WiFi убактысы
WiFi убактысы

Макул, азыр WiFi маалыматыңызды киргизүүгө убакыт келди.

Ишара: Сиз бул макаладан буйруктарды терүүнүн ордуна PuTTY терминалынын экранына ар дайым көчүрүп (Ctrl+C) жана чаптап (Оңго Басуу, Кой) аласыз. Бул макаланын аягында Linuxтун бир нече пайдалуу буйруктарын текшериңиз.

Etcher микро SD картага жазууну бүтүргөндө, жогоруда көрсөтүлгөндөй 2 диск пайда болот. Бири жүктөө, экинчиси rootfs деп аталат

Биз жүктөө папкасына кирип, wpa_supplicant.conf деп аталган файлды түзүү үчүн файл менеджерин колдонушубуз керек.

Бул кадамды жасоо үчүн сиз жөн гана сол жагын чыкылдата аласыз, анда жүктөө дейт, андан кийин экрандын оң жагында ак түстөгү арткы баскычты чыкылдатып, Терминалда ачууну тандасаңыз болот.

Бул терминалды терезени ачат (Windowsтогу CMDге окшош), анда сиз төмөнкүлөрдү тере аласыз:

sudo nano wpa_supplicant.conf Кеңеш: Супер Колдонуучу катары иштөө үчүн Linux системаңыздын сырсөзүн киргизишиңиз керек. Бул талап кылынат, антпесе сиз түзөтүүнү бүтүргөндөн кийин файлдарды сактай албайсыз

Жогорудагы буйрук андан кийин төмөнкү маалыматты киргизе турган "нано" текст редакторун ишке киргизет:

өлкө = АКШ

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 статикалык 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 кубат кабелин туташтырсаңыз болот.

Эгер баары ойдогудай болсо, жашыл LED катуу дискте жүргөндөй бир азга өчүп -күйүп турат жана сизди WiFi тармагыңызга киргизиши керек. Жайгашууга бир мүнөт убакыт бериңиз жана LEDдин жашыл болуп калышын күтүңүз.

Мунун баары иштегенин текшерүү үчүн, биз аны пингге салып көрүүгө болот.

Андыктан төмөндөгү сапты терип, жоопту текшериңиз.

ping 192.168.0.200

Ubuntuдо буга окшош нерсени алышыңыз керек:

ping 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) байт маалымат. 192.168.0.200дөн 64 байт: icmp_seq = 1 ttl = 128 убакыт = 752 ms ms ^C --- 192.168.0.200 пинг статистикасы --- 3 пакет өткөрүлдү, 3 алынды, 0% пакет жоготуу, убакыт 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 мс

Белгилей кетчү нерсе, пинг сиз Ctrl+C баскычтарын баскыңыз келгенче иштей берет.

Windowsто сиз мындай нерсени алышыңыз керек:

ping 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 Ping статистикасы 192.168.0.200: Пакеттер: Жөнөтүлгөн = 4, Алынган = 4, Жоголгон = 0 (0% жоготуу), Болжол менен тегеретүү жолу милли-секундада: Минималдуу = 4 мс, Максимум = 6 мс, Орточо = 5 мс

Баары жакшыбы? Алга…

6 -кадам: Кирүү

Кирүү
Кирүү

Эми бизде pi менен байланыш бар болгондуктан, биз ага буйруктарды жөнөткүбүз келет. Бирок кантип? PuTTY албетте! PuTTY'ди бул жерден жүктөп алсаңыз болот PuTTY орнотуу PuTTY программасын жүктөп алгандан кийин, төмөнкү маалымат менен пиңиздин профилин түзүңүз:

Хосттун аты (же IP дареги): 192.168.0.200 Байланыштын түрү: SSHБул профилге Сакталган сессиялардын астындагы ысымды бериңиз жана Сактоону басыңыз. Сиз каалаган ысымды колдоно аласыз, мисалы "rpizw_200"

Кирүү үчүн, аны тизмеден тандап, Жүктөө дегенди басыңыз. Андан кийин Ачуу баскычын басыңыз. Кирүү үчүн колдонуучунун атын жана сырсөзүн киргизиңиз:

кирүү аты: pi

Defalt сырсөзү: малина

Бул жерде сиз киргенде PuTTYде көрсөтүлгөн сессиянын үлгүсү:

катары кирүү: pi

[email protected]дүн сырсөзү: Linux raspberrypi 4.14.34+ #1110 Дш Апр 16 14:51:42 BST 2018 armv6l Debian GNU/Linux тутумуна кирген программалар бекер программа; ар бир программанын так бөлүштүрүү шарттары жеке файлдарда/usr/share/doc/*/автордук укукта жазылган. Debian GNU/Linux колдонуудагы мыйзам тарабынан уруксат берилген өлчөмдө КЕПИЛДИКТЕН ЖОК. Акыркы кирүү: [датасы жана убактысы] 192.168.0. [IP дареги] SSH иштетилген жана 'pi' колдонуучусунун демейки сырсөзү өзгөртүлгөн эмес. Бул коопсуздук коркунучу - сураныч, 'pi' колдонуучусу катары кирип, жаңы сырсөздү коюу үчүн 'passwd' териңиз.

Биринчи киргенде, сиз азырынча сырсөздү алмаштыра электигиңизди эскертет. Сиз муну күчтүү, бирок жөнөкөй нерсени эстен чыгарбоо үчүн өзгөртүшүңүз керек, андыктан алдыга өтүп, passwd терип өзгөртүүгө жана көрсөтмөлөрдү аткарыңыз.

Кийинкиде, муну терүү менен piдеги программаны жаңыртуубуз керек:

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

Бул интернет байланышыңыздан керектүү болгон жаңыртууларды жүктөп берет. Ооба деп жооп бериңиз, эгер аны улантууга уруксат берилсе жана жаңыртууга бир аз убакыт берсеңиз.

Бул учурда биз, балким, пидагы үндү өчүрүшүбүз керек, анткени ал LED драйверинин китепканасы менен жаман джужу бар. Көчүрүү, төмөнкү саптарды бирден чаптап, ар бир саптан кийин Enter баскычын басыңыз:

cd ~

cat << 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: ~ $

Андан кийин, өзгөртүүлөр күчүнө кириши үчүн, пиди кайра жүктөөбүз керек, андыктан төмөнкүлөрдү териңиз:

sudo азыр кайра жүктөө

Пи кайра жүктөлүп жаткандыктан, албетте байланыш үзүлөт, андыктан PuTTYди өчүрө аласыз. Бир мүнөттөн кийин кайра кирүүгө аракет кылыңыз.

Эми WinSCP деп аталган графикалык FTP файл менеджерин алууга убакыт келди. WinSCPти бул жерден жүктөп алсаңыз болот

WinSCP Windows жана Ubuntu файлдарды сатуучуга окшош. Бул бизге файлдарды piге оңой сүйрөп барып таштоого жана чычканды оң басуу менен каталогдорду түзүүгө мүмкүнчүлүк берет.

Жүктөлүп алынгандан кийин, пи үчүн профилди орнотушуңуз керек болот.

WinSCP Орнотуу Кирүү калкып чыкмасынан, Жаңы сайтты тандоо. Сеанс үчүн төмөнкү орнотууларды колдонуңуз:

Файл протоколу: SFTP Хосттун аталышы: 192.168.0.200 Колдонуучунун аты: pi Сырсөз: {жогорудагы PuTTY кадамында демейки болгон паролду алмаштырыңыз}

Сайттын өркүндөтүлгөн жөндөөлөрүндө Курчап турган чөйрөнү коргоо | Директориялар жана /home /pi дегенди Remote каталогуна жана Жергиликтүү каталогуңуз үчүн каалаган нерсеңизге киргизиңиз.

Сайттын өркүндөтүлгөн жөндөөлөрүндө Курчап турган чөйрө | өтүңүз Shell жана sudo su тандоо - Shell ачылуучу тизмесинде.

Андан кийин Сактоо баскычын басыңыз.

Төмөнкү кадамдарды аткарууда WinSCP жана PuTTY экөөнү ачык кармаңыз

PuTTY терминалына барып, төмөнкүлөрдү киргизиңиз:

cd ~

Бул бизди пи ичиндеги үй каталогубузга алып барат.

Биз азыр LED айдоочу китепканасын githubдан тартып алабыз. Акыркы кодду колдонуу үчүн, репо тартуубуз керек, ошондуктан git утилитасын орнотушубуз керек.

Муну PuTTYге киргизиңиз:

sudo apt-get install орнотуу

улантуу үчүн Y деп жооп бериңиз жана интернеттен биз үчүн гитти орнотууга бир нече секунд кетет.

Чыгаруу мындай болушу керек:

pi@raspberrypi: ~ $ sudo apt-get install

Пакеттердин тизмелери окулууда… Бүттү Көз карандылык дарагы Мамлекеттин маалыматы окулууда… Бүттү Кийинки кошумча пакеттер орнотулат: 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 алуу: 1 https://muug.ca/mirror/raspbian/raspbian сунуу/main armhf liberror-perl all 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 streç/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 kB] 5s (878 кБ/с) ичинде 4, 848 кБ алынды, мурда тандалбаган 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_1%3a2.11.0-3+deb9u3_armhf.deb… Гиттен чыгаруу (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 терсеңиз болот. Анда муну киргизиңиз:

cd p [TAB]Кеңеш: TAB баскычын басуу сиз үчүн жарым -жартылай автоматтык түрдө толтурулат

Бул каталогго кирүү үчүн enter баскычын басыңыз.

pi@raspberrypi: ~ $ cd токтоочу жай/

pi@raspberrypi: ~/паркинг $ ls

Эми PuTTYге төмөнкүлөрдү киргизүү менен драйвер файлдарын ала алабыз:

git клону

Чыгаруу мындай болот:

pi@raspberrypi: ~/паркинг $ git clone

'Rpi-rgb-led-matrix' клондоо… алыстан: Объекттерди саноо: 3740, бүттү. алыскы: Бардыгы 3740 (дельта 0), кайра колдонулган 0 (дельта 0), пакетте кайра колдонулган 3740 Алуучу объекттер: 100% (3740/3740), 20.61 MiB | 1,32 Мб/с, бүттү. Дельта чечүү: 100% (2550/2550), аткарылды.

Эми бул жаңы "rpi-rgb-led-matrix" каталогуна кирип, make буйругун терүү менен LED айдоочу файлдарын түзүңүз:

cd r [TAB]

жасоо Жана биздин тактада ушундай көрүндү

pi@raspberrypi: ~/паркинг $ cd rpi-rgb-led-matrix/

pi@raspberrypi: ~/parking/rpi-rgb-led-matrix $ make -C./lib make [1]: '/home/pi/parking/rpi-rgb-led-matrix/lib' g ++ каталогуна кирүү- I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular" -Wextra -Wno -unused -parameter -fno -exceptions -c -o gpio.o gpio.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o led -matrix.o led-matrix.cc g ++ -I../ include - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -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 -W3 -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 = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o графика.o графика.cc g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno -unused -parameter -fno -exceptions -c -o transformer.o transformer.cc g ++ -I../ include -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 аппараттык -mapping.o аппараттык -mapping.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../ 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 аппараттык-mapping.o мазмун-streamer.o пиксел-mapper.o мультиплекс-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 графика.o transformer.o led-matrix-co аппараттык-mapping.o мазмунун-стример.о пиксел-mapper.o мультиплекс-mappers. o -lpthread -lrt -lm -lpthread жасоо [1]: '/home/pi/parking/rpi -rgb -led -matrix/lib' каталогунан чыгуу -C мисалдары -api -use make [1]: каталогго кирүү ' /home/pi/parking/rpi -rgb -led -matrix/мисалдар -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' каталогуна кирүү [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 - о минималдуу мисал -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../ include -Wall -O3 -g -Wextra -Wno -unused - параметр -c -o текст -мисал.о текст- мисал.cc g ++ текст -мисал.о -о текст -мисал -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 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/мисалдар -api -use' pi каталогунан чыгуу @raspberrypi: ~/паркинг/rpi-rgb-led-matrix $

Кийинки кадамыбыз RGB матрицалык китепканасын Pythonго байлоо болот. Биз бул долбоор үчүн демейки Python 2ди колдондук. Ошентип, бул милдеттенмени аткаруу үчүн биз мурдагыдай бир убакта төмөнкү сапты киргизебиз:

sudo apt-get update && sudo apt-get install python2.7-dev python-жаздык -y

build-python sudo make install-python кыл

Эскертүү: Сиз экөөнүн тең билдирүүлөрүн иштетүүдө пайда болгон '-Wstrict-прототип' жөнүндөгү бир эскертүүнү этибарга албай койсоңуз болот. Жасоо буйруктары бир нече мүнөткө созулат жана алар бош эмес кезде эч нерсе айтышпайт. Андыктан коркпоңуз - сиздин пиңиз тез арада кайтып келиши керек;)

Бул жерде биринчи билдирүүнүн жарым -жартылай чыгарылышы:

"Графика" кеңейтүүсүн куруу

arm -linux -gnueabihf -gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict -prototypes -fno -катуу -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 = формат -коопсуздук -fPIC -I../../ камтыйт -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 -катуу -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 = формат -коопсуздук -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 = формат -коопсуздук куруу/temp.linux -armv6l -2.7/rgbmatrix/graphics.o -L../../ lib -lrgbmatrix -o./rgbmatrix/graphics.so [1]: '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' каталогунан чыгуу@raspberrypi: ~/паркинг/rpi-rgb-led-matrix $

Кийинки биз pigpio C китепканасын орнотобуз. Муну туура кылуу үчүн, биз булактан алышыбыз керек, андыктан төмөнкү саптарды киргизиңиз:

cd ~

sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip ачуу pigpio.zip cd PIGPIO кылуу sudo make 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 unzip -j tinyL_parking.zip rm tinyL_parking.zip

Андан кийин аны аткаруу үчүн төмөнкүлөрдү териңиз:

sudo python паркинг.py

Бирок муну азыр кылуунун кажети жок, анткени биз дагы эле бардыгын байланыштырышыбыз керек …

7 -кадам: Зымдар

Зымдар
Зымдар
Зымдар
Зымдар
Зымдар
Зымдар
Зымдар
Зымдар

Жогоруда айтылгандай, биз LED панелин пиди иштетүүчү ошол эле адаптерден кубаттадык. Муну жасоо үчүн, кызыл жана кара зымдарды эркек баш казыктарына бөлүшүңүз керек, андыктан алар 40pin pi коннекторунун 2 жана 9 -казыктарына туташтырылышы мүмкүн.

Азыр пи үчүн электр кубатын ажыратыңыз жана LED панелин зымга жогоруда көрсөтүлгөн диаграммага ылайык. 2 -пинди азырынча ажыратпаңыз.

ЭСКЕРТҮҮ: LED матрицасы панели кээде күлкүлүү абалда иштей алат. Эгер андай боло турган болсо, анда анын кубаттуулугу кандай болбосун, сиздин электр менен камсыздоону олуттуу түрдө төмөндөтүшү мүмкүн. Биз муну 4 амперден ашык камсыз кыла турган скамейкабызды иштеп чыгууда байкадык. Муну чечүү үчүн адегенде пи кодду иштетип, анан LED панелин иштетүү үчүн 2 -пинди туташтырыңыз. Ошентип, панель аз кубаттуулукта болушу керек, анткени ал туш келди LED абалдарын жок кылат. Биздин LED панелибиз үчүн тынымсыз ток (бардык светодиоддор өчүрүлгөн) 5вде 50мА гана болгон.

CAT5

Биз 25 фут CAT5 ethernet кабелин колдонуп, аны бир четиндеги пи баш казыктарына туташтырып, экинчи жагындагы GROVE туташтыргычтарын кабыл алуу үчүн, биз тарапты tinyLiDAR сенсорун жайгаштыруу үчүн аралыкты узарта алдык. Жогорудагы сүрөттөр бул кабелди өзгөртүүлөргө чейин жана кийин көрсөтөт. Баш схема зымдарынын түстөрүнө көңүл бурбаңыз, анткени алар диаграммаларга байланышы жок. Жөн гана 3 -кадамдын башында көрсөтүлгөн сүрөттүү байланыш диаграммаларында көрсөтүлгөндөй системаңызды зым менен камсыз кылганыңызды текшериңиз.

8 -кадам: Жарыктандыруу

Image
Image
Кошумча кадам жана пайдалуу буйруктар
Кошумча кадам жана пайдалуу буйруктар

Туура баштапкы кубаттоо ырааттуулугу microUSB заряддагычты пи -ге туташтырып, tinyLiDAR сенсорлорундагы көк светодиоддордун тез өлчөнүп жатканын көрсөтүшүн күтүшү керек. Бул коддун туура иштеп жатканын далилдейт.

Сиз LED панелинин камсыздалышы үчүн акырын, бирок бекем 2 -пин туташтырсаңыз болот. Муну кылып жатканда ката кетирбеңиз! Эгерде LED панели бир нече тоңуп калган жаркыраган диоддорду көрсөтсө, анда ал жалтырап калган болушу мүмкүн, андыктан microUSB кубатын пиеден ажыратып, кайра иштетүү үчүн бир нече секунд күтө туруңуз.

Кодду иштетүү үчүн, төмөнкүлөрдү киргизиңиз:

cd/home/pi/parking/rpi-rgb-led-matrix/bindings/python/үлгүлөрү

sudo python паркинг.py

Эгер баары ойдогудай болсо, видеодо көрсөтүлгөнгө окшош дисплейди алышыңыз керек.

Колдонулган чекти түшүнүү үчүн parking.py кодун тез карап көрүңүз. Алдыңкы сенсор үчүн демейки 200 мм. Сенсордун диапазону 11ммден 2мге чейин болгондуктан, nom_parked_Front аралыкты 200мм же андан жогору кармоо жакшы идея. Каптал сенсор nom_parked_Side 600 ммге коюлган. Бул конфигурация параметрлерин көрсөтүүчү Python коду үчүн жогорудагы сүрөттү караңыз.

Эгерде баары иштеп жатса, анда системаны гаражыңызга орнотуп, керектүү учурда жогорудагы параметрлерди туураласаңыз болот. Сиз пи сиздин Wi -Fi тармагыңызга туташып тургандыктан, ар дайым кирип, гаражды орнотуу үчүн керек болгон аралыкты тууралоого болот.

Бул азырбы?

Эмне ооба, ооба бул! - бактылуу бийлегенге убакыт келди:)

Окуганыңыз үчүн рахмат жана жаңы унаа токтотуучу жардамчыңыздан ырахат алыңыз!

9 -кадам: Кошумча кадам жана пайдалуу буйруктар

Кошумча кадам - Жогорку текст үчүн FTP addon

Python скрипт файлдарын түз пи боюнча түзөтүү үчүн, Wbond тарабынан Sublime SFTP деп аталган FTP аддонун орното алабыз. Бул addonду бул жердеги көрсөтмөлөрдү аткаруу менен жүктөп алсаңыз болот

Бул кошумча орнотуу үчүн биз File | астында 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", "порт": "22", "remote_path": "/home/pi/", "file_permissions": "664", "dir_permissions": "775", Ctrl+S же File | колдонуңуз Бул маалыматты сактоо үчүн сактоо. Бул конфигурацияны чакыруу үчүн сизден ат талап кылынат. Биз жөн гана "rpizw_0_200" деп атаганбыз

Эми SublimeTextтен piге кирүү үчүн File | ге өтүңүз SFTP/FTP | Серверди карап чыгуу…

Калкып чыгуучу варианттардын тизмесинен тандаңыз. Сиз жогоруда көрсөткөн аты менен профилди тандап алгыңыз келет;) Папкаларды кыдыруу жана керектүү файлды түзөтүү үчүн көрсөтмөлөрдү аткарыңыз.

Пайдалуу кошумча

Пайдалуу Linux пи колдонууга буйруктар.

Пиди ажыратуудан мурун, дайыма microSD картаңызда файл бузулбашы үчүн аны өчүрүүнү унутпаңыз. Бул буйрукту киргизиңиз:

sudo азыр өчүрүү

жана жашылдын электрди өчүрүүдөн мурун өчүшүн күтө туруңуз. Окшош түрдө, аны кайра баштоо үчүн, кире аласыз:

sudo азыр кайра жүктөө

Каталогдогу файлдарды тизмектөө үчүн, муну колдонуңуз:

ls

Бул жерде сиз башка пайдалуу Linux буйруктарын таба аласыз

Сунушталууда: