Taula de continguts:
- Pas 1: els materials
- Pas 2: el circuit elèctric
- Pas 3: Codificació dels sensors
- Pas 4: Preparació i col·locació dels sensors
- Pas 5: Preparació i col·locació del mòdul Matrix
- Pas 6: fer-lo IoT
- Pas 7: connectar el Raspberry Pi
- Pas 8: Configuració de la base de dades
- Pas 9: creació del lloc web
- Pas 10: Connexió a la xarxa mundial
- Pas 11: Acabar
Vídeo: Taula de futbolí IoT Raspberry Pi: 11 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Benvingut a la meva versió d'una taula de futbolí piratejada, com a part d'un projecte estudiantil sobre tecnologia de nous mitjans i comunicació. Bàsicament vaig créixer al voltant del futbolí i les taules de billar, així que vaig pensar que seria fantàstic intentar connectar un d’aquests dispositius a Internet.
La configuració principal utilitza una taula de futbolí existent connectada a un Raspberry Pi que pot realitzar totes les tasques següents:
- Utilitza pins GPIO per conduir els LED / receptors IR i els mòduls de matriu de punts de 8x8
- Executa un lloc web de Flask mitjançant nginx
- Executa una base de dades MySQL / MariaDB per emmagatzemar dades
Per poder recrear aquest projecte, necessitareu les habilitats següents:
Backend:
- Conèixer HTML / CSS / Javascript per al client del lloc web
- Descripció de Python amb Flask / Flask-SocketIO / Jinja2 per al costat del servidor del lloc web
- Coneixements bàsics de MySQL
- Saber executar un servidor web
Prototip
- Coneixements bàsics sobre com connectar un circuit elèctric
- Soldadura
- Comprensió bàsica sobre com escriure un script a Python
- Treballar amb Linux (Raspbian)
- Tenir molta paciència perquè hi haurà molta depuració
Pas 1: els materials
Aquí teniu la llista amb totes les parts necessàries per a la taula:
- Raspberry Pi Model 3 (amb carcassa)
- T-Cobbler per connectar el Pi a la taula de treball
- Taula de futbolí (he utilitzat una taula molt antiga similar a aquesta. He d’estar disposat a fer-hi forats)
- Mòdul MAX7219 Arduino Dot Matrix (2)
- Emissors de LED IR (2+ perquè es trenquen, semblants a aquest)
- Receptor IR (2+ perquè també es trenquen, semblant a aquest)
- Taula de pa bàsica sense soldadura
- Molts fils (depèn de la mida de la taula de futbolí)
- connectors masculins (30+)
- connectors femella (10+)
- Resistències de 100-220 ohms (4+)
- materials de soldadura
- corretges de filferro
- Suports LED
- una mica de fusta / cargols per si voleu retransmetre la pilota a la cuneta
El cost total d’aquest projecte depèn totalment del cost de la vostra taula de futbolí (car). A més de la taula, els materials seran màxims de 150 euros.
Pas 2: el circuit elèctric
Abans d’intentar soldar, munteu tots els components, us recomano provar-los primer en una taula de treball. És més fàcil substituir components defectuosos abans de passar hores soldant-los.
Al principi, vaig intentar implementar la matriu LED de 8x8 amb un registre de desplaçament 74HC595 (primera imatge) i una matriu de transistors, però a causa dels molts cables i la sortida molt baixa vaig canviar al mòdul de matriu de punts MAX7219 perquè només pren 5 cables i és accionat directament per un bus SPI.
El circuit que he fet servir finalment es dibuixa amb Fritzing. Tingueu en compte que els LED i els receptors IR es poden connectar a qualsevol dels vostres pins GPIO gratuïts.
Els receptors IR i el LED haurien d’estar directament l’un sobre l’altre i la part superior del LED hauria d’estar orientada cap al receptor. Com que volem simular un feix directe que es pot trencar pel moviment de la pilota, en aquest cas hi haurà un canvi d'estat de la línia de dades del receptor de 0 a 1.
Pas 3: Codificació dels sensors
He codificat la major part d’aquest projecte mitjançant Pycharm perquè permet un desplegament SSH fàcil al vostre Raspberry Pi mitjançant un intèrpret remot. No aprofundiré en el funcionament d’aquest programa, però es pot trobar molta informació al lloc web de pycharm.
Actualment encara estic treballant en el projecte, però un cop fet tot el projecte estarà disponible al meu perfil de github
El codi dels sensors consta de 3 classes que s’executen en un fil de fons al servidor Flask (que s’explicarà més endavant):
- The Goal Class (enllaç): aquest fitxer inicia tots els components separats, als quals es pot accedir mitjançant la inserció del dispositiu / bus SPI correcte i el número de pin
- La classe Matrix (link): aquesta és la classe principal per encendre el mòdul MAX7219
- La classe de LED i receptor (enllaç): és la classe principal per encendre el feix de trencament d’infrarojos mitjançant fils separats per reduir la càrrega de la CPU del RPi
El LED i el receptor funcionen a una freqüència de 38 kHz i els receptors sempre esperen un 50% de pujada i un 50% de pols de baixada per funcionar correctament.
Pas 4: Preparació i col·locació dels sensors
Ara prepararem el LED IR i el receptor. A la imatge de la taula podeu trobar les ubicacions on s'han de col·locar el RPi i els sensors.
Però primer hem de preparar el cablejat:
- Assegureu-vos que mesureu la quantitat de filferro que necessiteu des de la ubicació RPi / taulers fins a la ubicació del sensor
- Soldeu els pins del receptor IR a un extrem del cable (COM / GND / V +)
- Soldeu les peces del connector mascle a l’altre extrem del cable
Ara prepararem la taula:
- Feu un dibuix bàsic (basat en la imatge) sobre on trepar. És molt important que els dos forats estiguin alineats entre si, perquè aquesta serà la ubicació del feix.
- Practicar els forats
- Si teniu alguns suports LED (enllaç), podeu posar-los dins del forat perquè sigui més resistent
- Inseriu + enganxeu el receptor LED + a banda i banda
- Col·loqueu els cables + enganxeu-los a la fusta perquè no creguin massa
- Introduïu els passadors mascle a la placa segons el circuit proporcionat prèviament
Pas 5: Preparació i col·locació del mòdul Matrix
A continuació, connectarem els 2 mòduls de matriu LED
Nota:
Com que utilitzava una antiga taula de futbolí, ja hi havia forats que pujaven cap a la part superior a causa dels porta-cigarrets. Si no els teniu, els haureu de crear.
Per preparar els cables:
- Mesureu el filferro des de la placa fins a la part superior de la taula
- Soldeu alguns connectors femella al primer extrem del cable
- Soldeu alguns connectors mascle a l’altre extrem del cable
Col·locació de la matriu:
- Traieu la matriu pel forat de la part superior
- Corretja + cinta adhesiva dels cables a l'interior de la fusta per evitar l'encreuament
- Introduïu els passadors mascle a la placa segons el circui proporcionat anteriorment
En algun moment afegiré un petit pas de bricolatge per afegir una carcassa per al mòdul matricial, però de moment estan nus.
Pas 6: fer-lo IoT
Si només voleu registrar-vos i mostrar les puntuacions, podeu acabar el projecte escrivint un petit script Python en execució que es repeteixi fins que una de les puntuacions arribi a 9 i es restableixi.
Tanmateix, si voleu connectar la vostra taula a Internet, els següents passos haurien de situar-vos al carreró.
En els propers passos tractarem el següent:
- Configuració del Raspberry Pi
- Creació d’una base de dades per emmagatzemar
- Creació del lloc web
- Posant-lo en línia
En aquest punt, si esteu familiaritzat amb git, us recomano que feu un dipòsit a GitHub / GitLab per fer un seguiment dels vostres fitxers. Si no, podeu crear una carpeta amb la mateixa estructura que a la imatge.
El projecte complet estarà disponible aviat a GitHub. Tanmateix, hi ha disponible un fitxer rar temporal amb tots els fitxers necessaris.
Pas 7: connectar el Raspberry Pi
A continuació, configurarem l'entorn raspberry pi, per fer-ho, heu d'executar els passos següents:
- Connecteu-vos mitjançant SSH al Rasberry Pi (podeu utilitzar PuTTY)
- Creeu una carpeta (exemple mkdir project) i moveu-la a aquesta carpeta mitjançant l'ordre cd
- Creeu un entorn Python virtual en aquesta carpeta mitjançant l'ordre python3 -m venv --system-site-packages env
- Activeu l'intèrpret virtual amb l'ordre source / env / bin / activate
- Instal·leu els paquets des de requirements.txt amb l’ordre python -m pip install package-name
- Transfereix els fitxers del fitxer project_example.rar proporcionat anteriorment per SSH a la carpeta del projecte
Ara hauríeu de poder executar el projecte complet al vostre Raspberry Pi. Us aconsello que utilitzeu un IDE de Python com PyCharm que us permeti utilitzar-vos per depurar des del vostre intèrpret remot mitjançant SSH i penjar directament els canvis si cal.
Pas 8: Configuració de la base de dades
Ara cal configurar una base de dades molt bàsica, basada en aquest model.
La manera més senzilla d’anar amb això és crear la vostra base de dades al banc de treball MySQL, on també podeu fer proves.
Un cop fet, podeu exportar un buidatge de la vostra base de dades i penjar-la al vostre RPi i després executar-la amb sudo mariadb <pathtofile / file.sql
Pas 9: creació del lloc web
A continuació, podeu analitzar (i utilitzar) el codi proporcionat al fitxer project_example.rar.
El fitxer principal és Flask.py, que és el pa i la mantega d’aquest projecte:
- Executa una aplicació Flask-SocketIO que gestiona el backend del lloc web
- Crea una connexió entre la base de dades i Flask
- Proporciona validació d’inici de sessió i registre d’usuari
- Proporciona el codi necessari sobre com jugar un joc amb socketio per actualitzar el lloc web en temps real durant el joc
- Insereix els resultats del joc a la base de dades
A les carpetes estàtiques i de plantilles podeu trobar el codi HTML / CSS / JS que proporciona la part frontal del lloc web. No dubteu a modificar-los segons els vostres gustos.
Pas 10: Connexió a la xarxa mundial
Per connectar el nostre lloc web al web utilitzarem nginx i uwsgi. A l'exemple del projecte podeu trobar els fitxers necessaris a la carpeta conf.
Primer de tot, heu d’actualitzar el següent en aquests fitxers:
- A uwsgi-flask.ini heu de canviar la ruta del paràmetre virtualenv al vostre intèrpret
- Al project1-flask.service heu d’actualitzar la part [Servei] del fitxer amb les vostres credencials i camins als fitxers associats.
- Al fitxer nginx, heu d’actualitzar el servidor i la ubicació / ruta al sòcol associat
A continuació, heu de substituir el fitxer predeterminat del servidor web nginx per la ubicació del fitxer de configuració nginx; a continuació es mostra un exemple d'ordres de Linux per fer-ho.
- 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 reinicia nginx.service
Finalment, heu d’afegir els serveis personalitzats a la carpeta systemd, aquest és un exemple de com fer-ho:
- me @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /
- me @ my-rpi: ~ / project1 $ sudo systemctl daemon-recoad
- me @ my-rpi: ~ / project1 $ sudo systemctl start project1- *
- me @ my-rpi: ~ / project1 $ sudo systemctl status project1- *
Si voleu que el servidor web comenci a arrencar el vostre raspberry pi, heu d’utilitzar l’ordre de servei sudo systemctl enable project1 - *.
Si es fa correctament, després de reiniciar el sistema, el lloc web hauria d’executar-se a la vostra adreça IP. Si voleu editar un d'aquests fitxers de configuració, sempre heu d'aturar el servei, tornar a penjar els fitxers i utilitzar l'ordre daemon-recoad seguida d'un inici, en cas contrari els canvis no seran efectius.
Pas 11: Acabar
Mentre escriviu la part final d’aquest instructiu, aquest petit projecte escolar encara és un treball en curs.
He dedicat infinitat d’hores a fer-ho en 2,5 setmanes. Tot i que tot es va precipitar una mica, estic orgullós del que he aconseguit. Durant la fase de muntatge he trobat infinitat d'errors / errors / sensors defectuosos, així que no us desanimeu si tot no funciona al primer intent.
El millor que podeu fer és demanar ajuda o buscar ajuda a Internet, hi ha molta gent amb molt millor coneixement que està molt desitjosa d’ajudar-vos.
Per últim, però no menys important, vull donar les gràcies als meus professors de New Media and Communication Technology per donar-me molts consells i ajudar-me a acabar aquest projecte.
Recomanat:
Com crear i inserir una taula i afegir columnes i / o files addicionals a aquesta taula al Microsoft Office Word 2007: 11 passos
Com es crea i s'insereix una taula i s'afegeixen columnes i / o files addicionals a aquesta taula a Microsoft Office Word 2007: alguna vegada heu tingut moltes dades amb les quals esteu treballant i pensades per a vosaltres mateixos … "com puc fer tot d'aquestes dades es veuen millor i són més fàcils d'entendre? " Si és així, és possible que la vostra resposta sigui una taula del Microsoft Office Word 2007
Taula Node IoT (A) de la sèrie DockerPi per a Raspberry Pi 4B: 4 passos
Taula IoT Node (A) de la sèrie DockerPi per a Raspberry Pi 4B: Descripcions: El node IoT (A) és un dels mòduls de la sèrie DockerP. Node IOT (A) = GPS / BDS + GSM + Lora. I2C controla directament Lora, envia i rep dades, controla el mòdul GSM / GPS / BDS mitjançant SC16IS752, la placa principal només necessita suport I2C. Suport Raspbe
WebFoos: una taula de futbolí intel·ligent: 6 passos
WebFoos: una taula de futbolí intel·ligent: pel meu projecte escolar del meu primer any a Howest, vaig decidir fer una taula de futbolí intel·ligent. La taula registra els objectius i desa els partits jugats, les estadístiques de partit i les estadístiques d’usuari / equip en un lloc web en línia
Servo futbolí Arduino: 5 passos
Arduino Servo Foosball: de David Joy i Andrew Gothard
Taula de futbolí autònoma: 5 passos (amb imatges)
Taula de futbolí autònom: l'objectiu principal del projecte era completar un prototip de treball per a una taula de futbolí autònoma (AFT), on un jugador humà s'enfrontés a un oponent robot. Des de la perspectiva humana del joc, el futbolí és molt similar a una taula normal. El joc