Inhoudsopgave:
- Stap 1: De materialen
- Stap 2: Het elektrische circuit
- Stap 3: De sensoren coderen
- Stap 4: Voorbereiden en plaatsen van de sensoren
- Stap 5: De matrixmodule voorbereiden en plaatsen
- Stap 6: het IoT maken
- Stap 7: De Raspberry Pi aansluiten
- Stap 8: De database instellen
- Stap 9: De website maken
- Stap 10: Verbinding maken met het World Wide Web
- Stap 11: Afwerking
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
Welkom bij mijn versie van een gehackte tafelvoetbaltafel, als onderdeel van een studentenproject voor Nieuwe Media en Communicatietechnologie. Ik ben eigenlijk opgegroeid met tafelvoetbal en pooltafels, dus ik dacht dat het geweldig zou zijn om te proberen een van deze apparaten met internet te verbinden.
De hoofdconfiguratie is het gebruik van een bestaande tafelvoetbaltafel die is aangesloten op een Raspberry Pi die alle volgende taken kan uitvoeren:
- Gebruikt GPIO-pinnen om de IR-leds/ontvangers en de 8x8 dot-matrixmodules aan te sturen
- Voert een Flask-website uit met nginx
- Voert een MySQL/MariaDB-database uit voor gegevensopslag
Om dit project opnieuw te kunnen maken, heb je de volgende vaardigheden nodig:
Achterkant:
- HTML/CSS/Javascript begrijpen voor de klant van de website
- Python begrijpen met Flask/Flask-SocketIO/Jinja2 voor de serverkant van de website
- Basiskennis van MySQL
- Weet hoe je een webserver moet draaien
Prototype
- Basiskennis over het bedraden van een elektrisch circuit
- Solderen
- Basiskennis over het schrijven van een script in Python
- Werken met Linux (Raspbian)
- Veel geduld hebben omdat er veel debugging bij komt kijken
Stap 1: De materialen
Hier is de lijst met alle benodigde onderdelen voor de tafel:
- Raspberry Pi Model 3 (met behuizing)
- T-Cobbler voor het aansluiten van de Pi op het breadboard
- Tafelvoetbaltafel (ik heb een heel oude tafel gebruikt die lijkt op deze. Moet bereid zijn om er gaten in te boren)
- MAX7219 Arduino Dot Matrix-module (2)
- IR LED-zenders (2+ omdat ze kapot gaan, vergelijkbaar met deze)
- IR-ontvangers (2+ omdat ze ook kapot gaan, vergelijkbaar met deze)
- Basis soldeerloze breadboard
- Heel veel draad (afhankelijk van de grootte van de tafelvoetbaltafel)
- mannelijke connectoren (30+)
- vrouwelijke connectoren (10+)
- 100-220 Ohm Weerstanden (4+)
- soldeer materialen
- draad bandjes
- LED houders
- wat hout/schroeven voor het geval je de bal in de goot wilt doorgeven
De totale kosten van dit project zijn geheel afhankelijk van de kosten van uw tafelvoetbal (duur). Naast de tafel zijn de materialen maximaal 150 euro.
Stap 2: Het elektrische circuit
Voordat je gaat solderen, moet je alle componenten in elkaar zetten. Ik raad je ten zeerste aan om het eerst op een breadboard te testen. Het is gemakkelijker om defecte componenten te vervangen voordat u er uren aan hebt gesoldeerd.
In eerste instantie probeerde ik de 8x8 LED-matrix te implementeren met een 74HC595-schuifregister (eerste afbeelding) en transistorarray, maar vanwege de vele draden en zeer lage output schakelde ik over naar de MAX7219 Dot Matrix-module omdat deze slechts 5 draden nodig heeft en direct wordt aangedreven door een SPI-bus.
Het circuit dat ik uiteindelijk heb gebruikt, is getekend met Fritzing. Houd er rekening mee dat de IR-LED's en ontvangers kunnen worden aangesloten op een van uw gratis GPIO-pinnen.
De IR-ontvangers en LED moeten recht tegenover elkaar staan en de bovenkant van de LED moet naar de ontvanger gericht zijn. Omdat we een directe straal willen simuleren die kan worden verbroken door de balbeweging, in welk geval er een toestandsverandering van de DATA-lijn van de ontvanger zal zijn van 0 naar 1.
Stap 3: De sensoren coderen
Ik heb het grootste deel van dit project gecodeerd met Pycharm omdat het een eenvoudige SSH-implementatie naar je Raspberry Pi mogelijk maakt met behulp van een externe tolk. Ik zal niet in detail treden over hoe dit programma werkt, maar veel informatie is te vinden op de pycharm-website.
Ik werk momenteel nog aan het project, maar zodra alles klaar is, zal het hele project beschikbaar zijn op mijn github-profiel
De code voor de sensoren bestaat uit 3 klassen die worden uitgevoerd in een achtergrondthread op mijn Flask-server (die later zal worden uitgelegd):
- De doelklasse (link) - Dit bestand initieert alle afzonderlijke componenten, die kunnen worden opgeroepen door het juiste SPI-apparaat / bus en pinnummer in te voeren
- The Matrix Class (link) -Dit is de hoofdklasse om de MAX7219-module van stroom te voorzien
- De LED- en ontvangerklasse (link) - Dit is de hoofdklasse om de infrarood break-beam van stroom te voorzien met behulp van afzonderlijke threads om de CPU-belasting van de RPi te verminderen
De LED en ontvanger werken beide op een frequentie van 38 kHz en de ontvangers verwachten altijd dat een puls van 50% omhoog en 50% omlaag goed werkt.
Stap 4: Voorbereiden en plaatsen van de sensoren
Nu gaan we de IR LED en ontvanger voorbereiden. In de afbeelding van de tabel kunt u de locaties vinden waar de RPi en sensoren moeten worden geplaatst.
Maar eerst moeten we de bedrading voorbereiden:
- Zorg ervoor dat u de benodigde hoeveelheid draad meet van de RPi / breadboard-locatie naar de sensorlocatie
- Soldeer de pinnen van de IR-ontvanger aan het ene uiteinde van de draad (COM/GND/V+)
- Soldeer de mannelijke connector stukken aan het andere uiteinde van de draad
Nu gaan we de tafel voorbereiden:
- Maak een basistekening (op basis van de afbeelding) over waar te boren. Het is erg belangrijk dat de 2 gaten over elkaar zijn uitgelijnd, omdat dit de locatie van de balk zal zijn.
- Boor de gaten
- Als je wat LED-houders (link) hebt, kun je deze in het gat plaatsen om het steviger te maken
- Plaats + plak de LED + ontvanger aan beide kanten
- Bind de draden vast + plak ze op het hout zodat ze niet te veel kruisen
- Plaats de mannelijke pinnen op het breadboard volgens het eerder verstrekte circuit
Stap 5: De matrixmodule voorbereiden en plaatsen
Vervolgens gaan we de 2 LED-matrixmodules aansluiten
Opmerking:
Omdat ik een oude tafelvoetbaltafel gebruikte waren er al gaten naar boven toe vanwege sigarettenhouders. Als u deze niet hebt, moet u ze maken.
Om de draden voor te bereiden:
- Meet de draad van het breadboard naar het bovenste deel van de tafel
- Soldeer enkele vrouwelijke connectoren aan het eerste uiteinde van de draad
- Soldeer enkele mannelijke connectoren aan het andere uiteinde van de draad
De matrix plaatsen:
- Breng de matrix naar buiten door het gat aan de bovenkant
- Riem + tape de draden aan de binnenkant op het hout om kruising te voorkomen
- Steek de mannelijke pinnen op het breadboard volgens het eerder verstrekte circuit
Op een gegeven moment zal ik een kleine doe-het-zelf-stap toevoegen om een behuizing voor de matrixmodule toe te voegen, maar voor nu zijn ze naakt.
Stap 6: het IoT maken
Als je alleen de scores wilt registreren en weergeven, kun je het project beëindigen door een klein draaiend python-script te schrijven dat een lus maakt totdat een van de scores 9 bereikt en vervolgens wordt gereset.
Als u uw tafel echter met internet wilt verbinden, moeten de volgende stappen in uw straatje passen.
In de volgende paar stappen zullen we het volgende aanpakken:
- De Raspberry Pi configureren
- Een database maken voor opslag
- De website maken
- Online zetten
Als je op dit moment bekend bent met git, raad ik je aan een repository op GitHub/GitLab te maken om je bestanden bij te houden. Als u dat niet bent, kunt u een map maken met dezelfde structuur als op de afbeelding.
Het volledige project zal binnenkort beschikbaar zijn op GitHub. Er is echter een tijdelijk rar-bestand met alle benodigde bestanden beschikbaar.
Stap 7: De Raspberry Pi aansluiten
Vervolgens gaan we de Raspberry Pi-omgeving instellen, hiervoor moet u de volgende stappen uitvoeren:
- Maak via SSH verbinding met uw Rasberry Pi (u kunt PuTTY gebruiken)
- Maak een map (voorbeeld mkdir-project) en ga naar deze map met het cd-commando
- Maak een virtuele Python-omgeving in deze map met behulp van de opdracht python3 -m venv --system-site-packages env
- Activeer de virtuele tolk met het source /env/bin/activate commando
- Installeer de pakketten van de requirements.txt met de opdracht python -m pip install pakketnaam
- Breng de bestanden over van het eerder verstrekte project_example.rar-bestand via SSH in uw projectmap
Nu zou je het volledige project op je Raspberry Pi moeten kunnen uitvoeren. Ik raad je aan om een Python IDE zoals PyCharm te gebruiken waarmee je via SSH debuggen van je externe tolk kunt debuggen en indien nodig direct wijzigingen kunt uploaden.
Stap 8: De database instellen
Nu moet u een zeer eenvoudige database opzetten, gebaseerd op dit model.
De gemakkelijkste manier om hiermee om te gaan, is door uw database in de MySQL-workbench aan te maken, waar u ook wat tests kunt doen.
Als je klaar bent, kun je een dump van je database exporteren en uploaden naar je RPi en het vervolgens uitvoeren met sudo mariadb <pathtofile/file.sql
Stap 9: De website maken
Vervolgens kunt u de code in het bestand project_example.rar analyseren (en gebruiken).
Het hoofdbestand is de Flask.py, het brood en de boter van dit project:
- Voert een Flask-SocketIO-app uit die de backend van de website afhandelt
- Maakt een verbinding tussen de database en Flask
- Biedt inlogvalidatie en gebruikersregistratie
- Biedt de nodige code voor het spelen van een spel gebruikt socketio om de website tijdens het spel realtime bij te werken
- Zet de spelresultaten in de database
In de static en templates folders vind je de HTML/CSS/JS die het frontend gedeelte van de website vormen. Voel je vrij om deze naar eigen wens aan te passen.
Stap 10: Verbinding maken met het World Wide Web
Om onze website met het web te verbinden, gebruiken we nginx en uwsgi. In het projectvoorbeeld vindt u de benodigde bestanden in de conf-map.
Allereerst moet u het volgende in deze bestanden bijwerken:
- In de uwsgi-flask.ini moet u het pad van de virtualenv-parameter naar uw interpreter wijzigen
- In de project1-flask.service moet u het [Service]-gedeelte van het bestand bijwerken met uw inloggegevens en paden naar de bijbehorende bestanden
- In het nginx-bestand moet u de server en de locatie / het pad naar uw bijbehorende socket bijwerken
Vervolgens moet u het standaard nginx-webserverbestand vervangen door de locatie van uw nginx-configuratiebestand, hieronder is een voorbeeld van linux-opdrachten om dit te doen
- mij@mijn-rpi:~/project1 $ sudo cp conf/nginx /etc/nginx/sites-available/project1
- mij@mijn-rpi:~/project1 $ sudo rm /etc/nginx/sites-enabled/defaul t
- ik@mijn-rpi:~/project1 $ sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1
- me@my-rpi:~/project1 $ sudo systemctl herstart nginx.service
Ten slotte moet u de aangepaste services toevoegen aan uw systemd-map, dit is een voorbeeld van hoe u dit moet doen:
- mij@mijn-rpi:~/project1 $ sudo cp conf/project1-*.service /etc/systemd/system/
- mij@mijn-rpi:~/project1 $ sudo systemctl daemon-reload
- mij@mijn-rpi:~/project1 $ sudo systemctl start project1-*
- mij@mijn-rpi:~/project1 $ sudo systemctl status project1-*
Als u wilt dat de webserver start bij het opstarten van uw raspberry pi, moet u de opdracht sudo systemctl enable project1-*.service gebruiken.
Als het correct is gedaan, zou uw website na een herstart van het systeem op uw IP-adres moeten draaien. Als u een van deze configuratiebestanden wilt bewerken, moet u altijd de service stoppen, de bestanden opnieuw uploaden en de opdracht daemon-reload gebruiken gevolgd door een start, anders zullen de wijzigingen niet van kracht zijn.
Stap 11: Afwerking
Tijdens het typen van het laatste deel van dit instructable, is dit kleine schoolproject nog steeds een werk in uitvoering.
Ik heb er ontelbare uren aan besteed om dit in 2,5 week voor elkaar te krijgen. Ook al was alles een beetje gehaast, ik ben nog steeds trots op wat ik heb bereikt. Tijdens de montagefase ben ik talloze bugs/fouten/defecte sensoren tegengekomen, dus wees niet te ontmoedigd als alles bij de eerste poging niet werkt.
Het beste wat u kunt doen is hulp vragen of zoeken op internet, er zijn veel mensen met veel betere kennis die u graag willen helpen.
Last but not least wil ik mijn docenten van de Nieuwe Media en Communicatie Technologie bedanken voor het geven van veel advies en het helpen van mij om dit project af te ronden.
Aanbevolen:
IoT Power Module: een functie voor het meten van IoT-vermogen toevoegen aan My Solar Charge Controller: 19 stappen (met afbeeldingen)
IoT Power Module: een functie voor het meten van IoT-vermogen toevoegen aan My Solar Charge Controller: Hallo allemaal, ik hoop dat jullie allemaal geweldig zijn! In deze instructable ga ik je laten zien hoe ik een IoT Power Measurement-module heb gemaakt die de hoeveelheid stroom berekent die wordt gegenereerd door mijn zonnepanelen, die wordt gebruikt door mijn zonnelaadcontroller t
IoT Basics: uw IoT verbinden met de cloud met behulp van Mongoose OS: 5 stappen
IoT Basics: uw IoT verbinden met de cloud met behulp van Mongoose OS: als u een persoon bent die van knutselen en elektronica houdt, komt u vaker wel dan niet de term Internet of Things tegen, meestal afgekort als IoT, en dat het verwijst naar een reeks apparaten die verbinding kunnen maken met internet! Zo iemand zijn
ESP8266 NODEMCU BLYNK IOT-zelfstudie - Esp8266 IOT Blunk en Arduino IDE gebruiken - Led's bedienen via internet: 6 stappen
ESP8266 NODEMCU BLYNK IOT-zelfstudie | Esp8266 IOT Blunk en Arduino IDE gebruiken | LED's bedienen via internet: Hallo jongens, in deze instructables zullen we leren hoe we IOT kunnen gebruiken met onze ESP8266 of Nodemcu. We zullen daarvoor de blynk-app gebruiken. Dus we zullen onze esp8266/nodemcu gebruiken om de LED's via internet te bedienen. Dus de Blynk-app wordt verbonden met onze esp8266 of Nodemcu
IoT Analoge Input - Aan de slag met IoT: 8 stappen
IoT Analoge Input - Aan de slag met IoT: Inzicht in analoge inputs is een cruciaal onderdeel om te begrijpen hoe de dingen om ons heen werken, de meeste, zo niet alle sensoren zijn analoge sensoren (soms worden deze sensoren omgezet naar digitaal). In tegenstelling tot digitale ingangen die alleen aan of uit kunnen staan, is analoge ingang
IoT Plant Monitoring System (met IBM IoT Platform): 11 stappen (met afbeeldingen)
IoT Plant Monitoring System (met IBM IoT Platform): Overzicht Het Plant Monitoring System (PMS) is een applicatie die is gebouwd met mensen die in de arbeidersklasse zitten met groene vingers in het achterhoofd. Tegenwoordig hebben werkende mensen het drukker dan ooit tevoren; het bevorderen van hun loopbaan en het beheren van hun financiën