Tartalomjegyzék:

Raspberry Pi IoT csocsóasztal: 11 lépés
Raspberry Pi IoT csocsóasztal: 11 lépés

Videó: Raspberry Pi IoT csocsóasztal: 11 lépés

Videó: Raspberry Pi IoT csocsóasztal: 11 lépés
Videó: Learning about MAME so I can set up a home arcade system | Devlog 091 #mame #launchbox #homearcade 2024, November
Anonim
Raspberry Pi IoT csocsóasztal
Raspberry Pi IoT csocsóasztal

Üdvözöljük a feltört foosball asztal verziójában, az új média és kommunikációs technológia hallgatói projektjének részeként. Alapvetően a csocsó és a biliárdasztalok körül nőttem fel, ezért úgy gondoltam, hogy jó lenne megpróbálni csatlakoztatni az egyik ilyen eszközt az internethez.

A fő beállítás egy Raspberry Pi -hez csatlakoztatott meglévő csocsóasztalt használ, amely a következő feladatok mindegyikét képes elvégezni:

  • GPIO csapokat használ az IR LED/vevők és a 8x8 pontmátrix modulok meghajtásához
  • Flask webhelyet futtat nginx használatával
  • MySQL/MariaDB adatbázist futtat az adatok tárolására

A projekt újbóli létrehozásához a következő készségekre lesz szüksége:

Háttér:

  • A HTML/CSS/Javascript megértése a webhely ügyfele számára
  • A Python megértése a Flask/Flask-SocketIO/Jinja2 segítségével a webhely szerveroldalához
  • Alapvető ismeretek a MySQL -ről
  • Tudja, hogyan kell futtatni egy webszervert

Prototípus

  • Alapvető ismeretek az elektromos áramkör bekötéséről
  • Forrasztás
  • Alapvető ismeretek a szkript írásához Pythonban
  • Linux (Raspbian) használata
  • Sok türelme van, mert sok hibakeresés lesz

Lépés: Az anyagok

Itt található a táblázat az összes szükséges alkatrésszel:

  • Raspberry Pi Model 3 (burkolattal)
  • T-Cobbler a Pi és a kenyértábla csatlakoztatásához
  • Csocsó asztal (én egy ehhez hasonló, nagyon régi asztalt használtam. Hajlandó vagyok lyukakat fúrni benne)
  • MAX7219 Arduino Dot Matrix modul (2)
  • IR LED -sugárzók (2+, mert törnek, hasonlóan ehhez)
  • IR -vevők (2+, mert szintén törnek, hasonlóan ehhez)
  • Alap forrasztás nélküli kenyeretábla
  • Sok -sok drót (a csocsóasztal méretétől függően)
  • férfi csatlakozók (30+)
  • női csatlakozók (10+)
  • 100-220 ohmos ellenállások (4+)
  • forrasztóanyagok
  • drótpántok
  • LED tartók
  • néhány fa/csavar abban az esetben, ha a labdát az ereszcsatornába szeretné továbbítani

A projekt teljes költsége teljes mértékben függ a csocsóasztal költségétől (drága). Az asztal mellett az anyagok maximum 150 euróba kerülnek.

2. lépés: Az elektromos áramkör

Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör

Mielőtt megpróbálna forrasztani, szerelje össze az összes alkatrészt, erősen javaslom, hogy először tesztelje kenyérsütőn. Könnyebb kicserélni a hibás alkatrészeket, mielőtt órákat töltött forrasztással.

Először megpróbáltam megvalósítani a 8x8 LED -es mátrixot 74HC595 váltóregiszterrel (első kép) és tranzisztor tömbrel, de a sok vezeték és nagyon alacsony kimenet miatt a MAX7219 pontmátrix modulra váltottam, mert csak 5 vezetéket vesz igénybe, és közvetlenül hajtja SPI busz.

Az áramkört, amelyet végül használtam, Fritzing segítségével rajzolták meg. Kérjük, vegye figyelembe, hogy az infravörös LED -ek és vevőegységek bármelyik ingyenes GPIO -tűhöz csatlakoztathatók.

Az infravörös vevőkészüléknek és a LED -nek közvetlenül egymással szemben kell lenniük, a LED tetejét pedig a vevő felé kell mutatni. Mivel közvetlen sugárzást akarunk szimulálni, amelyet a labda mozgása megtörhet, ilyenkor a vevő DATA vonalának állapotváltozása 0 -ról 1 -re változik.

3. lépés: Az érzékelők kódolása

Az érzékelők kódolása
Az érzékelők kódolása

A projekt nagy részét a Pycharm használatával kódoltam, mert lehetővé teszi az SSH egyszerű telepítését a Raspberry Pi -n a távoli tolmács segítségével. Nem részletezem, hogyan működik ez a program, de sok információ megtalálható a pycharm weboldalán.

Jelenleg még dolgozom a projekten, de ha minden kész, az egész projekt elérhető lesz a github profilomon

Az érzékelők kódja 3 osztályból áll, amelyeket egy háttérszálban futtatnak a Flask szerveremen (ezt később kifejtjük):

  1. A célosztály (link) -Ez a fájl kezdeményezi az összes különálló összetevőt, amelyek a megfelelő SPI eszköz/busz és pin szám beillesztésével hívhatók le
  2. A Mátrix osztály (link) -Ez a fő osztály a MAX7219 modul bekapcsolásához
  3. A LED és a vevő osztály (link) - Ez a fő osztály az infravörös megszakító sugár bekapcsolására külön szálak használatával, hogy csökkentse az RPi CPU terhelését

A LED és a vevőegység egyaránt 38 kHz -es frekvencián működik, és a vevőkészülékek mindig 50% -os felfelé és 50% -os lefelé irányuló impulzust várnak el a megfelelő működéstől.

4. lépés: Az érzékelők előkészítése és elhelyezése

Az érzékelők előkészítése és elhelyezése
Az érzékelők előkészítése és elhelyezése
Az érzékelők előkészítése és elhelyezése
Az érzékelők előkészítése és elhelyezése
Az érzékelők előkészítése és elhelyezése
Az érzékelők előkészítése és elhelyezése

Most előkészítjük az IR LED -et és a vevőt. A táblázat képében u megtalálja azokat a helyeket, ahol az RPi -t és az érzékelőket el kell helyezni.

De először elő kell készítenünk a vezetékeket:

  1. Győződjön meg arról, hogy megmérte a szükséges huzalmennyiséget az RPi/kenyérlap helyétől az érzékelő helyéig
  2. Forrasztja az IR vevő csapjait a vezeték egyik végére (COM/GND/V+)
  3. Forrasztja a dugaszoló csatlakozókat a vezeték másik végén

Most elkészítjük az asztalt:

  1. Készítsen egy alaprajzot (a kép alapján), hogy hol kell fúrni. Nagyon fontos, hogy a 2 lyuk egymáshoz igazodjon, mert ez lesz a gerenda helye.
  2. Fúrja ki a lyukakat
  3. Ha van néhány LED -tartója (link), akkor ezeket a lyukba helyezheti, hogy stabilabb legyen
  4. Helyezze be + ragassza fel a LED + vevőkészüléket mindkét oldalára
  5. Fűzze be a vezetékeket + ragasztja őket a fára, hogy ne keresztezzék túlságosan
  6. Helyezze be a dugaszos csapokat a kenyérsütő lapra az előzőleg megadott áramkör szerint

5. lépés: A Mátrix modul előkészítése és elhelyezése

A Mátrix modul előkészítése és elhelyezése
A Mátrix modul előkészítése és elhelyezése

Ezután összekapcsoljuk a 2 LED mátrix modult

Jegyzet:

Mivel egy régi csocsóasztalt használtam, a cigarettatartók miatt már lyukak mentek felfelé a felső rész felé. Ha nincs ilyen, akkor létre kell hoznia.

A vezetékek előkészítése:

  1. Mérje meg a vezetéket a kenyértáblától az asztal felső része felé
  2. Forrasztjon néhány női csatlakozót a vezeték első végéhez
  3. Forrasztjon néhány dugaszoló csatlakozót a vezeték másik végéhez

A mátrix elhelyezése:

  1. Húzza ki a mátrixot a tetején lévő lyukon keresztül
  2. Pántozza be + ragasztja be a vezetéket a fába, hogy ne keresztezze
  3. Helyezze be a hüvelycsapokat a kenyérsütő táblára a korábban mellékelt kör szerint

Valamikor hozzáadok egy kis barkácslépést a burkolat hozzáadásához a mátrix modulhoz, de egyelőre meztelenek.

6. lépés: Az IoT létrehozása

IoT készítése
IoT készítése

Ha csak regisztrálni szeretné és megjeleníteni a pontszámokat, befejezheti a projektet egy kis futó python -szkript írásával, amely addig ciklusos, amíg az egyik pontszám el nem éri a 9 -et, majd visszaáll.

Ha azonban az asztalt az internethez szeretné csatlakoztatni, akkor a következő néhány lépésnek felfelé kell haladnia.

A következő néhány lépésben az alábbiakkal foglalkozunk:

  • A Raspberry Pi konfigurálása
  • Adatbázis készítése tárolásra
  • A weboldal létrehozása
  • Felhelyezése az internetre

Ezen a ponton, ha ismeri a git -et, javaslom, hogy készítsen egy tárhelyet a GitHub/GitLab -on a fájlok nyomon követéséhez. Ha nem, létrehozhat egy mappát, amelynek szerkezete megegyezik a képen láthatóval.

A teljes projekt hamarosan elérhető lesz a GitHubon. Azonban rendelkezésre áll egy ideiglenes rar fájl az összes szükséges fájllal.

7. lépés: A Raspberry Pi csatlakoztatása

Ezután beállítjuk a málna pi környezetet, ehhez a következő lépéseket kell végrehajtania:

  • Csatlakozás SSH -n keresztül a Rasberry Pi -hez (használhatja a PuTTY -t)
  • Hozzon létre egy mappát (például mkdir projekt), és lépjen ebbe a mappába a cd paranccsal
  • Hozzon létre egy virtuális Python környezetet ebben a mappában a python3 -m venv --system-site-package env paranccsal
  • Aktiválja a virtuális tolmácsot a source/env/bin/activ paranccsal
  • Telepítse a csomagokat a követelmények.txt fájlból a python -m pip install package -name paranccsal
  • Vigye át a fájlokat a korábban megadott project_example.rar fájlból a projektmappában lévő SSH -n keresztül

Most már képesnek kell lennie a teljes projekt futtatására a Raspberry Pi készüléken. Azt tanácsolom, hogy használjon olyan Python IDE -t, mint a PyCharm, amely lehetővé teszi az Ön számára, hogy hibakeresést végezzen a távoli tolmácsból SSH -n keresztül, és szükség esetén közvetlenül töltse fel a módosításokat.

8. lépés: Az adatbázis beállítása

Az adatbázis beállítása
Az adatbázis beállítása

Most egy nagyon egyszerű adatbázist kell létrehoznia, ennek a modellnek a alapján.

Ennek legegyszerűbb módja az adatbázis létrehozása a MySQL munkaasztalon, ahol néhány tesztet is végezhet.

Ha elkészült, exportálhatja az adatbázis kiíratását, feltöltheti azt az RPi -re, majd végrehajthatja a sudo mariadb <pathtofile/file.sql paranccsal

9. lépés: A webhely létrehozása

A Weboldal létrehozása
A Weboldal létrehozása
A Weboldal létrehozása
A Weboldal létrehozása
A Weboldal létrehozása
A Weboldal létrehozása

Ezután elemezheti (és használhatja) a project_example.rar fájlban megadott kódot.

A fő fájl a Flask.py, amely a projekt kenyere és vaja:

  • Futtat egy Flask-SocketIO alkalmazást, amely kezeli a webhely háttérét
  • Kapcsolatot hoz létre az adatbázis és a lombik között
  • Bejelentkezési ellenőrzést és felhasználói regisztrációt biztosít
  • Biztosítja a szükséges játékkódot a socketio használatával a webhely valós idejű frissítéséhez a játék során
  • A játék eredményeit az adatbázisba helyezi

A statikus és a sablon mappákban megtalálhatja a HTML/CSS/JS -t, amelyek a webhely frontend részét képezik. Nyugodtan módosítsa ezeket saját ízlése szerint.

10. lépés: Csatlakozás a világhálóhoz

Weboldalunknak az internethez való csatlakoztatásához az nginx és az uwsgi eszközöket fogjuk használni. A projekt példában u megtalálja a szükséges fájlokat a conf mappában.

Először is frissítenie kell a következőket ezekben a fájlokban:

  • Az uwsgi-flask.ini-ben meg kell változtatnia a virtualenv paraméter útvonalát a tolmácshoz
  • A project1-flask.service szolgáltatásban frissítenie kell a fájl [Service] részét a hitelesítő adataival és a kapcsolódó fájlokhoz vezető elérési útjaival
  • Az nginx fájlban frissítenie kell a kiszolgálót és a helyet / elérési utat a hozzá tartozó aljzathoz

Ezután le kell cserélnie az alapértelmezett nginx webszerver fájlt az nginx konfigurációs fájl helyére, az alábbiakban egy példa a linux parancsokra

  • 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 indítsa újra az nginx.service szolgáltatást

Végül hozzá kell adnia az egyéni szolgáltatásokat a systemd mappához, ez egy példa erre:

  • 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 indítsa el a projektet1-*
  • me@my-rpi: ~/project1 $ sudo systemctl állapotprojekt1-*

Ha azt szeretné, hogy a webszerver elinduljon a málna pi rendszerindításakor, akkor a sudo systemctl enable project1-*. Service parancsot kell használnia.

Ha helyesen tette, a rendszer újraindítása után a webhelynek futnia kell az IP -címen. Ha szerkeszteni szeretné ezeket a konfigurációs fájlokat, mindig le kell állítania a szolgáltatást, töltse fel újra a fájlokat, és használja a démon-újratöltés parancsot, majd az indítást, különben a módosítások nem lesznek érvényesek.

11. lépés: Befejezés

Befejezés Ki
Befejezés Ki

Miközben ennek az oktatóanyagnak az utolsó részét gépeli, ez a kis iskolai projekt még folyamatban van.

Számtalan órát töltöttem ezzel 2,5 hét alatt. Annak ellenére, hogy minden kicsit elhamarkodott volt, büszke vagyok arra, amit elértem. Az összeszerelési fázis során számtalan hibával/hibával/hibás érzékelővel találkoztam, ezért ne csüggedjen, ha minden nem működik az első próbálkozáskor.

A legjobb, amit tehetünk, ha segítséget kérünk vagy keresünk az interneten. Sokan sokkal jobb ismeretekkel rendelkeznek, és nagyon szívesen segítenek Önnek.

Végül, de nem utolsósorban szeretném megköszönni az új média és kommunikációs technológia tanárainak, hogy sok tanácsot adtak és segítettek befejezni ezt a projektet.

Ajánlott: