Obsah:

Tabulka stolního fotbalu Raspberry Pi IoT: 11 kroků
Tabulka stolního fotbalu Raspberry Pi IoT: 11 kroků

Video: Tabulka stolního fotbalu Raspberry Pi IoT: 11 kroků

Video: Tabulka stolního fotbalu Raspberry Pi IoT: 11 kroků
Video: Fanoušci mi “vlezli” na pozemek! 😱 Děcka, tohle není v pořádku! 🥵 2024, Listopad
Anonim
Fotbalový stůl Raspberry Pi IoT
Fotbalový stůl Raspberry Pi IoT

Vítejte v mé verzi hacknutého stolního fotbalu, jako součást studentského projektu pro nová média a komunikační technologie. V zásadě jsem vyrostl kolem stolního fotbalu a kulečníkových stolů, takže jsem si řekl, že by bylo skvělé zkusit připojit jedno z těchto zařízení k internetu.

Hlavní nastavení je pomocí stávajícího stolního fotbalu připojeného k Raspberry Pi, který může provádět všechny následující úkoly:

  • Používá GPIO piny k ovládání IR LED/přijímačů a 8x8 bodových maticových modulů
  • Provozuje webovou stránku Flask pomocí nginx
  • Provozuje databázi MySQL/MariaDB pro ukládání dat

Abyste mohli tento projekt znovu vytvořit, budete potřebovat následující dovednosti:

Backend:

  • Porozumění HTML/CSS/Javascriptu pro klienta webové stránky
  • Porozumění Pythonu pomocí Flask/Flask-SocketIO/Jinja2 na straně serveru na webu
  • Základní znalost MySQL
  • Zjistěte, jak spustit webový server

Prototyp

  • Základní znalosti o zapojení elektrického obvodu
  • Pájení
  • Základní znalosti o tom, jak napsat skript v Pythonu
  • Práce s Linuxem (Raspbian)
  • Mít hodně trpělivosti, protože s tím bude spojeno hodně ladění

Krok 1: Materiály

Zde je seznam se všemi potřebnými částmi pro tabulku:

  • Raspberry Pi Model 3 (s pouzdrem)
  • T-Cobbler pro připojení Pi k prkénku
  • Stolní fotbal (Použil jsem velmi starý stůl podobný tomuto. Musí být ochoten do něj vyvrtat otvory)
  • MAX7219 Modul Arduino Dot Matrix (2)
  • IR LED vysílače (2+, protože se rozbijí, podobné tomuto)
  • IR přijímače (2+, protože se také lámou, podobné tomuto)
  • Základní nepájivé prkénko
  • Hodně a hodně drátu (závisí na velikosti stolního fotbalu)
  • zástrčky (30+)
  • zásuvky (10+)
  • Rezistory 100-220 Ohm (4+)
  • pájecí materiály
  • drátěné popruhy
  • LED držáky
  • nějaké dřevo/šrouby v případě, že u chcete přenášet kouli do žlabu

Celkové náklady na tento projekt zcela závisí na nákladech na váš stolní fotbal (drahý). Kromě stolu bude materiál maximálně 150 EUR.

Krok 2: Elektrický obvod

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

Než se pokusíte pájet, sestavte všechny součásti, které vřele doporučuji nejprve vyzkoušet na prkénku. Je snadnější vyměnit vadné součásti, než strávíte hodiny jejich pájením.

Nejprve jsem se pokusil implementovat matici 8x8 LED s posuvným registrem 74HC595 (první obrázek) a tranzistorovým polem, ale kvůli mnoha vodičům a velmi nízkému výkonu jsem přešel na modul MAX7219 Dot Matrix Module, protože to vyžaduje pouze 5 vodičů a je přímo poháněno autobus SPI.

Obvod, který jsem nakonec použil, je nakreslen Fritzingem. Vezměte prosím na vědomí, že IR LED a přijímače lze připojit k libovolnému vašemu bezplatnému GPIO pinu.

IR přijímače a LED by měly být přímo přes sebe a horní část LED by měla směřovat k přijímači. Protože chceme simulovat přímý paprsek, který může být přerušen pohybem koule, v takovém případě dojde ke změně stavu linie DATA přijímače z 0 na 1.

Krok 3: Kódování senzorů

Kódování senzorů
Kódování senzorů

Většinu tohoto projektu jsem zakódoval pomocí Pycharmu, protože umožňuje snadné nasazení SSH na váš Raspberry Pi pomocí vzdáleného tlumočníka. Nebudu se podrobně zabývat tím, jak tento program funguje, ale mnoho informací lze nalézt na webových stránkách pycharm.

V současné době stále pracuji na projektu, ale jakmile bude vše hotové, celý projekt bude k dispozici na mém profilu github

Kód pro senzory se skládá ze 3 tříd, které jsou spuštěny ve vlákně na pozadí na mém serveru Flask (což bude vysvětleno později):

  1. Třída cíle (odkaz) -Tento soubor inicializuje všechny samostatné komponenty, které lze vyvolat vložením správného zařízení/sběrnice SPI a čísla PIN
  2. Třída Matrix (odkaz) -Toto je hlavní třída pro napájení modulu MAX7219
  3. Třída LED a přijímače (odkaz) - Toto je hlavní třída pro napájení infračerveného paprsku pomocí samostatných vláken pro snížení zatížení procesoru RPi

LED i přijímač pracují na frekvenci 38 kHz a přijímače vždy očekávají, že 50% vzestupný a 50% sestupný puls bude fungovat správně.

Krok 4: Příprava a umístění senzorů

Příprava a umístění senzorů
Příprava a umístění senzorů
Příprava a umístění senzorů
Příprava a umístění senzorů
Příprava a umístění senzorů
Příprava a umístění senzorů

Nyní připravíme IR LED a přijímač. Na obrázku v tabulce můžete najít umístění, kde by měly být umístěny RPi a senzory.

Nejprve však musíme připravit zapojení:

  1. Ujistěte se, že u změříte potřebné množství drátu od umístění RPi/prkénka k umístění senzoru
  2. Připájejte piny IR přijímače k jednomu konci vodiče (COM/GND/V+)
  3. Na druhý konec drátu připájejte kusy zástrčky

Nyní připravíme tabulku:

  1. Udělejte základní kresbu (podle obrázku), kam vrtat. Je velmi důležité, aby 2 otvory byly zarovnány přes sebe, protože toto bude umístění paprsku.
  2. Vyvrtejte otvory
  3. Pokud máte nějaké držáky LED (odkaz), můžete je umístit do otvoru, aby byly robustnější
  4. Vložte + přilepte LED + přijímač na obou stranách
  5. Připevněte dráty + nalepte je na dřevo, aby se příliš nepřekřížily
  6. Vložte zástrčkové kolíky na prkénko podle dříve poskytnutého obvodu

Krok 5: Příprava a umístění modulu Matrix

Příprava a umístění modulu Matrix
Příprava a umístění modulu Matrix

Dále připojíme 2 maticové moduly LED

Poznámka:

Protože jsem použil starý stolní fotbálek, už tam byly otvory směřující nahoru k horní části kvůli držákům cigaret. Pokud je nemáte, budete je muset vytvořit.

Příprava vodičů:

  1. Změřte drát od prkénka směrem k horní části stolu
  2. Na první konec drátu připájejte některé konektory
  3. Na druhý konec drátu připájejte některé zástrčkové konektory

Umístění matice:

  1. Vytáhněte matici otvorem nahoře
  2. Připevněte + nalepte vodiče uvnitř na dřevo, abyste se vyhnuli křížení
  3. Vložte zástrčkové kolíky na prkénko podle dříve uvedených obvodů

V určitém okamžiku přidám malý kutilský krok k přidání pouzdra pro maticový modul, ale prozatím jsou nazí.

Krok 6: Vytváření IoT

Vytváření IoT
Vytváření IoT

Pokud se chcete pouze zaregistrovat a zobrazit skóre, můžete projekt dokončit napsáním malého běžícího skriptu pythonu, který se bude opakovat, dokud jedno ze skóre nedosáhne 9, a poté se resetuje.

Pokud však chcete svůj stůl připojit k internetu, několik následujících kroků by vám mělo uličku napravit.

V následujících několika krocích se budeme zabývat následujícím:

  • Konfigurace Raspberry Pi
  • Vytvoření databáze pro úložiště
  • Vytvoření webové stránky
  • Uvedení na internet

V tomto okamžiku, pokud jste obeznámeni s git, doporučuji u vytvořit úložiště na GitHub/GitLab, abyste měli přehled o svých souborech. Pokud ne, můžete vytvořit složku se stejnou strukturou jako na obrázku.

Celý projekt bude brzy k dispozici na GitHubu. K dispozici je však dočasný soubor rar se všemi potřebnými soubory.

Krok 7: Připojení Raspberry Pi

Dále nastavíme prostředí Raspberry Pi, k tomu je třeba provést následující kroky:

  • Připojte se přes SSH k vašemu Rasberry Pi (můžete použít PuTTY)
  • Vytvořte složku (příklad projektu mkdir) a přesuňte se do této složky pomocí příkazu cd
  • V této složce vytvořte virtuální prostředí Pythonu pomocí příkazu python3 -m venv --system-site-packages env
  • Aktivujte virtuální interpret pomocí příkazu source/env/bin/activate
  • Nainstalujte balíčky z požadavků.txt pomocí příkazu python -m pip install název -balíčku
  • Přeneste soubory z dříve poskytnutého souboru project_example.rar přes SSH ve složce projektu

Nyní byste měli mít možnost spustit celý projekt na svém Raspberry Pi. Doporučuji použít IDE Pythonu, jako je PyCharm, které vám umožní použít vás k ladění ze vzdáleného tlumočníka přes SSH a v případě potřeby přímo nahrávat změny.

Krok 8: Nastavení databáze

Nastavení databáze
Nastavení databáze

Nyní musíte na základě tohoto modelu nastavit velmi základní databázi.

Nejjednodušší způsob, jak toho dosáhnout, je vytvořit si databázi na pracovním stole MySQL, kde můžete také provést nějaké testování.

Až budete hotovi, můžete exportovat výpis databáze a nahrát jej do svého RPi a poté jej spustit pomocí sudo mariadb <pathtofile/file.sql

Krok 9: Vytvoření webové stránky

Vytvoření webové stránky
Vytvoření webové stránky
Vytvoření webové stránky
Vytvoření webové stránky
Vytvoření webové stránky
Vytvoření webové stránky

Dále můžete u analyzovat (a použít) kód uvedený v souboru project_example.rar.

Hlavním souborem je Flask.py, který je chlebem tohoto projektu:

  • Spouští aplikaci Flask-SocketIO, která zpracovává backend webu
  • Vytvoří spojení mezi databází a baňkou
  • Poskytuje ověření přihlášení a registraci uživatele
  • Poskytuje potřebný kód, jak hrát hru, pomocí socketio aktualizuje web v reálném čase během hry
  • Vloží výsledky hry do databáze

Ve složkách static a templates můžete najít HTML/CSS/JS, které poskytují frontendovou část webu. Nebojte se je upravit podle svého vlastního vkusu.

Krok 10: Připojení k World Wide Web

Pro připojení našeho webu k webu použijeme nginx a uwsgi. V příkladu projektu u můžete najít potřebné soubory ve složce conf.

Nejprve musíte v těchto souborech aktualizovat následující:

  • V souboru uwsgi-flask.ini u musíte změnit cestu parametru virtualenv k vašemu tlumočníkovi
  • V project1-flask.service u potřebujete aktualizovat část [Service] souboru pomocí vašich přihlašovacích údajů a cest k přidruženým souborům
  • V souboru nginx u musíte aktualizovat server a umístění / cestu k přidruženému soketu

Dále je třeba nahradit výchozí soubor webového serveru nginx umístěním konfiguračního souboru nginx, níže je příklad příkazů linux, jak to provést

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

Nakonec musíte do složky systemd přidat vlastní služby, toto je příklad, jak to udělat:

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

Pokud chcete, aby se webový server spustil při spuštění vaší maliny, musíte použít příkaz sudo systemctl enable project1-*. Service.

Pokud je to provedeno správně, po restartu systému by měl být váš web spuštěn na vaší IP adrese. Pokud budete chtít upravit jeden z těchto konfiguračních souborů, vždy musíte službu zastavit, znovu načíst soubory a použít příkaz daemon-reload následovaný spuštěním, jinak nebudou změny účinné.

Krok 11: Dokončení vypnuto

Dokončení vypnuto
Dokončení vypnuto

Při psaní závěrečné části tohoto pokynu tento malý školní projekt stále probíhá.

Strávil jsem nespočet hodin, než jsem to zvládl za 2,5 týdne. I když bylo všechno trochu uspěchané, stále jsem hrdý na to, čeho jsem dosáhl. Během fáze montáže jsem narazil na nespočet chyb/chyb/vadných senzorů, takže se nenechte příliš odradit, pokud vše nefunguje na první pokus.

Nejlepší věc, kterou můžete udělat, je požádat nebo vyhledat pomoc na internetu. Existuje mnoho lidí s mnohem lepšími znalostmi, kteří vám velmi rádi pomohou.

V neposlední řadě chci poděkovat svým učitelům z New Media and Communication Technology za to, že mi poskytli mnoho rad a pomohli mi dokončit tento projekt.

Doporučuje: