Innholdsfortegnelse:
- Trinn 1: Materialene
- Trinn 2: Den elektriske kretsen
- Trinn 3: Koding av sensorene
- Trinn 4: Klargjøring og plassering av sensorene
- Trinn 5: Klargjøring og plassering av matrisemodulen
- Trinn 6: Gjør det til IoT
- Trinn 7: Koble til Raspberry Pi
- Trinn 8: Sette opp databasen
- Trinn 9: Opprette nettstedet
- Trinn 10: Koble til World Wide Web
- Trinn 11: Avslutt
Video: Raspberry Pi IoT Bordfotballbord: 11 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Velkommen til min versjon av et hacket fotballbord, som en del av et studentprosjekt for nye medier og kommunikasjonsteknologi. Jeg vokste i grunnen opp rundt fotball og biljardbord, så jeg tenkte at det ville være flott å prøve å koble en av disse enhetene til internett.
Hovedoppsettet bruker et eksisterende fotballbord som er koblet til en Raspberry Pi som kan utføre alle følgende oppgaver:
- Bruker GPIO -pinner for å drive IR -LED/mottakere og 8x8 dot matrisemoduler
- Kjører et Flask -nettsted ved hjelp av nginx
- Kjører en MySQL/MariaDB -database for datalagring
For å kunne gjenskape dette prosjektet trenger du følgende ferdigheter:
Baksiden:
- Forstå HTML/CSS/Javascript for klienten på nettstedet
- Forstå Python med Flask/Flask-SocketIO/Jinja2 for serversiden av nettstedet
- Grunnleggende kunnskap om MySQL
- Vet hvordan du kjører en webserver
Prototype
- Grunnleggende kunnskap om hvordan du kobler en elektrisk krets
- Lodding
- Grunnleggende forståelse for hvordan du skriver et skript i Python
- Arbeide med Linux (Raspbian)
- Å ha mye tålmodighet fordi det vil være mye feilsøking involvert
Trinn 1: Materialene
Her er listen med alle nødvendige deler til tabellen:
- Raspberry Pi Model 3 (med foringsrør)
- T-skomaker for å koble Pi til brødbrettet
- Bordfotballbord (jeg brukte et veldig gammelt bord som ligner dette. Må være villig til å bore hull i det)
- MAX7219 Arduino Dot Matrix Module (2)
- IR LED -sendere (2+ fordi de går i stykker, ligner denne)
- IR -mottakere (2+ fordi de også går i stykker, ligner denne)
- Grunnleggende loddefritt brødbrett
- Mye og mye ledning (avhenger av størrelsen på fotballbordet)
- mannlige kontakter (30+)
- kvinnelige kontakter (10+)
- 100-220 Ohm motstander (4+)
- loddematerialer
- wire stropper
- LED -holdere
- litt tre/skruer i tilfelle du vil videresende ballen i takrennen
Den totale kostnaden for dette prosjektet avhenger helt av kostnaden for fotballbordet (dyrt). Foruten bordet vil materialene være maksimalt 150 euro.
Trinn 2: Den elektriske kretsen
Før du prøver å lodde, monter alle komponentene. Jeg anbefaler på det sterkeste å teste det på et brødbrett først. Det er lettere å bytte ut defekte komponenter før du har brukt timer på å lodde dem.
Først prøvde jeg å implementere 8x8 LED Matrix med et 74HC595 skiftregister (første bilde) og transistormatrise, men på grunn av de mange ledningene og veldig lav effekt byttet jeg til MAX7219 Dot Matrix Module fordi den bare tar 5 ledninger og er direkte drevet av en SPI -buss.
Kretsen jeg til slutt brukte er tegnet med Fritzing. Vær oppmerksom på at IR -lysdioder og mottakere kan kobles til hvilken som helst av dine gratis GPIO -pinner.
IR -mottakere og LED skal være rett over hverandre og toppen av LED -en skal peke mot mottakeren. Fordi vi ønsker å simulere en direkte stråle som kan brytes av ballbevegelsen, i så fall vil det være en tilstandsendring av mottakerens DATA -linje fra 0 til 1.
Trinn 3: Koding av sensorene
Jeg har kodet det meste av dette prosjektet ved hjelp av Pycharm fordi det tillater enkel SSH -distribusjon til din Raspberry Pi ved hjelp av en ekstern tolk. Jeg vil ikke gå i detalj om hvordan dette programmet fungerer, men mye informasjon kan bli funnet på pycharm -nettstedet.
Jeg jobber for tiden med prosjektet, men når alt er gjort vil hele prosjektet være tilgjengelig på min github -profil
Koden for sensorene består av 3 klasser som kjøres i en bakgrunnstråd på min Flask -server (som vil bli forklart senere):
- Målklassen (lenke) -Denne filen starter alle de separate komponentene, som kan brukes ved å sette inn riktig SPI -enhet/buss og pin -nummer
- Matrix Class (lenke) -Dette er hovedklassen for å slå på MAX7219 -modulen
- LED- og mottakerklassen (lenke) - Dette er hovedklassen for å slå på den infrarøde lysstrålen ved hjelp av separate tråder for å redusere CPU -belastningen til RPi
Lysdioden og mottakeren fungerer begge på en 38 kHz frekvens, og mottakerne forventer alltid at en 50% opp og en 50% ned puls fungerer som den skal.
Trinn 4: Klargjøring og plassering av sensorene
Nå skal vi forberede IR -LED og mottaker. På bildet av tabellen finner du stedene hvor RPi og sensorer skal plasseres.
Men først må vi forberede ledningene:
- Sørg for at du måler mengden ledning som trengs fra RPi/breadboard -stedet til sensorplasseringen
- Lodd IR -mottakerpinnene til den ene enden av ledningen (COM/GND/V+)
- Lodd de mannlige kontaktstykkene i den andre enden av ledningen
Nå skal vi forberede bordet:
- Lag en grunnleggende tegning (basert på bildet) på hvor du skal bore. Det er veldig viktig at de to hullene er justert over hverandre fordi dette vil være strålestedet.
- Bor hullene
- Hvis du har noen LED -holdere (lenke), kan du sette disse inne i hullet for å gjøre det mer solid
- Sett inn + tape LED + mottakeren på begge sider
- Fest ledningene + teip dem på treet slik at de ikke krysser for mye
- Sett inn hannpinnene på brødbrettet i henhold til den tidligere oppgitte kretsen
Trinn 5: Klargjøring og plassering av matrisemodulen
Neste gang skal vi koble de 2 LED -matrisemodulene
Merk:
Fordi jeg brukte et gammelt fotballbord, var det allerede hull som gikk opp mot den øvre delen på grunn av sigarettholdere. Hvis du ikke har disse må du lage dem.
Slik klargjør du ledningene:
- Mål ledningen fra brødbrettet mot den øverste delen av bordet
- Lodd noen hunnkontakter til den første enden av ledningen
- Lodd noen mannlige kontakter til den andre enden av ledningen
Plassering av matrisen:
- Ta ut matrisen gjennom hullet på toppen
- Stropp + teip ledningene inni treet for å unngå kryss
- Sett inn hannpinnene på brødbrettet i henhold til det tidligere oppgitte kretsen
På et tidspunkt vil jeg legge til et lite DIY -trinn for å legge til et foringsrør for matrisemodulen, men foreløpig er de nakne.
Trinn 6: Gjør det til IoT
Hvis du bare vil registrere og vise poengsummene, kan du avslutte prosjektet med å skrive et lite python -skript som løper til en av poengsummene når 9 og deretter tilbakestilles.
Men hvis du vil koble bordet ditt til internett, bør de neste trinnene gå rett opp i smuget.
I de neste trinnene tar vi for oss følgende:
- Konfigurering av Raspberry Pi
- Lag en database for lagring
- Opprette nettstedet
- Legger det på nett
På dette tidspunktet, hvis du er kjent med git, anbefaler jeg at du lager et depot på GitHub/GitLab for å holde oversikt over filene dine. Hvis du ikke er det, kan du opprette en mappe med samme struktur som på bildet.
Hele prosjektet vil snart være tilgjengelig på GitHub. Imidlertid er en midlertidig rar -fil med alle nødvendige filer tilgjengelig.
Trinn 7: Koble til Raspberry Pi
Deretter skal vi sette opp bringebær pi -miljøet, for å gjøre dette må du utføre følgende trinn:
- Koble over SSH til Rasberry Pi (du kan bruke PuTTY)
- Lag en mappe (eksempel mkdir -prosjekt) og flytt til denne mappen ved hjelp av cd -kommandoen
- Opprett et virtuelt Python-miljø i denne mappen ved hjelp av kommandoen python3 -m venv --system-site-packages env
- Aktiver den virtuelle tolken med kommandoen source/env/bin/active
- Installer pakkene fra requirements.txt med python -m pip install kommando for pakkenavn
- Overfør filene fra den tidligere oppgitte project_example.rar -filen over SSH i prosjektmappen
Nå bør du kunne kjøre hele prosjektet på din Raspberry Pi. Jeg anbefaler deg å bruke en Python IDE som PyCharm som lar deg bruke deg til å feilsøke fra din eksterne tolk over SSH og laste opp endringer om nødvendig.
Trinn 8: Sette opp databasen
Nå må du sette opp en veldig grunnleggende database, basert på denne modellen.
Den enkleste måten å gå med dette er å opprette databasen din i MySQL -arbeidsbenken, hvor du også kan gjøre noen tester.
Når du er ferdig, kan du eksportere en dump av databasen din og laste den opp på RPi og deretter utføre den med sudo mariadb <pathtofile/file.sql
Trinn 9: Opprette nettstedet
Deretter kan du analysere (og bruke) koden i filen project_example.rar.
Hovedfilen er Flask.py som er brødet og smøret til dette prosjektet:
- Kjører en Flask-SocketIO-app som håndterer bakenden av nettstedet
- Oppretter en forbindelse mellom databasen og Flask
- Gir påloggingsvalidering og brukerregistrering
- Gir den nødvendige koden for hvordan du spiller et spill, bruker socketio til å oppdatere nettstedet i sanntid under spillet
- Legger spillresultatene inn i databasen
I de statiske og maler -mappene finner du HTML/CSS/JS som gir frontend -delen av nettstedet. Du er velkommen til å endre disse etter din egen smak.
Trinn 10: Koble til World Wide Web
For å koble nettstedet vårt til nettet bruker vi nginx og uwsgi. I prosjekteksemplet finner du de nødvendige filene i conf -mappen.
Først av alt må du oppdatere følgende i disse filene:
- I uwsgi-flask.ini må du endre banen til virtualenv-parameteren til tolken din
- I project1-flask.service må du oppdatere [Service] -delen av filen med legitimasjon og baner til de tilknyttede filene
- I nginx -filen må du oppdatere serveren og plasseringen / banen til den tilhørende kontakten
Deretter må du erstatte standard nginx webserverfil med plasseringen av nginx config -filen, nedenfor er et eksempel på linux -kommandoer for å gjøre dette
- meg@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 restart nginx.service
Til slutt må du legge til de tilpassede tjenestene i systemd -mappen din, dette er et eksempel på hvordan du gjør det:
- me@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
- me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
- me@my-rpi: ~/project1 $ sudo systemctl start project1-*
- meg@my-rpi: ~/project1 $ sudo systemctl status project1-*
Hvis du vil at webserveren skal starte ved oppstart av bringebærpi, må du bruke sudo systemctl enable project1-*. Service-kommandoen.
Hvis det gjøres riktig, bør nettstedet ditt kjøre på IP -adressen din etter en omstart av systemet. Hvis du vil redigere en av disse konfigurasjonsfilene, må du alltid stoppe tjenesten, laste opp filene på nytt og bruke daemon-reload-kommandoen etterfulgt av en start, ellers vil ikke endringene være effektive.
Trinn 11: Avslutt
Mens du skriver den siste delen av dette instruerbare, er dette lille skoleprosjektet fortsatt i gang.
Jeg har brukt utallige timer på å få dette gjort på 2,5 uker. Selv om alt ble stresset litt, er jeg fremdeles stolt over det jeg har oppnådd. I monteringsfasen har jeg støtt på utallige feil/feil/defekte sensorer, så ikke bli for motløs hvis alt ikke fungerer på første forsøk.
Det beste du kan gjøre er å be eller se etter hjelp på internett, det er mange mennesker med langt bedre kunnskap som er veldig ivrige etter å hjelpe deg.
Sist men ikke minst vil jeg takke lærerne mine fra New Media and Communication Technology for at de ga meg mange råd og hjalp meg med å fullføre dette prosjektet.
Anbefalt:
Enkel IOT - Appstyrt RF -sensorhub for mellomstore IOT -enheter: 4 trinn
Easy IOT - Appstyrt RF Sensor Hub for mellomstore IOT -enheter: I denne opplæringsserien vil vi bygge et nettverk av enheter som kan styres via en radiokobling fra en sentral hub -enhet. Fordelen med å bruke en 433MHz seriell radioforbindelse i stedet for WIFI eller Bluetooth er den mye større rekkevidden (med god
IoT APIS V2 - Autonomt IoT -aktivert automatisert plantevanningssystem: 17 trinn (med bilder)
IoT APIS V2 - Autonom IoT -enabled Automated Plant Irrigation System: Dette prosjektet er en utvikling av min tidligere instruerbare: APIS - Automated Plant Irrigation System Jeg har brukt APIS i nesten et år nå, og ønsket å forbedre den forrige designen: Evne til å overvåke anlegget eksternt. Dette er hvordan
Installere Raspbian i Raspberry Pi 3 B Uten HDMI - Komme i gang med Raspberry Pi 3B - Sette opp din Raspberry Pi 3: 6 trinn
Installere Raspbian i Raspberry Pi 3 B Uten HDMI | Komme i gang med Raspberry Pi 3B | Sette opp din Raspberry Pi 3: Som noen av dere vet Raspberry Pi-datamaskiner er ganske fantastiske, og du kan få hele datamaskinen bare på et enkelt, lite bord. Raspberry Pi 3 Model B har en firekjerners 64-biters ARM Cortex A53 klokket til 1,2 GHz. Dette gir Pi 3 omtrent 50
WebFoos - et smart bordfotballbord: 6 trinn
WebFoos - et smart bordfotballbord: For skoleprosjektet mitt første år på Howest bestemte jeg meg for å lage et smart bordfotballbord. Tabellen registrerer mål og lagrer spilte kamper, kampstatistikk og bruker-/lagstatistikk på en nettside
Autonomt bordfotballbord: 5 trinn (med bilder)
Autonom Foosball Table: Hovedprosjektmålet var å fullføre en fungerende prototype for et Autonomous Foosball Table (AFT), der en menneskelig spiller står overfor en robotmotstander. Fra det menneskelige perspektivet på spillet, er fotballbordet veldig likt et vanlig bord. Spilleren