Sadržaj:

Raspberry Pi IoT Foosball stol: 11 koraka
Raspberry Pi IoT Foosball stol: 11 koraka

Video: Raspberry Pi IoT Foosball stol: 11 koraka

Video: Raspberry Pi IoT Foosball stol: 11 koraka
Video: Bar Top Arcade Cabinet with a Raspberry Pi (from a single sheet of plywood)// How-To 2024, Studeni
Anonim
Raspberry Pi IoT Foosball stol
Raspberry Pi IoT Foosball stol

Dobrodošli u moju verziju hakiranog stola za mali nogomet, u sklopu studentskog projekta za nove medije i komunikacijsku tehnologiju. U osnovi sam odrastao uz stoni nogomet i bilijar pa sam pomislio da bi bilo sjajno pokušati povezati jedan od ovih uređaja s internetom.

Glavno postavljanje koristi postojeći stolni stol za mali nogomet povezan s Raspberry Pi -jem koji može obaviti sve sljedeće zadatke:

  • Koristi GPIO pinove za pogon IR LED/prijamnika i matričnih modula 8x8
  • Pokreće web stranicu Flask pomoću nginxa
  • Pokreće MySQL/MariaDB bazu podataka za pohranu podataka

Da biste mogli ponovno stvoriti ovaj projekt, trebat će vam sljedeće vještine:

Pozadinsko:

  • Razumijevanje HTML/CSS/Javascripta za klijenta web stranice
  • Razumijevanje Pythona s Flaskom/Flask-SocketIO/Jinja2 za poslužiteljsku stranu web stranice
  • Osnovno poznavanje MySQL -a
  • Znati pokrenuti web poslužitelj

Prototip

  • Osnovno znanje o tome kako spojiti električni krug
  • Lemljenje
  • Osnovno razumijevanje pisanja skripte u Pythonu
  • Rad s Linuxom (Raspbian)
  • Imati puno strpljenja jer će biti potrebno puno otklanjanja pogrešaka

Korak 1: Materijali

Evo popisa sa svim potrebnim dijelovima za tablicu:

  • Raspberry Pi Model 3 (s kućištem)
  • T-Cobbler za spajanje Pi na ploču
  • Nogometni stol (koristio sam vrlo stari stol sličan ovom. Mora biti spreman izbušiti rupe u njemu)
  • MAX7219 Arduino matrični modul (2)
  • IR LED odašiljači (2+ jer se lome, slično ovom)
  • IC prijemnici (2+ jer se i oni lome, slično ovom)
  • Osnovna ploča za lemljenje
  • Puno žice (ovisi o veličini stola za mali nogomet)
  • muški priključci (30+)
  • ženski konektori (10+)
  • Otpornici 100-220 Ohma (4+)
  • lemljenje materijala
  • žičane trake
  • LED držači
  • malo drva/vijaka u slučaju da želite prenijeti loptu u oluk

Ukupni trošak ovog projekta u potpunosti ovisi o cijeni vašeg stola za mali nogomet (skupo). Osim stola, materijali će iznositi najviše 150 eura.

Korak 2: Električni krug

Električni krug
Električni krug
Električni krug
Električni krug
Električni krug
Električni krug

Prije nego što pokušate lemiti, sastavite sve komponente, toplo preporučujem da ih prvo isprobate na ploči. Lakše je zamijeniti neispravne komponente prije nego što potrošite sate na njihovo lemljenje.

Isprva sam pokušao implementirati 8x8 LED matricu sa registrom pomaka 74HC595 (prva slika) i nizom tranzistora, ali zbog mnogih žica i vrlo niskog izlaza prešao sam na matrični modul MAX7219 jer uzima samo 5 žica i izravno se pokreće SPI autobus.

Krug koji sam na kraju koristio nacrtan je Fritzingom. Imajte na umu da se IR LED i prijemnici mogu spojiti na bilo koji od vaših besplatnih GPIO pinova.

IC prijemnici i LED diode trebaju biti izravno jedan preko drugog, a vrh LED diode treba biti usmjeren prema prijemniku. Budući da želimo simulirati izravnu zraku koja se može slomiti kretanjem kugle, u tom slučaju doći će do promjene stanja DATA linije prijemnika s 0 na 1.

Korak 3: Kodiranje senzora

Kodiranje senzora
Kodiranje senzora

Većinu ovog projekta kodirao sam pomoću Pycharma jer omogućuje jednostavno postavljanje SSH -a na vaš Raspberry Pi pomoću udaljenog tumača. Neću detaljno govoriti o tome kako ovaj program radi, ali mnogo se informacija može pronaći na web stranici pycharm.

Trenutno još radim na projektu, ali kad sve bude gotovo cijeli će projekt biti dostupan na mom github profilu

Kôd za senzore sastoji se od 3 klase koje se izvode u pozadini na mojoj Flask poslužitelju (što će biti objašnjeno kasnije):

  1. Klasa cilja (veza) -Ova datoteka pokreće sve zasebne komponente koje se mogu pozvati umetanjem ispravnog SPI uređaja/sabirnice i broja pina
  2. Matrix Class (veza) -Ovo je glavna klasa za napajanje MAX7219 modula
  3. Klasa LED i prijamnika (veza) - Ovo je glavna klasa za uključivanje infracrvenog prekidnog snopa pomoću zasebnih niti za smanjenje CPU opterećenja RPi

LED i prijemnik rade na frekvenciji od 38 kHz, a prijemnici uvijek očekuju da će puls od 50% prema gore i do 50% pasti ispravno.

Korak 4: Priprema i postavljanje senzora

Priprema i postavljanje senzora
Priprema i postavljanje senzora
Priprema i postavljanje senzora
Priprema i postavljanje senzora
Priprema i postavljanje senzora
Priprema i postavljanje senzora

Sada ćemo pripremiti IR LED i prijemnik. Na slici tablice možete pronaći mjesta na koja treba postaviti RPi i senzore.

Ali prvo moramo pripremiti ožičenje:

  1. Umjerite potrebnu količinu žice od položaja RPi/matične ploče do mjesta senzora
  2. Lemite pinove IC prijemnika na jedan kraj žice (COM/GND/V+)
  3. Lemite muške dijelove konektora na drugom kraju žice

Sada ćemo pripremiti tablicu:

  1. Napravite osnovni crtež (na temelju slike) gdje ćete bušiti. Vrlo je važno da se dvije rupe poravnaju jedna preko druge jer će to biti mjesto grede.
  2. Izbušite rupe
  3. Ako imate neke LED držače (veza), možete ih staviti unutar rupe kako bi bili čvršći
  4. Umetnite + traku LED + prijemnik s obje strane
  5. Zavežite žice + zalijepite ih na drvo kako ne bi prešli previše
  6. Umetnite muške iglice na ploču prema prethodno navedenom krugu

Korak 5: Priprema i postavljanje matričnog modula

Priprema i postavljanje matričnog modula
Priprema i postavljanje matričnog modula

Sljedeće ćemo spojiti 2 LED matrična modula

Bilješka:

Budući da sam koristio stari stol za mali nogomet, već su se rupe dizale prema gornjem dijelu zbog držača cigareta. Ako ih nemate, morat ćete ih izraditi.

Za pripremu žica:

  1. Izmjerite žicu od ploče prema gornjem dijelu stola
  2. Lemiti neke ženske konektore na prvi kraj žice
  3. Lemite neke muške konektore na drugi kraj žice

Postavljanje matrice:

  1. Izvucite matricu kroz rupu na vrhu
  2. Remen + zalijepite žice unutra na drvo kako biste izbjegli križanje
  3. Umetnite muške iglice na ploču prema prethodno navedenom krugu

U jednom trenutku ću dodati mali korak "uradi sam" kako bih dodao kućište za matrični modul, ali za sada su goli.

Korak 6: Učinite to IoT -om

Making It IoT
Making It IoT

Ako se samo želite registrirati i prikazati rezultate, možete dovršiti projekt pisanjem male pokrenute python skripte koja se ponavlja sve dok jedna od ocjena ne dosegne 9, a zatim se resetira.

Međutim, ako želite povezati svoj stol s internetom, sljedećih nekoliko koraka trebalo bi biti ravno uz vašu uličicu.

U sljedećih nekoliko koraka pozabavit ćemo se sljedećim:

  • Konfiguriranje Raspberry Pi
  • Izrada baze podataka za pohranu
  • Izrada web stranice
  • Postavljanje na internet

U ovom trenutku, ako ste upoznati s gitom, preporučujem da napravite spremište na GitHubu/GitLabu kako biste pratili svoje datoteke. Ako niste, možete stvoriti mapu iste strukture kao na slici.

Cijeli projekt bit će uskoro dostupan na GitHubu. Međutim, dostupna je privremena rar datoteka sa svim potrebnim datotekama.

Korak 7: Povezivanje Raspberry Pi

Zatim ćemo postaviti okruženje maline pi, da biste to učinili, morate izvršiti sljedeće korake:

  • Povežite se putem SSH -a na svoj Rasberry Pi (možete koristiti PuTTY)
  • Izradite mapu (primjer projekta mkdir) i prijeđite u ovu mapu pomoću naredbe cd
  • Izradite virtualno okruženje Python u ovoj mapi pomoću naredbe env python3 -m venv --system-site-packages
  • Aktivirajte virtualni tumač naredbom source/env/bin/enable
  • Instalirajte pakete iz zahtjeva.txt naredbom python -m pip install package -name
  • Prenesite datoteke iz prethodno navedene datoteke project_example.rar putem SSH -a u mapu projekta

Sada biste trebali moći pokrenuti cijeli projekt na svom Raspberry Pi. Savjetujem vam da koristite Python IDE kao što je PyCharm koji vam omogućuje da koristite za ispravljanje pogrešaka s vašeg udaljenog tumača preko SSH -a i izravno učitavanje promjena ako je potrebno.

Korak 8: Postavljanje baze podataka

Postavljanje baze podataka
Postavljanje baze podataka

Sada morate postaviti vrlo osnovnu bazu podataka, temeljenu na ovom modelu.

Najlakši način da to učinite je stvaranje baze podataka na radnom stolu MySQL gdje također možete obaviti neka testiranja.

Nakon što završite, možete izvesti ispis vaše baze podataka i prenijeti je na svoj RPi, a zatim je izvršiti pomoću sudo mariadb <pathtofile/file.sql

Korak 9: Izrada web stranice

Izrada web stranice
Izrada web stranice
Izrada web stranice
Izrada web stranice
Izrada web stranice
Izrada web stranice

Sljedeće možete analizirati (i koristiti) kôd koji se nalazi u datoteci project_example.rar.

Glavna datoteka je Flask.py koja je kruh i maslac ovog projekta:

  • Pokreće aplikaciju Flask-SocketIO koja upravlja pozadinom web stranice
  • Stvara vezu između baze podataka i Flaska
  • Omogućuje provjeru prijave i registraciju korisnika
  • Pruža potreban kôd o tome kako igrati igru koristi socketio za ažuriranje web stranice u stvarnom vremenu tijekom igre
  • Rezultate igre stavlja u bazu podataka

U statičkim i predloškim mapama možete pronaći HTML/CSS/JS koji pružaju prednji dio web stranice. Slobodno ih izmijenite prema vlastitim željama.

Korak 10: Povezivanje na World Wide Web

Za povezivanje naše web stranice s webom koristit ćemo nginx i uwsgi. U primjeru projekta potrebne datoteke možete pronaći u mapi conf.

Prije svega, morate ažurirati sljedeće u ovim datotekama:

  • U uwsgi-flask.ini u trebate promijeniti put parametra virtualenv do vašeg tumača
  • U project1-flask.service trebate ažurirati dio datoteke [Service] sa svojim vjerodajnicama i putovima do pridruženih datoteka
  • U datoteci nginx morate ažurirati poslužitelj i lokaciju / put na povezanu utičnicu

Zatim trebate zamijeniti zadanu datoteku web -poslužitelja nginx s lokacijom vaše konfiguracijske datoteke nginx, dolje je primjer naredbi linux -a za to

  • ja@moj-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • me@moj-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
  • ja@moj-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • me@my-rpi: ~/project1 $ sudo systemctl ponovno pokrenite nginx.service

Konačno, trebate dodati prilagođene usluge u svoju sistemsku mapu, ovo je primjer kako to učiniti:

  • ja@moj-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
  • ja@moj-rpi: ~/project1 $ sudo systemctl početak projekta1-*
  • ja@moj-rpi: ~/project1 $ sudo systemctl status project1-*

Ako želite da se web poslužitelj pokrene pri pokretanju vašeg malina pi, morate upotrijebiti sudo systemctl enable project1-*. Naredbu usluge.

Ako ste to učinili ispravno, nakon ponovnog pokretanja sustava vaša bi se web stranica trebala pokrenuti na vašoj IP adresi. Ako želite urediti jednu od ovih konfiguracijskih datoteka, uvijek morate zaustaviti uslugu, ponovno učitati datoteke i upotrijebiti naredbu daemon-reload nakon koje slijedi početak, inače promjene neće biti učinkovite.

Korak 11: Dovršavanje

Dovršavanje isključeno
Dovršavanje isključeno

Dok tipkate posljednji dio ovog uputstva, ovaj mali školski projekt još je u tijeku.

Potrošio sam nebrojene sate da to napravim za 2,5 tjedna. Iako se sve malo žurilo, i dalje sam ponosan na ono što sam postigao. Tijekom faze montaže naišao sam na bezbroj grešaka/pogrešaka/neispravnih senzora pa nemojte biti previše obeshrabreni ako sve ne radi iz prvog pokušaja.

Najbolje što možete učiniti je zatražiti ili potražiti pomoć na internetu, postoji mnogo ljudi s daleko boljim znanjem koji vam jako žele pomoći.

Na kraju, ali ne i najmanje važno, želim zahvaliti svojim učiteljima iz novih medija i komunikacijske tehnologije koji su mi dali puno savjeta i pomogli mi da završim ovaj projekt.

Preporučeni: