INHOUDSOPGAWE:

Raspberry Pi IoT Foosball Table: 11 stappe
Raspberry Pi IoT Foosball Table: 11 stappe

Video: Raspberry Pi IoT Foosball Table: 11 stappe

Video: Raspberry Pi IoT Foosball Table: 11 stappe
Video: Smarter than a Smart TV! (Raspberry Pi Inside) 2024, November
Anonim
Framboos Pi IoT tafelvoetbal
Framboos Pi IoT tafelvoetbal

Welkom by my weergawe van 'n gekapte tafelvoetbal, as deel van 'n studente -projek vir nuwe media en kommunikasietegnologie. Ek het basies grootgeword rondom voetbal- en pooltafels, en ek het gedink dit sal wonderlik wees om een van hierdie toestelle aan die internet te koppel.

Die belangrikste opset is om 'n bestaande tafelvoetbal te gebruik wat gekoppel is aan 'n Raspberry Pi, wat al die volgende take kan verrig:

  • Gebruik GPIO -penne om die IR LED/ontvangers en die matriksmodules van 8 x 8 punte aan te dryf
  • Bestuur 'n Flask -webwerf met behulp van nginx
  • Bestuur 'n MySQL/MariaDB -databasis vir die stoor van data

Om hierdie projek te kan herskep, benodig u die volgende vaardighede:

Agterkant:

  • Begrip van HTML/CSS/Javascript vir die kliënt van die webwerf
  • Python verstaan met Flask/Flask-SocketIO/Jinja2 vir die bedienerkant van die webwerf
  • Basiese kennis van MySQL
  • Weet hoe om 'n webbediener te bestuur

Prototipe

  • Basiese kennis oor hoe om 'n elektriese stroombaan aan te sluit
  • Soldeer
  • Basiese kennis oor hoe om 'n script in Python te skryf
  • Werk met Linux (Raspbian)
  • Met baie geduld, want daar sal baie ontfouting betrokke wees

Stap 1: Die materiaal

Hier is die lys met al die nodige dele vir die tabel:

  • Framboos Pi Model 3 (met omhulsel)
  • T-skoenmaker om die Pi aan die broodbord te koppel
  • Foosball tafel (ek het 'n baie ou tafel soortgelyk aan hierdie gebruik. Moet bereid wees om gate daarin te boor)
  • MAX7219 Arduino Dot Matrix Module (2)
  • IR LED -uitstralers (2+ omdat hulle breek, soortgelyk aan hierdie een)
  • IR -ontvangers (2+ omdat hulle ook breek, soortgelyk aan hierdie een)
  • Basiese soldeerlose broodbord
  • Baie draad (hang af van die grootte van die tafelvoetbal)
  • manlike verbindings (30+)
  • vroulike verbindings (10+)
  • 100-220 Ohm weerstande (4+)
  • soldeermateriaal
  • draadbande
  • LED houers
  • 'n paar hout/skroewe as u die bal in die geut wil plaas

Die totale koste van hierdie projek hang heeltemal af van die koste van u tafelvoetbal (duur). Behalwe die tafel kos die materiaal maksimum 150 euro.

Stap 2: Die elektriese stroombaan

Die elektriese stroombaan
Die elektriese stroombaan
Die elektriese stroombaan
Die elektriese stroombaan
Die elektriese stroombaan
Die elektriese stroombaan

Voordat u probeer soldeer, moet u al die komponente bymekaarmaak, wat ek sterk aanbeveel om dit eers op 'n broodbord te toets. Dit is makliker om foutiewe komponente te vervang voordat u ure daaraan gesoldeer het.

Eers het ek probeer om die 8x8 LED Matrix te implementeer met 'n 74HC595 -skofregister (eerste beeld) en transistor -skikking, maar vanweë die baie drade en die baie lae uitset het ek oorgeskakel na die MAX7219 Dot Matrix -module, want dit neem slegs 5 drade en word direk aangedryf deur 'n SPI -bus.

Die kring wat ek uiteindelik gebruik het, is met Fritzing geteken. Let daarop dat die IR LED's en ontvangers aan enige van u gratis GPIO -penne gekoppel kan word.

Die IR -ontvangers en LED moet regoor mekaar wees en die bokant van die LED moet na die ontvanger wys. Omdat ons 'n direkte balk wil simuleer wat deur die balbeweging gebreek kan word, in welke geval die DATA -lyn van die ontvanger van 0 na 1 sal verander.

Stap 3: Kodering van die sensors

Die kodering van die sensors
Die kodering van die sensors

Ek het die grootste deel van hierdie projek met Pycharm gekodeer omdat dit 'n eenvoudige SSH -implementering op u Raspberry Pi moontlik maak met behulp van 'n afgeleë tolk. Ek sal nie in detail gaan oor hoe hierdie program werk nie, maar daar kan baie inligting op die Pycharm -webwerf gevind word.

Ek werk tans nog aan die projek, maar sodra alles afgehandel is, sal die hele projek op my github -profiel beskikbaar wees

Die kode vir die sensors bestaan uit 3 klasse wat op 'n agtergronddraad op my Flask -bediener uitgevoer word (wat later verduidelik sal word):

  1. Die doelklas (skakel) -Die lêer begin al die afsonderlike komponente wat u kan gebruik deur die regte SPI -toestel/bus en speldommer in te voeg
  2. Die Matrix -klas (skakel) -Dit is die hoofklas om die MAX7219 -module aan te skakel
  3. Die LED- en ontvangerklas (skakel) - Dit is die hoofklas om die infrarooi breekstraal aan te skakel met behulp van aparte drade om die CPU -las van die RPi te verminder

Die LED en ontvanger werk albei op 'n frekwensie van 38 kHz, en die ontvangers verwag altyd dat die pols van 50% en 50% laer werk.

Stap 4: Die sensore voorberei en plaas

Die sensore voorberei en plaas
Die sensore voorberei en plaas
Die sensore voorberei en plaas
Die sensore voorberei en plaas
Die sensore voorberei en plaas
Die sensore voorberei en plaas

Nou gaan ons die IR LED en ontvanger voorberei. In die prentjie van die tabel kan u die plekke vind waar die RPi en sensors geplaas moet word.

Maar eers moet ons die bedrading voorberei:

  1. Maak seker dat u die hoeveelheid draad meet wat van die RPi/broodplank -plek na die sensorlokasie benodig word
  2. Soldeer die IR -ontvangerpenne aan die een kant van die draad (COM/GND/V+)
  3. Soldeer die manlike aansluitstukke aan die ander kant van die draad

Nou gaan ons die tafel voorberei:

  1. Maak 'n basiese tekening (gebaseer op die prentjie) oor waar om te boor. Dit is baie belangrik dat die 2 gate in lyn is met mekaar, want dit sal die ligging van die balk wees.
  2. Boor die gate
  3. As u 'n paar LED -houers (skakel) het, kan u dit in die gat sit om dit stewiger te maak
  4. Plaas + plak die LED + ontvanger aan albei kante vas
  5. Maak die drade vas + plak dit op die hout vas sodat dit nie te veel kruis nie
  6. Plaas die penne op die broodbord volgens die voorheen voorsien kring

Stap 5: Die matriksmodule voorberei en plaas

Die matriksmodule voorberei en plaas
Die matriksmodule voorberei en plaas

Vervolgens gaan ons die 2 LED -matriksmodules verbind

Let wel:

Omdat ek 'n ou tafelvoetbal gebruik het, was daar reeds gate in die rigting van die boonste gedeelte as gevolg van sigarethouers. As u dit nie het nie, moet u dit skep.

Om die drade voor te berei:

  1. Meet die draad van die broodbord na die boonste gedeelte van die tafel
  2. Soldeer 'n paar vroulike verbindings aan die eerste kant van die draad
  3. Soldeer 'n paar manlike verbindings aan die ander kant van die draad

Plaas die matriks:

  1. Bring die matriks deur die gat aan die bokant
  2. Riem vas + plak die drade aan die binnekant van die hout vas om te voorkom dat dit kruis
  3. Plaas die mannetjiespenne op die broodbord volgens die voorheen verskafde sirkel

Op 'n stadium sal ek 'n klein DIY -stap byvoeg om 'n omhulsel vir die matriksmodule by te voeg, maar vir eers is hulle naak.

Stap 6: Maak dit IoT

Maak dit IoT
Maak dit IoT

As u net wil registreer en die tellings wil vertoon, kan u die projek voltooi deur 'n klein lopende luislangskrif te skryf wat loop totdat een van die tellings 9 bereik en dan herstel word.

As u u tafel egter aan die internet wil koppel, moet u die volgende paar stappe regop kry.

In die volgende paar stappe behandel ons die volgende:

  • Konfigurasie van die Raspberry Pi
  • Maak 'n databasis vir berging
  • Die skep van die webwerf
  • Sit dit aanlyn

As u op hierdie stadium vertroud is met git, beveel ek aan dat u 'n bewaarplek op GitHub/GitLab opstel om u lêers by te hou. As u dit nie het nie, kan u 'n gids met dieselfde struktuur as op die foto skep.

Die volledige projek sal binnekort op GitHub beskikbaar wees. 'N Tydelike rar -lêer met al die nodige lêers is egter beskikbaar.

Stap 7: Koppel die Raspberry Pi

Vervolgens gaan ons die framboos -pi -omgewing opstel; om dit te kan doen, moet u die volgende stappe uitvoer:

  • Koppel SSH aan u Rasberry Pi (u kan PuTTY gebruik)
  • Skep 'n gids (byvoorbeeld mkdir -projek) en gaan na hierdie gids met behulp van die cd -opdrag
  • Skep 'n virtuele Python-omgewing in hierdie gids met behulp van die python3 -m venv --system-site-packages env-opdrag
  • Aktiveer die virtuele tolk met die opdrag source/env/bin/activeer
  • Installeer die pakkette vanaf die requirements.txt met python -m pip installeer pakket -naam opdrag
  • Dra die lêers van die voorheen verskafte project_example.rar -lêer oor SSH in u projekmap

Nou moet u die volledige projek op u Raspberry Pi kan uitvoer. Ek raai u aan om 'n Python IDE soos PyCharm te gebruik, waarmee u u van u afgeleë tolk kan ontfout via SSH en indien nodig veranderings direk kan oplaai.

Stap 8: Die opstel van die databasis

Die opstel van die databasis
Die opstel van die databasis

Nou moet u 'n baie basiese databasis opstel, gebaseer op hierdie model.

Die maklikste manier om dit te doen is om u databasis in die MySQL -werkbank te skep, waar u ook kan toets.

As u klaar is, kan u 'n storting van u databasis uitvoer en dit op u RPi oplaai en dit dan uitvoer met sudo mariadb <pathtofile/file.sql

Stap 9: Die skep van die webwerf

Die skep van die webwerf
Die skep van die webwerf
Die skep van die webwerf
Die skep van die webwerf
Die skep van die webwerf
Die skep van die webwerf

Vervolgens kan u die kode in die project_example.rar -lêer analiseer (en gebruik).

Die hooflêer is die Flask.py, wat die brood en botter van hierdie projek is:

  • Bestuur 'n Flask-SocketIO-app wat die agterkant van die webwerf hanteer
  • Skep 'n verbinding tussen die databasis en Flask
  • Bied aanmeldvalidasie en gebruikersregistrasie
  • Gee die nodige kode vir die speel van 'n speletjie, gebruik socketio om die webwerf intyds tydens die spel op te dateer
  • Plaas die spelresultate in die databasis

In die statiese en sjablone -dopgehou kan u die HTML/CSS/JS vind wat die voorkant van die webwerf bied. Pas dit gerus aan volgens u eie smaak.

Stap 10: Koppel aan die World Wide Web

Om ons webwerf met die internet te verbind, gebruik ons nginx en uwsgi. In die projekvoorbeeld kan u die nodige lêers in die conf -lêergids vind.

Eerstens moet u die volgende in hierdie lêers opdateer:

  • In die uwsgi-flask.ini moet u die pad van die virtualenv-parameter na u tolk verander
  • In die project1-flask.service moet u die [Service] -gedeelte van die lêer opdateer met u geloofsbriewe en paaie na die geassosieerde lêers
  • In die nginx -lêer moet u die bediener en ligging / pad opdateer na u verwante sok

Vervolgens moet u die standaard nginx webserver -lêer vervang met die ligging van u nginx config -lêer, hieronder is 'n voorbeeld van Linux -opdragte om dit te doen

  • ek@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • my@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
  • my@my-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • me@my-rpi: ~/project1 $ sudo systemctl herlaai nginx.service

Uiteindelik moet u die pasgemaakte dienste by u systemd -gids voeg, dit is 'n voorbeeld van hoe u dit moet doen:

  • my@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • my@my-rpi: ~/project1 $ sudo systemctl daemon-herlaai
  • ek@my-rpi: ~/project1 $ sudo systemctl begin project1-*
  • my@my-rpi: ~/project1 $ sudo systemctl status project1-*

As u wil hê dat die webserver begin met die opstart van u framboos, moet u die sudo systemctl aktiveer project1-*. Service-opdrag.

As dit reg gedoen word, behoort u webwerf na u stelselherlaai op u IP -adres te werk. As u een van hierdie konfigurasielêers wil wysig, moet u altyd die diens stop, laai die lêers weer op en gebruik die opdrag om herlaai te laai, gevolg deur 'n begin, anders is die veranderinge nie effektief nie.

Stap 11: afwerking

Eindig af
Eindig af

Terwyl u die laaste deel van hierdie instruksies tik, is hierdie skoolprojek nog steeds aan die gang.

Ek het ontelbare ure daaraan bestee om dit binne 2,5 weke reg te kry. Alhoewel alles effens gehaas is, is ek steeds trots op wat ek bereik het. Tydens die monteerfase het ek talle foute/foute/foutiewe sensors teëgekom, dus moenie te moedeloos wees as alles nie met die eerste probeerslag werk nie.

Die beste ding wat u kan doen is om hulp op die internet te vra of te soek; daar is baie mense met baie beter kennis wat u graag wil help.

Laastens wil ek my onderwysers van die New Media and Communication Technology bedank dat hulle my baie advies gegee het en my gehelp het om hierdie projek te voltooi.

Aanbeveel: