Taula de continguts:

Taula de futbolí IoT Raspberry Pi: 11 passos
Taula de futbolí IoT Raspberry Pi: 11 passos

Vídeo: Taula de futbolí IoT Raspberry Pi: 11 passos

Vídeo: Taula de futbolí IoT Raspberry Pi: 11 passos
Vídeo: Одесса. НАЧАЛОСЬ! 2024, De novembre
Anonim
Taula de futbolí IoT Raspberry Pi
Taula de futbolí IoT Raspberry Pi

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

El circuit elèctric
El circuit elèctric
El circuit elèctric
El circuit elèctric
El circuit elèctric
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

Codificació dels sensors
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):

  1. 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
  2. La classe Matrix (link): aquesta és la classe principal per encendre el mòdul MAX7219
  3. 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

Preparació i col·locació dels sensors
Preparació i col·locació dels sensors
Preparació i col·locació dels sensors
Preparació i col·locació dels sensors
Preparació i col·locació dels sensors
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:

  1. Assegureu-vos que mesureu la quantitat de filferro que necessiteu des de la ubicació RPi / taulers fins a la ubicació del sensor
  2. Soldeu els pins del receptor IR a un extrem del cable (COM / GND / V +)
  3. Soldeu les peces del connector mascle a l’altre extrem del cable

Ara prepararem la taula:

  1. 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.
  2. Practicar els forats
  3. Si teniu alguns suports LED (enllaç), podeu posar-los dins del forat perquè sigui més resistent
  4. Inseriu + enganxeu el receptor LED + a banda i banda
  5. Col·loqueu els cables + enganxeu-los a la fusta perquè no creguin massa
  6. Introduïu els passadors mascle a la placa segons el circuit proporcionat prèviament

Pas 5: Preparació i col·locació del mòdul Matrix

Preparació i col·locació del mòdul Matrix
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:

  1. Mesureu el filferro des de la placa fins a la part superior de la taula
  2. Soldeu alguns connectors femella al primer extrem del cable
  3. Soldeu alguns connectors mascle a l’altre extrem del cable

Col·locació de la matriu:

  1. Traieu la matriu pel forat de la part superior
  2. Corretja + cinta adhesiva dels cables a l'interior de la fusta per evitar l'encreuament
  3. 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

Fer-ho IoT
Fer-ho 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

Configuració de la base de dades
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

Creació del lloc web
Creació del lloc web
Creació del lloc web
Creació del lloc web
Creació del lloc web
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

Acabant
Acabant

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: