Мазмұны:

Пипбой сынықтан жасалған: 26 қадам (суреттермен)
Пипбой сынықтан жасалған: 26 қадам (суреттермен)

Бейне: Пипбой сынықтан жасалған: 26 қадам (суреттермен)

Бейне: Пипбой сынықтан жасалған: 26 қадам (суреттермен)
Бейне: Фрида испустила дух, теперь фас на волка ► 18 Прохождение Dark Souls 3 2024, Шілде
Anonim
Image
Image
Пипбойдың жүрегін құру
Пипбойдың жүрегін құру

Бұл менің гараждағы кездейсоқ қоқыстардан және менің электронды компоненттер қорының рейдінен жасалған менің жұмысшы Пипбой. Мен бұл күрделі құрылысты таптым және маған бірнеше ай жұмыс қажет болды, сондықтан мен оны жаңадан бастаушылардың толық жобасы деп санамаймын. Қажетті дағдыларға пластмассадан және ағаштан жасалған бұйымдар, электроника мен кодтау кіреді. Корпус пластмассаның әр түрлі бөліктерінен жасалған және дәнекерленген. Мен GPI түйреуіштерінің бір бөлігіне дисплей тақырыбы орнатылған микро контроллер ретінде Raspberry Pi 0 қолдандым. Қалған түйреуіштер жарық диодты жүргізуге және түймелерді/басқару элементтерін қосуға арналған. Мен жобаны аяқтау үшін Python -да демо -экрандары бар «Pipboy» стиліндегі қолданушы интерфейсін жаздым.

Менің жобаға қойған мақсаттарым:

  • Жұмыс істеуге тура келді, яғни шын мәнінде заттарды жасайтын дисплей болуы керек
  • Мен әр түрлі экрандарды таңдау үшін «теру» болғанын қалаймын, өйткені ол мен үшін әрқашан Fallout интерфейсінің маңызды бөлігі болды.
  • Бүкіл құрылысты гаражда немесе кеңседе болған заттарды қолдана отырып аяқтау керек болды (бұған мүлде қол жеткізілмеді, бірақ мен жақындадым - оның 90% -дан астамы мен бұрыннан төсеп қойған заттар)
  • Киюге қажет

Менде бір мақсат болмады - бұл оны ойын ішіндегі модельдердің бірінің дәл көшірмесіне айналдыру - мен заттың «стилінде» құрастыруды жөн көремін, себебі ол маған кездейсоқ қажетсіз заттарды бейімдеуге мүмкіндік береді. маған шығармашылықпен айналысуға мүмкіндік береді. Ақырында, иә, мен бұны сатып алуға болатынын білемін, бірақ бұл да маңызды емес еді;)

Жабдықтар

Жабдықтар

  • Кең тесік құбыр (мысалы, ағызу құбырының бөлігі)
  • Пластмассалар (корпус жасау үшін де, сәндік мақсатта да)
  • Шағын контейнер
  • Көбіктен жасалған төсеніш
  • Raspberry Pi
  • 3,5 дюймдік дисплей
  • KY040 Айналмалы кодер
  • 3x жарықдиодты шамдар
  • 2x басу түймелері
  • Powerbank
  • Сымдар
  • Бұрандалар, желімдер, бояулар, толтырғыш және т

Құралдар

  • Dremmel
  • Кескіш және тегістеу қондырмалары бар көп құрал
  • Бұрғылау
  • Файлдар
  • Пісіру темірі
  • Ыстық желім мылтығы
  • Бұранда бұрағыш (тар)
  • Өткір пышақ
  • Көрдім

1 -қадам: Пипбойдың жүрегін қалыптастыру

Пипбойдың жүрегін құру
Пипбойдың жүрегін құру

Мен істеуім керек бірінші нәрсе-мен жұмыс жасай алатын форма факторында дисплей мен микроконтроллерді алуды қамтамасыз ету. Менде 3,5 дюймдік дисплей болды, ол Raspberry PI -дің GPIO түйреуіштеріне HAT ретінде орналасады, сондықтан мен оны қолдануға шешім қабылдадым. Мен оны 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…

Мен бұған байланысты гитубқа осы жұмысты орындау үшін жасаған нәрселерім туралы кейбір ескертулерді қосамын (дегенмен, тақырыпты оқығанымда, бұл белгілі бір жағдайларда/драйверлерде қалай жұмыс істейтіні туралы көптеген өзгермелілік бар, сондықтан сіздің жұмысыңыз өзгеруі мүмкін.).

2 -қадам: картоннан жасалған прототип

Картоннан жасалған прототип
Картоннан жасалған прототип
Картоннан жасалған прототип
Картоннан жасалған прототип
Картоннан жасалған прототип
Картоннан жасалған прототип

Мен корпуста қолдануға болатын ескі арық/құбырды таптым, бірақ мен экранның нақты аумағы мен басқару тақтасының дизайнын ойлап табуым керек болды. Бұл үшін мен жай ғана картоннан макет жасап, оларды құбырға бекіту үшін таспаны қолдандым. Біріншісі қарапайым «қорап» болды, бірақ ол тым қарапайым болып көрінді, сондықтан мен оны экран аймағын қызықты ету үшін өзгерттім және басқару панелінің бөлек аймағын қостым. Бұл азды -көпті соңғы дизайн болды (сіз көріп тұрғандай бірнеше түзетулер болды, бірақ ол жақын).

3 -қадам: прототиптен үлгіге

Прототиптен үлгіге дейін
Прототиптен үлгіге дейін
Прототиптен үлгіге дейін
Прототиптен үлгіге дейін
Прототиптен үлгіге дейін
Прототиптен үлгіге дейін

Енді менде риза болған прототип болды, мен картонды тегістеп, оны шаблонға айналдыра алдым, содан кейін мен оны ескі компьютердің корпусының бір бөлігіне айналдырдым. Кез келген ұқсас пластмасса жұмыс істейтін болады, мен жай ғана керек болған заттарды қолдандым. Белгіленгеннен кейін мен негізгі корпусты жинауға кірісу үшін бөліктерді кесіп алдым. Пайдалы кеңестер, пластмассаны белгілеуді де, кейіннен кесуді жеңілдету үшін мен алдымен кесу керек жерлерді маска таспасымен жауып тастадым, бұл маған шаблонды пластмассаға салудың жеңіл әдісін берді, және бірінші кесу кезінде кесу дискісінің сырғып кетуін тоқтатуға көмектесетін нәрсе.

4 -қадам: Screen & Pi үшін корпус қосыңыз

Screen & Pi үшін қорапты қосыңыз
Screen & Pi үшін қорапты қосыңыз
Screen & Pi үшін қорапты қосыңыз
Screen & Pi үшін қорапты қосыңыз

Мен экран аймағының бұрыштары қисық болғанын қалаймын, ал маған Pi мен дисплейді ұстап тұру үшін бірдеңе керек болды - менің шешімім - менде бар шағын пластикалық контейнер. Мен корпустың жоғарғы жағындағы тесікті кесіп, контейнерді осы арқылы жапсырдым. Содан кейін мен барлық жағын жабыстырдым. Мен дәнекерлеуді нығайтуға көмектесу үшін сода қосылған суперглюсті қолдандым. Кейінірек мен бәрін толтырып, тазарттым және оған «қалыпталған» сезім беру үшін бәрін салдым/тегістедім.

5 -қадам: Басқару тақтасы үшін қайталаңыз

Басқару тақтасы үшін қайталаңыз
Басқару тақтасы үшін қайталаңыз
Басқару тақтасы үшін қайталаңыз
Басқару тақтасы үшін қайталаңыз
Басқару тақтасы үшін қайталаңыз
Басқару тақтасы үшін қайталаңыз

Содан кейін мен дәл сол үлгіні басқару тақтасының корпусын салу үшін ауыстыру, кесу және желімдеу жасадым.

6 -қадам: Құбырды кесіңіз

Құбырды кесіңіз
Құбырды кесіңіз

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

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

Безель
Безель
Безель
Безель

Мен кездейсоқ өзіме мәжбүр еткен бір мәселе - дисплейдің айналасын контейнердің шетіне дейін толтыратын жапқышты ойлап табуға тырыстым. Өкінішке орай, дисплейдің жасалу жолында оны орнатуға көмектесетін дизайнында пайдалы ештеңе жоқ (саңылаулар немесе кез келген нәрсе сияқты), сондықтан да тақта дисплейді орнында ұстауға мәжбүр болды. Менің бірінші әрекетім (мұнда көрінді) пластик пен көбік қоспасы болды. Мен ақырында бұл туралы бірнеше рет қайталап көрдім және ол құрылыстың ең қиын бөліктерінің бірі болды. Кішкене толеранттылық пен панельдің де, дисплейдің де нәзік табиғаты нашарлады.

8 -қадам: батареяны тексеру

Батарея сынағы
Батарея сынағы
Батарея сынағы
Батарея сынағы
Батарея сынағы
Батарея сынағы

Осы сәтте мен оны USB желісінен тәуелсіз қалай іске қосу керектігін ойладым. Мен әр түрлі батареяларды сынап көрдім және Raspberry Pi + дисплейі онша қуатты тартпайтынын және тіпті менің кішкентай батарея пакеттерімнің бірінде жұмыс істегенде өте қуанышты екенін білдім (сауда -саттық көрмесі). Бұл шынымен сәттілік болды, өйткені пакет құрылыс ішіндегі бос орынға сәйкес келді (кейінірек фотосуреттер). Енді біз корпустың негізгі компоненттерін уақытша байланыстыра аламыз және оның алғашқы сынағын менің қолыма қосуға болады!

9 -қадам: сәйкестікті тексеру

Fit сынағы
Fit сынағы
Fit сынағы
Fit сынағы
Fit сынағы
Fit сынағы

Мұнда сіз компоненттердің астыңғы жағына кіруге рұқсат беру үшін негізгі құбырды қайда өзгерткенімді көре аласыз. Сіз сондай -ақ батареяның Pi контейнерінің бір жағындағы қуысқа жақсы орнатылғанына қалай сәттілікке жеткенімді көре аласыз. Ақырында облигацияларды тазарту, толтыру, тегістеу процесі басталды және дайын көріністі сезіну үшін праймерді қолдандым (бұл кезеңде мен оны бірнеше рет сүртетінімді білдім, және бұл праймердің барлығы дерлік кетеді), бірақ мен оның қалай көрінетінін білгім келді).

10 -қадам: Басқару элементтері мен егжей -тегжейлерді қосыңыз

Басқару элементтері мен егжей -тегжейлерді қосыңыз
Басқару элементтері мен егжей -тегжейлерді қосыңыз
Басқару элементтері мен егжей -тегжейлерді қосыңыз
Басқару элементтері мен егжей -тегжейлерді қосыңыз
Басқару элементтері мен егжей -тегжейлерді қосыңыз
Басқару элементтері мен егжей -тегжейлерді қосыңыз

Мен қызыл/сары/жасыл жарықдиодты өлшегішті, сондай -ақ айналмалы циферблатты және кем дегенде 2 түймені жасауды қаладым. Мұның бәрі басқару тақтасының бөлігіне орнатылды - бұл барлық қажетті тесіктерді бұрғылауға арналған жағдай. Мен сондай -ақ бөлшектерді және корпус пен басқару тақтасына көбірек қызығушылық қосу үшін пластикалық бөлшектердің кішкене бөлшектерін (негізінен жиынтықтан жасалған) қосуды бастадым.

11 -қадам: Bezel No3 қайта құру

Bezel №3 қайта құру
Bezel №3 қайта құру
Bezel №3 қайта құру
Bezel №3 қайта құру
Bezel №3 қайта құру
Bezel №3 қайта құру

Жоғарыда айтқанымдай, мен бұл конструкцияға арналған жапқышпен күресіп, оны бірнеше рет қайта салдым. Бұл мен тоқтаған үшінші қайталау. Менің көзқарасым бойынша, қатты тақтаны қолданып, екі түрлі пішінді қиып аламын, бір ойлаушы екіншісіне қарағанда, содан кейін оларды ортасында суретті қалыптастыру үшін жабыстырды (және қыстырды). Бұл пішіндер квадраттық дисплейдің ішінде орналасуына мүмкіндік берді, содан кейін ол дисплейді контейнер ішінде орнында ұстады (3 -суреттегідей). Бұл маған 4 кішкене бұранданы қондырғы ретінде қолдануға жеткілікті материал берді - мен оны корпустың ішіне мықтап бекітетінмін, және ол өз кезегінде экранды тұрақты және қауіпсіз ұстайды. Ретроспективада мен монтаждаудың жақсы нұсқалары бар дисплейді табамын (немесе менде жоқ 3D принтерді қолданамын).

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

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

Мен қарапайым схемаларды орналастыру үшін тақтаны қолданамын, және мен көбінесе жобаның бұл бөлігін негізгі корпустың басқа кеңістігінде жасайтындықтан, мен оны басқа Raspberry PI -мен біріктірдім. Мұнда мен 3 -ші модельді қолдандым, ол маған оған тікелей қосылуға және IDE бортында жұмыс жасауға біраз күш берді. Бұл мен үшін кодтың жылдам прототипін біршама жеңілдетті. Қашықтан қосудың/кодын/отладтаудың басқа да көптеген әдістері бар, бұл мен осында жасағанды қалайды.

Мұндағы дизайн біз үшін өте қарапайым.

  1. Айналмалы кодер - бұл басу бағыты мен басу түймесін өңдеу үшін жер мен GPIO түйреуіштерін қолданады.
  2. Бірнеше түйме, олар тек бір ғана GPIO түйреуішін қолданады
  3. 3 жарықдиодты, олардың әрқайсысының шығуын тоқтататын кірістірілген қарсылықтары бар, бәрі ортақ жерге барады, бірақ әрқайсысына жеке GPIO түйреуіші бар, олардың әрқайсысына жеке қарауға болады.

Бұл маған өлшеуішке арналған 3 жарықдиодты, пипбойдағы экрандар арқылы айналатын кодерді және әрекеттерді басқару үшін 3 түймені берді (біреуі айналмалы кодерде, екеуі бөлек сымды). Бұл менің қолымнан келетіннің бәрі болды, ал дисплей түйреуіштерді алып, Pi GPIO стандартты схемасында бар нәрсені тұтынады. Дегенмен, бұл менің мақсаттарым үшін жақсы болды.

Екінші сурет мен барған соңғы ішкі орналасуды көрсетеді. Мен мұнда біраз уақыт өткіздім, мен компоненттерді басқарудың әдістерін сынап көрдім және мұның бәрін корпустың корпусына енгізер алдында тексердім. Барлық код github -та.

Айналмалы кодерлер туралы ескерту. Мен GPIO жоғары/төмен өзгерістерді қадағалау және оларды айналмалы позицияға салыстыру үшін жеке Rotary Encoder мемлекеттік машинасын жазуға көп уақыт жұмсадым. Мен мұнда жетістікке қол жеткіздім, мен оны «көп жағдайда» жұмыс істедім, бірақ әрқашан шеткі жағдайлар және (де) секіру және т.б. Дайын кітапхананы пайдалану әлдеқайда оңай және Python үшін оларды орнатуға болатын тамаша кітапхана бар. Мен мұны ақырында қолдандым, өйткені бұл мәселені шешуге жасты жөндеуге емес, құрылыстың қызықты бөлігіне назар аударуға мүмкіндік берді. Бұл үшін барлық мәліметтер бастапқы кодқа енгізілген.

Егер сіз Raspberry Pi, GPIO және электрониканы жаңадан білетін болсаңыз, мен сізге жоғарыдағы макетті жасау үшін қажет нәрсенің бәрін көрсететін келесі оқулықтарды ұсынамын;

projects.raspberrypi.org/kz/projects/physi…

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

13 -қадам: электрониканы денеге енгізу

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

Мен тақтаны пайдаланып макетті аяқтағаннан кейін, оларды пипбойдың корпусына қалай орнату керектігі туралы ойлануға уақыт келді. Мен болашақта бірдеңені жөндеу немесе өзгерту қажет болған жағдайда барлық электронды компоненттерді бөлшектеп, алып тастау үшін осылай жасағым келді деп шештім. Бұған қол жеткізу үшін мен барлық қосалқы бөлшектерді дюпонтты қосқыштардың көмегімен қосылатын етіп қосуды шештім.

Мен бірнеше ұзартқыш сымдарға дәнекерленген түймелер үшін және ұштарды оқшаулау үшін сым орамасын қолдандым, бұл оларды корпустан жинауға және бөлшектеуге мүмкіндік берді (мысалы, сынау үшін, содан кейін бояу және т.б.). Rotary Encoder -де дупонтты қосқыштарды қабылдай алатын түйреуіштер болды, сондықтан маған кейбір сымдардың ұзындығын дұрыс жасау керек болды.

Светодиодтар көп жұмыс жасады - бұл үшін мен жарық диодты орнату үшін алынбалы панель жасау үшін қолымдағы пластмассадан жасалған бөлшектерді қолдануды шештім. Содан кейін мен оларды ыстық жерге желімдеп, қарсылықтар мен сымдарды дәнекерледім. Бұл мен орнататын және алып тастайтын қондырғы бөлігін жасады, бояу мен әрлеуді жеңілдетті.

Менің дәнекерлеуім өте қорқынышты екенін ескеріңіз, сондықтан мен бұл қарапайым нәрсені сақтап, тым егжей -тегжейлі/ұсақ нәрседен аулақ болдым. Соңғы суретте сізде менде өте кішкентай (5x5) кең тақталар болғанын көре аласыз, мен олардың біреуін GPIO -ға қосатын/қосатын панельді қамтамасыз ету үшін ішіне орнатылғанын қолдандым. Әсіресе, бұл мен қолдана алатын жалпы жер үсті рельсін құру үшін пайдалы болды және Пи -ге оралатын жер сымдарының көп болуын болдырмау.

Содан кейін мен сымдарды Pi -ге жеткізу және GPIO -ға қосу үшін контейнерге әр түрлі тесіктерді кесіп алдым. Бұл дизайн қажет болған жағдайда бәрін шешуге мүмкіндік берді (мен құрылысты аяқтау кезінде бірнеше рет жасадым).

14 -қадам: фитингті дәл баптау

Фитингті дәл баптау
Фитингті дәл баптау
Фитингті дәл баптау
Фитингті дәл баптау

Осы кезде мен кейбір «жарамды» мәселелерге тап болдым. Біріншіден, сымдарды қосуға арналған дюпонды қосқыштарды қолдану оларды биіктікке рұқсат етілмегендіктен дисплей қалпақшасы бар түйреуіштерге бекіту қиынға соқты. Мен мұны сатып алу арқылы шештім (бұл осы жоба үшін мен сатып алған бірнеше заттардың бірі), мен GPIO түйреуішінің кішкентай ұзартқышын алдым, ол үшін дисплей қалпағын жоғары қойып, қалған GPIO түйреуіштеріне дюпонтты коннекторлардың көмегімен кіруге мүмкіндік берді.

Мен контейнердің ішкі жағын толтыру үшін көбік төсенішінің кішкене бөліктерін кесіп алдым, бұл Pi + дисплейін дұрыс орынға қоюға және оның қозғалуын тоқтатуға көмектесті.

15 -қадам: Айналмалы кодерді ретро

Айналмалы кодерді ретро
Айналмалы кодерді ретро

Айналмалы кодерлер жиі (менікіндей) заманауи жылтыр «hi fi» стиліндегі тұтқамен келеді. Бұл құрылысқа мүлдем сәйкес келмеді, сондықтан мен басқа нәрсені ойлап табуға мәжбүр болдым. Менің кездейсоқ бөлшектер қорабында мен бұрыннан сынған бұрғыдан ескі тісті кездестірдім. Бұл жақсы көрінді, бірақ айналмалы кодерге сәйкес келмеді. Менің шешімім - айналмалы дөңгелекке сәйкес келетін қондырғы табылғанша әр түрлі қабырғадағы штепсельдерді сынап көру, содан кейін оны пішініне қарай кесу, мен оны бұрғылау тісті дөңгелекті кодерге бекіту үшін «ішкі жағасы» ретінде пайдалану үшін қолайлы тақырыпқа айналдырдым. бақылау.

16 -қадам: Ішкі төсем

Ішкі төсем
Ішкі төсем
Ішкі төсем
Ішкі төсем

Еденге арналған көбік плиткалары көбірек! Бұл жолы мен оларды ыңғайлы орналастыру үшін жұмсақ төсем салу үшін қолдандым (тым бос емес). Көбіктен тесік кесу арқылы мен Pi контейнері жасайтын «түйіршікті» сіңіре алдым. Тұтастай алғанда, бұл оны әлдеқайда тозатын етті. Бұл фотосуреттерде көрсетілмеген, бірақ мен оны негізгі корпустан сәл үлкен етіп жасадым, сондықтан оның ұштары көрініп тұрды, мен оны кейін боядым және мұның бәрі дайын затқа сәл контраст пен қызығушылық қосуға көмектесті.

17 -қадам: Мәліметтерді қосу

Мәлімет қосу
Мәлімет қосу
Мәлімет қосу
Мәлімет қосу

Декорация қосуды және оны қызықты етуді бастау уақыты келді. Біріншіден, мен оған біршама визуалды қызығушылық беру үшін пластмассаның бірнеше бөлігін қостым. Содан кейін мен кейбір терминалдарға жалған сымдарды қостым және оларды корпуста тесілген тесікке итеріп жібердім. Мұның бәрі кейінірек түрлі түстермен боялған.

18 -қадам: Денені бояу және әрлеу

Кескіндеме және денені әрлеу
Кескіндеме және денені әрлеу
Кескіндеме және әрлеу корпусы
Кескіндеме және әрлеу корпусы
Кескіндеме және әрлеу корпусы
Кескіндеме және әрлеу корпусы

Мен ескірген және бәрібір жақсы пайдаланылатын сияқты таза тазалыққа аса мән бермедім (шын мәнінде мен қайтып ораламын және оған біршама ауа райын жасай аламын). Бірақ мен бұл кездейсоқ қоқыстардан бас тартпаған, дәйекті және толық нысанға ұқсағысы келді (бұл дәл солай болса да). Мен тегістеудің, толтырудың көптеген қайталауларынан өттім (миллипут - менің пластикке арналған толтырғышым) және қайталау. Содан кейін праймер мен бояудың бірнеше қабаты барлық қосылыстарды тегістеуге көмектеседі. Содан кейін көбірек тегістеу және толтыру, сонымен қатар бояу.

Мен бақытты болған денемді көріп, сезінгеннен кейін мен егжей -тегжейлі мәліметтерді қосуды бастадым. Мен оларға торға жақсы әсер ету үшін басқару элементтеріндегі грильде ысқылау мен ысқылауды қолдандым. Мен сондай -ақ акрилді қолдана отырып, бояудың кішкене бөлшектерін қостым.

Мен кездейсоқ жапсырмалар жинағын қазып алдым және әсерді аяқтау үшін бірнеше қостым. Содан кейін мен қолым жетпейтін жерлерге кір мен кірді тазалау қиын болатын жерлерге кір мен кірді қосу үшін аралас бояулармен ауа райын жууды жасадым. Мүмкін, бұл қазіргі уақытта сәл нәзік, және мен қайтып оралып, кейінірек тағы біразын қосуым мүмкін.

19 -қадам: кодтау

Кодтау
Кодтау

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

Мен мұны Raspberry Pi, GPIO және т. нәтижесінде тәртіпсіздік. Мен мұны уақыт өте келе жаңартып отырамын, өйткені мен мұнда жасағым келген нәрсені толығымен аяқтаған жоқпын, бірақ қазір барлық негізгі түсініктер бар болғандықтан бөлісуге жеткілікті жақын.

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

Қолданылатын негізгі кітапханалар:

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

Экранды өңдеу дизайны туралы ескерту. Экран код ішіндегі атаулар тізімі ретінде анықталады. Тізімдегі әрбір жазба-p.webp

Бұл файлдардың мазмұны басқа жерде (қолмен немесе басқа сценарийлермен) жасалады, олардың шығысы-p.webp

Нақты уақытта есептелетін және анимацияланған кездейсоқ радио экранының толқындық формасы сияқты бірнеше нәрсе кодталған кезде ерекше жағдайлар бар.

Егер ұқсастық көмектесетін болса, интерфейс дизайнын өте қарапайым және қарапайым веб -шолғыш деп ойлаңыз - әр «экран» тек бір png, бір txt файлынан немесе екеуінің тіркесімінен тұратын қарапайым веб -бетке ұқсайды. Олардың мазмұны тәуелсіз және интерфейс браузер веб -бетті салғандай етіп жасалады.

Мұнда мен пайдаланған негізгі кітапханаларға сілтемелер бар:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

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

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

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

21 -қадам: Түгендеу экраны

Түгендеу экраны
Түгендеу экраны

Pi жобаларында әрқашан пайдалы болатын нәрсе - бұл IP -адрес сияқты негізгі ақпаратты DHCP және т.б. көрсетудің әдісі. Мен инвентаризация экранын Pi «түгендеудің» дисплейі ретінде жүктеуді шештім - қандай процессор, жады, IP -адрес т.б. Мен бұл ақпаратты жинау үшін кішкене Linux сценарийін жаздым және оны интерфейс жүйесі қабылдайтын және көрсететін сәйкесінше аталатын мәтіндік (.txt) файлға қайта бағыттау үшін жаздым. Осылайша, егер мен басқа жерде болсам, мен сценарийді өшіре аламын және жаңа IP -мекен -жайы бар жаңа.txt файлын ала аламын.

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

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

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

Плиткалар бірнеше түсте түседі, бірақ мен жасыл масштабтағы суреттің Пипбойдың келбеті мен сезіміне сәйкес келуін қалаған едім, мен дәл солай таба алмадым, сондықтан мен түстерді қайталау үшін Python-да жасыл масштабты сүзгіні жаздым. openstreetmap тақтайшасын ашыңыз, содан кейін жаңа суретті-p.webp

Жоғарыда көрсетілген процесс кезінде шамамен орналасуы мен координаттары бар мәтіндік файл құрылады, ал карта тақтайшасы-p.webp

23 -қадам: Мәліметтер экраны

Мәліметтер экраны
Мәліметтер экраны

Бұл өлшемді/орналасуды тексеруге көмектесу үшін көрсетілетін тест картасы (басқа python сценарийі және-p.webp

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

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

Карта экранымен қатар, бұл маған көп жұмыс жасаған басқа экран. Бұл мен анимациямен ойнаған жалғыз экран - және ол әдетте ойдағыдай жұмыс істейді, бірақ өнімділік СКД экранының жаңару жылдамдығымен әлі де проблема болып табылады. Экранның құрылымы - бұл кездейсоқ таңдалған радио атауларын қамтитын мәтіндік файл (бұл жай ғана ерікті жолдар және экранда тізімді көрсетуден басқа ештеңе жасамайды), графикалық аймақтың осі бар-p.webp

Бұл - цикл кезіндегі кез келген нақты жұмысты орындайтын жалғыз экран, ол жаңа толқын пішінін есептеп, экранның осы өмірдегі бөлігін өшіріп, қайта сызуы керек.

25 -қадам: Қорытынды ойлар

Image
Image
Қорытынды ойлар
Қорытынды ойлар

Бұл, мүмкін, мен жасаған әр түрлі тұжырымдамалар мен дағдыларды игерген ең күрделі құрылыс, бірақ сонымен қатар, бұл нәтиже беретін шынайы нәрселердің бірі. Мен әлі де кейбір техникалық ескертулерді, сонымен қатар код үшін github репо -нұсқасын жинастырудамын. Мен мұның бәрін жақын арада қол жетімді етемін, сондықтан мен оларды тіркеуге қосатын уақытым болғандықтан, толығырақ ақпарат алу үшін тез арада қайта оралыңыз.

Егер сіз осындай нәрсені жасағыңыз келсе, мен нәтижені көргім келеді, егер сізде сұрақтар туындаса, хабарласыңыз, мен сізге көмектескіңіз келетін кез келген қадамда қосымша ақпарат қосуға тырысамын.

26 -қадам: Github -те код ашылады

Github -та код ашылады
Github -та код ашылады

Мен ақыры Github -та кодты ашуға тура келді. Оны мына сілтеме бойынша алуға болады:

Ұсынылған: