Obsah:

Futbalový stôl Raspberry Pi IoT: 11 krokov
Futbalový stôl Raspberry Pi IoT: 11 krokov

Video: Futbalový stôl Raspberry Pi IoT: 11 krokov

Video: Futbalový stôl Raspberry Pi IoT: 11 krokov
Video: Raspberry Pi 3: GPIO - введение не для начинающих – Часть 5.1 2024, November
Anonim
Futbalový stôl Raspberry Pi IoT
Futbalový stôl Raspberry Pi IoT

Vitajte v mojej verzii hacknutého stolného futbalu, ako súčasť študentského projektu pre nové mediálne a komunikačné technológie. V zásade som vyrastal okolo futbalu a biliardových stolov, takže som si povedal, že by bolo skvelé skúsiť pripojiť jedno z týchto zariadení k internetu.

Hlavné nastavenie je pomocou existujúceho stolného futbalu pripojeného k Raspberry Pi, ktorý dokáže vykonávať všetky nasledujúce úlohy:

  • Na ovládanie infračervených LED/prijímačov a bodových maticových modulov 8 x 8 používa piny GPIO
  • Prevádzkuje webovú stránku Flask pomocou nginx
  • Prevádzkuje databázu MySQL/MariaDB na ukladanie údajov

Na to, aby ste tento projekt mohli znovu vytvoriť, budete potrebovať nasledujúce zručnosti:

Backend:

  • Porozumenie HTML/CSS/Javascriptu pre klienta webovej stránky
  • Porozumenie Pythonu s Flask/Flask-SocketIO/Jinja2 na serverovej strane webu
  • Základné znalosti MySQL
  • Naučte sa používať webový server

Prototyp

  • Základné znalosti o tom, ako zapojiť elektrický obvod
  • Spájkovanie
  • Základné znalosti o tom, ako napísať skript v Pythone
  • Práca s Linuxom (Raspbian)
  • Veľa trpezlivosti, pretože s tým bude spojené aj veľa debugovania

Krok 1: Materiály

Tu je zoznam so všetkými potrebnými časťami pre tabuľku:

  • Raspberry Pi Model 3 (s krytom)
  • T-Cobbler na pripojenie Pi k breadboardu
  • Futbalový stôl (použil som veľmi starý stôl podobný tomuto. Musím byť ochotný do neho vyvŕtať otvory)
  • MAX7219 Bodový maticový modul Arduino (2)
  • IR LED vysielače (2+, pretože sa lámu, podobné tomuto)
  • IR prijímače (2+, pretože sa tiež lámu, podobne ako tento)
  • Základné nespájkované nepájivé pole
  • Veľa a veľa drôtu (závisí od veľkosti stolného futbalu)
  • zástrčkové konektory (30+)
  • zásuvky (10+)
  • Rezistory 100-220 ohmov (4+)
  • spájkovacie materiály
  • drôtené pásy
  • LED držiaky
  • nejaké drevo/skrutky v prípade, že chcete loptu preniesť do žľabu

Celkové náklady na tento projekt úplne závisia od nákladov na váš stolný futbal (drahé). Okrem stolu bude materiál stáť maximálne 150 eur.

Krok 2: Elektrický obvod

Elektrický obvod
Elektrický obvod
Elektrický obvod
Elektrický obvod
Elektrický obvod
Elektrický obvod

Predtým, ako sa pokúsite spájkovať, zostavte všetky súčasti, ktoré dôrazne odporúčam najskôr otestovať na doske. Je jednoduchšie vymeniť chybné súčiastky skôr, ako strávite hodiny ich spájkovaním.

Najprv som sa pokúsil implementovať maticu LED 8x8 s posuvným registrom 74HC595 (prvý obrázok) a tranzistorovým poľom, ale kvôli veľkému počtu vodičov a veľmi nízkemu výstupu som prešiel na bodový maticový modul MAX7219, pretože vyžaduje iba 5 vodičov a je poháňaný priamo autobus SPI.

Okruh, ktorý som nakoniec použil, je nakreslený Fritzingom. Upozorňujeme, že IR LED a prijímače je možné pripojiť k akémukoľvek z vašich voľných GPIO pinov.

IR prijímače a LED diódy by mali byť priamo oproti sebe a horná časť LED by mala smerovať k prijímaču. Pretože chceme simulovať priamy lúč, ktorý je možné zlomiť pohybom lopty, v takom prípade dôjde k zmene stavu riadka DATA prijímača z 0 na 1.

Krok 3: Kódovanie senzorov

Kódovanie senzorov
Kódovanie senzorov

Väčšinu tohto projektu som kódoval pomocou Pycharmu, pretože umožňuje ľahké nasadenie SSH na váš Raspberry Pi pomocou vzdialeného tlmočníka. Nebudem podrobne rozoberať, ako tento program funguje, ale veľa informácií nájdete na webovej stránke pycharm.

Aktuálne stále pracujem na projekte, ale keď bude všetko hotové, celý projekt bude k dispozícii na mojom github profile

Kód pre senzory pozostáva z 3 tried, ktoré sú spustené vo vlákne na pozadí na mojom serveri Flask (čo bude vysvetlené neskôr):

  1. Trieda cieľa (odkaz) -Tento súbor iniciuje všetky samostatné komponenty, ktoré je možné vyvolať vložením správneho zariadenia/zbernice SPI a čísla PIN
  2. Matrix Class (link) -Toto je hlavná trieda na napájanie modulu MAX7219
  3. Trieda LED a prijímača (odkaz) - Toto je hlavná trieda na napájanie infračerveného lúča pomocou oddelených vlákien na zníženie zaťaženia procesora RPi.

LED aj prijímač pracujú na frekvencii 38 kHz a prijímače vždy očakávajú, že 50% impulz nahor a 50% nadol bude fungovať správne.

Krok 4: Príprava a umiestnenie senzorov

Príprava a umiestnenie senzorov
Príprava a umiestnenie senzorov
Príprava a umiestnenie senzorov
Príprava a umiestnenie senzorov
Príprava a umiestnenie senzorov
Príprava a umiestnenie senzorov

Teraz ideme pripraviť IR LED a prijímač. Na obrázku v tabuľke môžete nájsť miesta, kde by mali byť umiestnené RPi a senzory.

Najprv však musíme pripraviť zapojenie:

  1. Uistite sa, že u zmeriate množstvo drôtu potrebného od umiestnenia RPi/breadboard k umiestneniu senzora
  2. Pripájajte kolíky IR prijímača k jednému koncu vodiča (COM/GND/V+)
  3. Na druhý koniec drôtu spájkujte kúsky mužského konektora

Teraz pripravíme tabuľku:

  1. Vytvorte základný nákres (podľa obrázku), kde vŕtať. Je veľmi dôležité, aby boli 2 otvory zarovnané cez seba, pretože to bude umiestnenie lúča.
  2. Vyvŕtajte otvory
  3. Ak máte nejaké držiaky LED (odkaz), môžete ich vložiť do otvoru, aby boli odolnejšie
  4. Vložte + prilepte pásku k LED + prijímaču na oboch stranách
  5. Pripevnite drôty + nalepte ich na drevo, aby sa príliš neprekrížili
  6. Vložte samčie kolíky na dosku podľa predchádzajúceho obvodu

Krok 5: Príprava a umiestnenie maticového modulu

Príprava a umiestnenie modulu matice
Príprava a umiestnenie modulu matice

Ďalej spojíme 2 maticové moduly LED

Poznámka:

Pretože som použil starý stolný stolný futbal, už tam boli otvory, ktoré smerovali nahor k hornej časti kvôli držiakom cigariet. Ak ich nemáte, budete si ich musieť vytvoriť.

Na prípravu drôtov:

  1. Zmerajte drôt z dosky na pečenie smerom k hornej časti stolu
  2. Na prvý koniec drôtu spájkujte niektoré zásuvkové konektory
  3. Na druhý koniec drôtu spájkujte niektoré samčie konektory

Umiestnenie matice:

  1. Vytiahnite matricu cez otvor v hornej časti
  2. Pripevnite + nalepte drôty zvnútra na drevo, aby ste sa vyhli kríženiu
  3. Samčie kolíky vložte na dosku podľa predchádzajúceho zapojenia

V určitom okamihu pridám malý krok pre domácich majstrov, aby som pridal kryt pre maticový modul, ale zatiaľ sú nahí.

Krok 6: Vytvorenie IoT

Vytvorenie IoT
Vytvorenie IoT

Ak sa chcete len zaregistrovať a zobraziť skóre, môžete projekt dokončiť napísaním malého spusteného skriptu python, ktorý sa bude opakovať, kým jedno zo skóre nedosiahne hodnotu 9, a potom sa resetuje.

Ak však chcete svoj stôl pripojiť k internetu, niekoľko nasledujúcich krokov by malo napraviť vašu uličku.

V nasledujúcich niekoľkých krokoch sa budeme zaoberať nasledujúcimi:

  • Konfigurácia Raspberry Pi
  • Vytvorenie databázy pre úložisko
  • Vytvorenie webovej stránky
  • Uvedenie na internet

V tomto prípade, ak poznáte git, odporúčam vám vytvoriť úložisko na GitHub/GitLab, aby ste mali prehľad o svojich súboroch. Ak nie ste, môžete si vytvoriť priečinok s rovnakou štruktúrou ako na obrázku.

Celý projekt bude čoskoro k dispozícii na GitHub. K dispozícii je však dočasný súbor rar so všetkými potrebnými súbormi.

Krok 7: Pripojenie Raspberry Pi

Ďalej nastavíme prostredie Raspberry Pi, aby ste to urobili, musíte vykonať nasledujúce kroky:

  • Pripojte sa k svojmu Rasberry Pi cez SSH (môžete používať PuTTY)
  • Vytvorte priečinok (príklad projektu mkdir) a presuňte sa do tohto priečinka pomocou príkazu cd
  • V tomto priečinku vytvorte virtuálne prostredie Python pomocou príkazu python3 -m venv --system-site-packages env
  • Aktivujte virtuálneho tlmočníka príkazom source/env/bin/activate
  • Balíky nainštalujte z požiadaviek.txt pomocou príkazu python -m pip install package -name
  • Preneste súbory z predtým poskytnutého súboru project_example.rar cez SSH v priečinku projektu

Teraz by ste mali byť schopní spustiť celý projekt na svojom Raspberry Pi. Odporúčam vám použiť IDE Pythonu, ako je PyCharm, ktoré vám umožní použiť vás na ladenie zo vzdialeného tlmočníka cez SSH a v prípade potreby priamo nahrať zmeny.

Krok 8: Nastavenie databázy

Nastavenie databázy
Nastavenie databázy

Teraz musíte vytvoriť veľmi základnú databázu založenú na tomto modeli.

Najjednoduchší spôsob, ako to urobiť, je vytvoriť databázu na pracovnom stole MySQL, kde môžete tiež vykonať niekoľko testov.

Po dokončení môžete exportovať výpis svojej databázy, nahrať ho do svojho RPi a potom ho spustiť pomocou sudo mariadb <pathtofile/file.sql

Krok 9: Vytvorenie webovej stránky

Vytvorenie webovej stránky
Vytvorenie webovej stránky
Vytvorenie webovej stránky
Vytvorenie webovej stránky
Vytvorenie webovej stránky
Vytvorenie webovej stránky

Ďalej môžete u analyzovať (a použiť) kód poskytnutý v súbore project_example.rar.

Hlavným súborom je Flask.py, ktorý je chlebíčkom tohto projektu:

  • Je spustená aplikácia Flask-SocketIO, ktorá sa stará o zadnú stranu webu
  • Vytvorí spojenie medzi databázou a bankou
  • Poskytuje overenie prihlásenia a registráciu užívateľa
  • Poskytuje potrebný kód, ako hrať hru, a používa socketio na aktualizáciu webových stránok v reálnom čase počas hry
  • Vloží výsledky hry do databázy

V statickom priečinku a priečinku so šablónami nájdete HTML/CSS/JS, ktoré poskytujú frontendovú časť webu. Nebojte sa ich upraviť podľa vlastného vkusu.

Krok 10: Pripojenie k World Wide Web

Na pripojenie našej webovej stránky k webu použijeme nginx a uwsgi. V príklade projektu môžete nájsť potrebné súbory v priečinku conf.

Najprv musíte v týchto súboroch aktualizovať nasledujúce položky:

  • Na stránke uwsgi-flask.ini musíte zmeniť cestu parametra virtualenv k svojmu tlmočníkovi
  • V službe project1-flask.service musíte aktualizovať časť [služba] súboru pomocou vašich poverení a ciest k pridruženým súborom
  • V súbore nginx musíte aktualizovať server a umiestnenie / cestu k svojmu pridruženému soketu

Ďalej musíte nahradiť predvolený súbor webového servera nginx umiestnením konfiguračného súboru nginx, nižšie je príklad príkazov linux, ako to urobiť

  • ja@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • ja@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
  • ja@my-rpi: ~/project1 $ sudo systemctl reštartujte službu nginx.service

Nakoniec musíte do priečinka systemd pridať vlastné služby, toto je príklad, ako to urobiť:

  • ja@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • ja@my-rpi: ~/project1 $ sudo systemctl daemon-reload
  • ja@my-rpi: ~/project1 $ sudo systemctl start project1-*
  • ja@my-rpi: ~/project1 $ sudo systemctl status project1-*

Ak chcete, aby sa webový server spustil pri štarte vašej maliny, musíte použiť príkaz sudo systemctl enable project1-*. Service.

Ak je to vykonané správne, po reštarte systému by mal byť váš web spustený na vašej IP adrese. Ak chcete upraviť jeden z týchto konfiguračných súborov, vždy musíte službu zastaviť, znova načítať súbory a použiť príkaz daemon-reload, po ktorom nasleduje spustenie, inak zmeny nebudú účinné.

Krok 11: Dokončenie vypnuté

Dokončuje sa
Dokončuje sa

Pri písaní záverečnej časti tohto pokynu je tento malý školský projekt stále nedokončený.

Strávil som nespočetné hodiny tým, že som to zvládol za 2,5 týždňa. Aj keď som mal všetko uponáhľané, stále som hrdý na to, čo som dosiahol. Počas fázy montáže som narazil na nespočetné množstvo chýb/chýb/chybných senzorov, takže sa nenechajte príliš odradiť, ak všetko nefunguje na prvý pokus.

Najlepšie, čo môžete urobiť, je požiadať alebo vyhľadať pomoc na internete. Existuje veľa ľudí s oveľa lepšími znalosťami, ktorí vám veľmi radi pomôžu.

V neposlednom rade sa chcem poďakovať svojim učiteľom z Nových médií a komunikačných technológií, že mi poskytli veľa rád a pomohli mi dokončiť tento projekt.

Odporúča: