Cuprins:
- Pasul 1: Materialele
- Pasul 2: Circuitul electric
- Pasul 3: Codificarea senzorilor
- Pasul 4: Pregătirea și plasarea senzorilor
- Pasul 5: Pregătirea și plasarea modulului Matrix
- Pasul 6: Realizarea IoT
- Pasul 7: Conectarea Raspberry Pi
- Pasul 8: Configurarea bazei de date
- Pasul 9: Crearea site-ului web
- Pasul 10: Conectarea la World Wide Web
- Pasul 11: Finalizarea
Video: Raspberry Pi IoT Foosball Table: 11 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Bine ați venit la versiunea mea de masă de fotbal piratată, ca parte a unui proiect studențesc pentru tehnologia New Media și Communication. Practic am crescut în jurul mesei de biliard și biliard, așa că m-am gândit că ar fi minunat să încerc să conectez unul dintre aceste dispozitive la internet.
Configurarea principală utilizează o masă de fotbal existentă conectată la un Raspberry Pi care poate îndeplini toate următoarele sarcini:
- Folosește pini GPIO pentru a conduce LED-urile / receptoarele IR și modulele matrice de puncte 8x8
- Rulează un site web Flask folosind nginx
- Rulează o bază de date MySQL / MariaDB pentru stocarea datelor
Pentru a putea recrea acest proiect, veți avea nevoie de următoarele abilități:
Backend:
- Înțelegerea HTML / CSS / Javascript pentru clientul site-ului web
- Înțelegerea Python cu Flask / Flask-SocketIO / Jinja2 pentru partea server a site-ului web
- Cunoștințe de bază despre MySQL
- Știți cum să rulați un server web
Prototip
- Cunoștințe de bază despre cum să conectați un circuit electric
- Lipire
- Înțelegere de bază despre cum să scrieți un script în Python
- Lucrul cu Linux (Raspbian)
- Având multă răbdare, pentru că va fi nevoie de multă depanare
Pasul 1: Materialele
Iată lista cu toate părțile necesare pentru tabel:
- Raspberry Pi Model 3 (cu carcasă)
- T-Cobbler pentru conectarea Pi-ului la panou
- Masă de fotbal (am folosit o masă foarte veche asemănătoare cu aceasta. Trebuie să fiu dispus să fac găuri în ea)
- MAX7219 Modul Arduino Dot Matrix (2)
- Emițătoare cu LED IR (2+ pentru că se rup, asemănător cu acesta)
- Receptoare IR (2+ pentru că se rup și ele, asemănător cu acesta)
- Panou de bază fără lipire
- Multă sârmă (depinde de mărimea mesei de fotbal)
- conectori masculi (peste 30 de ani)
- conectori de sex feminin (10+)
- Rezistențe 100-220 Ohm (4+)
- materiale de lipit
- curele de sârmă
- Suporturi LED
- niște lemn / șuruburi în cazul în care doriți să retrageți mingea în jgheab
Costul total al acestui proiect depinde în totalitate de costul mesei de fotbal (scump). Pe lângă masă, materialele vor fi de maximum 150 de euro.
Pasul 2: Circuitul electric
Înainte de a încerca să lipiți, asamblați toate componentele, vă recomand să îl testați mai întâi pe o placă de verificare. Este mai ușor să înlocuiți componentele defecte înainte de a petrece ore întregi lipindu-le.
La început am încercat să pun în aplicare matricea LED 8x8 cu un registru de schimbare 74HC595 (prima imagine) și matrice de tranzistori, dar datorită numeroaselor fire și a ieșirii foarte mici, am trecut la modulul MAX7219 Dot Matrix, deoarece ia doar 5 fire și este acționat direct de un autobuz SPI.
Circuitul pe care l-am folosit în cele din urmă este desenat cu Fritzing. Vă rugăm să rețineți că LED-urile și receptoarele IR pot fi conectate la oricare dintre pinii GPIO gratuiți.
Receptoarele IR și LED-ul ar trebui să fie direct unul peste celălalt, iar partea de sus a LED-ului ar trebui să fie îndreptată către receptor. Pentru că vrem să simulăm un fascicul direct care poate fi rupt de mișcarea mingii, caz în care va exista o schimbare de stare a liniei de date a receptorului de la 0 la 1.
Pasul 3: Codificarea senzorilor
Am codificat majoritatea acestui proiect folosind Pycharm, deoarece permite implementarea ușoară SSH pe Raspberry Pi folosind un interpret de la distanță. Nu voi trece în detaliu cu privire la modul în care funcționează acest program, dar multe informații pot fi găsite pe site-ul pycharm.
În prezent, încă lucrez la proiect, dar odată ce totul este făcut, întregul proiect va fi disponibil pe profilul meu github
Codul pentru senzori constă din 3 clase care sunt rulate într-un fir de fundal pe serverul meu Flask (care va fi explicat mai târziu):
- Clasa obiectivului (link) - Acest fișier inițiază toate componentele separate, care pot fi apelate prin inserarea dispozitivului / magistralei SPI corecte și a numărului PIN
- Clasa Matrix (link) - Aceasta este clasa principală pentru alimentarea modulului MAX7219
- Clasa LED și receptor (link) - Aceasta este clasa principală pentru alimentarea razei de infraroșu folosind fire separate pentru a reduce sarcina procesorului RPi
LED-urile și receptorul funcționează pe o frecvență de 38 kHz, iar receptoarele se așteaptă întotdeauna ca un impuls de 50% în sus și un 50% în jos să funcționeze corect.
Pasul 4: Pregătirea și plasarea senzorilor
Acum vom pregăti LED-ul IR și receptorul. În imaginea tabelului puteți găsi locațiile unde trebuie amplasate RPi și senzori.
Dar mai întâi trebuie să pregătim cablajul:
- Asigurați-vă că măsurați cantitatea de sârmă necesară de la locația RPi / panoul de măsurare până la locația senzorului
- Lipiți pinii receptorului IR la un capăt al firului (COM / GND / V +)
- Lipiți piesele conectorului tată la celălalt capăt al firului
Acum vom pregăti masa:
- Faceți un desen de bază (bazat pe imagine) pe unde să găuriți. Este foarte important ca cele două găuri să fie aliniate între ele, deoarece aceasta va fi locația fasciculului.
- Găuriți găurile
- Dacă aveți niște suporturi de LED-uri (link), le puteți pune în interiorul orificiului pentru ao face mai robust
- Introduceți + bandă LED + receptor pe ambele părți
- Fixați firele + fixați-le pe lemn, astfel încât să nu se încrucișeze prea mult
- Introduceți știfturile tată pe panoul de control conform circuitului furnizat anterior
Pasul 5: Pregătirea și plasarea modulului Matrix
În continuare vom conecta cele 2 module matrice LED
Notă:
Deoarece am folosit o masă de foosball veche, erau deja găuri care urcau spre partea superioară din cauza suporturilor de țigări. Dacă nu le aveți, va trebui să le creați.
Pentru a pregăti firele:
- Măsurați firul de la panou spre partea de sus a mesei
- Lipiți niște conectori feminini la primul capăt al firului
- Lipiți niște conectori masculi la celălalt capăt al firului
Plasarea matricei:
- Scoateți matricea prin orificiul din partea de sus
- Curea + lipiți firele din interior pe lemn pentru a evita traversarea
- Introduceți știfturile masculine pe panoul de măsurare conform circuitului furnizat anterior
La un moment dat voi adăuga un mic pas DIY pentru a adăuga o carcasă pentru modulul matrice, dar deocamdată sunt goi.
Pasul 6: Realizarea IoT
Dacă doriți doar să vă înregistrați și să afișați scorurile, puteți finaliza proiectul scriind un mic script Python care rulează până când unul dintre scoruri ajunge la 9 și apoi se resetează.
Cu toate acestea, dacă doriți să vă conectați masa la internet, următorii pași ar trebui să vă îndrepte aleea.
În următorii pași vom aborda următoarele:
- Configurarea Raspberry Pi
- Realizarea unei baze de date pentru stocare
- Crearea site-ului web
- Punerea acestuia online
În acest moment, dacă sunteți familiarizat cu git, vă recomand să creați un depozit pe GitHub / GitLab pentru a vă urmări fișierele. Dacă nu sunteți, puteți crea un folder cu aceeași structură ca în imagine.
Proiectul complet va fi disponibil în curând pe GitHub. Cu toate acestea, este disponibil un fișier rar temporar cu toate fișierele necesare.
Pasul 7: Conectarea Raspberry Pi
În continuare vom configura mediul raspberry pi, pentru a face acest lucru trebuie să executați pașii următori:
- Conectați-vă prin SSH la Rasberry Pi (puteți utiliza PuTTY)
- Creați un folder (exemplu proiect mkdir) și mutați în acest folder folosind comanda cd
- Creați un mediu Python virtual în acest folder folosind comanda python3 -m venv --system-site-packages env
- Activați interpretul virtual cu comanda sursă / env / bin / activate
- Instalați pachetele din requirements.txt cu comanda python -m pip install package-name
- Transferați fișierele din fișierul project_example.rar furnizat anterior prin SSH în folderul proiectului
Acum ar trebui să puteți rula întregul proiect pe Raspberry Pi. Vă sfătuiesc să utilizați un IDE Python, cum ar fi PyCharm, care vă permite să vă utilizați pentru a depana de la interpretul de la distanță prin SSH și pentru a încărca direct modificările, dacă este necesar.
Pasul 8: Configurarea bazei de date
Acum trebuie să configurați o bază de date foarte simplă, bazată pe acest model.
Cel mai simplu mod de a merge cu aceasta este să vă creați baza de date în bancul de lucru MySQL, unde puteți face și câteva teste.
După ce ați terminat, puteți exporta o descărcare a bazei de date și o puteți încărca pe RPi și apoi o puteți executa cu sudo mariadb <pathtofile / file.sql
Pasul 9: Crearea site-ului web
În continuare puteți analiza (și utiliza) codul furnizat în fișierul project_example.rar.
Fișierul principal este Flask.py, care este pâinea și untul acestui proiect:
- Rulează o aplicație Flask-SocketIO care gestionează backend-ul site-ului web
- Creează o conexiune între baza de date și Flask
- Oferă validare autentificare și înregistrare utilizator
- Oferă codul necesar pentru a juca un joc utilizează socketio pentru a actualiza site-ul web în timp real în timpul jocului
- Introduce rezultatele jocului în baza de date
În folderele statice și șabloane puteți găsi HTML / CSS / JS care oferă partea frontend a site-ului web. Simțiți-vă liber să le modificați după propriile voințe.
Pasul 10: Conectarea la World Wide Web
Pentru a ne conecta site-ul la internet vom folosi nginx și uwsgi. În exemplul de proiect, puteți găsi fișierele necesare în folderul conf.
În primul rând, trebuie să actualizați următoarele în aceste fișiere:
- În uwsgi-flask.ini trebuie să schimbați calea parametrului virtualenv la interpretul dvs.
- În project1-flask.service trebuie să actualizați partea [Service] a fișierului cu acreditările și căile către fișierele asociate
- În fișierul nginx trebuie să actualizați serverul și locația / calea către socketul asociat
În continuare, trebuie să înlocuiți fișierul implicit al serverului web nginx cu locația fișierului dvs. de configurare nginx, mai jos este un exemplu de comenzi linux pentru a face acest lucru
- 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 reporniți nginx.service
În cele din urmă, trebuie să adăugați serviciile personalizate în folderul dvs. systemd, acesta este un exemplu despre cum să faceți acest lucru:
- 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- *
Dacă doriți ca serverul web să înceapă la pornirea raspberry pi, trebuie să utilizați comanda de serviciu sudo systemctl enable project1 - *.
Dacă este făcut corect, după repornirea sistemului, site-ul dvs. web ar trebui să ruleze pe adresa dvs. IP. Dacă doriți să editați unul dintre aceste fișiere de configurare, trebuie întotdeauna să opriți serviciul, să încărcați din nou fișierele și să utilizați comanda daemon-reload urmată de un start, altfel modificările nu vor fi eficiente.
Pasul 11: Finalizarea
În timp ce tastați partea finală a acestui instructabil, acest mic proiect școlar este încă o lucrare în desfășurare.
Am petrecut nenumărate ore să realizez acest lucru în 2,5 săptămâni. Chiar dacă totul s-a grăbit un pic, sunt totuși mândru de ceea ce am realizat. În timpul fazei de asamblare am întâlnit nenumărate erori / erori / senzori defecți, așa că nu vă descurajați prea mult dacă totul nu funcționează la prima încercare.
Cel mai bun lucru pe care îl puteți face este să cereți sau să căutați ajutor pe internet, există o mulțime de oameni cu cunoștințe mult mai bune care sunt foarte dornici să vă ajute.
Nu în ultimul rând, vreau să le mulțumesc profesorilor de la New Media and Communication Technology pentru că mi-au dat multe sfaturi și m-au ajutat să finalizez acest proiect.
Recomandat:
Realizarea aplicației Android pentru întreprinderile mici utilizând MIT APP și Google Fusion Table: 7 pași
Realizarea aplicației Android pentru întreprinderile mici folosind MIT APP și Google Fusion Table: Ați dorit vreodată să creați propria aplicație care poate fi disponibilă în magazinul Google Play !!! Dacă aveți o afacere, acest tutorial vă va schimba viața. După ce ați citit cu atenție acest lucru, veți putea să vă creați propria aplicație. Înainte
MAME Gaming Table cu Raspberry Pi: 5 pași
MAME Gaming Table With Raspberry Pi: Inspirat de proiecte similare online, am lucrat cu un vecin pentru a construi o pereche de măsuțe de masă retro bazate pe MAME. Cea mai compactă este a mea; cu atât este mai mare cu două seturi de comenzi. Fotografiile ambelor sunt utilizate în acest instrument
Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori de efect Hall: 7 pași
Demo 4x4 al unei table de șah electronice / cu cititor Arduino Mega + RFID + senzori de efect Hall: Bună ziua, sunt Tahir Miriyev, absolvent al Universității Tehnice din Orientul Mijlociu, Ankara / Turcia. M-am specializat în matematică aplicată, dar mi-a plăcut întotdeauna să fac lucruri, mai ales atunci când a implicat unele lucrări manuale cu electronică, proiectare și programare
Retropie Ikea Arcade Table: 13 pași (cu imagini)
Retropie Ikea Arcade Table: Masa arcade Ikea Raspberry Pi este o modalitate minunată de a pirata seria Ikea Lack de mobilier de sufragerie într-un plug complet funcțional și de a juca un sistem arcade retro. Necesită doar cunoștințe de bază despre calcul și prelucrarea lemnului și face o uimire
Arduino Servo Foosball: 5 pași
Arduino Servo Foosball: de David Joy și Andrew Gothard