Sadržaj:
- Korak 1: Materijali
- Korak 2: Električni krug
- Korak 3: Kodiranje senzora
- Korak 4: Priprema i postavljanje senzora
- Korak 5: Priprema i postavljanje matričnog modula
- Korak 6: Učinite to IoT -om
- Korak 7: Povezivanje Raspberry Pi
- Korak 8: Postavljanje baze podataka
- Korak 9: Izrada web stranice
- Korak 10: Povezivanje na World Wide Web
- Korak 11: Dovršavanje
Video: Raspberry Pi IoT Foosball stol: 11 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
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
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
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):
- Klasa cilja (veza) -Ova datoteka pokreće sve zasebne komponente koje se mogu pozvati umetanjem ispravnog SPI uređaja/sabirnice i broja pina
- Matrix Class (veza) -Ovo je glavna klasa za napajanje MAX7219 modula
- 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
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:
- Umjerite potrebnu količinu žice od položaja RPi/matične ploče do mjesta senzora
- Lemite pinove IC prijemnika na jedan kraj žice (COM/GND/V+)
- Lemite muške dijelove konektora na drugom kraju žice
Sada ćemo pripremiti tablicu:
- 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.
- Izbušite rupe
- Ako imate neke LED držače (veza), možete ih staviti unutar rupe kako bi bili čvršći
- Umetnite + traku LED + prijemnik s obje strane
- Zavežite žice + zalijepite ih na drvo kako ne bi prešli previše
- Umetnite muške iglice na ploču prema prethodno navedenom krugu
Korak 5: 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:
- Izmjerite žicu od ploče prema gornjem dijelu stola
- Lemiti neke ženske konektore na prvi kraj žice
- Lemite neke muške konektore na drugi kraj žice
Postavljanje matrice:
- Izvucite matricu kroz rupu na vrhu
- Remen + zalijepite žice unutra na drvo kako biste izbjegli križanje
- 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
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
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
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
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:
LED svjetlo za pametni stol - Pametna rasvjeta W/ Arduino - Radni prostor Neopiksela: 10 koraka (sa slikama)
LED svjetlo za pametni stol | Pametna rasvjeta W/ Arduino | Radni prostor Neopixela: Danas dane provodimo puno vremena kod kuće, učimo i virtualno radimo, pa zašto ne bismo povećali svoj radni prostor prilagođenim i pametnim sustavom osvjetljenja zasnovanim na LED -ima LED Arduino i Ws2812b. Ovdje ću vam pokazati kako izgraditi svoj pametni telefon LED svjetlo za stol koje
LED zvučno reagirajuća beskonačna kocka Krajnji stol: 6 koraka (sa slikama)
Zvučna reakcija Infinity Cube LED krajnji stol: Vau! Vau! Kakav cool efekt! - Ovo su neke stvari koje ćete čuti nakon što dovršite vodič. Potpuno zapanjujuća, lijepa, hipnotička, zvučno reaktivna kocka beskonačnosti. Ovo je skromno napredan projekt lemljenja, trebalo mi je oko 12 ljudi
Arduino prijenosni radni stol, dio 3: 11 koraka
Arduino prijenosni radni stol 3. dio: Ako ste gledali dijelove 1, 2 i 2B, do sada nije bilo puno Arduina u ovom projektu, ali samo nekoliko žica ploča itd. Nije o tome riječ i dio infrastrukture mora se sagraditi prije nego što ostatak radi. Ovo je elektronika i A
Automatski stol za sjedenje/stajanje: 14 koraka (sa slikama)
Automatski stol za sjedenje/stajanje: ** MOLIMO VAS GLASAJTE ZA OVO UPUTSTVO! ** .. Unatoč prvim sumnjama, jako sam zadovoljan konačnim proizvodom! Evo ga, moj stav o automatskom stolu za sjedenje/stajanje
MAME stol za igre s Raspberry Pi: 5 koraka
MAME stol za igre s Raspberry Pi: Inspiriran sličnim projektima na internetu, radio sam sa susjedom na izgradnji par stolova za kavu MAME retro stolova za igre. Kompaktniji je moj; veći s dva seta kontrola je njegov. U ovom se tekstu koriste obje fotografije