Sisällysluettelo:
- Vaihe 1: Materiaalit
- Vaihe 2: Sähköpiiri
- Vaihe 3: Anturien koodaus
- Vaihe 4: Anturien valmistelu ja sijoittaminen
- Vaihe 5: Matriisimoduulin valmistelu ja sijoittaminen
- Vaihe 6: Tee siitä IoT
- Vaihe 7: Liitä Raspberry Pi
- Vaihe 8: Tietokannan määrittäminen
- Vaihe 9: Verkkosivuston luominen
- Vaihe 10: Yhteyden muodostaminen World Wide Webiin
- Vaihe 11: Viimeistely pois
Video: Raspberry Pi IoT Foosball -pöytä: 11 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tervetuloa versiolleni hakkeroidusta jalkapallo -pöydästä osana uuden median ja viestintätekniikan opiskelijaprojektia. Kasvoin pohjimmiltaan jalkapallo- ja biljardipöytiä, joten ajattelin, että olisi hienoa yrittää yhdistää yksi näistä laitteista Internetiin.
Pääasennus käyttää olemassa olevaa jalkapallo -pöytää, joka on yhdistetty Raspberry Pi -laitteeseen ja joka voi suorittaa kaikki seuraavat tehtävät:
- Käyttää GPIO -nastoja IR -LED/vastaanottimien ja 8x8 pistematriisimoduulien ohjaamiseen
- Käyttää Flask -verkkosivustoa nginxin avulla
- Käyttää MySQL/MariaDB -tietokantaa tietojen tallennukseen
Jotta voit luoda tämän projektin uudelleen, tarvitset seuraavat taidot:
Tausta:
- HTML/CSS/Javascriptin ymmärtäminen verkkosivuston asiakkaalle
- Pythonin ymmärtäminen Flask/Flask-SocketIO/Jinja2: n kanssa verkkosivuston palvelinpuolella
- Perustiedot MySQL: stä
- Osaa ajaa verkkopalvelinta
Prototyyppi
- Perustiedot sähköpiirin johtamisesta
- Juotos
- Perustiedot käsikirjoituksen kirjoittamisesta Pythonissa
- Työskentely Linuxin kanssa (Raspbian)
- On paljon kärsivällisyyttä, koska siihen liittyy paljon virheenkorjausta
Vaihe 1: Materiaalit
Tässä on luettelo kaikista tarvittavista osista taulukkoon:
- Raspberry Pi Model 3 (kotelolla)
- T-Cobbler Pi: n liittämiseksi leipälautaan
- Foosball -pöytä (käytin hyvin vanhaa pöytää, joka on samanlainen kuin tämä. Täytyy olla valmis poraamaan siihen reikiä)
- MAX7219 Arduino -pistematriisimoduuli (2)
- IR -LED -emitterit (2+, koska ne rikkoutuvat, samanlainen kuin tämä)
- IR -vastaanottimet (2+, koska ne myös rikkoutuvat, samanlainen kuin tämä)
- Perusjuotamaton leipälauta
- Paljon ja paljon lankaa (riippuu jalkapallo -pöydän koosta)
- urosliittimet (30+)
- naarasliittimet (10+)
- 100-220 ohmin vastukset (4+)
- juotosmateriaalit
- lankahihnat
- LED -pidikkeet
- joitakin puita/ruuveja, jos haluat lähettää pallon kouruun
Tämän projektin kokonaiskustannukset riippuvat täysin jalkapallo -pöydän kustannuksista (kallis). Pöydän lisäksi materiaalit ovat enintään 150 euroa.
Vaihe 2: Sähköpiiri
Ennen kuin yrität juottaa, kokoa kaikki komponentit, joita suosittelen testaamaan ensin leipälevyllä. Vialliset komponentit on helpompi vaihtaa ennen kuin olet käyttänyt tuntikausia niiden juottamiseen.
Aluksi yritin toteuttaa 8x8 LED -matriisin 74HC595 -siirtorekisterillä (ensimmäinen kuva) ja transistorimatriisin, mutta monien johtimien ja erittäin alhaisen lähdön vuoksi vaihdoin MAX7219 -pistematriisimoduuliin, koska se vie vain 5 johtoa ja sitä ohjaa suoraan SPI -väylä.
Piiri, jota lopulta käytin, piirretään Fritzingillä. Huomaa, että IR -LEDit ja vastaanottimet voidaan liittää mihin tahansa ilmaiseen GPIO -nastaasi.
IR -vastaanottimien ja LED -valojen tulee olla suoraan toisiaan vastapäätä ja LED -valon yläosan tulee osoittaa kohti vastaanotinta. Koska haluamme simuloida suoraa sädettä, jonka pallon liike voi rikkoa, jolloin vastaanottimen DATA -linjan tila muuttuu 0: sta 1: een.
Vaihe 3: Anturien koodaus
Olen koodannut suurimman osan tästä projektista Pycharmin avulla, koska se mahdollistaa SSH: n helpon käyttöönoton Raspberry Pi -laitteellesi etätulkin avulla. En mene yksityiskohtaisesti tämän ohjelman toimintaan, mutta paljon tietoa löytyy pycharmin verkkosivustolta.
Työskentelen edelleen projektin parissa, mutta kun kaikki on tehty, koko projekti on saatavilla github -profiilissani
Anturien koodi koostuu kolmesta luokasta, jotka suoritetaan taustalangassa Flask -palvelimellani (joka selitetään myöhemmin):
- Tavoiteluokka (linkki) -Tämä tiedosto käynnistää kaikki erilliset komponentit, joita voidaan käyttää lisäämällä oikea SPI -laite/väylä ja pin -numero
- Matrix -luokka (linkki) -Tämä on pääluokka MAX7219 -moduulin käynnistämiseen
- LED- ja vastaanotinluokka (linkki) - Tämä on pääluokka infrapuna -katkaisusäteen kytkemiseksi päälle käyttämällä erillisiä säikeitä RPi: n CPU -kuormituksen vähentämiseksi
Sekä LED että vastaanotin toimivat 38 kHz: n taajuudella ja vastaanottimet odottavat aina 50%: n ylös- ja 50%: n pulssin toimivan kunnolla.
Vaihe 4: Anturien valmistelu ja sijoittaminen
Nyt valmistellaan IR -LED ja vastaanotin. Taulukon kuvasta u löydät paikat, joihin RPi ja anturit tulee sijoittaa.
Mutta ensin meidän on valmisteltava johdotus:
- Varmista, että u mittaa tarvittavan langan määrän RPi/leipälevyn sijainnista anturin sijaintiin
- Juotos IR -vastaanottimen nastat langan toiseen päähän (COM/GND/V+)
- Juotos urosliitinkappaleet johtimen toisessa päässä
Nyt valmistellaan taulukko:
- Tee peruspiirustus (kuvan perusteella) siitä, mihin porata. On erittäin tärkeää, että kaksi reikää kohdistetaan toistensa poikki, koska tämä on palkin sijainti.
- Poraa reiät
- Jos sinulla on joitain LED -pidikkeitä (linkki), voit laittaa ne reiän sisään, jotta se olisi tukevampi
- Aseta + teippi LED + vastaanotin molemmille puolille
- Kiinnitä johdot + teippaa ne puuhun, jotta ne eivät poiketa liikaa
- Aseta urospultit leipälevylle aiemmin toimitetun piirin mukaisesti
Vaihe 5: Matriisimoduulin valmistelu ja sijoittaminen
Seuraavaksi liitämme 2 LED -matriisimoduulia
Huomautus:
Koska käytin vanhaa pöytäjalkapalloa, siellä oli jo reikiä yläosaa kohti tupakanpitimien takia. Jos sinulla ei ole näitä, sinun on luotava ne.
Johtojen valmistelu:
- Mittaa lanka leipälevyltä pöydän yläosaa kohti
- Juotos joitakin naarasliittimiä johtimen ensimmäiseen päähän
- Juotos joitakin urosliittimiä johtimen toiseen päähän
Matriisin sijoittaminen:
- Vie matriisi ulos yläreunan läpi
- Kiinnitä + teippaa johdot puun sisäpuolelle ristien välttämiseksi
- Työnnä urosnastat leipälevylle aiemmin toimitetun ohjeen mukaisesti
Jossain vaiheessa lisään pienen DIY -askeleen lisätäkseni matriisimoduulin kotelon, mutta toistaiseksi ne ovat alasti.
Vaihe 6: Tee siitä IoT
Jos haluat vain rekisteröidä ja näyttää tulokset, voit lopettaa projektin kirjoittamalla pienen käynnissä olevan python -komentosarjan, joka jatkuu, kunnes yksi tuloksista saavuttaa 9 ja nollautuu.
Jos kuitenkin haluat liittää pöydän Internetiin, muutaman seuraavan vaiheen pitäisi olla oikea.
Seuraavissa vaiheissa käsittelemme seuraavia asioita:
- Raspberry Pi: n määrittäminen
- Tietokannan tekeminen tallennusta varten
- Verkkosivuston luominen
- Laittaminen nettiin
Tässä vaiheessa, jos olet perehtynyt gitiin, suosittelen, että teet GitHub/GitLab -arkiston, jotta voit seurata tiedostojasi. Jos et ole, voit luoda kansion, jolla on sama rakenne kuin kuvassa.
Koko projekti on pian saatavilla GitHubissa. Kuitenkin väliaikainen rar -tiedosto, jossa on kaikki tarvittavat tiedostot, on käytettävissä.
Vaihe 7: Liitä Raspberry Pi
Seuraavaksi aiomme asentaa vadelma pi -ympäristön, jotta voit tehdä tämän, sinun on suoritettava seuraavat vaiheet:
- Yhdistä SSH: n kautta Rasberry Pi: hen (voit käyttää PuTTY: tä)
- Luo kansio (esimerkki mkdir -projekti) ja siirry tähän kansioon cd -komennolla
- Luo virtuaalinen Python-ympäristö tähän kansioon käyttämällä python3 -m venv --system-site-package env -komentoa
- Aktivoi virtuaalitulkki lähde/env/bin/aktivoi komennolla
- Asenna paketit vaatimukset.txt -tiedostosta komennolla python -m pip install package -name
- Siirrä tiedostot aiemmin annetusta project_example.rar -tiedostosta projektikansiosi SSH -yhteyden kautta
Nyt sinun pitäisi pystyä suorittamaan koko projekti Raspberry Pi -laitteellasi. Suosittelen, että käytät Python IDE: tä, kuten PyCharmia, jonka avulla voit käyttää sinua debugin suorittamiseen etätulkistasi SSH: n kautta ja ladata muutokset tarvittaessa suoraan.
Vaihe 8: Tietokannan määrittäminen
Nyt sinun on luotava hyvin yksinkertainen tietokanta, joka perustuu tähän malliin.
Helpoin tapa tehdä tämä on luoda tietokanta MySQL -työpöydälle, jossa voit myös tehdä joitain testejä.
Kun olet valmis, voit viedä tietokannasi vedoksen ja ladata sen RPi -laitteellesi ja suorittaa sen sudo mariadb <pathtofile/file.sql
Vaihe 9: Verkkosivuston luominen
Seuraavaksi voit analysoida (ja käyttää) projektin_esimerkki.rar -tiedostossa olevaa koodia.
Päätiedosto on Flask.py, joka on tämän projektin leipä ja voi:
- Käyttää Flask-SocketIO -sovellusta, joka käsittelee verkkosivuston taustaohjelmaa
- Luo yhteyden tietokannan ja pullon välille
- Tarjoaa kirjautumisen vahvistuksen ja käyttäjän rekisteröinnin
- Tarjoaa tarvittavan koodin pelin pelaamisesta. Socketio päivittää verkkosivuston reaaliaikaisen pelin aikana
- Laittaa pelitulokset tietokantaan
Staattisissa ja malleissa olevista kansioista u löytyy HTML/CSS/JS, jotka tarjoavat verkkosivun käyttöliittymän. Voit vapaasti muokata näitä omien mieltymystesi mukaan.
Vaihe 10: Yhteyden muodostaminen World Wide Webiin
Liittääksemme verkkosivustomme verkkoon käytämme nginx ja uwsgi. Projektiesimerkissä u löytyy tarvittavat tiedostot conf -kansiosta.
Ensinnäkin sinun on päivitettävä seuraavat tiedostot:
- Uwsgi-flask.ini u: ssa sinun on vaihdettava virtualenv-parametrin polku tulkkiisi
- Project1-flask.service -palvelussa sinun on päivitettävä tiedoston [Service] -osa tunnistetiedoillasi ja poluilla niihin liittyviin tiedostoihin
- Nginx -tiedostossa sinun on päivitettävä palvelin ja sijainti / polku yhdistettyyn pistorasiaan
Seuraavaksi sinun on vaihdettava nginx -oletusverkkopalvelintiedosto nginx -määritystiedoston sijaintiin, alla on esimerkki linux -komennoista tämän tekemiseksi
- 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 käynnistä nginx.service uudelleen
Lopuksi sinun on lisättävä mukautetut palvelut systemd -kansioon, tämä on esimerkki siitä, miten se tehdään:
- 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 käynnistä projekti1-*
- me@my-rpi: ~/project1 $ sudo systemctl status project1-*
Jos haluat verkkopalvelimen käynnistyvän vadelmapi: n käynnistyksen yhteydessä, sinun on käytettävä sudo systemctl enable project1-*. -Palvelukomentoa.
Jos se on tehty oikein, sivustosi pitäisi toimia järjestelmän uudelleenkäynnistyksen jälkeen IP -osoitteellasi. Jos haluat muokata jotakin näistä määritystiedostoista, sinun on aina lopetettava palvelu, lataa tiedostot uudelleen ja käytä daemon-reload -komentoa, jota seuraa aloitus, muuten muutokset eivät ole tehokkaita.
Vaihe 11: Viimeistely pois
Kun kirjoitat tämän ohjeen viimeistä osaa, tämä pieni kouluprojekti on edelleen kesken.
Olen käyttänyt lukemattomia tunteja tämän tekemiseen 2,5 viikossa. Vaikka kaikessa oli vähän kiire, olen silti ylpeä saavutuksestani. Kokoonpanovaiheessa olen kohdannut lukemattomia bugeja/virheitä/viallisia antureita, joten älä lannistu liikaa, jos kaikki ei toimi ensimmäisellä yrityksellä.
Parasta mitä voit tehdä, on pyytää tai etsiä apua Internetistä, on paljon ihmisiä, joilla on paljon parempaa tietoa ja jotka ovat erittäin halukkaita auttamaan sinua.
Viimeisenä mutta ei vähäisimpänä haluan kiittää uuden median ja viestintätekniikan opettajiani, jotka ovat antaneet minulle paljon neuvoja ja auttaneet minua saattamaan tämän projektin päätökseen.
Suositeltava:
Easy IOT - Sovelluksella ohjattu RF -anturikeskus keskikokoisille IOT -laitteille: 4 vaihetta
Helppo IOT - Sovelluksella ohjattu RF -anturikeskus keskikokoisille IOT -laitteille: Tässä opetusohjelmasarjassa rakennamme laitteiden verkoston, jota voidaan ohjata radiolinkin kautta keskuskeskuslaitteesta. Hyöty 433 MHz: n sarjaradioyhteyden käyttämisestä WIFI: n tai Bluetoothin sijaan on paljon laajempi kantama (hyvällä
IoT APIS V2 - Itsenäinen IoT -yhteensopiva automaattinen kasvien kastelujärjestelmä: 17 vaihetta (kuvilla)
IoT APIS V2 - Itsenäinen IoT -yhteensopiva automatisoitu kasvien kastelujärjestelmä: Tämä projekti on edellisen ohjeeni kehitys: APIS - automaattinen kasvien kastelujärjestelmä Olen käyttänyt APISia lähes vuoden ajan ja halusin parantaa aiempaa suunnittelua: seurata laitosta etänä. Näin
IoT -virtamoduuli: IoT -virranmittausominaisuuden lisääminen aurinkovoimalatausohjaimeen: 19 vaihetta (kuvilla)
IoT -virtamoduuli: IoT -virranmittausominaisuuden lisääminen aurinkovoimalatausohjaimeen: Hei kaikki, toivon, että olette kaikki mahtavia! Tässä ohjeessa näytän sinulle, kuinka tein IoT -tehonmittausmoduulin, joka laskee aurinkopaneelieni tuottaman tehon, jota aurinkopaneelien varausohjain käyttää
Raspbianin asentaminen Raspberry Pi 3 B: hen ilman HDMI: tä - Raspberry Pi 3B: n käytön aloittaminen - Raspberry Pi: n asentaminen 3: 6 vaihetta
Raspbianin asentaminen Raspberry Pi 3 B: hen ilman HDMI: tä | Raspberry Pi 3B: n käytön aloittaminen | Raspberry Pi 3: n asentaminen: Kuten jotkut teistä tietävät, Raspberry Pi -tietokoneet ovat aivan mahtavia ja saat koko tietokoneen vain yhdelle pienelle levylle. Raspberry Pi 3 Model B: ssä on neliytiminen 64-bittinen ARM Cortex A53 kellotaajuus 1,2 GHz. Tämä tekee Pi 3: sta noin 50
Arduino Servo Foosball: 5 vaihetta
Arduino Servo Foosball: David Joy ja Andrew Gothard