Sisällysluettelo:

Raspberry Pi IoT Foosball -pöytä: 11 vaihetta
Raspberry Pi IoT Foosball -pöytä: 11 vaihetta

Video: Raspberry Pi IoT Foosball -pöytä: 11 vaihetta

Video: Raspberry Pi IoT Foosball -pöytä: 11 vaihetta
Video: MagicLabs Foosball Hack. 2024, Joulukuu
Anonim
Raspberry Pi IoT Foosball -pöytä
Raspberry Pi IoT Foosball -pöytä

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

Sähköpiiri
Sähköpiiri
Sähköpiiri
Sähköpiiri
Sähköpiiri
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

Anturien koodaus
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):

  1. 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
  2. Matrix -luokka (linkki) -Tämä on pääluokka MAX7219 -moduulin käynnistämiseen
  3. 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

Anturien valmistelu ja sijoittaminen
Anturien valmistelu ja sijoittaminen
Anturien valmistelu ja sijoittaminen
Anturien valmistelu ja sijoittaminen
Anturien valmistelu ja sijoittaminen
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:

  1. Varmista, että u mittaa tarvittavan langan määrän RPi/leipälevyn sijainnista anturin sijaintiin
  2. Juotos IR -vastaanottimen nastat langan toiseen päähän (COM/GND/V+)
  3. Juotos urosliitinkappaleet johtimen toisessa päässä

Nyt valmistellaan taulukko:

  1. Tee peruspiirustus (kuvan perusteella) siitä, mihin porata. On erittäin tärkeää, että kaksi reikää kohdistetaan toistensa poikki, koska tämä on palkin sijainti.
  2. Poraa reiät
  3. Jos sinulla on joitain LED -pidikkeitä (linkki), voit laittaa ne reiän sisään, jotta se olisi tukevampi
  4. Aseta + teippi LED + vastaanotin molemmille puolille
  5. Kiinnitä johdot + teippaa ne puuhun, jotta ne eivät poiketa liikaa
  6. Aseta urospultit leipälevylle aiemmin toimitetun piirin mukaisesti

Vaihe 5: Matriisimoduulin valmistelu ja sijoittaminen

Matriisimoduulin valmistelu ja sijoittaminen
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:

  1. Mittaa lanka leipälevyltä pöydän yläosaa kohti
  2. Juotos joitakin naarasliittimiä johtimen ensimmäiseen päähän
  3. Juotos joitakin urosliittimiä johtimen toiseen päähän

Matriisin sijoittaminen:

  1. Vie matriisi ulos yläreunan läpi
  2. Kiinnitä + teippaa johdot puun sisäpuolelle ristien välttämiseksi
  3. 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

Tekee siitä IoT: n
Tekee siitä IoT: n

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

Tietokannan määrittäminen
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

Verkkosivuston luominen
Verkkosivuston luominen
Verkkosivuston luominen
Verkkosivuston luominen
Verkkosivuston luominen
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

Viimeistely pois päältä
Viimeistely pois päältä

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: