Satura rādītājs:

Raspberry Pi IoT Foosball galds: 11 soļi
Raspberry Pi IoT Foosball galds: 11 soļi

Video: Raspberry Pi IoT Foosball galds: 11 soļi

Video: Raspberry Pi IoT Foosball galds: 11 soļi
Video: First foosball goal-sensor test 2024, Decembris
Anonim
Raspberry Pi IoT Foosball galds
Raspberry Pi IoT Foosball galds

Laipni lūdzam manā versijā par uzlauztu foosball galdu, kas ir daļa no jauno mediju un komunikācijas tehnoloģiju studentu projekta. Es pamatā uzaugu ap futbolu un biljarda galdiem, tāpēc domāju, ka būtu lieliski mēģināt savienot kādu no šīm ierīcēm ar internetu.

Galvenajā iestatījumā tiek izmantots esošs foosball galds, kas savienots ar Raspberry Pi, kas var veikt visus tālāk norādītos uzdevumus.

  • Izmanto GPIO tapas, lai vadītu IR LED/uztvērējus un 8x8 punktu matricas moduļus
  • Vada Flask vietni, izmantojot nginx
  • Palaiž MySQL/MariaDB datu bāzi datu glabāšanai

Lai varētu atjaunot šo projektu, jums būs nepieciešamas šādas prasmes:

Aizmugure:

  • HTML/CSS/Javascript izpratne vietnes klientam
  • Izpratne par Python ar Flask/Flask-SocketIO/Jinja2 vietnes servera pusē
  • Pamatzināšanas par MySQL
  • Ziniet, kā palaist tīmekļa serveri

Prototips

  • Pamatzināšanas par elektriskās ķēdes pieslēgšanu
  • Lodēšana
  • Pamata izpratne par skripta rakstīšanu Python
  • Darbs ar Linux (Raspbian)
  • Ir daudz pacietības, jo būs daudz atkļūdošanas

1. solis: materiāli

Šeit ir saraksts ar visām tabulai nepieciešamajām daļām:

  • Raspberry Pi Model 3 (ar apvalku)
  • T-kurpnieks Pi savienošanai ar maizes dēli
  • Foosball galds (es izmantoju ļoti vecu galdu, kas līdzīgs šim. Jābūt gatavam tajā urbt caurumus)
  • MAX7219 Arduino punktu matricas modulis (2)
  • IR LED izstarotāji (2+, jo tie salūst, līdzīgi šim)
  • IR uztvērēji (2+, jo tie arī salūst, līdzīgi šim)
  • Pamata lodēšanas maizes dēlis
  • Daudz un daudz vadu (atkarīgs no futbola galda izmēra)
  • savienotāji vīriešiem (30+)
  • sieviešu savienotāji (10+)
  • 100-220 omu rezistori (4+)
  • lodēšanas materiāli
  • stiepļu siksnas
  • LED turētāji
  • daži koki/skrūves, ja vēlaties pārvietot bumbu notekcaurulē

Šī projekta kopējās izmaksas ir pilnībā atkarīgas no jūsu futbola galda izmaksām (dārgas). Papildus galdam materiāli maksās ne vairāk kā 150 eiro.

2. solis: elektriskā ķēde

Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde

Pirms mēģināt lodēt, salieciet visas sastāvdaļas, es ļoti iesaku to vispirms pārbaudīt uz maizes dēļa. Bojātos komponentus ir vieglāk nomainīt, pirms esat pavadījis stundas to lodēšanai.

Sākumā es mēģināju ieviest 8x8 LED matricu ar 74HC595 nobīdes reģistru (pirmais attēls) un tranzistoru masīvu, bet daudzo vadu un ļoti zemās izejas dēļ es pārgāju uz MAX7219 punktu matricas moduli, jo tas aizņem tikai 5 vadus un to tieši vada SPI autobuss.

Ķēde, kuru es beidzot izmantoju, tiek vilkta ar Fritzing. Lūdzu, ņemiet vērā, ka IR gaismas diodes un uztvērējus var savienot ar jebkuru no jūsu bezmaksas GPIO tapām.

IR uztvērējiem un gaismas diodēm jābūt tieši viens otram, un gaismas diodes augšdaļai jābūt vērstai uz uztvērēju. Tā kā mēs vēlamies simulēt tiešu staru, ko var salauzt bumbiņas kustība, tādā gadījumā uztvērēja DATA līnijas stāvoklis mainīsies no 0 uz 1.

3. darbība: sensoru kodēšana

Sensoru kodēšana
Sensoru kodēšana

Lielāko daļu šī projekta esmu kodējis, izmantojot Pycharm, jo tas ļauj viegli izvietot SSH jūsu Raspberry Pi, izmantojot attālo tulku. Es neiedziļināšos šīs programmas darbībā, bet daudz informācijas var atrast pycharm vietnē.

Pašlaik es vēl strādāju pie projekta, bet, kad viss būs izdarīts, viss projekts būs pieejams manā github profilā

Sensoru kods sastāv no 3 klasēm, kas tiek darbinātas fona pavedienā manā kolbas serverī (kas tiks paskaidrots vēlāk):

  1. Mērķa klase (saite) -Šis fails iniciē visus atsevišķos komponentus, kurus var izsaukt, ievietojot pareizo SPI ierīci/kopni un pin numuru
  2. Matricas klase (saite) -Šī ir galvenā klase MAX7219 moduļa ieslēgšanai
  3. LED un uztvērēju klase (saite) - šī ir galvenā klase, lai ieslēgtu infrasarkano staru kūli, izmantojot atsevišķus pavedienus, lai samazinātu RPi CPU slodzi

Gan gaismas diode, gan uztvērējs darbojas 38 kHz frekvencē, un uztvērēji vienmēr sagaida, ka 50% augšup un 50% lejupvērsts impulss darbosies pareizi.

4. solis: sensoru sagatavošana un ievietošana

Sensora sagatavošana un uzstādīšana
Sensora sagatavošana un uzstādīšana
Sensora sagatavošana un uzstādīšana
Sensora sagatavošana un uzstādīšana
Sensora sagatavošana un uzstādīšana
Sensora sagatavošana un uzstādīšana

Tagad mēs sagatavosim IR LED un uztvērēju. Tabulas attēlā var atrast vietas, kur jānovieto RPi un sensori.

Bet vispirms mums ir jāsagatavo elektroinstalācija:

  1. Pārliecinieties, ka esat izmērījis nepieciešamo vadu daudzumu no RPi/maizes dēļa vietas līdz sensora vietai
  2. Lodējiet IR uztvērēja tapas vienā stieples galā (COM/GND/V+)
  3. Lodējiet vīriešu savienotāja gabalus stieples otrā galā

Tagad mēs sagatavosim tabulu:

  1. Izveidojiet pamata zīmējumu (pamatojoties uz attēlu) par urbšanas vietu. Ir ļoti svarīgi, lai divi caurumi būtu izlīdzināti viens otram, jo tā būs staru kūļa atrašanās vieta.
  2. Izurbiet caurumus
  3. Ja jums ir daži LED turētāji (saite), varat tos ievietot caurumā, lai padarītu to izturīgāku
  4. Ievietojiet + lenti LED + uztvērēju abās pusēs
  5. Siksnas vadi + lentes uz koka, lai tie nav pārāk krustojas
  6. Ievietojiet tērauda tapas uz maizes dēļa saskaņā ar iepriekš sniegto shēmu

5. solis: Matricas moduļa sagatavošana un ievietošana

Matricas moduļa sagatavošana un ievietošana
Matricas moduļa sagatavošana un ievietošana

Tālāk mēs savienosim 2 LED matricas moduļus

Piezīme:

Tā kā es izmantoju veco foosball galdu, cigarešu turētāju dēļ augšējā daļā jau bija caurumi. Ja jums to nav, jums tas būs jāizveido.

Lai sagatavotu vadus:

  1. Izmēriet vadu no maizes dēļa uz galda augšējo daļu
  2. Lodējiet dažus sieviešu savienotājus pie stieples pirmā gala
  3. Lodējiet dažus savienotājus ar vadu otrā stieples galā

Matricas ievietošana:

  1. Izvelciet matricu caur caurumu augšpusē
  2. Siksna + līmējiet vadus koka iekšpusē, lai izvairītos no šķērsošanas
  3. Ievietojiet vīriešu tapas uz maizes dēļa saskaņā ar iepriekš sniegto aprakstu

Kādā brīdī es pievienošu nelielu DIY soli, lai pievienotu matricas moduļa korpusu, bet pagaidām tie ir kaili.

6. solis: padariet to par IoT

Padarot to par IoT
Padarot to par IoT

Ja vēlaties tikai reģistrēties un parādīt rādītājus, varat pabeigt projektu, uzrakstot nelielu skrienamo python skriptu, kas darbojas, līdz viens no rādītājiem sasniedz 9 un pēc tam tiek atiestatīts.

Tomēr, ja vēlaties savienot galdu ar internetu, nākamajām dažām darbībām vajadzētu būt tieši jūsu alejai.

Nākamajos soļos mēs pievērsīsimies šādiem jautājumiem:

  • Raspberry Pi konfigurēšana
  • Datu bāzes izveide uzglabāšanai
  • Mājas lapas izveide
  • Ievietojot to tiešsaistē

Šajā brīdī, ja esat iepazinies ar git, es iesaku izveidot GitHub/GitLab krātuvi, lai sekotu jūsu failiem. Ja neesat, varat izveidot mapi ar tādu pašu struktūru kā attēlā.

Pilns projekts drīz būs pieejams vietnē GitHub. Tomēr ir pieejams pagaidu rar fails ar visiem nepieciešamajiem failiem.

7. solis: Raspberry Pi savienošana

Tālāk mēs iestatīsim aveņu pi vidi, lai to izdarītu, jums jāveic šādas darbības:

  • Pievienojiet SSH savam Rasberry Pi (varat izmantot PuTTY)
  • Izveidojiet mapi (piemērs mkdir projekts) un pārvietojiet uz šo mapi, izmantojot komandu cd
  • Izveidojiet virtuālu Python vidi šajā mapē, izmantojot komandu python3 -m venv --system-site-paketes env
  • Aktivizējiet virtuālo tulku, izmantojot komandu avots/env/bin/aktivizēt
  • Instalējiet paketes no prasībām.txt, izmantojot komandu python -m pip install package -name
  • Pārsūtiet failus no iepriekš nodrošinātā faila project_example.rar, izmantojot projekta mapē esošo SSH

Tagad jums vajadzētu būt iespējai vadīt visu projektu savā Raspberry Pi. Es iesaku jums izmantot Python IDE, piemēram, PyCharm, kas ļauj jums izmantot atkļūdošanu no attālinātā tulka, izmantojot SSH, un, ja nepieciešams, tieši augšupielādēt izmaiņas.

8. darbība. Datu bāzes iestatīšana

Datu bāzes iestatīšana
Datu bāzes iestatīšana

Tagad jums ir jāizveido ļoti vienkārša datu bāze, pamatojoties uz šo modeli.

Vienkāršākais veids, kā to izdarīt, ir izveidot savu datu bāzi MySQL darbgaldā, kur varat arī veikt dažus testus.

Kad esat pabeidzis, varat eksportēt savas datu bāzes izgāztuvi un augšupielādēt to savā RPi un pēc tam izpildīt to ar sudo mariadb <pathtofile/file.sql

9. solis: vietnes izveide

Vietnes izveide
Vietnes izveide
Vietnes izveide
Vietnes izveide
Vietnes izveide
Vietnes izveide

Tālāk jūs varat analizēt (un izmantot) failā project_example.rar norādīto kodu.

Galvenais fails ir Flask.py, kas ir šī projekta maize un sviests:

  • Palaiž lietotni Flask-SocketIO, kas apstrādā vietnes aizmuguri
  • Izveido savienojumu starp datu bāzi un kolbu
  • Nodrošina pieteikšanās apstiprināšanu un lietotāju reģistrāciju
  • Sniedz nepieciešamo kodu, kā spēlēt spēli, izmanto socketio, lai spēles laikā atjauninātu vietnes reāllaiku
  • Ievieto spēles rezultātus datu bāzē

Statisko un veidņu mapēs varat atrast HTML/CSS/JS, kas nodrošina vietnes priekšējo daļu. Jūtieties brīvi mainīt tos atbilstoši savām vēlmēm.

10. darbība. Savienojuma izveide ar globālo tīmekli

Lai savienotu mūsu vietni ar tīmekli, mēs izmantosim nginx un uwsgi. Projekta piemērā nepieciešamos failus var atrast mapē conf.

Pirmkārt, šajos failos ir jāatjaunina:

  • Uwsgi-flask.ini u jāmaina parametra virtualenv ceļš uz savu tulku
  • Programmā project1-flask.service u jāatjaunina faila daļa [Pakalpojums], norādot akreditācijas datus un ceļus uz saistītajiem failiem
  • Failā nginx ir jāatjaunina serveris un atrašanās vieta / ceļš uz jūsu saistīto ligzdu

Tālāk jums ir jāaizstāj noklusējuma nginx tīmekļa servera fails ar jūsu nginx konfigurācijas faila atrašanās vietu, zemāk ir linux komandu piemērs, kā to izdarīt

  • 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 restartējiet nginx.service

Visbeidzot, jums jāpievieno pielāgotie pakalpojumi mapei systemd, šis ir piemērs, kā to izdarīt:

  • 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 sākt projektu1-*
  • me@my-rpi: ~/project1 $ sudo systemctl statusa projekts1-*

Ja vēlaties, lai tīmekļa serveris sāktu darboties ar jūsu aveņu pi, jums jāizmanto pakalpojuma komanda sudo systemctl enable project1-*.

Ja tas tiek izdarīts pareizi, pēc sistēmas pārstartēšanas jūsu vietnei vajadzētu darboties jūsu IP adresē. Ja vēlaties rediģēt kādu no šiem konfigurācijas failiem, vienmēr ir jāpārtrauc pakalpojums, atkārtoti augšupielādējiet failus un izmantojiet komandu dēmona pārlādēšana, kam seko sākums, pretējā gadījumā izmaiņas nebūs efektīvas.

11. darbība. Izslēgšana

Apdare Izslēgta
Apdare Izslēgta

Rakstot šīs pamācības pēdējo daļu, šis mazais skolas projekts joprojām ir darbs.

Es esmu pavadījis neskaitāmas stundas, lai to paveiktu 2,5 nedēļu laikā. Lai gan viss bija nedaudz sasteigts, es joprojām lepojos ar sasniegto. Montāžas posmā esmu saskāries ar neskaitāmām kļūdām/kļūdām/bojātiem sensoriem, tāpēc neesiet pārāk drosmīgs, ja viss nedarbojas pirmajā mēģinājumā.

Labākais, ko varat darīt, ir lūgt vai meklēt palīdzību internetā, ir daudz cilvēku ar daudz labākām zināšanām, kuri ļoti vēlas jums palīdzēt.

Visbeidzot, bet ne mazāk svarīgi, es vēlos pateikties saviem skolotājiem no jauno plašsaziņas līdzekļu un komunikācijas tehnoloģijas, kas man deva daudz padomu un palīdzēja pabeigt šo projektu.

Ieteicams: