Indholdsfortegnelse:
- Trin 1: Materialerne
- Trin 2: Det elektriske kredsløb
- Trin 3: Kodning af sensorerne
- Trin 4: Forberedelse og placering af sensorerne
- Trin 5: Forberedelse og placering af matrixmodulet
- Trin 6: Gør det til IoT
- Trin 7: Tilslutning af Raspberry Pi
- Trin 8: Opsætning af databasen
- Trin 9: Oprettelse af webstedet
- Trin 10: Tilslutning til World Wide Web
- Trin 11: Afslutning
Video: Raspberry Pi IoT Bordfodboldbord: 11 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Velkommen til min version af et hacket bordfodboldbord, som en del af et studenterprojekt for nye medier og kommunikationsteknologi. Jeg voksede grundlæggende op omkring fodbold og poolborde, så jeg tænkte, at det ville være fantastisk at prøve at forbinde en af disse enheder til internettet.
Hovedopsætningen bruger et eksisterende fodboldbord, der er forbundet til en Raspberry Pi, som kan udføre alle følgende opgaver:
- Bruger GPIO -ben til at drive IR LED/modtagere og 8x8 dot matrixmodulerne
- Kører et Flask -websted ved hjælp af nginx
- Kører en MySQL/MariaDB -database til datalagring
For at kunne genskabe dette projekt skal du have følgende færdigheder:
Bagende:
- Forståelse af HTML/CSS/Javascript til webstedets klient
- Forståelse af Python med Flask/Flask-SocketIO/Jinja2 til serversiden af webstedet
- Grundlæggende viden om MySQL
- Vide, hvordan du kører en webserver
Prototype
- Grundlæggende viden om, hvordan man tilslutter et elektrisk kredsløb
- Lodning
- Grundlæggende forståelse for, hvordan man skriver et script i Python
- Arbejde med Linux (Raspbian)
- At have meget tålmodighed, fordi der vil være en masse fejlfinding involveret
Trin 1: Materialerne
Her er listen med alle nødvendige dele til tabellen:
- Raspberry Pi Model 3 (med hus)
- T-skomager til tilslutning af Pi til brødbrættet
- Bordfodboldbord (jeg brugte et meget gammelt bord, der lignede dette. Skal være villig til at bore huller i det)
- MAX7219 Arduino Dot Matrix Modul (2)
- IR LED -emittere (2+ fordi de går i stykker, ligner denne)
- IR -modtagere (2+, fordi de også går i stykker, ligner denne)
- Grundlæggende loddefrit brødbræt
- Masser og masser af tråd (afhænger af størrelsen på fodboldbordet)
- hanstik (30+)
- hunstik (10+)
- 100-220 Ohm modstande (4+)
- loddematerialer
- trådstropper
- LED -holdere
- nogle træ/skruer i tilfælde af at du vil videresende bolden i tagrenden
De samlede omkostninger ved dette projekt afhænger helt af omkostningerne ved dit bordfodboldbord (dyrt). Udover bordet vil materialerne maksimalt være 150 euro.
Trin 2: Det elektriske kredsløb
Inden du forsøger at lodde, saml alle komponenterne. Jeg anbefaler stærkt at teste det på et brødbræt først. Det er lettere at udskifte defekte komponenter, før du har brugt timer på at lodde dem.
Først forsøgte jeg at implementere 8x8 LED Matrix med et 74HC595 skiftregister (første billede) og transistor array, men på grund af de mange ledninger og meget lav output skiftede jeg til MAX7219 Dot Matrix Module, fordi det kun tager 5 ledninger og er direkte drevet af en SPI -bus.
Det kredsløb, jeg til sidst brugte, er tegnet med Fritzing. Bemærk, at IR -lysdioderne og modtagerne kan tilsluttes alle dine gratis GPIO -pins.
IR -modtagerne og LED'en skal være direkte på tværs af hinanden, og toppen af LED'en skal pege mod modtageren. Fordi vi vil simulere en direkte stråle, der kan brydes af kuglens bevægelse, i hvilket tilfælde der vil være en tilstandsændring af modtagerens DATA -linje fra 0 til 1.
Trin 3: Kodning af sensorerne
Jeg har kodet det meste af dette projekt ved hjælp af Pycharm, fordi det tillader let SSH -implementering til din Raspberry Pi ved hjælp af en fjerntolk. Jeg vil ikke gå i detaljer med hvordan dette program fungerer, men der kan findes mange oplysninger på pycharms websted.
Jeg arbejder i øjeblikket stadig på projektet, men når alt er gjort, vil hele projektet være tilgængeligt på min github -profil
Koden til sensorerne består af 3 klasser, der køres i en baggrunds tråd på min Flask -server (som vil blive forklaret senere):
- Målklassen (link) -Denne fil starter alle de separate komponenter, som kan aktiveres ved at indsætte den korrekte SPI -enhed/bus og pinkode
- Matrix -klassen (link) -Dette er hovedklassen til at tænde for MAX7219 -modulet
- LED og modtager klasse (link) - Dette er hovedklassen til at tænde den infrarøde break -beam ved hjælp af separate tråde for at reducere CPU belastning af RPi
Lysdioden og modtageren arbejder begge på en 38 kHz frekvens, og modtagerne forventer altid, at en puls på 50% og 50% ned fungerer korrekt.
Trin 4: Forberedelse og placering af sensorerne
Nu skal vi forberede IR LED og modtager. På billedet af tabellen kan du finde de steder, hvor RPi'erne og sensorerne skal placeres.
Men først skal vi forberede ledningerne:
- Sørg for at måle mængden af ledning, der er nødvendig fra RPi/breadboard -placeringen til sensorplaceringen
- Lod lodmodtagerens ben til den ene ende af ledningen (COM/GND/V+)
- Lodde hanstikkets stykker i den anden ende af tråden
Nu skal vi forberede bordet:
- Lav en grundlæggende tegning (baseret på billedet) om, hvor der skal bores. Det er meget vigtigt, at de 2 huller er justeret på tværs af hinanden, fordi dette vil være bjælkens placering.
- Bor hullerne
- Hvis du har nogle LED -holdere (link), kan du sætte dem inde i hullet for at gøre det mere robust
- Indsæt + tape LED + modtageren på begge sider
- Spænd ledningerne + tape dem på træet, så de ikke krydser for meget
- Sæt hanstifterne på brødbrættet i henhold til det tidligere leverede kredsløb
Trin 5: Forberedelse og placering af matrixmodulet
Dernæst skal vi forbinde de 2 LED -matrixmoduler
Bemærk:
Fordi jeg brugte et gammelt bordfodboldbord, gik der allerede huller op mod den øvre del på grund af cigaretholdere. Hvis du ikke har disse, skal du oprette dem.
For at forberede ledningerne:
- Mål ledningen fra brødbrættet mod den øverste del af bordet
- Lod nogle hunstik til den første ende af ledningen
- Lod nogle hanstik til den anden ende af ledningen
Placering af matrixen:
- Tag matricen ud gennem hullet på toppen
- Rem + tape ledningerne inde på træet for at undgå at krydse
- Sæt hanstifterne på brødbrættet i henhold til det tidligere leverede kredsløb
På et tidspunkt vil jeg tilføje et lille DIY -trin for at tilføje et hus til matrixmodulet, men for nu er de nøgne.
Trin 6: Gør det til IoT
Hvis du bare vil registrere og vise partiturerne, kan du afslutte projektet ved at skrive et lille kørende python -script, der sløjfer, indtil en af scorerne når 9 og derefter nulstilles.
Men hvis du vil forbinde dit bord med internettet, skal de næste par trin lige op i din gyde.
I de næste par trin behandler vi følgende:
- Konfiguration af Raspberry Pi
- Oprettelse af en database til opbevaring
- Oprettelse af webstedet
- Sætter det online
På dette tidspunkt, hvis du er fortrolig med git, anbefaler jeg, at du opretter et lager på GitHub/GitLab for at holde styr på dine filer. Hvis du ikke er det, kan du oprette en mappe med samme struktur som på billedet.
Det fulde projekt vil snart være tilgængeligt på GitHub. En midlertidig rar -fil med alle de nødvendige filer er dog tilgængelig.
Trin 7: Tilslutning af Raspberry Pi
Dernæst skal vi konfigurere hindbær pi -miljøet, for at gøre dette skal du udføre følgende trin:
- Tilslut over SSH til din Rasberry Pi (du kan bruge PuTTY)
- Opret en mappe (eksempel mkdir -projekt), og flyt til denne mappe ved hjælp af cd -kommandoen
- Opret et virtuelt Python-miljø i denne mappe ved hjælp af kommandoen python3 -m venv --system-site-packages env
- Aktiver den virtuelle tolk med kommandoen source/env/bin/active
- Installer pakkerne fra requirements.txt med python -m pip install kommando med pakkenavn
- Overfør filerne fra den tidligere leverede projekt_eksempel.rar -fil over SSH i din projektmappe
Nu skulle du kunne køre det fulde projekt på din Raspberry Pi. Jeg råder dig til at bruge en Python IDE som PyCharm, som giver dig mulighed for at bruge dig til at fejlsøge fra din fjerntolk over SSH og direkte uploade ændringer, hvis det er nødvendigt.
Trin 8: Opsætning af databasen
Nu skal du oprette en meget grundlæggende database, baseret på denne model.
Den nemmeste måde at gøre dette på er at oprette din database i MySQL -arbejdsbordet, hvor du også kan foretage nogle test.
Når det er gjort, kan du eksportere en dump af din database og uploade den på din RPi og derefter udføre den med sudo mariadb <pathtofile/file.sql
Trin 9: Oprettelse af webstedet
Dernæst kan du analysere (og bruge) koden i filen project_example.rar.
Hovedfilen er Flask.py, som er brød og smør i dette projekt:
- Kører en Flask-SocketIO-app, der håndterer webstedets backend
- Opretter en forbindelse mellem databasen og kolben
- Giver loginvalidering og brugerregistrering
- Giver den nødvendige kode til, hvordan man spiller et spil, bruger socketio til at opdatere webstedet i realtid under spillet
- Sætter spilresultaterne i databasen
I de statiske mapper og skabeloner kan du finde HTML/CSS/JS, som udgør frontend -delen af webstedet. Du er velkommen til at ændre disse efter din egen smag.
Trin 10: Tilslutning til World Wide Web
For at forbinde vores websted med internettet bruger vi nginx og uwsgi. I projekteksemplet kan du finde de nødvendige filer i conf -mappen.
Først og fremmest skal du opdatere følgende i disse filer:
- I uwsgi-flask.ini skal du ændre stien til virtualenv-parameteren til din tolk
- I project1-flask.service skal du opdatere [Service] -delen af filen med dine legitimationsoplysninger og stier til de tilknyttede filer
- I nginx -filen skal du opdatere serveren og placering / sti til din tilhørende stikkontakt
Næste skal du udskifte standard nginx webserverfilen med placeringen af din nginx config -fil, herunder er et eksempel på linux -kommandoer for at gøre dette
- mig@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
- mig@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
- mig@my-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
- mig@my-rpi: ~/project1 $ sudo systemctl genstart nginx.service
Endelig skal du tilføje de tilpassede tjenester til din systemd -mappe, dette er et eksempel på, hvordan du gør det:
- mig@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
- mig@my-rpi: ~/project1 $ sudo systemctl daemon-reload
- mig@my-rpi: ~/project1 $ sudo systemctl start project1-*
- mig@my-rpi: ~/project1 $ sudo systemctl status project1-*
Hvis du vil have webserveren til at starte ved opstart af din hindbær pi, skal du bruge sudo systemctl enable project1-*. Service kommando.
Hvis det gøres korrekt, skal dit websted køre på din IP -adresse efter en genstart af systemet. Hvis du vil redigere en af disse konfigurationsfiler, skal du altid stoppe tjenesten, uploade filerne igen og bruge kommandoen daemon-reload efterfulgt af en start, ellers vil ændringerne ikke være effektive.
Trin 11: Afslutning
Mens du skriver den sidste del af denne instruktive, er dette lille skoleprojekt stadig i gang.
Jeg har brugt utallige timer på at få dette gjort på 2,5 uger. Selvom alt blev hastet lidt, er jeg stadig stolt over, hvad jeg har opnået. I samlingsfasen har jeg stødt på utallige fejl/fejl/defekte sensorer, så vær ikke for modløs, hvis alt ikke fungerer ved første forsøg.
Det bedste du kan gøre er at bede eller søge hjælp på internettet, der er mange mennesker med langt bedre viden, der er meget ivrige efter at hjælpe dig.
Sidst men ikke mindst vil jeg takke mine lærere fra New Media and Communication Technology for at have givet mig mange råd og hjulpet mig med at afslutte dette projekt.
Anbefalede:
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
Nem IOT - Appstyret RF Sensor Hub til mellemstore IOT -enheder: 4 trin
Easy IOT - Appstyret RF Sensor Hub til mellemstore IOT -enheder: I denne serie af selvstudier vil vi opbygge et netværk af enheder, der kan styres via et radioforbindelse fra en central hub -enhed. Fordelen ved at bruge en 433MHz seriel radioforbindelse i stedet for WIFI eller Bluetooth er den meget større rækkevidde (med god
Installation af Raspbian i Raspberry Pi 3 B Uden HDMI - Kom godt i gang med Raspberry Pi 3B - Opsætning af din Raspberry Pi 3: 6 trin
Installation af Raspbian i Raspberry Pi 3 B Uden HDMI | Kom godt i gang med Raspberry Pi 3B | Opsætning af din Raspberry Pi 3: Som nogle af jer ved, er Raspberry Pi-computere ganske fantastiske, og du kan få hele computeren bare på et enkelt lille bord. Raspberry Pi 3 Model B har en quad-core 64-bit ARM Cortex A53 klokket til 1,2 GHz. Dette sætter Pi 3 cirka 50
WebFoos - et smart bordfodboldbord: 6 trin
WebFoos - et smart bordfodboldbord: Til mit skoleprojekt i mit første år på Howest besluttede jeg mig for at lave et smart fodboldbord. Tabellen registrerer mål og gemmer spillede kampe, kampstatistikker og bruger-/holdstatistik på et online websted
Autonomt bordfodboldbord: 5 trin (med billeder)
Autonom Foosball Table: Hovedprojektmålet var at færdiggøre en fungerende prototype til et Autonomous Foosball Table (AFT), hvor en menneskelig spiller står over for en robotmodstander. Fra spillets menneskelige perspektiv ligner bordfodboldbordet meget et almindeligt bord. Spillet