Мазмуну:

Пипбой сыныктан курулган: 26 кадам (сүрөттөр менен)
Пипбой сыныктан курулган: 26 кадам (сүрөттөр менен)

Video: Пипбой сыныктан курулган: 26 кадам (сүрөттөр менен)

Video: Пипбой сыныктан курулган: 26 кадам (сүрөттөр менен)
Video: Насколько реален Pip-Boy из Fallout 2024, Июль
Anonim
Image
Image
Pipboy жүрөгүн куруу
Pipboy жүрөгүн куруу

Бул менин гараждагы туш келди калдыктардан жана менин электрондук компоненттеримдин рейдинен курулган менин иштеген Пипбой. Мен бул татаал курулушту таптым жана мага бир нече ай иштеди, ошондуктан мен муну толук башталгыч долбоор катары санабайт элем. Зарыл болгон көндүмдөргө пластмасса жана жыгачтан жасалган буюмдар, электроника жана коддоо кирет. Корпус пластмассалардын ар кандай бөлүктөрүнөн курулган жана ширетилген. Мен GPI казыктарынын бир бөлүгүнө дисплейдин башы орнотулган микро контроллер катары Raspberry Pi 0 колдондум. Калган казыктар светодиоддорду айдап, баскычтарды/башкаруу элементтерин туташтыруу үчүн колдонулат. Мен долбоорду аягына чыгаруу үчүн Pythonдо кээ бир демо экрандары бар "Pipboy" стилиндеги колдонуучу интерфейсин жаздым.

Менин долбоорго койгон максаттарым:

  • Иштеш керек болчу - б.а. иш жүзүндө нерселерди жасаган дисплей болушу керек
  • Мен ар кандай экрандарды тандоо үчүн "терүү" болушун каалачумун, анткени бул мен үчүн дайыма Fallout'тогу интерфейстин көрүнүктүү бөлүгү болчу.
  • Бүт курулушту мен гаражда же офисте болгон нерселерди колдонуу менен бүтүрүшүм керек болчу (буга толугу менен жетишилген жок, бирок мен жакындап калдым - мунун 90% дан ашыгы мурда эле тегерегиме коюлган нерселерди же нерселерди табышкан)
  • Кийиле турган болушу керек

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

Жабдуулар

Жабдуулар

  • Wide тешик чоор (мисалы, дренаждык түтүктүн бир бөлүгү)
  • Пластмассалар (корпусту түзүү үчүн да, декоративдик максаттар үчүн да)
  • Кичинекей контейнер
  • Көбүктөн жасалган пол
  • Raspberry Pi
  • 3,5 "дисплей
  • KY040 Rotary Encoder
  • 3x светодиоддор
  • 2x баскычтар
  • Powerbank
  • Электр өткөргүчтөрү
  • Бурамалар, клейлер, боектор, толтургуч ж

Куралдар

  • Dremmel
  • Кесүүчү жана тегиздөөчү тиркемелери бар көп курал
  • Бургулоо
  • Файлдар
  • Кандооч
  • Ысык клей
  • Бурама айдоочу (лар)
  • Курч бычак
  • Көрдүм

1 -кадам: Pipboy жүрөгүн куруу

Pipboy жүрөгүн куруу
Pipboy жүрөгүн куруу

Мен кылышым керек болгон биринчи нерсе, мен иштей турган форма факторунда дисплейди жана микро контроллерди ала алам. Мен 3.5 дисплейге ээ болдум, ал Raspberry PIдин GPIO төөнөгүчтөрүнө калпак болуп отурат, ошондуктан мен муну колдонууну чечтим. Мен аны Raspberry Pi 0 менен жупташтырып, анын жакшы иштегенине ынандым. Linuxту иштетүү керек болгон дисплейди таанууга бир нече кадам.

Экинчи сүрөттө көрүнүп тургандай, мен дисплейди колдоого жардам берүү үчүн корпуска чапталган кичинекей картон/көбүк платформасын коштум. Мен муну бул бөлүктү көп иштете турганымды билгендиктен кылдым жана колдоонун жоктугунан казыктарды же дисплейди сындыргым келбеди. Акыры бул алмаштырылды, бирок бул курулуш процессинде жакшы корголгон коргоочу.

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

Бул үчүн кээ бир пайдалуу шилтемелер:

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?f…

learn.sparkfun.com/tutorials/serial-periph…

Мен ошондой эле бул менен байланышкан githubга бул иштөө үчүн эмне кылганым жөнүндө кээ бир эскертүүлөрдү киргизем (бирок бул теманы окуганымда, бул белгилүү бир учурлар/драйверлер үчүн кандай иштээринде көп өзгөрмөлүүлүк бар, ошондуктан сиздин миляңыз өзгөрүшү мүмкүн).

2 -кадам: Картон прототипи

Картон прототипи
Картон прототипи
Картон прототипи
Картон прототипи
Картон прототипи
Картон прототипи

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

3 -кадам: Прототиптен шаблонго

Прототиптен шаблонго чейин
Прототиптен шаблонго чейин
Прототиптен шаблонго чейин
Прототиптен шаблонго чейин
Прототиптен шаблонго чейин
Прототиптен шаблонго чейин

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

4 -кадам: Screen & Pi үчүн Case кошуу

Экран жана Пи үчүн Case кошуу
Экран жана Пи үчүн Case кошуу
Экран жана Пи үчүн Case кошуу
Экран жана Пи үчүн Case кошуу

Мен экран аймагынын бурчтарынын ийри болушун кааладым жана мага Пиди кармап туруу үчүн бир нерсе керек болчу - менин чечимим болгон кичинекей пластик контейнерди колдонуу болчу. Мен дененин үстүнөн тешик кесип, контейнерди ушул аркылуу чаптадым. Анан мен бардык тараптарды бириктирип койгом. Мен ширелерди бекемдөөгө жардам берүү үчүн супер клейди мол сода менен колдондум. Кийинчерээк мен баарын иретке келтирүү үчүн "толтурулган" сезимди берүү үчүн баарын толтуруп, тапшырдым/кумдадым.

5 -кадам: Башкаруу панели үчүн кайталаңыз

Башкаруу панели үчүн кайталаңыз
Башкаруу панели үчүн кайталаңыз
Башкаруу панели үчүн кайталаңыз
Башкаруу панели үчүн кайталаңыз
Башкаруу панели үчүн кайталаңыз
Башкаруу панели үчүн кайталаңыз

Андан кийин, мен башкаруу панелинин корпусун куруу үчүн так ошол шаблонду алмаштырдым, кестим жана чаптадым.

6 -кадам: Түтүктү кесип салыңыз

Түтүктү кесип салыңыз
Түтүктү кесип салыңыз

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

7 -кадам: Безель

Bezel
Bezel
Bezel
Bezel

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

8 -кадам: Батареяны текшерүү

Батарея сыноосу
Батарея сыноосу
Батарея сыноосу
Батарея сыноосу
Батарея сыноосу
Батарея сыноосу

Бул жерде мен аны USBден көз карандысыз кантип иштетүү керектигин ойлондум. Мен ар кандай батарейкаларды сынап көрүп, Raspberry Pi + дисплейи анчалык көп күч тартпаганын жана менин кичинекей батарейкаларымдын биринде иштеп жатканына абдан кубанычта экенимди көрдүм (соода көргөзмөсүндөгү бекер жер). Бул чынында эле бактылуу болду, анткени пакет имараттын ичиндеги боштукка толук шайкеш келет (кийинчерээк сүрөттөр). Эми биз убактылуу дененин негизги компоненттерин скотч менен жабыштырып, анын биринчи сыноосун колума жүктөп алсак болот!

9 -кадам: Fit тестирлөө

Fit тестирлөө
Fit тестирлөө
Fit тестирлөө
Fit тестирлөө
Fit тестирлөө
Fit тестирлөө

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

10 -кадам: Control жана Detailing кошуу

Control жана Detailing кошуу
Control жана Detailing кошуу
Control жана Detailing кошуу
Control жана Detailing кошуу
Control жана Detailing кошуу
Control жана Detailing кошуу

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

11 -кадам: Bezel No3 кайра куруу

Bezel No 3 кайра куруу
Bezel No 3 кайра куруу
Bezel No 3 кайра куруу
Bezel No 3 кайра куруу
Bezel No 3 кайра куруу
Bezel No 3 кайра куруу

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

12 -кадам: Электрониканы прототиптөө

Электрониканы прототиптөө
Электрониканы прототиптөө
Электрониканы прототиптөө
Электрониканы прототиптөө

Мен жөнөкөй схемаларымды жайгаштыруу үчүн нан тактасын колдоном жана долбоордун бул бөлүгүн көбүнчө башка корпустун негизги бөлүгүнүн конструкциясында аткаргандыктан, аны башка Raspberry PI менен жупташтырдым. Бул жерде мен 3 -моделди колдондум, ал мага түздөн -түз туташууга жана бортто IDE иштетүүгө бир аз көбүрөөк күч берди. Бул жөн эле тез коддун прототиптөөсүн бир аз жеңилдетти. Алыстан туташуунун/кодун/мүчүлүштүктөрүн оңдоонун башка көптөгөн жолдору бар, бул мен каалаган нерсени гана жасоо.

Бул жердеги дизайн абдан түз, бизде;

  1. Ротари коддоочу - бул жерди жана GPIO казыктарын колдонуп, чыкылдатуу багытын жана баскычын чечет.
  2. Жуп баскычтар, булар бир эле GPIO пинди колдонушат
  3. 3 светодиоддор, алардын ар биринин кирүүсүнө тоскоол болгон каршылыгы бар, бардыгы бир жерге барышат, бирок ар бирине жекече мамиле кылуу үчүн GPIO пини бар.

Бул мага өлчөгүчүм үчүн 3 LED берди, пипбойдогу экрандарда айлануу үчүн айлануучу кодер жана 3 кнопканы басуу үчүн (бири айлануучу кодерде жана 2 өзүнчө зымдуу). Бул мен туура көргөн нерселердин бардыгы эле, жана дисплей бир топ казыктарды алып, стандарттык Pi GPIO макетинде бар нерселерди сарптайт. Бирок бул менин максаттарым үчүн жакшы болчу.

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

Ротари коддогучтар жөнүндө эскертүү. Мен GPIO жогорку/төмөн өзгөрүүлөрдү көзөмөлдөп, аларды Ротари Encoder мамлекеттик машинамды жазууга көп убакыт короттум жана буларды айлануучу позицияларга карта кылдым. Мен бул жерде ар кандай ийгиликтерге жетиштим, мен аны "көпчүлүк" учурларда иштедим, бирок ар дайым четки учурлар жана (де) секирүү ж. Даяр китепкананы колдонуу алда канча оңой жана Python үчүн орнотууга эң сонун китепкана бар. Мен муну акырында колдондум, анткени ал көйгөйлөрдү чечүү үчүн жаштарды сарптоонун ордуна, курулуштун кызыктуу бөлүгүнө көңүл бурууга мүмкүндүк берди. Бул үчүн бардык деталдар баштапкы кодго киргизилген.

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

projects.raspberrypi.org/en/projects/physi…

thepihut.com/blogs/raspberry-pi-tutorials/…

13 -кадам: Электрониканы денеге которуу

Электрониканы денеге которуу
Электрониканы денеге которуу
Электрониканы денеге которуу
Электрониканы денеге которуу
Электрониканы денеге которуу
Электрониканы денеге которуу

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

Мен кээ бир узартуучу зымдарга ширетилген жана учтарын жылуулоо үчүн зым оролгон баскычтар үчүн буларды корпустан чогултууга жана ажыратууга мүмкүндүк берди (мисалы, тестирлөө үчүн, анан боёк ж.б.). Rotary Encoder мурунтан эле дюпонт коннекторлорун кабыл ала турган казыктарга ээ болчу, ошондуктан мага кээ бир зымдарды узундугу туура кылышым керек эле.

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

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

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

14 -кадам: Фитти жакшы тууралоо

Фитти жакшы тууралоо
Фитти жакшы тууралоо
Фитти жакшы тууралоо
Фитти жакшы тууралоо

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

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

15 -кадам: Ротари коддогучту ретро

Ротари коддогучту ретро
Ротари коддогучту ретро

Ротари коддогучтар көбүнчө (меники сыяктуу) заманбап жылтырак "hi fi" стили менен келет. Бул курулуш үчүн таптакыр туура келбегендиктен, мен башка нерсени ойлоп табууга туура келди. Туш келди тетиктердин кутусунда мен көптөн бери сындырган бургулоодогу эски тишке туш келдим. Бул жакшы көрүндү, бирок айлануучу коддогучка туура келбеди. Бул жерде менин чечимим дубалдын штепсельдерин тапканга чейин сынап көрүү, андан кийин формасына чейин кесүү үчүн, аны бургулоочу тишти айлануучу коддогучка орнотуу үчүн "ички жака" катары колдонуу үчүн ылайыктуу болгон. көзөмөлдөө.

16 -кадам: Ички подкладка

Inner Lining
Inner Lining
Inner Lining
Inner Lining

Көбүрөөк пол плиткалары! Бул жолу мен аларды ыңгайлуураак кылуу үчүн жумшак подкладка куруу үчүн колдондум (өтө бош эмес). Көбүктөн бир тешикти кесүү менен мен Пи үчүн контейнер жасаган кээ бир "кесектерди" сиңире алдым. Жалпысынан алганда, бул аны алда канча эскирет. Бул сүрөттөрдө көрсөтүлгөн эмес, бирок мен аны негизги денеден бир аз чоңураак кылдым, анын учунда көрүнүп турду, кийинчерээк боёгом жана мунун баары даяр нерсеге бир аз контраст жана кызыгуу кошууга жардам берди.

17 -кадам: Чоо -жайын кошуу

Чоо -жайын кошуу
Чоо -жайын кошуу
Чоо -жайын кошуу
Чоо -жайын кошуу

Декорацияны кошуп, аны кызыктуу кылуу убактысы келди. Биринчиден, бир аз визуалдык кызыгуу үчүн бир бетине пластиктин сыныктарын кошуп койдум. Андан кийин кээ бир терминалдарга жасалма зымдарды кошуп, аларды корпуста тешилген тешикке түрттүм. Мунун баары кийинчерээк ар кандай түстөргө боёлгон.

18 -кадам: Денени сырдоо жана бүтүрүү

Денени сырдоо жана бүтүрүү
Денени сырдоо жана бүтүрүү
Денени сырдоо жана бүтүрүү
Денени сырдоо жана бүтүрүү
Денени сырдоо жана бүтүрүү
Денени сырдоо жана бүтүрүү

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

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

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

19 -кадам: Коддоо

Coding
Coding

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

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

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

Колдонулган негизги китепканалар:

  • pygame: Мен муну UIди иштетүү үчүн кыймылдаткыч катары колдоном, анткени ал каалагандай графиканы тартууга, сүрөттөрдү, шрифттерди иштетүүгө, толук экранга чыгууга ж.
  • pyky040: Бул айлануучу тергичтин иштешин камсыз кылат жана мага көп убакытты үнөмдөдү (муну чыгарган Рафаэль Янсиге чоң рахмат.
  • RPi. GPIO: Жакшы GPIO айдоо үчүн, мен бул жерде бир нече варианттарды ойнодум, бирок бул мага керектүү ийкемдүүлүк деңгээлин берди, айрыкча запастык GPIOну башка 3.3v катары айлануучу коддогучту ж.
  • ызы -чуу: перлин ызы -чуусун жаратуу үчүн, мага табигый көрүнгөн радио экраны үчүн туш келди толкун формасын түзүүгө уруксат берүү үчүн
  • Кезек: Мен айлануучу коддогучтан окуялардын убактысы бурулуп, ЖК дисплейинин (абдан) жай жаңыртуу ылдамдыгы менен капа кылган катага туш болдум. Акыр-аягы, мен муну чечкен жолум-айлануучу коддогучтан кирген окуяларды кезекке туруу жана экрандын жаңырышы менен аларды бирден тандоо.
  • os, sys, threading, time: баары стандарттык питон функциялары үчүн колдонулат

Экранды иштетүүнүн дизайны боюнча эскертүү. Экрандар коддун ичиндеги ысымдардын тизмеси катары аныкталат. Тизмедеги ар бир жазуу-p.webp

Ал файлдардын мазмуну башка жерде (кол менен же башка сценарийлер менен) түзүлөт, анын чыгышы-p.webp

Кээ бир нерселер коддолгон кызыктай учурлар бар - мисалы, кокустук радио экраны үчүн толкун формасы, ал реалдуу убакытта эсептелген жана анимацияланган.

Эгерде окшоштук жардам берсе, UI дизайнын өтө чийки жана жөнөкөй веб -браузер деп ойлоп көрүңүз - ар бир "экран" чындыгында жөнөкөй веб -баракчага окшош, ал бир гана png, бир txt файлынан же экөөнүн айкалышынан турат. Алардын мазмуну көз карандысыз жана браузер веб баракты тарткандай эле UI тарабынан тартылган.

Бул жерде мен колдонгон негизги китепканаларга шилтемелер:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

20 -кадам: Статистикалык экран

Статистикалык экран
Статистикалык экран

Классикалык пипбой силуэтинин статистикалык экраны болбосо, эч кандай пипбой толук болбойт. Бул үчүн менин бир досум статикалык-p.webp

21 -кадам: Инвентаризация экраны

Инвентаризация экраны
Инвентаризация экраны

Pi долбоорлорунда дайыма пайдалуу болгон нерсе - бул DHCP'ди ж.б. IP дареги сыяктуу негизги маалыматты көрсөтүү ыкмасы. Мен инвентаризация экранын Pi "инвентаризациясын" көрсөтүү үчүн ашыкча жүктөөнү чечтим - кандай процессор, эс тутум, IP дареги ж. Мен бул маалыматты чогултуу үчүн кичинекей Linux сценарийин жаздым жана аны UI тутуму алып, көрсөткөн текстке (.txt) ылайыктуу түрдө багыттоо үчүн жөнөттүм. Ошентип, эгер мен башка жерде болсом, мен сценарийди өчүрүп, жаңы IP дареги менен жаңы.txt файлын алам.

22 -кадам: Карта экраны

Карта экраны
Карта экраны

Бул экран иштөө үчүн эң татаал экрандардын бири болгон. Raspberry Pi 0 GPS модулу менен келбейт, бирок мен Картанын Pi болгон жерине кандайдыр бир күчкө ээ болушун кааладым. Буга менин чечимим - бул өзүнчө скрипт, ал Pi IP дарегин тартып, болжолдуу жайгашкан жерди издөө үчүн https://ipinfo.io колдонот. JSON жообу тартылып алынат, андан кийин мен координаттарды айландырам, ошондо openstreetmap.org плиткасын болжол менен жайгашкан жерге түшүрөм.

Плиткалар бир нече түстө түшөт, бирок мен жашыл масштабдагы сүрөттү Pipboyдун сырткы келбетине дал келтиргим келди, бирок таптакыр окшошун таба алган жокмун, ошондуктан түстөрдү кайра кароо үчүн Pythonдо жашыл масштабдуу чыпканы жаздым. openstreetmap плиткасын коюп, анан жаңы сүрөттү-p.webp

Жогорудагы процесстин жүрүшүндө болжолдуу жайгашуусу жана координаттары менен текст файлы түзүлөт жана карта плиткасы-p.webp

23 -кадам: Маалымат экраны

Маалымат экраны
Маалымат экраны

Бул жөн гана тест картасы (башка питон скрипти тарабынан түзүлгөн жана-p.webp

24 -кадам: Радио экраны

Радио экраны
Радио экраны

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

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

25 -кадам: Акыркы ойлор

Image
Image
Акыркы ойлор
Акыркы ойлор

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

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

26 -кадам: Githubда код ачык

Githubда код ачык
Githubда код ачык

Акыры Githubда кодду ачууга туура келди. Бул шилтемеде жеткиликтүү:

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