Мазмуну:

RPi 3 Starboard / Particle Generator: 6 Steps (Сүрөттөр менен)
RPi 3 Starboard / Particle Generator: 6 Steps (Сүрөттөр менен)
Anonim
Image
Image
LED тактасын чогултуу
LED тактасын чогултуу

Raspberry Pi менен зеригип жатасызбы? Ааламдын эң негизги күчтөрүнө буйрук берүүгө, фотондорду каалагандай чакырууга жана жок кылууга даярсызбы? Сиз өзүңүздүн конок бөлмөсүңүздө кызыктуу нерселердин илинишин каалайсызбы же Денизге ушул күндөрү жакшы эле иштеп жатканыңызды көрсөтүү үчүн фейсбукта кооз долбоордун болушун каалайсызбы, чоң рахмат? Сиз компьютердин симуляциясына илинип калдыңызбы жана бошонгонго же өчүрүлгөнгө чейин сааттарды өткөрүп жатасызбы? Эгерде булардын баары же бардыгы сизди сүрөттөсө, анда [диктордун үнү] Кош келиңиз!

Бул окуу куралы Raspberry Pi 3 жана кээ бир RGB матрицалык панелдерди колдонуп, бөлүкчөлөрдүн генераторунун дисплейин кантип орнотууну жана орнотууну көрсөтөт. Бул сизге бирден эки саатка чейин созулушу керек жана даяр продукт болжол менен 30 "x8" (Pi кошпогондо) жана дубалга орнотулуучу болот. Бул конок бөлмөсүнө, офиске, оюн бөлмөсүнө же башка каалаган жерге кооз жасалганы жасайт.

Баштоодон мурун, сизге керектүү нерселер жана болжолдуу чыгымдар:

  • Rpi 3 + SD карта + Корпус + Электр энергиясы менен камсыздоо: $ 70 (Canakitтен, бирок бөлүктөрдү бөлөк сатып алсаңыз арзаныраак ала аласыз.)
  • 4x 32x32 RGB LED Matrix (1/16 сканерлөө менен р6 жабык): Alibaba же Aliexpressке жөнөтүлгөн $ 80- $ 100; Adafruit же Sparkfun боюнча 160 доллар.
  • Adafruit RGB Matrix шляпасы: $ 25
  • 5V 4A Power Supply: $ 15
  • 3D басып чыгарылган клиптер: $ 1ish (бул панелдерди туташтырып, дубалга илип коюу үчүн; эгерде 3D принтерге кирүү мүмкүнчүлүгүңүз жок болсо, анда аларды жабыштыруу үчүн фринг тилкесин жана жабдыктар дүкөнүнөн кээ бир кронштейндерди колдонсоңуз болот. Дубалга илип коюңуз. Мен бул үчүн дизайн файлдарын же.stls табууга аракет кылдым, бирок алар жерден өтүп кеткен окшойт. Клиптерди моделдөө абдан оңой.)
  • 14x M4x10 болттор: $ 5иш
  • Төрт 4x8 IDC кабели жана RGB матрицалары үчүн үч күч кабели (бул эмне деп аталарын билбейм!). Бул сиздин LED панелдериңизге кошулган болушу керек.
  • Бардыгы: 200 доллардын тегерегинде, бериңиз же алыңыз.

Долбоор сизден ширетүүнү же кандайдыр бир конкреттүү программалоо билимине ээ болууну талап кылбайт; microSD картасына сүрөттү кантип жазууну билесиз деп болжолдойт. Эгер муну кантип жасоону билбесеңиз, Raspberry Pi фондунун бул жерде жакшы үйрөткүчү бар.

Бул ошондой эле Linuxтун буйрук сабынан нерселерди кантип жасоо керектиги жөнүндө негизги билимге ээ экениңизди билдирет жана кодду карап чыгуу Pythonдун негиздерин билишиңизди болжолдойт (бирок - куруу үчүн жана кодду карап чыгуунун кажети жок. бөлүкчөлөр генераторун иштетүү.) Эгерде сиз кандайдыр бир кадамдарга тыгылып калсаңыз, /r /raspberry_piге суроо же пост жазуудан тартынбаңыз (бул менин көрсөтмөм үчүн негизги аудитория деп ойлойм)

1 -кадам: LED тактасын чогултуу

LED тактасын чогултуу
LED тактасын чогултуу

Биринчиден, сиз жеке 32x32 LED панелдерин бир чоң 128x32 панелге чогултасыз. Сиз такталарыңызды карап, туташуу тартибин көрсөткөн кичинекей жебелерди табышыңыз керек; Меники боюнча алар HUB75/2x8 IDC туташтыргычтарынын жанында. Тактанын узундугунан ылдый жактагы Rpi туташкан жерди көрсөткөнүңүзгө ишениңиз (жогорудагы сүрөттө оңго карай).

Ошондой эле электр кабелдерин туташтыруу керек болот. Бул кабелдердин көбүндө такталарга бекитилген эки аял коннектору жана электр булагына туташкан күрөк терминалдарынын бир тобу бар. Мен иштеп жаткан панелдерде 5V жана GND көрсөткүчтөрү коннекторлордун астында дээрлик жашырылган, бирок кабелдер бир гана багытта туташат. Сиз бардык 5Vларды жана бардык GND'дерди бириктирип жатканыңызды текшергиңиз келет, анткени эгер сиз бул артка кубат берсеңиз, анда аларды кууруп саласыз.

Тактайларым менен коштолгон электр кабелдери өтө кыска болгондуктан, мен күрөк терминалынын тиштерин экинчисинин туташтыргычына салып, узартууга туура келди (Бул абдан жөнөкөй - сиз күрөк терминалдарын бир аз ичке бүгүшүңүз мүмкүн, бирок мен ') Болгону сүрөтүн кошуп койгом). Мен азыр узартылган LED тактасынын оң жагында эки күрөк терминалынын жана бир 2x8 IDC туташтыргычы менен аяктадым.

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

Ошентип, бардык панелдерди клиптер, 2x8 IDC кабелдери жана электр кабелдери менен туташтыргандан кийин, сиз кийинки кадамга өтүүгө даярсыз!

2 -кадам: Raspberry Pi даярдаңыз

Андан кийин, сиз LED тактасын четке коюп (азырынча) жана Pi 3ту иштетүүгө даярдайсыз. Биз Raspbian Stretch Lite жана hzellerдин RGB матрицалык китепканасын колдонобуз (эски жана сакталбаган Adafruit матрицалык китепканасына караганда.)

Биринчиден, сиз Raspbian Lite сүрөтүн SD картага жазгыңыз келет; Муну кылгандан кийин, питте монитор менен клавиатураны туташтырып, жүктөңүз. (Сиз муну башсыз эле жасай аласыз, же ssh же сериялык туташтыргычтын үстүнөн, бирок эгер сиз ушундай жол менен бара жатсаңыз, анда сизге муну кантип жасоону айтуунун кажети жок.) Бул үчүн сизге интернет байланышы керек болот.; Эгер сизде wifi бар болсо, /etc/wpa_supplicant/wpa_supplicant.conf файлын түзөтүү жана wpa_cli -i wlan0 кайра конфигурациялоо менен Пиди зымсыз тармагыңызга туташтырыңыз. (Эгер сиз муну эч качан кыла элек болсоңуз, бул жерден көрсөтмөлөрдү ала аласыз).

Интернетке туташкандан кийин, биз dpkg репозиторийинин орнотууларын жаңыртып, төмөнкү буйруктарды иштетүү менен бизге керектүү китепканаларды жүктөп алабыз:

sudo apt-get update

sudo apt-get install python-dev python-pil

git клону

Эми биз матрицанын кодун түзүп, орнотушубуз керек. Ошентип, сиз китепкана камтылган папкага киресиз:

cd rpi-rgb жетектеген матрица

жана аны түзүңүз (бул бир мүнөткө созулушу мүмкүн):

make && build-python

жана python байланыштарын орнотуңуз:

sudo install-python түзөт

Эгерде сиз китепкананын кодун түзүүдө кандайдыр бир ката кетирсеңиз, артка кайтыңыз жана python-dev менен python-pil туура орнотулганын текшериңиз! Python байланышы бул эки пакет тең орнотулбай туруп түзүлбөйт.

Сиз ошондой эле /boot/config.txt файлын түзөтүү аркылуу Пиңиздин үн чыгарылышын өчүрүшүңүз керек (борттогу үн матрицанын кодуна тоскоолдук кылат). Dtparam = audio = on деген сапты издеп, аны dtparam = audio = off деп өзгөртүңүз.

Эгерде баары жакшы түзүлгөн болсо (сиз Wstrict-protoypes жөнүндө бир нече эскертүүлөрдү аласыз), сиздин пицца матрица тактасын иштетүүгө даяр болушу керек. Баргыла жана аны жаап койгула (азыр судодо өчүрүү), розеткадан чыгаргыла, биз кийинки кадамда жарык тактасын пи менен байланыштырабыз.

3 -кадам: Pi + Matrix Hat + LED тактасын туташтырыңыз

Pi + Matrix Hat + LED тактасын туташтырыңыз
Pi + Matrix Hat + LED тактасын туташтырыңыз

Ошентип, азыр сиздин Пиңиз өчүрүлүп, розеткадан чыгарылганда, келиңиз, матрицалык шляпаны пи менен LED тактасын матрицалык шапкага туташтыралы. Эгерде сиздин Пиңиз андай эмес болсо, азыр аны ошол жерге коюуга ылайыктуу учур.

Матрицанын шляпасын Pi'ге GPIO төөнөгүчтөрү менен тизип, эки тараптан тең күч менен акырын ылдый түртүп орнотуңуз. Шапкадагы ургаачы баштар пионун GPIO төөнөгүчтөрүн так жаап турушу үчүн, төөнөгүчтөрдүн туура тизилгенин текшериңиз. Эгерде сиз аны туура эмес жайгаштырсаңыз, анда ал катастрофа эмес; аны акырын артка тартып, бүгүлгөн түйрүктөрдү түздөңүз.

Калпакты кийип алгандан кийин, Пиди чогулган LED тактасынын оң жагына коюңуз (кубаттуулукту дагы бир жолу текшерип, жебелер тактанын узундугунан Пини көрсөтүп жатканын текшериңиз) жана IDCди туташтырыңыз матрицанын шляпасына кабель.

Андан кийин, сиз матрицалык шляпанын терминалдык блогуна бийлик үчүн күрөк терминалдарын туташтыргыңыз келет. Сизде бир капталында эки күрөк туташтыргычы бар, бирок экөө тең ошол жерге туура келиши керек. Адегенде бурамаларды бошотуп алыңыз - Бул айтпаса да түшүнүктүү - 5В терминалдарын + деп белгиленген жагына койгонуңузду текшериңиз (бул кызыл болушу керек, бирок - дагы - туташтыргычтарыңызды эки жолу текшерип көрүңүз жана алар туура чыгарылган деп ойлобоңуз) жана -деп белгиленген тарабында GND терминалдары (алар кара болушу керек). Алар ошол жерде болгондон кийин, терминалдык блоктун үстүндөгү бурамаларды бекемдеңиз, жана сизде бул кадамдын башкы сүрөтүнө окшош нерсе болушу керек.

Азыр - сиз бул өзгөчө конфигурация эки тараптын күрөк терминалынын жарымын ачыкка чыгарып, матрицанын шляпасынын үстүндө миллиметрди гана көздөй (жана бири -биринен анча алыс эмес жерде) калганын байкагандырсыз. Raw Power бир нече вольтту жана бир нече амперди алып жүрөт. Бул, (экрандын аркы өйүзүнөн сурап жатканыңызды угуп жатам) чын эле муну кылуунун туура жолубу? Бул жакшы идеябы?

Жооп мындай (мен жооп берем, ийинимди куушурам) - жок, андай эмес. Муну кылуунун эң туура жолу-бул кубат кабелдерин чечип, аларды ошол терминалдык блоктун туура туташтыргычына кайра кысуу (же аларды жылаңач зымдар катары калтырып, блокко коннектору жок кошуу) болмок. Антпесе, күрөк туташтыргычтын ачык жагына жылуулукту азайтуучу түтүктөрдү койсоңуз же жөн эле электр лентасына ороп койсоңуз болот. Бирок дүйнө кулап, адам жалкоо жана бекер, ошондуктан мен андай кылган эмесмин.

Бирок - оролгон же оролгон - күрөк терминалдары терминалдык блокко туташкан жана биз кийинки кадамга өтүүгө даярбыз.

4 -кадам: RGB матрицасын текшериңиз

Эми сиздин Пи жарык тактасына туташтырылгандыктан, тактаны оодарыңыз жана Пиди кайра күйгүзүңүз. Пи сайылган соң матрицанын шапкесин иштете аласыз; эгер сиз шляпаны Пи алдында иштетсеңиз, анда Пи жетишсиз ток менен жүктөөгө аракет кылат жана ачуу нааразы болот (жана сизге ядро дүрбөлөңү түшүп, бирок жүктөлбөйт.)

Эгерде сиз матрицанын шляпасы менен Пиди жүктөөдө кыйынчылыкка туш болуп жатсаңыз, анда Pi үчүн жетиштүү кубаттуу электр энергиясын колдонуп жатканыңызды текшериңиз (2A+ жакшы болушу керек) жана шляпанын да, Piiди ошол эле электр тилкесине же узартуучу зымга салып, аларды чогуу иштетүү.

Pi жүктөлгөндөн кийин, биз матрицаларды текшерүүгө даярбыз. Python милдеттүү үлгүлөрү бар жерге барыңыз (cd/rpi-rgb-led-matrix/bindings/python/үлгүлөрү) жана төмөнкү буйрук менен айлануучу блок генераторун сынап көрүңүз:

sudo./rotating-block-generator.py -m adafruit-hat --led-чынжыр 4

Сиз муну sudo катары иштетишиңиз керек, анткени матрицанын китепканасы инициализацияда жабдыктарга төмөнкү деңгээлде жетүүнү талап кылат. -M панелдердин пи менен туташуу жолун көрсөтөт (бул учурда адафрут шляпасы) жана --led чынжыры -сиз ойлоп көрсөңүз -биз канча панелди чынжыр менен бириктирип койгонбуз. Бир панелдеги саптар жана мамычалар экөө тең демейки боюнча 32ге жетет, андыктан биз ал жердебиз.

Эми - сиз программаны аткаргандан кийин, экөөнүн бири (же, чынында, үчөөнүн бири) болот:

  • Эч нерсе болбойт
  • Сиз жарык тактаңыздын ортосунда жакшы айлануучу блокту аласыз.
  • Жарык тактасы иштейт, менимче, бирок көрүнөт … кызык (анын жарымы жашыл, кээ бир катарлары күйбөйт ж. Б.)

Эгерде эч нерсе болбосо, же панель кызыктай көрүнбөсө, ctrl+c баскычын басып, үлгү программасынан чыгыңыз, пи өчүрүңүз жана бардык туташууларыңызды текшериңиз (IDC кабели, кубаттуулугу, эки кубат булагы тең сайылганын текшериңиз ж. Б.) Ошондой эле калпактын туура туташканын текшериңиз; эгер аны оңдобосо, анда аны бир панельге түшүрүңүз (аны текшерүүдө --led-чынжыр 1ди колдонууну тактаңыз) жана панелдердин бири начар болушу мүмкүн экенин текшериңиз. Эгер бул иштебесе, hzellerдин көйгөйлөрдү чечүү кеңештерин караңыз. эгер ал дагы деле иштебесе, /r /raspberry_pi дарегине (же Adafruit форумдарын, эгер панелдериңизди Adafruitтен алган болсоңуз, же стек алмашуу ж.

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

5 -кадам: Мультиплексирлөө жана сканерлөө ылдамдыгы (же: мүрзөгө карай жолдо көз ирмемдик бурулуш)

Ошентип, мен Alibaba'дан панелдердин биринчи топтомун заказ кылганда кетирген каталарымдын бири - бул сырткы панелдерди алганым (эмне үчүн алар суу өткөрбөйт жана жаркырашат деп ойлодум). Аларды матрицалык шляпама байлаганымда, баары туура эмес көрүндү.

Мунун себебин түшүнүү үчүн, Адафруттун бул панелдердин кантип иштээрин сүрөттөгөн Фил Бургесске бир мүнөт бөлөбүз. Белгилей кетсеңиз, Бургесс панелдер бардык LED диоддорун бир убакта күйгүзбөй турганын белгилейт - алар катар топтомун жарык кылышат. Панелдин бийиктиги пикселдер менен бир убакта жанган катарлардын ортосундагы байланыш сканерлөө ылдамдыгы деп аталат. Мисалы, - 32x32 панелинде 1/16 сканерлөө менен, эки катар (1 жана 17, 2 жана 18, 3 жана 19 ж.. RGB матрицаларын башкарган китепканалардын көпчүлүгү сканерлөө ылдамдыгы пикселдин 1/2 бөлүгүндө турган панелдер үчүн курулган - башкача айтканда, алар бир убакта эки катар LED диоддорун айдашат.

Сырткы панелдер (жана кээ бир ички панелдер - заказ берүүдөн мурун өзгөчөлүктөрдү карап көрүңүз) сканерлөө ылдамдыгы пикселдиктин 1/4 бөлүгүн түзөт, демек алар бир убакта төрт сапты айдайт деп күтүшөт. Бул аларды жарык кылат (бул жакшы), бирок көптөгөн стандарттык коддор алар менен иштебейт (бул жаман). Мындан тышкары, алар пикселдердин ички тартибин бузушат, бул туура пикселдерди чечүү үчүн программалык камсыздоодо x жана y баалуулуктарын өзгөртүүнү талап кылат. Эмне үчүн мындай жол менен жасалган? Менде эч кандай түшүнүк жок Билесиңби? Андай болсо, мага айтып бериңизчи. Болбосо, ал сыр бойдон кала берет.

Демек, эгерде сизде бул сырткы панорамалардын бири бар болсо, анда (балким) ийгиликке жетесиз! hzeller жакында китепканасына ушул типтеги панелдердин жалпы конфигурациясын колдоону кошту. Бул тууралуу кененирээк проект үчүн github баракчасынан окуй аласыз, бирок --led-multiplexing = {0, 1, 2, 3} үлгү кодуна өткөрүп берсеңиз болот (ошондой эле сизде бар окшоп көрүнүшүңүз керек болушу мүмкүн) жарым узундуктагы панелдердин эки узундук чынжыры) жана ал иштеши керек.

Пикселди өзгөртүү моделдери бар, бирок колдоого алынбайт - жана (менин божомолумда) панелдеримде алардын бири бар! Ошентип, мен өзүмдүн трансформациялоочу кодумду жазышым керек болчу (мен дагы - эмне себептен болбосун - китепканага 16x32 сегиз панелин бириктирип койгондой иш кылышым керек). бул төмөнкүдөй:

def transformPixels (j, k): effJ = j % 32

effK = k % 32

modY = k

modX = j

#modX жана modY - өзгөртүлгөн X жана Y;

#effJ жана effK түртүүдөн мурун 32x32 матрицанын ичинде трансформация кылганыбызды текшериңиз

эгер ((effJ)> 15):

modX = modX + 16

эгер ((effK)> 7):

modY = modY - 8

modX = modX + 16

эгер ((effK)> 15):

modX = modX - 16

эгер ((effK)> 23):

modY = modY - 8

modX = modX + 16

#Андан кийин, биз аларды туура жерге түртөбүз (ар бир x+32 бир панелди жылдырат)

эгер (j> 31):

modX += 32

эгер (j> 63):

modX += 32

эгер (j> 95):

modX += 32

кайтуу (modX, modY)

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

6 -кадам: Стартборд программасы (же: Трекке кайтып, пикселге даяр)

Эми матрицаларыңыз иштей баштаганда жана барууга даяр болсоңуз, болгону стартборд программасын Пиңизге коюп, аны даярдаңыз. Pi колдонуучунун үй каталогунда экениңизди текшериңиз (cd /home /pi) жана төмөнкү буйрукту аткарыңыз:

git клону

Сизде үч файлды камтыган жаңы папка болушу керек: LICENSE.md, README.md жана starboard_s16.py. Стартборг программасын python аркылуу иштетип көрүңүз:

sudo python./starboard_s16.py

жана сиз ар кандай ылдамдыкта кыймылдап, ар кандай ылдамдыкта чирип бараткан бир топ бөлүкчөлөрдү алышыңыз керек. Ар 10 000 кене же ушуга окшош (сиз муну түзөтүү/өзгөртүү үчүн питон скриптине кире аласыз), ал режимдерин өзгөртөт (төртөө бар: RGB, HSV, Rainbow жана Greyscale).

Ошентип, азыр бир гана нерсе - старт кодун стартта иштетүү. Биз муну (sudo менен) /etc/rc.local түзөтүү аркылуу жасайбыз. Сиз эмне кылгыңыз келсе, скрипттеги "чыгуу 0" алдында төмөнкү сапты кошуңуз:

python /home/pi/starboard/starboard_s16.py &

Муну кылгандан кийин, пиди өчүрүп күйгүзүңүз - ал жүктөө ырааттуулугунан өткөндөн кийин, starboard_s16.py скрипти түздөн -түз башталууга тийиш!

Эгерде сиз сценарийди тегеректеп алгыңыз келсе, анда тартынбаңыз - бул GNU GPL 3.0 астында лицензияланган. Эгерде сценарий сиз үчүн иштебей калса же сизде көйгөй жаралса, анда мага githubдагы катаны билдирип коюңуз же мен аны оңдоо үчүн эмне кыла алам!

Сиз кыла турган акыркы нерсе - бул SSHди piге орнотуу, алыстан кирип, аны коопсуз түрдө өчүрө аласыз. Сиз / сөзсүз түрдө / сырсөзүңүздү өзгөрткүңүз келет (passwd буйругу аркылуу) жана sshти иштетүү боюнча көрсөтмөлөрдү бул жерден таба аласыз (ошондой эле буйрук сабынан).

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