Kazalo:
- 1. korak: Materiali
- 2. korak: Električno vezje
- 3. korak: Kodiranje senzorjev
- 4. korak: Priprava in namestitev senzorjev
- 5. korak: Priprava in namestitev matričnega modula
- 6. korak: Ustvarjanje IoT
- 7. korak: Povežite Raspberry Pi
- 8. korak: Nastavitev zbirke podatkov
- 9. korak: Ustvarite spletno mesto
- 10. korak: Povezovanje s svetovnim spletom
- 11. korak: Dokončanje
Video: Raspberry Pi IoT Foosball miza: 11 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Dobrodošli v moji različici vdrte mize za nogomet v okviru študentskega projekta za nove medije in komunikacijsko tehnologijo. V osnovi sem odraščal ob namiznem nogometu in biljardnih mizah, zato se mi je zdelo super, da poskusim eno od teh naprav povezati z internetom.
Glavna nastavitev je uporaba obstoječe mize za nogomet, povezane z Raspberry Pi, ki lahko opravlja vsa naslednja opravila:
- Uporablja zatiče GPIO za pogon IR LED/sprejemnikov in matričnih modulov 8x8
- Zažene spletno mesto Flask z uporabo nginxa
- Izvaja bazo podatkov MySQL/MariaDB za shranjevanje podatkov
Če želite znova ustvariti ta projekt, potrebujete naslednje spretnosti:
Zaledje:
- Razumevanje HTML/CSS/Javascript za odjemalca spletnega mesta
- Razumevanje Pythona s Flask/Flask-SocketIO/Jinja2 za strežniško stran spletnega mesta
- Osnovno znanje o MySQL
- Vedite, kako zagnati spletni strežnik
Prototip
- Osnovno znanje o ožičenju električnega tokokroga
- Spajkanje
- Osnovno razumevanje, kako napisati skript v Pythonu
- Delo z Linuxom (Raspbian)
- Imeti veliko potrpljenja, ker bo prišlo do veliko odpravljanja napak
1. korak: Materiali
Tu je seznam z vsemi potrebnimi deli za mizo:
- Raspberry Pi Model 3 (z ohišjem)
- T-Cobbler za priključitev Pi na mizo
- Nogometna miza (uporabil sem zelo staro mizo, podobno tej. Morate biti pripravljeni izvrtati luknje v njej)
- Matrični modul Arduino MAX7219 (2)
- IR LED oddajniki (2+, ker se zlomijo, podobno kot ta)
- IR sprejemniki (2+, ker se tudi pokvarijo, podobno kot ta)
- Osnovna deska brez spajkanja
- Veliko in veliko žice (odvisno od velikosti mize za nogomet)
- moški priključki (30+)
- ženski priključki (10+)
- 100-220 ohmski upori (4+)
- spajkalni materiali
- žični trakovi
- LED držala
- nekaj lesa/vijakov, če želite žogico posredovati v žlebu
Skupni stroški tega projekta so v celoti odvisni od stroškov vaše mize za namizni nogomet (drago). Poleg mize bodo materiali največ 150 evrov.
2. korak: Električno vezje
Preden poskusite spajkati, sestavite vse komponente, toplo priporočam, da jih najprej preizkusite na plošči. Pomanjkljive komponente je lažje zamenjati, preden jih porabite ure za spajkanje.
Sprva sem poskušal implementirati LED matriko 8x8 s premičnim registrom 74HC595 (prva slika) in nizom tranzistorjev, vendar sem zaradi številnih žic in zelo nizke izhodne moči prešel na matrični modul MAX7219, ker traja le 5 žic in ga neposredno poganja avtobus SPI.
Vezje, ki sem ga na koncu uporabil, je narisano s Fritzingom. Upoštevajte, da lahko IR LED in sprejemnike povežete s katerim koli od vaših brezplačnih zatičev GPIO.
IR sprejemniki in LED morajo biti neposredno drug čez drugega, vrh LED pa usmerjen proti sprejemniku. Ker želimo simulirati neposredni žarek, ki ga lahko prekine gibanje kroglice, v tem primeru pride do spremembe stanja linije DATA sprejemnika od 0 do 1.
3. korak: Kodiranje senzorjev
Večino tega projekta sem kodiral z uporabo Pycharma, ker omogoča enostavno namestitev SSH na vaš Raspberry Pi z uporabo oddaljenega tolmača. Ne bom podrobno opisal, kako ta program deluje, veliko informacij pa je na voljo na spletnem mestu pycharm.
Trenutno še delam na projektu, a ko bo vse končano, bo celoten projekt na voljo na mojem github profilu
Koda za senzorje je sestavljena iz treh razredov, ki se izvajajo v niti v ozadju na mojem strežniku Flask (ki bo pojasnjen kasneje):
- Razred ciljev (povezava) -Ta datoteka sproži vse ločene komponente, ki jih je mogoče poklicati z vstavitvijo pravilne naprave/vodila SPI in številke pin
- Razred Matrix (povezava) -To je glavni razred za vklop modula MAX7219
- Razred LED in sprejemnika (povezava) - To je glavni razred za vklop infrardečega prekinitvenega žarka z uporabo ločenih niti za zmanjšanje obremenitve procesorja RPi
LED in sprejemnik delujeta na frekvenci 38 kHz, sprejemniki pa vedno pričakujejo, da bo impulz 50% navzgor in 50% navzdol deloval pravilno.
4. korak: Priprava in namestitev senzorjev
Zdaj bomo pripravili IR LED in sprejemnik. Na sliki tabele lahko najdete lokacije za namestitev RPi in senzorjev.
Najprej pa moramo pripraviti ožičenje:
- Prepričajte se, da merite količino potrebne žice od lokacije RPi/plošče do lokacije senzorja
- Spajajte nožice IR sprejemnika na en konec žice (COM/GND/V+)
- Spajate moške priključke na drugem koncu žice
Zdaj bomo pripravili tabelo:
- Naredite osnovno risbo (na podlagi slike), kje vrtati. Zelo pomembno je, da sta dve luknji poravnani drug čez drugega, ker bo to lokacija žarka.
- Izvrtajte luknje
- Če imate nekaj nosilcev LED (povezava), jih lahko postavite v luknjo, da bo bolj trpežna
- Na obe strani vstavite + trak LED + sprejemnik
- Žice prilepite + prilepite na les, da se ne križajo preveč
- Vstavite moške zatiče na ploščo v skladu s prej navedenim vezjem
5. korak: Priprava in namestitev matričnega modula
Nato bomo povezali 2 matrični LED moduli
Opomba:
Ker sem uporabljal staro nogometno mizo, so se zaradi držala za cigarete že dvignile proti zgornjemu delu. Če jih nimate, jih morate ustvariti.
Za pripravo žic:
- Izmerite žico od mize proti zgornjemu delu mize
- Spajkajte nekaj ženskih konektorjev na prvi konec žice
- Spajite nekaj moških konektorjev na drugi konec žice
Namestitev matrice:
- Izvlecite matrico skozi luknjo na vrhu
- Trak + lepilne žice na lesu, da se izognete prečkanju
- Moške zatiče vstavite na ploščo v skladu s prej navedenimi vezji
Na neki točki bom dodal majhen korak DIY, da dodam ohišje za matrični modul, vendar so zaenkrat goli.
6. korak: Ustvarjanje IoT
Če se želite samo registrirati in prikazati rezultate, lahko projekt dokončate tako, da napišete majhen delujoč skript python, ki se ponavlja, dokler ena od rezultatov ne doseže 9, nato pa se ponastavi.
Če pa želite svojo mizo povezati z internetom, bi morali naslednjih nekaj korakov vzpenjati po vaši ulici.
V naslednjih nekaj korakih bomo obravnavali naslednje:
- Konfiguriranje Raspberry Pi
- Izdelava zbirke podatkov za shranjevanje
- Ustvarjanje spletne strani
- Dajanje na splet
Na tej točki, če poznate git, vam priporočam, da naredite skladišče na GitHub/GitLab, da boste spremljali svoje datoteke. Če niste, lahko ustvarite mapo z enako strukturo kot na sliki.
Celoten projekt bo kmalu na voljo na GitHubu. Na voljo pa je začasna datoteka rar z vsemi potrebnimi datotekami.
7. korak: Povežite Raspberry Pi
Nato bomo nastavili okolje maline pi, za to morate izvesti naslednje korake:
- Povežite se prek SSH na vaš Rasberry Pi (lahko uporabite PuTTY)
- Ustvarite mapo (primer projekta mkdir) in se z ukazom cd pomaknite v to mapo
- Ustvarite navidezno okolje Python v tej mapi z ukazom env python3 -m venv --system-site-packages
- Aktivirajte navidezni tolmač z ukazom source/env/bin/enable
- Namestite pakete iz zahtev.txt z ukazom python -m pip install package -name
- Prenesite datoteke iz prej zagotovljene datoteke project_example.rar prek SSH v mapo projekta
Zdaj bi morali zagnati celoten projekt na svojem Raspberry Pi. Svetujem vam, da uporabite Python IDE, kot je PyCharm, ki vam omogoča, da uporabite za odpravljanje napak z oddaljenega tolmača prek SSH in po potrebi neposredno naložite spremembe.
8. korak: Nastavitev zbirke podatkov
Zdaj morate na podlagi tega modela nastaviti zelo osnovno bazo podatkov.
Najlažji način za to je, da ustvarite svojo bazo podatkov v delovni mizi MySQL, kjer lahko opravite tudi nekaj preskusov.
Ko končate, lahko izvozite izpis podatkovne zbirke in ga naložite v RPi, nato pa ga izvedete s sudo mariadb <pathtofile/file.sql
9. korak: Ustvarite spletno mesto
Nato lahko analizirate (in uporabite) kodo iz datoteke project_example.rar.
Glavna datoteka je Flask.py, ki je kruh in maslo tega projekta:
- Zažene aplikacijo Flask-SocketIO, ki upravlja zaledje spletnega mesta
- Ustvari povezavo med zbirko podatkov in Flaskom
- Omogoča potrditev prijave in registracijo uporabnika
- Zagotavlja potrebno kodo o tem, kako igrati igro, uporablja socketio za posodobitev spletnega mesta v realnem času med igro
- Rezultate iger shrani v bazo podatkov
V statičnih mapah in mapah s predlogami lahko najdete HTML/CSS/JS, ki predstavljajo sprednji del spletnega mesta. Lepo jih spremenite glede na svoje želje.
10. korak: Povezovanje s svetovnim spletom
Za povezavo naše spletne strani s spletom bomo uporabili nginx in uwsgi. V primeru projekta lahko najdete potrebne datoteke v mapi conf.
Najprej morate v teh datotekah posodobiti naslednje:
- V uwsgi-flask.ini morate spremeniti pot parametra virtualenv do svojega tolmača
- V projektu1-flask.service morate posodobiti del datoteke [Service] s svojimi poverilnicami in potmi do povezanih datotek
- V datoteki nginx morate posodobiti strežnik in lokacijo / pot v povezano vtičnico
Nato morate privzeto datoteko spletnega strežnika nginx zamenjati z lokacijo konfiguracijske datoteke nginx, spodaj je primer ukazov linux za to
- me@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
- me@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
- me@my-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
- me@my-rpi: ~/project1 $ sudo systemctl znova zaženite nginx.service
Nazadnje morate v mapo systemd dodati storitve po meri, to je primer, kako to storiti:
- me@my-rpi: ~/project1 $ sudo cp conf/project1-*. storitev/etc/systemd/system/
- me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
- me@my-rpi: ~/project1 $ sudo systemctl začni project1-*
- me@my-rpi: ~/project1 $ sudo systemctl status project1-*
Če želite, da se spletni strežnik zažene ob zagonu vašega malinskega pi, morate uporabiti ukaz storitve sudo systemctl enable project1-*.
Če je pravilno opravljeno, bi moralo po ponovnem zagonu sistema vaše spletno mesto delovati na vašem naslovu IP. Če želite urediti eno od teh konfiguracijskih datotek, morate storitev vedno ustaviti, znova naložiti datoteke in uporabiti ukaz daemon-reload, ki mu sledi zagon, sicer spremembe ne bodo učinkovite.
11. korak: Dokončanje
Med pisanjem zadnjega dela tega pouka je ta mali šolski projekt še vedno v teku.
Nekaj ur sem porabil, da sem to naredil v 2,5 tednih. Kljub temu, da se je vse skupaj malo pohitelo, sem še vedno ponosen na doseženo. Med fazo montaže sem naletel na nešteto hroščev/napak/okvarjenih senzorjev, zato ne obupajte preveč, če pri prvem poskusu vse ne deluje.
Najboljša stvar, ki jo lahko storite, je, da prosite ali poiščete pomoč na internetu, obstaja veliko ljudi z veliko boljšim znanjem, ki si zelo želijo pomagati.
Ne nazadnje se želim zahvaliti svojim učiteljem iz novih medijev in komunikacijske tehnologije, ki so mi dali veliko nasvetov in mi pomagali dokončati ta projekt.
Priporočena:
Retro arkadna miza za 2 igralca Micro Center: 20 korakov
Retro Arcade Stand-Up za 2 igralca podjetja Micro Center: Vaš lokalni Micro Center zdaj vsebuje vse, kar potrebujete za izdelavo lastne omare Retro Arcade na osnovi Raspberry Pi. Kompleti so popolnoma prilagodljivi, vključujejo omarico, Raspberry Pi, gumbe, igralne palice, avdio in video dodatke itd. To je
LED zvočno odzivna neskončna kocka Končna miza: 6 korakov (s slikami)
LED zvočno reaktivna neskončna kocka Končna miza: Vau! Vau! Kakšen kul učinek! - To so nekatere stvari, ki jih boste slišali, ko boste dokončali vodnik. Popolnoma osupljiva, lepa, hipnotična, zvočno reaktivna neskončna kocka. To je skromno napreden spajkalni projekt, vzelo mi je približno 12 ljudi
Prenosna delovna miza Arduino 3. del: 11 korakov
Prenosno delovno mizo Arduino 3. del: Če ste si ogledali dele 1, 2 in 2B, do zdaj v tem projektu ni bilo veliko Arduina, vendar le nekaj žic itd. Ni za kaj gre in za infrastrukturni del je treba zgraditi, preden ostanejo dela. To je elektronika in A
Samodejna miza za sedenje/stojalo: 14 korakov (s slikami)
Samodejna miza za sedenje/stojalo: ** PROSIMO GLASAJTE ZA TO NAPRAVNO! ** .. Kljub svojim prvim dvomom sem zelo zadovoljen s končnim izdelkom! Torej, tukaj je, moj pogled na avtomatsko mizo za sedenje/stojalo
Igralna miza MAME z Raspberry Pi: 5 korakov
Igralna miza MAME z Raspberry Pi: Navdihnjena s podobnimi projekti na spletu sem skupaj s sosedom sodelovala pri izdelavi par miz za retro igralne mize na osnovi MAME. Bolj kompakten je moj; večji z dvema nizoma kontrol je njegov. V tem članku so uporabljene fotografije obeh