Turinys:

„Raspberry Pi IoT Foosball“stalas: 11 žingsnių
„Raspberry Pi IoT Foosball“stalas: 11 žingsnių

Video: „Raspberry Pi IoT Foosball“stalas: 11 žingsnių

Video: „Raspberry Pi IoT Foosball“stalas: 11 žingsnių
Video: First foosball goal-sensor test 2024, Lapkritis
Anonim
„Raspberry Pi IoT Foosball“stalas
„Raspberry Pi IoT Foosball“stalas

Sveiki atvykę į mano įsilaužto „foosball“stalo versiją kaip studentų projekto, skirto naujoms žiniasklaidos ir komunikacijos technologijoms, dalį. Aš iš esmės užaugau prie futbolo ir biliardo stalų, todėl maniau, kad būtų puiku pabandyti prijungti vieną iš šių įrenginių prie interneto.

Pagrindinė sąranka naudoja esamą „Foosball“stalą, prijungtą prie „Raspberry Pi“, kuris gali atlikti visas šias užduotis:

  • Naudoja GPIO kaiščius, kad valdytų IR šviesos diodus/imtuvus ir 8x8 taškų matricos modulius
  • Paleidžia „Flask“svetainę naudodami „nginx“
  • Paleidžia MySQL/MariaDB duomenų bazę duomenų saugojimui

Norėdami atkurti šį projektą, jums reikės šių įgūdžių:

Užpakalinė dalis:

  • HTML/CSS/„JavaScript“supratimas svetainės klientui
  • „Python“supratimas su „Flask/Flask-SocketIO“/„Jinja2“svetainės serverio pusėje
  • Pagrindinės MySQL žinios
  • Žinokite, kaip paleisti žiniatinklio serverį

Prototipas

  • Pagrindinės žinios, kaip prijungti elektros grandinę
  • Litavimas
  • Pagrindinis supratimas, kaip rašyti scenarijų „Python“
  • Darbas su „Linux“(„Raspbian“)
  • Turite daug kantrybės, nes bus daug derinimo

1 žingsnis: medžiagos

Čia yra sąrašas su visomis reikalingomis lentelės dalimis:

  • Raspberry Pi Model 3 (su korpusu)
  • „T-Cobbler“, skirtas Pi prijungti prie duonos lentos
  • „Foosball“stalas (naudojau labai seną stalą, panašų į šį. Turi būti pasirengęs gręžti skyles)
  • MAX7219 „Arduino Dot Matrix“modulis (2)
  • IR šviesos diodų skleidėjai (2+, nes jie sugenda, panašūs į šį)
  • IR imtuvai (2+, nes jie taip pat sugenda, panašūs į šį)
  • Pagrindinė duonos lenta be litavimo
  • Daug ir daug vielos (priklauso nuo futbolo stalo dydžio)
  • jungtys vyrams (30+)
  • moterų jungtys (10+)
  • 100-220 omų rezistoriai (4+)
  • litavimo medžiagos
  • vielos dirželiai
  • LED laikikliai
  • šiek tiek medžio/varžtų, jei norite perduoti kamuolį į lataką

Bendra šio projekto kaina visiškai priklauso nuo jūsų futbolo stalo kainos (brangios). Be stalo, medžiagos kainuos ne daugiau kaip 150 eurų.

2 žingsnis: elektros grandinė

Elektros grandinė
Elektros grandinė
Elektros grandinė
Elektros grandinė
Elektros grandinė
Elektros grandinė

Prieš bandydami lituoti, surinkite visus komponentus, kuriuos labai rekomenduoju išbandyti ant duonos lentos. Lengviau pakeisti sugedusius komponentus, kol nepraleidote jų litavimo valandų.

Iš pradžių bandžiau įdiegti 8x8 LED matricą su 74HC595 poslinkių registru (pirmasis vaizdas) ir tranzistorių masyvą, tačiau dėl daugybės laidų ir labai mažos išvesties perėjau prie MAX7219 taškų matricos modulio, nes jis užima tik 5 laidus ir yra tiesiogiai varomas SPI autobusas.

Grandinė, kurią galiausiai panaudojau, yra nupiešta naudojant „Fritzing“. Atminkite, kad IR šviesos diodai ir imtuvai gali būti prijungti prie bet kurio nemokamo GPIO kaiščio.

IR imtuvai ir šviesos diodas turi būti tiesiai vienas prieš kitą, o šviesos diodo viršus nukreiptas į imtuvą. Kadangi norime imituoti tiesioginį spindulį, kurį gali sulaužyti rutulio judesys, tokiu atveju imtuvo DATA linijos būsena pasikeis nuo 0 iki 1.

3 žingsnis: jutiklių kodavimas

Jutiklių kodavimas
Jutiklių kodavimas

Daugumą šio projekto kodavau naudodamas „Pycharm“, nes tai leidžia lengvai įdiegti SSH į jūsų „Raspberry Pi“naudojant nuotolinį vertėją. Nesileisiu išsamiai, kaip veikia ši programa, tačiau daug informacijos galima rasti „pycharm“svetainėje.

Šiuo metu vis dar dirbu prie projekto, bet kai viskas bus padaryta, visas projektas bus pasiekiamas mano „github“profilyje

Jutiklių kodą sudaro 3 klasės, kurios paleidžiamos fono gijoje mano kolbos serveryje (apie tai bus paaiškinta vėliau):

  1. Tikslo klasė (nuoroda) -Šis failas inicijuoja visus atskirus komponentus, kuriuos galima iškviesti įterpiant teisingą SPI įrenginį/magistralę ir PIN kodą
  2. Matricos klasė (nuoroda) -tai pagrindinė klasė MAX7219 moduliui įjungti
  3. Šviesos diodų ir imtuvų klasė (nuoroda) - tai pagrindinė klasė, skirta įjungti infraraudonųjų spindulių pertrauką naudojant atskirus siūlus, siekiant sumažinti RPi procesoriaus apkrovą

Šviesos diodas ir imtuvas veikia 38 kHz dažniu, o imtuvai visada tikisi, kad 50% padidėjęs ir 50% žemesnis impulsas veiks tinkamai.

4 žingsnis: jutiklių paruošimas ir įdėjimas

Jutiklių paruošimas ir įdėjimas
Jutiklių paruošimas ir įdėjimas
Jutiklių paruošimas ir įdėjimas
Jutiklių paruošimas ir įdėjimas
Jutiklių paruošimas ir įdėjimas
Jutiklių paruošimas ir įdėjimas

Dabar mes ruošiame IR šviesos diodą ir imtuvą. Lentelės paveikslėlyje galite rasti vietas, kur reikia įdėti RPi ir jutiklius.

Bet pirmiausia turime paruošti laidus:

  1. Būtinai išmatuokite reikiamą laido kiekį nuo RPi/duonos lentos iki jutiklio vietos
  2. Lituokite IR imtuvo kaiščius prie vieno laido galo (COM/GND/V+)
  3. Kitame laido gale lituokite išorines jungties dalis

Dabar mes ruošiame lentelę:

  1. Padarykite pagrindinį brėžinį (pagal paveikslėlį), kur gręžti. Labai svarbu, kad 2 skylės būtų sulygiuotos viena su kita, nes tai bus sijos vieta.
  2. Gręžkite skyles
  3. Jei turite LED laikiklius (nuoroda), galite juos įdėti į skylę, kad ji būtų tvirtesnė
  4. Įdėkite + užklijuokite LED + imtuvą iš abiejų pusių
  5. Sujunkite laidus + užklijuokite juos ant medžio, kad jie per daug nesikryžiuotų
  6. Įkiškite kaiščius ant duonos lentos pagal anksčiau pateiktą grandinę

5 žingsnis: Matricos modulio paruošimas ir įdėjimas

Matricos modulio paruošimas ir įdėjimas
Matricos modulio paruošimas ir įdėjimas

Toliau prijungsime 2 LED matricos modulius

Pastaba:

Kadangi naudojau seną stalo futbolo stalą, dėl cigarečių laikiklių jau buvo skylių aukštyn link viršutinės dalies. Jei tokių neturite, turėsite juos sukurti.

Norėdami paruošti laidus:

  1. Išmatuokite laidą nuo duonos lentos link viršutinės stalo dalies
  2. Lituokite kai kurias moterų jungtis prie pirmojo laido galo
  3. Lituokite kai kurias vyriškas jungtis prie kito laido galo

Matricos išdėstymas:

  1. Išimkite matricą per skylę viršuje
  2. Dirželis + užklijuokite laidus ant medžio, kad išvengtumėte kirtimo
  3. Įkiškite kaiščius ant duonos lentos pagal anksčiau pateiktą schemą

Tam tikru momentu pridėsiu nedidelį „pasidaryk pats“žingsnį, kad pridėčiau matricos modulio korpusą, tačiau kol kas jie yra nuogi.

6 žingsnis: padarykite tai daiktų internetu

Padaryti IoT
Padaryti IoT

Jei norite tik užsiregistruoti ir rodyti balus, galite užbaigti projektą parašę nedidelį veikiantį „Python“scenarijų, kuris kartojasi, kol vienas iš balų pasieks 9, o tada atstatys.

Tačiau, jei norite prijungti stalą prie interneto, keli žingsniai turėtų būti jūsų gatvėje.

Kituose tolesniuose žingsniuose aptarsime šiuos dalykus:

  • „Raspberry Pi“konfigūravimas
  • Duomenų bazės kūrimas saugojimui
  • Svetainės kūrimas
  • Įdėjus jį į internetą

Šiuo metu, jei esate susipažinęs su „git“, rekomenduoju sukurti „GitHub“/„GitLab“saugyklą, kad galėtumėte stebėti savo failus. Jei nesate, galite sukurti aplanką, kurio struktūra tokia pati kaip paveikslėlyje.

Visas projektas netrukus bus pasiekiamas „GitHub“. Tačiau yra laikinas rar failas su visais reikalingais failais.

7 žingsnis: Raspberry Pi prijungimas

Toliau nustatysime aviečių pi aplinką, kad tai atliktumėte, turite atlikti šiuos veiksmus:

  • Prijunkite SSH prie „Rasberry Pi“(galite naudoti „PuTTY“)
  • Sukurkite aplanką (pavyzdinis „mkdir“projektas) ir pereikite prie šio aplanko naudodami komandą cd
  • Sukurkite virtualią „Python“aplinką šiame aplanke naudodami komandą „python3 -m venv --system-site-paketai env“
  • Suaktyvinkite virtualųjį vertėją naudodami komandą source/env/bin/active
  • Įdiekite paketus iš reikalavimų.txt naudodami komandą python -m pip install package -name
  • Perkelkite failus iš anksčiau pateikto failo project_example.rar per SSH savo projekto aplanke

Dabar turėtumėte galėti vykdyti visą projektą savo „Raspberry Pi“. Patariu naudoti „Python IDE“, pvz., „PyCharm“, kuris leidžia jums naudoti derinant nuotolinio vertėjo SSH ir tiesiogiai įkelti pakeitimus, jei reikia.

8 veiksmas: duomenų bazės nustatymas

Duomenų bazės nustatymas
Duomenų bazės nustatymas

Dabar, remiantis šiuo modeliu, turite sukurti labai paprastą duomenų bazę.

Lengviausias būdas tai padaryti yra sukurti savo duomenų bazę „MySQL“darbalaukyje, kur taip pat galite atlikti bandymus.

Baigę galite eksportuoti savo duomenų bazės sąvartyną ir įkelti jį į savo RPi, tada vykdyti naudodami sudo mariadb <pathtofile/file.sql

9 veiksmas: sukurkite svetainę

Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas
Svetainės kūrimas

Toliau galite analizuoti (ir naudoti) failą project_example.rar pateiktą kodą.

Pagrindinis failas yra „Flask.py“, kuris yra šio projekto duona ir sviestas:

  • Paleidžia „Flask-SocketIO“programą, kuri tvarko svetainės užpakalinę dalį
  • Sukuria ryšį tarp duomenų bazės ir kolbos
  • Teikia prisijungimo patvirtinimą ir vartotojo registraciją
  • Pateikia reikiamą kodą, kaip žaisti žaidimą, naudoja „socketio“, kad atnaujintų svetainę realiuoju laiku žaidimo metu
  • Įkelia žaidimo rezultatus į duomenų bazę

Statinių ir šablonų aplankuose galite rasti HTML/CSS/JS, kurie yra svetainės priekinė dalis. Nedvejodami pakeiskite juos pagal savo skonį.

10 veiksmas: prisijunkite prie pasaulinio tinklo

Norėdami prijungti savo svetainę prie žiniatinklio, naudosime „nginx“ir „uwsgi“. Projekto pavyzdyje u galite rasti reikiamus failus aplanke conf.

Pirmiausia turite atnaujinti šiuos failus šiuose failuose:

  • Uwsgi-flask.ini u reikia pakeisti parametro virtualenv kelią į vertėją
  • „Project1-flask.service“u turite atnaujinti failo [Paslaugos] dalį, nurodydami savo kredencialus ir kelius į susijusius failus
  • „Nginx“faile reikia atnaujinti serverį ir vietą / kelią į susietą lizdą

Tada jums reikia pakeisti numatytąjį „nginx“žiniatinklio serverio failą savo „nginx“konfigūracijos failo vieta, žemiau yra „Linux“komandų pavyzdys, kaip tai padaryti

  • aš@mano-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 iš naujo paleiskite nginx.service

Galiausiai jums reikia pridėti pasirinktines paslaugas prie sisteminio aplanko, tai yra pavyzdys, kaip tai padaryti:

  • me@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
  • aš@mano-rpi: ~/project1 $ sudo systemctl pradėti projektą1-*
  • me@my-rpi: ~/project1 $ sudo systemctl status project1-*

Jei norite, kad žiniatinklio serveris būtų paleistas paleidžiant jūsų aviečių pi u, turite naudoti sudo systemctl enable project1-*.

Jei viskas bus padaryta teisingai, po sistemos perkrovimo jūsų svetainė turėtų veikti jūsų IP adresu. Jei norite redaguoti vieną iš šių konfigūracijos failų, visada turite sustabdyti paslaugą, iš naujo įkelti failus ir naudoti komandą daemon-reload, o po to pradėti, kitaip pakeitimai nebus veiksmingi.

11 veiksmas: baigimas

Baigimas Išjungtas
Baigimas Išjungtas

Rašant paskutinę šios instrukcijos dalį, šis mažas mokyklos projektas vis dar vyksta.

Aš praleidau daugybę valandų tai padaryti per 2,5 savaitės. Nors viskas buvo šiek tiek skubota, aš vis tiek didžiuojuosi tuo, ką pasiekiau. Surinkimo etape susidūriau su daugybe klaidų/klaidų/sugedusių jutiklių, todėl nenusiminkite, jei viskas neveikia pirmą kartą.

Geriausias dalykas, kurį galite padaryti, yra paprašyti arba ieškoti pagalbos internete, yra daug žmonių, turinčių daug geresnių žinių, kurie labai nori jums padėti.

Galiausiai noriu padėkoti savo mokytojams iš naujųjų medijų ir komunikacijos technologijų, kad jie man davė daug patarimų ir padėjo užbaigti šį projektą.

Rekomenduojamas: