Innehållsförteckning:
- Steg 1: Materialen
- Steg 2: Den elektriska kretsen
- Steg 3: Kodning av sensorerna
- Steg 4: Förbereda och placera sensorerna
- Steg 5: Förbereda och placera matrismodulen
- Steg 6: Gör det IoT
- Steg 7: Anslut Raspberry Pi
- Steg 8: Konfigurera databasen
- Steg 9: Skapa webbplatsen
- Steg 10: Anslutning till World Wide Web
- Steg 11: Avsluta
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11
Välkommen till min version av ett hackat fotbollsbord, som en del av ett studentprojekt för New Media and Communication technology. Jag växte i grunden upp runt fotboll och biljardbord så jag trodde att det skulle vara bra att försöka ansluta en av dessa enheter till internet.
Huvudinställningen använder ett befintligt fotbollsbord anslutet till en Raspberry Pi som kan utföra alla följande uppgifter:
- Använder GPIO -stift för att driva IR -lysdioden/mottagarna och matrismodulerna 8x8 punkter
- Kör en flaskwebbplats med nginx
- Kör en MySQL/MariaDB -databas för datalagring
För att kunna återskapa detta projekt behöver du följande färdigheter:
Backend:
- Förstå HTML/CSS/Javascript för webbplatsens klient
- Förstå Python med Flask/Flask-SocketIO/Jinja2 för serversidan av webbplatsen
- Grundläggande kunskaper i MySQL
- Vet hur man kör en webbserver
Prototyp
- Grundläggande kunskap om hur man kopplar en elektrisk krets
- Lödning
- Grundläggande förståelse för hur man skriver ett manus i Python
- Arbeta med Linux (Raspbian)
- Har mycket tålamod eftersom det kommer att vara mycket felsökning inblandat
Steg 1: Materialen
Här är listan med alla nödvändiga delar för tabellen:
- Raspberry Pi Model 3 (med hölje)
- T-skomakare för anslutning av Pi till brödbrädan
- Bordfotbollsbord (jag använde ett mycket gammalt bord som liknade det här. Måste vara villig att borra hål i det)
- MAX7219 Arduino Dot Matrix Module (2)
- IR LED -sändare (2+ eftersom de går sönder, liknande den här)
- IR -mottagare (2+ eftersom de också går sönder, liknande den här)
- Grundläggande lödlös brödbräda
- Mycket och mycket tråd (beror på fotbollsbordets storlek)
- hankontakter (30+)
- honkontakter (10+)
- 100-220 Ohm motstånd (4+)
- lödmaterial
- trådremmar
- LED -hållare
- lite trä/skruvar om du vill förmedla bollen i rännan
Den totala kostnaden för detta projekt beror helt på kostnaden för ditt fotbollsbord (dyrt). Förutom bordet kommer materialet att vara högst 150 euro.
Steg 2: Den elektriska kretsen
Innan du försöker löda, montera alla komponenterna. Jag rekommenderar starkt att du testar det på en brödbräda först. Det är lättare att byta ut felaktiga komponenter innan du har lödt timmar.
Först försökte jag implementera 8x8 LED -matrisen med ett 74HC595 -skiftregister (första bilden) och transistormatrisen men på grund av de många ledningarna och mycket låg utgång bytte jag till MAX7219 Dot Matrix -modulen eftersom den bara tar 5 ledningar och drivs direkt av en SPI -buss.
Kretsen jag så småningom använde är ritad med Fritzing. Observera att IR -lysdioderna och mottagarna kan anslutas till alla dina gratis GPIO -stift.
IR -mottagarna och lysdioden ska vara tvärs över varandra och toppen av lysdioden ska riktas mot mottagaren. Eftersom vi vill simulera en direktstråle som kan brytas av bollrörelsen, i vilket fall kommer det att ske en tillståndsförändring av mottagarens DATA -linje från 0 till 1.
Steg 3: Kodning av sensorerna
Jag har kodat det mesta av detta projekt med Pycharm eftersom det möjliggör enkel SSH -distribution till din Raspberry Pi med en fjärrtolk. Jag kommer inte att gå in i detalj på hur detta program fungerar men mycket information kan hittas på pycharms webbplats.
Jag arbetar för närvarande fortfarande med projektet men när allt är klart kommer hela projektet att finnas tillgängligt på min github -profil
Koden för sensorerna består av 3 klasser som körs i en bakgrundstråd på min Flask -server (som kommer att förklaras senare):
- Målklassen (länk) -Denna fil initierar alla separata komponenter, som kan användas genom att sätta in rätt SPI -enhet/buss och pin -nummer
- Matrix Class (länk) -Detta är huvudklassen för att starta MAX7219 -modulen
- Lysdioden och mottagarklassen (länk) - Detta är huvudklassen för att slå på den infraröda brytstrålen med separata trådar för att minska CPU -belastningen på RPi
Lysdioden och mottagaren arbetar båda med en 38 kHz frekvens och mottagarna förväntar sig alltid att en 50% upp och en 50% ned puls fungerar korrekt.
Steg 4: Förbereda och placera sensorerna
Nu ska vi förbereda IR -lysdioden och mottagaren. På bilden i tabellen kan du hitta platser där RPi och sensorer ska placeras.
Men först måste vi förbereda ledningarna:
- Se till att du mäter mängden tråd som behövs från RPi/breadboard -platsen till sensorplatsen
- Löd IR -mottagarpinnarna i trådens ena ände (COM/GND/V+)
- Löd hankontaktbitarna i andra änden av tråden
Nu ska vi förbereda bordet:
- Gör en grundläggande ritning (baserat på bilden) om var du ska borra. Det är mycket viktigt att de två hålen är inriktade över varandra eftersom detta kommer att vara strålplatsen.
- Borra hålen
- Om du har några LED -hållare (länk) kan du sätta dessa inuti hålet för att göra det mer robust
- Sätt i + tejpa LED + mottagaren på båda sidor
- Spänn fast trådarna + tejpa fast dem på träet så att de inte korsar för mycket
- Sätt in hanstiften på brödbrädet enligt den tidigare tillhandahållna kretsen
Steg 5: Förbereda och placera matrismodulen
Därefter ska vi ansluta de 2 LED -matrismodulerna
Notera:
Eftersom jag använde ett gammalt fotbollsbord gick det redan hål upp mot den övre delen på grund av cigaretthållare. Om du inte har dessa måste du skapa dem.
För att förbereda trådarna:
- Mät tråden från brödbrädan mot den övre delen av bordet
- Löd några honkontakter till trådens första ände
- Löd några hankontakter till den andra änden av tråden
Placera matrisen:
- Ta ut matrisen genom hålet på toppen
- Rem + tejp trådarna inuti träet för att undvika korsning
- Sätt in hanstiften på brödbrädan enligt den tidigare tillhandahållna kretsen
Någon gång kommer jag att lägga till ett litet DIY -steg för att lägga till ett hölje för matrismodulen, men för närvarande är de nakna.
Steg 6: Gör det IoT
Om du bara vill registrera och visa poängen kan du avsluta projektet genom att skriva ett litet pythonskript som löper tills en av poängen når 9 och sedan återställs.
Men om du vill ansluta ditt bord till internet bör nästa steg gå upp i gränden.
I de närmaste stegen tar vi upp följande:
- Konfigurera Raspberry Pi
- Skapa en databas för lagring
- Skapa webbplatsen
- Lägger det online
Vid denna tidpunkt, om du är bekant med git, rekommenderar jag att du gör ett arkiv på GitHub/GitLab för att hålla reda på dina filer. Om du inte är det kan du skapa en mapp med samma struktur som på bilden.
Hela projektet kommer snart att finnas tillgängligt på GitHub. Men en tillfällig rar -fil med alla nödvändiga filer är tillgänglig.
Steg 7: Anslut Raspberry Pi
Därefter ska vi konfigurera hallon pi -miljön, för att göra detta måste du utföra följande steg:
- Anslut över SSH till din Rasberry Pi (du kan använda PuTTY)
- Skapa en mapp (exempel mkdir -projekt) och flytta till den här mappen med cd -kommandot
- Skapa en virtuell Python-miljö i den här mappen med kommandot python3 -m venv --system-site-packages env
- Aktivera den virtuella tolken med kommandot source/env/bin/active
- Installera paketen från requirements.txt med kommandot python -m pip install paketnamn
- Överför filerna från den tidigare tillhandahållna project_example.rar -filen över SSH i projektmappen
Nu ska du kunna köra hela projektet på din Raspberry Pi. Jag råder dig att använda en Python IDE som PyCharm som låter dig använda dig för att felsöka från din fjärrtolk över SSH och direkt ladda upp ändringar om det behövs.
Steg 8: Konfigurera databasen
Nu måste du skapa en mycket grundläggande databas, baserad på denna modell.
Det enklaste sättet att göra detta är att skapa din databas i MySQL -arbetsbänken där du också kan testa.
När du är klar kan du exportera en dumpning av din databas och ladda upp den på din RPi och sedan köra den med sudo mariadb <pathtofile/file.sql
Steg 9: Skapa webbplatsen
Därefter kan du analysera (och använda) koden som finns i filen project_example.rar.
Huvudfilen är Flask.py som är brödet och smöret för detta projekt:
- Kör en Flask-SocketIO-app som hanterar webbplatsens backend
- Skapar en anslutning mellan databasen och kolven
- Ger inloggningsvalidering och användarregistrering
- Ger den nödvändiga koden för hur man spelar ett spel med socketio för att uppdatera webbplatsen i realtid under spelet
- Sätter spelresultaten i databasen
I statiska mappar och mallar kan du hitta HTML/CSS/JS som tillhandahåller frontend -delen av webbplatsen. Ändra dem gärna efter dina egna önskemål.
Steg 10: Anslutning till World Wide Web
För att ansluta vår webbplats till webben använder vi nginx och uwsgi. I projektexemplet kan du hitta nödvändiga filer i conf -mappen.
Först och främst måste du uppdatera följande i dessa filer:
- I uwsgi-flask.ini måste du ändra sökvägen för virtualenv-parametern till din tolk
- I projekt1-flask.service måste du uppdatera [Service] -delen av filen med dina referenser och sökvägar till de associerade filerna
- I nginx -filen måste du uppdatera servern och platsen / sökvägen till ditt tillhörande uttag
Därefter måste du ersätta standard nginx -webbserverfilen med platsen för din nginx -konfigurationsfil, nedan är ett exempel på Linux -kommandon för att göra detta
- 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 starta om nginx.service
Slutligen måste du lägga till de anpassade tjänsterna i din systemd -mapp, detta är ett exempel på hur du gö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-*
- me@my-rpi: ~/project1 $ sudo systemctl status project1-*
Om du vill att webbservern ska starta vid start av ditt hallon pi måste du använda kommandot service sudo systemctl enable project1-*.
Om det görs korrekt bör din webbplats köras på din IP -adress efter en omstart av systemet. Om du vill redigera en av dessa konfigurationsfiler måste du alltid stoppa tjänsten, ladda upp filerna igen och använd kommandot för omladdning följt av en start, annars blir ändringarna inte effektiva.
Steg 11: Avsluta
Medan du skriver den sista delen av detta instruerbara, är detta lilla skolprojekt fortfarande på gång.
Jag har lagt otaliga timmar på att få detta gjort på 2,5 veckor. Även om allt rusade lite är jag fortfarande stolt över vad jag har åstadkommit. Under monteringsfasen har jag stött på otaliga buggar/fel/felaktiga sensorer, så var inte för avskräckt om allt inte fungerar på första försöket.
Det bästa du kan göra är att be eller söka hjälp på internet, det finns många människor med mycket bättre kunskap som är mycket angelägna om att hjälpa dig.
Sist men inte minst vill jag tacka mina lärare från New Media and Communication Technology för att de gav mig många råd och hjälpte mig att avsluta detta projekt.
Rekommenderad:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Enkel IOT - Appstyrd RF -sensorhub för IOT -enheter med medellång räckvidd: 4 steg
Enkel IOT - Appstyrd RF -sensorhub för IOT -enheter med medellång räckvidd: I denna serie självstudier kommer vi att bygga ett nätverk av enheter som kan styras via en radiolänk från en central navenhet. Fördelen med att använda en 433MHz seriell radioanslutning istället för WIFI eller Bluetooth är den mycket större räckvidden (med bra
IoT APIS V2 - Autonomt IoT -aktiverat automatiserat växtbevattningssystem: 17 steg (med bilder)
IoT APIS V2 - Autonomt IoT -aktiverat automatiserat växtbevattningssystem: Detta projekt är en utveckling av mitt tidigare instruerbara: APIS - Automatiserat växtbevattningssystem Jag har använt APIS i nästan ett år nu och ville förbättra den tidigare designen: Förmåga att övervaka anläggningen på distans. Detta är hur
IoT Power Module: Lägga till en IoT Power Measurement Feature till Min Solar Charge Controller: 19 steg (med bilder)
IoT Power Module: Lägga till en IoT Power Measurement Feature till Min Solar Charge Controller: Hej alla, jag hoppas att ni alla är bra! I den här instruktören kommer jag att visa dig hur jag gjorde en IoT Power Measurement -modul som beräknar mängden energi som genereras av mina solpaneler, som används av min solcellsladdare
IoT Basics: Ansluta din IoT till molnet med Mongoose OS: 5 steg
IoT Basics: Ansluta din IoT till molnet med hjälp av Mongoose OS: Om du är en person som håller på med pyssel och elektronik, kommer du oftare än inte att stöta på begreppet Internet of Things, vanligtvis förkortat som IoT, och att det refererar till en uppsättning enheter som kan ansluta till internet! Att vara en sådan person