Përmbajtje:

Raspberry Pi IoT Foosball Table: 11 hapa
Raspberry Pi IoT Foosball Table: 11 hapa

Video: Raspberry Pi IoT Foosball Table: 11 hapa

Video: Raspberry Pi IoT Foosball Table: 11 hapa
Video: Things Mr. Welch is No Longer Allowed to do in a RPG #1-2450 Reading Compilation 2024, Nëntor
Anonim
Raspberry Pi IoT Foosball Table
Raspberry Pi IoT Foosball Table

Mirësevini në versionin tim të një tryeze të futbollit të hakuar, si pjesë e një projekti studentor për teknologjinë e re të mediave dhe komunikimit. Unë në thelb jam rritur rreth foosball dhe tavolinave të pishinës kështu që mendova se do të ishte mirë të përpiqesha të lidhja një nga këto pajisje me internetin.

Konfigurimi kryesor është përdorimi i një tabele foosball ekzistuese të lidhur me një Raspberry Pi e cila mund të bëjë të gjitha detyrat e mëposhtme:

  • Përdor kunjat GPIO për të drejtuar IR LED/Marrësit dhe modulet e matricës me pika 8x8
  • Drejton një faqe në internet Flask duke përdorur nginx
  • Drejton një bazë të dhënash MySQL/MariaDB për ruajtjen e të dhënave

Për të qenë në gjendje të rikrijoni këtë projekt do t'ju duhen aftësitë e mëposhtme:

Përfundimi:

  • Kuptimi i HTML/CSS/Javascript për klientin e faqes në internet
  • Kuptimi i Python me Flask/Flask-SocketIO/Jinja2 për anën e serverit të faqes në internet
  • Njohuri bazë të MySQL
  • Dini si të drejtoni një server në internet

Prototip

  • Njohuri themelore se si të lidhni një qark elektrik
  • Bashkim
  • Kuptimi themelor se si të shkruani një skenar në Python
  • Puna me Linux (Raspbian)
  • Të kesh shumë durim sepse do të ketë shumë korrigjime të përfshira

Hapi 1: Materialet

Këtu është lista me të gjitha pjesët e nevojshme për tabelën:

  • Raspberry Pi Model 3 (me zorrë)
  • T-Cobbler për lidhjen e Pi me dërrasën e bukës
  • Tabela e Foosball (kam përdorur një tavolinë shumë të vjetër të ngjashme me këtë. Duhet të jetë e gatshme të shpojë vrima në të)
  • Moduli MAX7219 Arduino Dot Matrix (2)
  • Emetues IR LED (2+ sepse prishen, të ngjashëm me këtë)
  • Marrës IR (2+ sepse ato gjithashtu prishen, të ngjashme me këtë)
  • Fletë buke bazë pa saldim
  • Shumë dhe shumë tela (varet nga madhësia e tryezës së foosball)
  • lidhës meshkuj (30+)
  • lidhëset femra (10+)
  • Rezistenca 100-220 Ohm (4+)
  • materialet e saldimit
  • rripa teli
  • Mbajtëset LED
  • disa dru/vida në rast se dëshironi të transmetoni topin në ulluk

Kostoja totale e këtij projekti varet tërësisht nga kostoja e tryezës tuaj të futbollit (e shtrenjtë). Përveç tabelës, materialet do të jenë maksimale 150 euro.

Hapi 2: Qarku Elektrik

Qarku Elektrik
Qarku Elektrik
Qarku Elektrik
Qarku Elektrik
Qarku Elektrik
Qarku Elektrik

Para se të përpiqeni të bashkoni, mblidhni të gjithë përbërësit që ju rekomandoj ta provoni së pari në një pjatë. Isshtë më e lehtë të zëvendësosh përbërësit e dëmtuar para se të kalosh orë të tëra duke i bashkuar ato.

Në fillim u përpoqa të zbatoja Matricën LED 8x8 me një regjistër ndërrimi 74HC595 (imazhi i parë) dhe grup transistor, por për shkak të telave të shumtë dhe prodhimit shumë të ulët kalova në modulin MAX7219 Dot Matrix sepse merr vetëm 5 tela dhe drejtohet drejtpërdrejt nga një autobus SPI.

Qarku që përdor në fund është vizatuar me Fritzing. Ju lutemi vini re se IR LEDS dhe Marrësit mund të lidhen me cilindo nga kunjat tuaja falas GPIO.

Marrësit IR dhe LED duhet të jenë drejtpërdrejt njëri -tjetrit dhe pjesa e sipërme e LED duhet të drejtohet drejt marrësit. Sepse ne duam të simulojmë një rreze direkte e cila mund të thyhet nga lëvizja e topit, në të cilin rast do të ketë një ndryshim të gjendjes së vijës DATA të marrësit nga 0 në 1.

Hapi 3: Kodimi i sensorëve

Kodimi i sensorëve
Kodimi i sensorëve

Unë kam koduar shumicën e këtij projekti duke përdorur Pycharm sepse lejon vendosjen e lehtë të SSH në Raspberry Pi tuaj duke përdorur një përkthyes në distancë. Unë nuk do të flas në detaje se si funksionon ky program, por shumë informacion mund të gjenden në faqen e internetit të pycharm.

Aktualisht jam ende duke punuar në projekt, por pasi të jetë bërë gjithçka, i gjithë projekti do të jetë i disponueshëm në profilin tim github

Kodi për sensorët përbëhet nga 3 klasa të cilat ekzekutohen në një fije sfondi në serverin tim Flask (i cili do të shpjegohet më vonë):

  1. Klasa e Qëllimit (lidhja) -Ky skedar fillon të gjithë përbërësit e veçantë, të cilët mund të thirren duke futur pajisjen e duhur SPI/autobusin dhe numrin pin
  2. Klasa e Matricës (lidhje) -Kjo është klasa kryesore për të fuqizuar modulin MAX7219
  3. Klasa LED dhe Marrës (lidhje) - Kjo është klasa kryesore për të ndezur rreze infra të kuqe duke përdorur fije të veçanta për të zvogëluar ngarkesën e CPU të RPi

LED dhe marrësi të dy punojnë në një frekuencë 38kHz dhe marrësit gjithmonë presin që një impuls 50% lart dhe 50% poshtë të funksionojë siç duhet.

Hapi 4: Përgatitja dhe vendosja e sensorëve

Përgatitja dhe vendosja e sensorëve
Përgatitja dhe vendosja e sensorëve
Përgatitja dhe vendosja e sensorëve
Përgatitja dhe vendosja e sensorëve
Përgatitja dhe vendosja e sensorëve
Përgatitja dhe vendosja e sensorëve

Tani do të përgatisim LED dhe marrësin IR. Në foton e tabelës mund të gjeni vendet ku duhet të vendosen RPi dhe sensorët.

Por së pari ne duhet të përgatisim instalimet elektrike:

  1. Sigurohuni që të matni sasinë e telit të nevojshëm nga vendndodhja RPi/breadboard në vendndodhjen e sensorit
  2. Ngjitni kunjat e marrësit IR në një skaj të telit (COM/GND/V+)
  3. Lidhni pjesët lidhëse mashkullore në skajin tjetër të telit

Tani do të përgatisim tabelën:

  1. Bëni një vizatim bazë (bazuar në figurë) se ku të stërviteni. Veryshtë shumë e rëndësishme që 2 vrimat të jenë të përafruara me njëra -tjetrën sepse kjo do të jetë vendndodhja e rrezes.
  2. Stërvitni vrimat
  3. Nëse keni disa mbajtëse LED (lidhje) mund t'i vendosni ato brenda vrimës për ta bërë atë më të fortë
  4. Futni + kasetë marrësin LED + në të dy anët
  5. Lidhni telat + ngjitini në dru në mënyrë që të mos kalojnë shumë
  6. Vendosni kunjat mashkullore në tabelën e bukës sipas qarkut të dhënë më parë

Hapi 5: Përgatitja dhe vendosja e modulit të matricës

Përgatitja dhe vendosja e modulit të matricës
Përgatitja dhe vendosja e modulit të matricës

Më tej ne do të lidhim 2 module të matricës LED

Shënim:

Për shkak se kam përdorur një tavolinë të vjetër foosball, tashmë kishte vrima që ngriheshin drejt pjesës së sipërme për shkak të mbajtësve të cigareve. Nëse nuk i keni këto, do t'ju duhet t'i krijoni ato.

Për të përgatitur telat:

  1. Matni tela nga pllaka e bukës drejt pjesës së sipërme të tryezës
  2. Lidhni disa lidhje femra në skajin e parë të telit
  3. Lidhni disa lidhje mashkullore në skajin tjetër të telit

Vendosja e matricës:

  1. Nxirrni matricën përmes vrimës në krye
  2. Rrip + ngjitni telat brenda në dru për të shmangur kalimin
  3. Vendosni kunjat mashkullore në tabelën e bukës sipas cirkuit të dhënë më parë

Në një moment do të shtoj një hap të vogël DIY për të shtuar një shtresë për modulin e matricës, por tani për tani ata janë të zhveshur.

Hapi 6: Bërja e tij IoT

Duke e bërë atë IoT
Duke e bërë atë IoT

Nëse thjesht doni të regjistroheni dhe shfaqni rezultatet, mund ta përfundoni projektin duke shkruar një skenar të vogël python që funksionon që bën sythe derisa një nga rezultatet të arrijë në 9 dhe pastaj të rivendoset.

Sidoqoftë, nëse doni ta lidhni tryezën tuaj me internetin, hapat e ardhshëm duhet të jenë në rrugën tuaj.

Në hapat e ardhshëm ne do të adresojmë sa vijon:

  • Konfigurimi i Raspberry Pi
  • Krijimi i një baze të dhënash për ruajtje
  • Krijimi i faqes në internet
  • Duke e vënë atë në internet

Në këtë pikë, nëse jeni të njohur me git, ju rekomandoj të krijoni një depo në GitHub/GitLab për të mbajtur nën kontroll skedarët tuaj. Nëse nuk jeni, mund të krijoni një dosje me të njëjtën strukturë si në foto.

Projekti i plotë do të jetë i disponueshëm së shpejti në GitHub. Sidoqoftë, një skedar i përkohshëm rar me të gjithë skedarët e nevojshëm është në dispozicion.

Hapi 7: Lidhja e Raspberry Pi

Tjetra ne do të konfigurojmë mjedisin mjedër pi, për ta bërë këtë ju duhet të ekzekutoni hapat e mëposhtëm:

  • Lidhuni me SSH me Rasberry Pi tuaj (mund të përdorni PuTTY)
  • Krijoni një dosje (shembull mkdir project) dhe kaloni në këtë dosje duke përdorur komandën cd
  • Krijoni një mjedis virtual Python në këtë dosje duke përdorur komandën python3 -m venv --system-site-packages env
  • Aktivizoni përkthyesin virtual me komandën source/env/bin/activ
  • Instaloni paketat nga kërkesat.txt me komandën python -m pip install package -name
  • Transferoni skedarët nga skedari i dhënë më parë project_example.rar mbi SSH në dosjen e projektit tuaj

Tani duhet të jeni në gjendje të ekzekutoni projektin e plotë në Raspberry Pi tuaj. Unë ju këshilloj të përdorni një Python IDE si PyCharm i cili ju lejon të përdorni për të debuguar nga përkthyesi juaj në distancë mbi SSH dhe për të ngarkuar drejtpërdrejt ndryshimet nëse është e nevojshme.

Hapi 8: Vendosja e bazës së të dhënave

Vendosja e bazës së të dhënave
Vendosja e bazës së të dhënave

Tani ju duhet të krijoni një bazë të dhënash shumë bazë, bazuar në këtë model.

Mënyra më e lehtë për ta bërë këtë është krijimi i bazës së të dhënave tuaja në tryezën e punës MySQL ku mund të bëni edhe testime.

Pasi të keni mbaruar, mund të eksportoni një deponi të bazës së të dhënave tuaja dhe ta ngarkoni në RPi tuaj dhe pastaj ta ekzekutoni me sudo mariadb <pathtofile/file.sql

Hapi 9: Krijimi i Uebfaqes

Krijimi i Uebfaqes
Krijimi i Uebfaqes
Krijimi i Uebfaqes
Krijimi i Uebfaqes
Krijimi i Uebfaqes
Krijimi i Uebfaqes

Më tej mund të analizoni (dhe përdorni) kodin e dhënë në skedarin project_example.rar.

Skedari kryesor është Flask.py i cili është bukë dhe gjalpë i këtij projekti:

  • Drejton një aplikacion Flask-SocketIO që trajton pjesën e pasme të faqes në internet
  • Krijon një lidhje midis bazës së të dhënave dhe Flask
  • Siguron vërtetimin e hyrjes dhe regjistrimin e përdoruesit
  • Ofron kodin e nevojshëm se si të luani një lojë përdor socketio për të përditësuar uebfaqen në kohë reale gjatë lojës
  • Vendos rezultatet e lojës në bazën e të dhënave

Në dosjet statike dhe modele mund të gjeni HTML/CSS/JS të cilat ofrojnë pjesën e përparme të faqes në internet. Ndjehuni të lirë t'i modifikoni ato sipas dëshirave tuaja.

Hapi 10: Lidhja me World Wide Web

Për të lidhur faqen tonë në internet ne do të përdorim nginx dhe uwsgi. Në shembullin e projektit mund të gjeni skedarët e nevojshëm në dosjen conf.

Para së gjithash ju duhet të azhurnoni sa vijon në këto skedarë:

  • Në uwsgi-flask.ini ju duhet të ndryshoni rrugën e parametrit virtualenv në përkthyesin tuaj
  • Në projektin-flask.service ju duhet të azhurnoni pjesën [Service] të skedarit me kredencialet tuaja dhe shtigjet për skedarët e lidhur
  • Në skedarin nginx ju duhet të azhurnoni serverin dhe vendndodhjen / shtegun në prizën tuaj të lidhur

Tjetra ju duhet të zëvendësoni skedarin e parazgjedhur të serverit nginx me vendndodhjen e skedarit tuaj të konfigurimit nginx, më poshtë është një shembull i komandave linux për ta bërë këtë

  • me@my-rpi:/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • me@my-rpi:/project1 $ sudo rm/etc/nginx/faqet e aktivizuara/parazgjedhur t
  • me@my-rpi:/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • me@my-rpi: ~/project1 $ sudo systemctl rinis nginx.service

Së fundi ju duhet të shtoni shërbimet e personalizuara në dosjen tuaj të sistemuar, ky është një shembull se si ta bëni atë:

  • me@my-rpi: ~/project1 $ sudo cp conf/project1-*. shërbim/etc/systemd/system/
  • me@my-rpi: ~/project1 $ sudo systemctl daemon-ringarkoni
  • me@my-rpi: ~/project1 $ sudo systemctl fillo projektin1-*
  • me@my-rpi: ~/project1 $ sudo systemctl status project1-*

Nëse dëshironi që serveri i uebit të fillojë në nisjen e piut tuaj të mjedrës, duhet të përdorni komandën e shërbimit sudo systemctl për projektin1-*.

Nëse bëhet siç duhet, pas një rindezjeje të sistemit, faqja juaj e internetit duhet të funksionojë në adresën tuaj IP. Nëse dëshironi të redaktoni një nga këto skedarë konfigurimi, gjithmonë duhet të ndaloni shërbimin, të ringarkoni skedarët dhe të përdorni komandën daemon-reload e ndjekur nga një fillim, përndryshe ndryshimet nuk do të jenë efektive.

Hapi 11: Përfundimi i fikur

Përfundimi i fikur
Përfundimi i fikur

Ndërsa shkruani pjesën e fundit të këtij udhëzimi, ky projekt i vogël shkollor është ende një punë në progres.

Kam kaluar orë të panumërta për ta bërë këtë në 2.5 javë. Edhe pse gjithçka u nxitua pak, unë jam akoma krenar për atë që kam arritur. Gjatë fazës së montimit kam hasur në gabime/gabime të panumërta/sensorë të gabuar, kështu që mos u dekurajoni nëse gjithçka nuk funksionon në përpjekjen e parë.

Gjëja më e mirë që mund të bëni është të kërkoni ose kërkoni ndihmë në internet, ka shumë njerëz me njohuri shumë më të mira që janë shumë të etur për t'ju ndihmuar.

E fundit por jo më pak e rëndësishme dua të falënderoj mësuesit e mi nga Media e Re dhe Teknologjia e Komunikimit që më dhanë shumë këshilla dhe më ndihmuan të përfundoj këtë projekt.

Recommended: