Raspberry Pi IoT jalgpallitabel: 11 sammu
Raspberry Pi IoT jalgpallitabel: 11 sammu
Anonim
Raspberry Pi IoT jalgpallilaud
Raspberry Pi IoT jalgpallilaud

Tere tulemast minu versioonile häkkinud jalgpallilauast, mis on osa uue meedia ja kommunikatsioonitehnoloogia tudengiprojektist. Kasvasin põhiliselt jalgpalli ja piljardilaudade ümber, nii et arvasin, et oleks tore proovida ühte neist seadmetest Internetiga ühendada.

Põhiseadistuses kasutatakse Raspberry Pi -ga ühendatud olemasolevat jalgpallilauda, mis suudab teha kõiki järgmisi ülesandeid:

  • Kasutab GPIO tihvte IR LED/vastuvõtjate ja 8x8 punktmaatriksmoodulite juhtimiseks
  • Käitab kolbi veebisaiti, kasutades nginxi
  • Käitab andmete salvestamiseks MySQL/MariaDB andmebaasi

Selle projekti taasloomiseks vajate järgmisi oskusi:

Taustaprogramm:

  • HTML/CSS/Javascripti mõistmine veebisaidi kliendi jaoks
  • Pythoni mõistmine rakendusega Flask/Flask-SocketIO/Jinja2 veebisaidi serveripoole jaoks
  • Põhiteadmised MySQL -ist
  • Tea, kuidas veebiserverit käitada

Prototüüp

  • Põhiteadmised elektriahela juhtmestiku kohta
  • Jootmine
  • Põhiteadmised skripti kirjutamiseks Pythonis
  • Töö Linuxiga (Raspbian)
  • Kannatlikkust on palju, sest sellega kaasneb palju silumist

Samm: materjalid

Siin on nimekiri kõigi vajalike tabeli osadega:

  • Raspberry Pi mudel 3 (korpusega)
  • T-Cobbler Pi ühendamiseks leivaplaadiga
  • Jalgpallilaud (kasutasin väga vana lauda, mis sarnaneb sellele. Peab olema valmis sinna auke puurima)
  • MAX7219 Arduino punktmaatriksi moodul (2)
  • IR LED -kiirgurid (2+, kuna need purunevad, sarnane sellele)
  • IR -vastuvõtjad (2+, kuna need ka purunevad, sarnane sellele)
  • Põhiline jootmiseta leivaplaat
  • Palju ja palju traati (sõltub jalgpalli laua suurusest)
  • meessoost pistikud (30+)
  • naissoost pistikud (10+)
  • 100-220 oomi takistid (4+)
  • jootmismaterjalid
  • traatrihmad
  • LED hoidikud
  • mõni puit/kruvid juhuks, kui soovite palli vihmaveerennisse suunata

Selle projekti kogumaksumus sõltub täielikult teie jalgpalli laua maksumusest (kallis). Lisaks lauale maksavad materjalid maksimaalselt 150 eurot.

Samm 2: Elektriahel

Elektriahel
Elektriahel
Elektriahel
Elektriahel
Elektriahel
Elektriahel

Enne jootmist proovige kokku panna kõik komponendid, mida soovitan tungivalt testida leivaplaadil. Vigaseid komponente on lihtsam vahetada enne, kui olete nende jootmisele tunde kulutanud.

Alguses proovisin rakendada 8x8 LED -maatriksit 74HC595 nihkeregistriga (esimene pilt) ja transistorimassiiviga, kuid paljude juhtmete ja väga väikese väljundi tõttu lülitusin MAX7219 punktmaatriksmoodulile, kuna see võtab ainult 5 juhet ja seda juhib otse SPI buss.

Ahel, mida ma lõpuks kasutasin, on joonistatud Fritzingi abil. Pange tähele, et IR -valgusdioode ja vastuvõtjaid saab ühendada mis tahes teie tasuta GPIO -pistikuga.

Infrapuna vastuvõtjad ja valgusdiood peaksid asuma otse üksteise vastas ning LED -i ülaosa peaks olema suunatud vastuvõtja poole. Kuna me tahame simuleerida otsekiirt, mille võib kuuli liikumine katkestada, sel juhul toimub vastuvõtja DATA -rea oleku muutumine 0 -lt 1 -le.

Samm: andurite kodeerimine

Andurite kodeerimine
Andurite kodeerimine

Olen suurema osa sellest projektist kodeerinud Pycharmi abil, kuna see võimaldab SSH -d hõlpsalt juurutada teie Raspberry Pi -le kaugtõlgi abil. Ma ei räägi selle programmi toimimisest üksikasjalikult, kuid pycharmi veebisaidilt leiate palju teavet.

Praegu töötan veel projekti kallal, kuid kui kõik on tehtud, on kogu projekt minu githubi profiilil saadaval

Andurite kood koosneb kolmest klassist, mida käitatakse minu Flaski serveris taustalõimes (mida selgitatakse hiljem):

  1. Eesmärgiklass (link) -see fail käivitab kõik eraldi komponendid, mida saab kasutada, sisestades õige SPI -seadme/bussi ja PIN -koodi
  2. Maatriksiklass (link) -see on peamine klass MAX7219 mooduli sisselülitamiseks
  3. LED -ide ja vastuvõtjate klass (link) - see on põhiklass infrapunase katkestuse sisselülitamiseks, kasutades eraldi niite, et vähendada RPi protsessori koormust

Mõlemad valgusdioodid ja vastuvõtja töötavad 38 kHz sagedusel ning vastuvõtjad ootavad alati, et 50% üles ja 50% allapoole jääv impulss töötaksid korralikult.

4. samm: andurite ettevalmistamine ja paigaldamine

Andurite ettevalmistamine ja paigaldamine
Andurite ettevalmistamine ja paigaldamine
Andurite ettevalmistamine ja paigaldamine
Andurite ettevalmistamine ja paigaldamine
Andurite ettevalmistamine ja paigaldamine
Andurite ettevalmistamine ja paigaldamine

Nüüd valmistame ette IR -LED -i ja vastuvõtja. Tabeli pildilt leiate kohad, kuhu RPi ja andurid paigutada.

Kuid kõigepealt peame juhtmestiku ette valmistama:

  1. Veenduge, et mõõdate vajalikku traati RPi/leivaplaadi asukohast anduri asukohta
  2. Jootke IR -vastuvõtja tihvtid juhtme ühte otsa (COM/GND/V+)
  3. Jootke isase pistiku tükid juhtme teises otsas

Nüüd valmistame ette tabeli:

  1. Tehke põhijoonis (pildi põhjal), kuhu puurida. On väga oluline, et kaks auku oleksid üksteisega joondatud, sest see on tala asukoht.
  2. Puurige augud
  3. Kui teil on mõni LED -hoidik (link), võite need auku sisse panna, et see oleks vastupidavam
  4. Sisestage + teipige LED + vastuvõtja mõlemale küljele
  5. Kinnitage juhtmed rihma külge + teibige need puidule, nii et need ei läheks liiga risti
  6. Sisestage isased tihvtid leivaplaadile vastavalt eelnevalt esitatud skeemile

Samm: maatriksmooduli ettevalmistamine ja paigutamine

Maatriksmooduli ettevalmistamine ja paigaldamine
Maatriksmooduli ettevalmistamine ja paigaldamine

Järgmisena ühendame 2 LED -maatriksmoodulit

Märge:

Kuna kasutasin vana jalgpallilauda, olid sigaretihoidjate tõttu juba ülemise osa poole augud. Kui teil neid pole, peate need looma.

Juhtmete ettevalmistamiseks:

  1. Mõõtke traat leivaplaadilt laua ülemise osa poole
  2. Jootke mõned naissoost pistikud juhtme esimesse otsa
  3. Jootke mõned isased pistikud juhtme teise otsa

Maatriksi paigutamine:

  1. Tooge maatriks läbi ülaosas oleva augu
  2. Rihm + lindista juhtmed puidu sisse, et vältida nende ristumist
  3. Sisestage isased tihvtid leivaplaadile vastavalt eelnevalt esitatud ringile

Mingil hetkel lisan maatriksmooduli korpuse lisamiseks väikese DIY sammu, kuid praegu on nad alasti.

6. toiming: muutke see Interneti -asjadeks

IoT tegemine
IoT tegemine

Kui soovite lihtsalt hindeid registreerida ja kuvada, saate projekti lõpetada, kirjutades väikese jooksva pythoni skripti, mis kordub, kuni üks punktidest jõuab 9 -ni ja seejärel lähtestatakse.

Kui aga soovite oma laua Internetiga ühendada, peaksid paar järgmist sammu teie tänaval üles minema.

Järgmistes sammudes käsitleme järgmist.

  • Vaarika Pi konfigureerimine
  • Andmebaasi tegemine salvestamiseks
  • Veebisaidi loomine
  • Internetti panemine

Siinkohal, kui olete gitiga tuttav, soovitan teil oma failide jälgimiseks teha GitHubis/GitLabis hoidla. Kui te seda ei tee, saate luua kausta, millel on sama struktuur kui pildil.

Kogu projekt on peagi saadaval GitHubis. Siiski on saadaval ajutine rar -fail koos kõigi vajalike failidega.

Samm: ühendage Raspberry Pi

Järgmisena seadistame vaarika pi keskkonna, selleks peate täitma järgmised sammud:

  • Ühendage SSH kaudu oma Rasberry Pi -ga (saate kasutada PuTTY -d)
  • Looge kaust (näide mkdir projekt) ja liikuge sellesse kausta, kasutades käsku cd
  • Looge sellesse kausta virtuaalne Pythoni keskkond, kasutades käsku python3 -m venv --system-site-package env
  • Aktiveerige virtuaaltõlk käsuga source/env/bin/enable
  • Installige paketid nõudmistest.txt käsuga python -m pip install package -name
  • Edastage failid eelnevalt pakutud failist project_example.rar SSH kaudu oma projekti kausta

Nüüd peaksite saama oma Raspberry Pi -ga kogu projekti käivitada. Soovitan teil kasutada sellist Pythoni IDE -d nagu PyCharm, mis võimaldab teil kasutada kaugtõlgi silumist SSH kaudu ja vajadusel muudatusi otse üles laadida.

8. samm: andmebaasi seadistamine

Andmebaasi seadistamine
Andmebaasi seadistamine

Nüüd peate selle mudeli põhjal seadistama väga lihtsa andmebaasi.

Lihtsaim viis sellega tegelemiseks on luua oma andmebaas MySQL töölauale, kus saate ka testida.

Kui olete lõpetanud, saate eksportida oma andmebaasi prügila ja laadida selle oma RPi -le ning seejärel käivitada selle käsuga sudo mariadb <pathtofile/file.sql

9. samm: veebisaidi loomine

Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine
Veebisaidi loomine

Järgmisena saate analüüsida (ja kasutada) failis project_example.rar esitatud koodi.

Peamine fail on Flask.py, mis on selle projekti leib ja või:

  • Käivitab rakenduse Flask-SocketIO, mis haldab veebisaidi taustaprogrammi
  • Loob ühenduse andmebaasi ja kolvi vahel
  • Pakub sisselogimise valideerimist ja kasutajate registreerimist
  • Annab vajaliku koodi mängu mängimiseks, kasutades socketio -d veebisaidi reaalajas ajakohastamiseks mängu ajal
  • Paneb mängutulemused andmebaasi

Staatilistest ja mallikaustadest leiate u HTML/CSS/JS, mis pakuvad veebisaidi esiosa. Muutke neid julgelt vastavalt oma maitsele.

Samm 10: Ühenduse loomine veebiga

Meie veebisaidi veebiga ühendamiseks kasutame nginx ja uwsgi. Projekti näites leiate vajalikud failid kaustast conf.

Kõigepealt peate nendes failides värskendama järgmist:

  • Uwsgi-flask.ini u-s peate muutma parameetri virtualenv tee oma tõlgiks
  • Projekti1-flask.service u-s peate värskendama faili [Teenus] osa oma mandaadi ja teedega seotud failide juurde
  • Failis nginx peate värskendama serverit ja asukohta / teed seotud pistikupessa

Järgmisena peate asendama vaikimisi nginxi veebiserveri faili oma nginxi konfiguratsioonifaili asukohaga, allpool on näide linuxi käskudest selle tegemiseks

  • mina@minu-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • mina@minu-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
  • mina@minu-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • me@my-rpi: ~/project1 $ sudo systemctl taaskäivitage nginx.service

Lõpuks peate kohandatud teenused oma süsteemikausta lisama, see on näide selle kohta, kuidas seda teha:

  • mina@minu-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • mina@minu-rpi: ~/project1 $ sudo systemctl deemon-reload
  • mina@minu-rpi: ~/project1 $ sudo systemctl käivita projekt1-*
  • mina@minu-rpi: ~/project1 $ sudo systemctl staatuse projekt1-*

Kui soovite, et veebiserver käivituks teie vaarika pi alglaadimisel, peate kasutama teenuse käsku sudo systemctl enable project1-*.

Kui see on õigesti tehtud, peaks teie veebisait pärast süsteemi taaskäivitamist teie IP -aadressil töötama. Kui soovite mõnda neist konfiguratsioonifailidest muuta, peate teenuse alati peatama, laadige failid uuesti üles ja kasutage deemon-reload käsku, millele järgneb algus, vastasel juhul ei ole muudatused tõhusad.

Samm 11: Viimistlus Väljas

Viimistlus Väljas
Viimistlus Väljas

Selle juhendi viimase osa tippimisel on see väike kooliprojekt veel pooleli.

Olen 2,5 nädala jooksul selle tegemiseks kulutanud lugematuid tunde. Kuigi kõik oli natuke kiirustatud, olen siiski saavutatu üle uhke. Kokkupanekufaasis olen kohanud lugematuid vigu/vigu/vigaseid andureid, nii et ärge heituge, kui kõik ei tööta esimesel katsel.

Parim, mida saate teha, on küsida või otsida abi Internetist, seal on palju inimesi, kellel on palju paremaid teadmisi ja kes soovivad teid väga aidata.

Lõpetuseks tahan tänada oma õpetajaid uue meedia ja kommunikatsioonitehnoloogia alal, et nad andsid mulle palju nõu ja aitasid mul selle projekti lõpetada.

Soovitan: