Obsah:

Sledovací modul pro cyklisty: 5 kroků
Sledovací modul pro cyklisty: 5 kroků

Video: Sledovací modul pro cyklisty: 5 kroků

Video: Sledovací modul pro cyklisty: 5 kroků
Video: Kotlár Security v práci 2024, Červenec
Anonim
Sledovací modul pro cyklisty
Sledovací modul pro cyklisty

Tento sledovací modul pro cyklisty je modul, který automaticky detekuje pády v závodě a který detekuje mechanické poškození dotykem dotykového senzoru. Když dojde k jedné z těchto událostí, modul odešle událost do databáze na malinovém pi prostřednictvím LoRa. Tato událost bude zobrazena na LCD displeji a na webových stránkách. Můžete také na webu vyhledat konkrétní cyklistický závod s událostmi a přidat cyklistické závody nebo cyklisty do databáze. Tento projekt jsem vytvořil, protože se velmi zajímám o cyklistiku a IOT, takže kombinace těchto dvou předmětů pro mě byla velmi vzrušující.

Než budete moci vytvořit sledovací modul pro cyklisty, musíte si posbírat materiály. Nástroje a zásoby najdete v níže uvedených seznamech nebo si můžete stáhnout kusovník (Build Of Materials).

Zásoby:

  • sklo plexi (56 mm x 85 mm)
  • 10 X 2M šroubů 10mm a matic
  • 10 X 3M šroubů 10mm a matic
  • 2 x 3M šrouby 50 mm a matice
  • Filament PLA pro 3D tisk vašeho pouzdra LCD
  • smršťovat
  • Kabely mezi muži a ženami
  • Základní PCB
  • Mužské záhlaví
  • Raspberry Pi 3b+
  • 16GB SD karta
  • Zapalovací LCD 4X20
  • Kapacitní dotykový senzor
  • Bzučák
  • Tříosý akcelerometr + gyroskop
  • GPS modul
  • Deska SODAQ Mbili
  • Modul LoRa WAN
  • Baterie 3.7V 1000mAh
  • Napájecí zdroj Raspberry Pi 3b+

Nástroje:

  • Pájecí cín
  • Páječka
  • Kleště
  • Šroubováky
  • Vykružovačka
  • Vrtačka
  • 2,5 a 3,5 vrtáku
  • Zapalovač / horkovzdušná pistole

Pokud potřebujete koupit všechny zásoby, budete potřebovat rozpočet 541,67 EUR. Tento projekt je velmi drahý, protože jsem použil vývojovou sadu LoRa rappid, která stojí 299 EUR (měl jsem možnost použít tuto sadu ze své školy). Vždy můžete použít normální Arduino a ušetřit spoustu peněz, ale programy se pak budou lišit.

Krok 1: Fritzing Scheme

Fritzingovo schéma
Fritzingovo schéma
Fritzingovo schéma
Fritzingovo schéma

Prvním krokem je vybudování obvodů. Pro tento projekt máme 2 elektrické obvody, jeden s Raspberry Pi a jeden s deskou SADAQ Mbili. Začneme obvodem Raspberry Pi.

Schéma fritzování Raspberry Pi:

Schéma Raspberry Pi je velmi jednoduché, jediná věc, kterou s Pi spojujeme, je LCD displej 4X20 Sparkfun. Displej pracuje se sériovou komunikací, SPI nebo I2C. Jaký komunikační protokol použijete, je jen na vás. Použil jsem protokol SPI, protože je velmi jednoduchý. Pokud používáte SPI jako já, potřebujete následující připojení:

  • VCC LCD VCC Raspberry Pi
  • GND LCD GND Raspberry Pi
  • SDI LCD MOSI (GPIO 10) Raspberry Pi
  • SDO LCD MISO (GPIO 9) Raspberry Pi
  • SCK LCD SCLK (GPIO 11) Raspberry Pi
  • CS LCD CS0 (GPIO 8) Raspberry Pi

Na Fritzingově schématu uvidíte, že LCD displej je displej 2X16. Důvodem je, že jsem nenašel LCD 4X20 na frizingu. Všechna spojení jsou však nějaká, takže na tom vlastně nezáleží.

Schéma Fritzing SODAQ Mbili:

K desce SODAQ Mbili připojíme 4 elektronické součástky, takže i toto elektrické schéma je velmi jednoduché. Začneme připojením dotykového senzoru Capactive. Tento pin OUT-pin bude VYSOKÝ, když se dotknete senzoru, a v opačném případě bude NÍZKÝ. To znamená, že OUT-pin je digitální výstup, který můžeme připojit pomocí digitálního vstupu desky Mbili. Připojení jsou následující:

  • OUT dotykový senzor D5 Mbili
  • Dotykový senzor VCC 3,3 V Mbili
  • Dotykový snímač GND GND Mbili

Druhou součástí je senzor Triple acces + gyroskop. Použil jsem desku GY-521, která ke komunikaci s deskou Mbili používá protokol I2C. Všimněte si, že pin AD0 desky GY-521 musí být spojen s VCC desky Mbili! Důvodem je, že deska Mbili má hodiny se stejnou I2C adresou jako GY-521. Připojením pinu AD0 k VCC změníme adresu I2C GY-521. Připojení jsou následující:

  • VCC GY-521 3,3 V Mbili
  • GND GY-521 GND Mbili
  • SCL GY-521 SCL Mbili
  • SDA GY-521 SDA Mbili
  • AD0 GY-521 3,3 V Mbili

Poté připojíme bzučák. Používám standardní bzučák, který vydává zvuk, když je proud. To znamená, že můžeme pouze připojit bzučák k digitálnímu pinu desky Mbili. Připojení jsou následující:

  • + Bzučák D4 Mbili
  • - Bzučák GND Mbili

V neposlední řadě připojíme modul GPS. GPS modul komunikuje přes RX a TX. Připojení jsou následující:

  • VCC GPS 3,3 V Mbili
  • GND GPS GND Mbili
  • TX GPS RX Mbili
  • RX GPS TX Mbili

Krok 2: Normalizovaná databáze

Normalizovaná databáze
Normalizovaná databáze

Druhým krokem je návrh normalizované databáze. Navrhl jsem svůj ERD v MySQL. Uvidíte, že moje databáze je napsána v nizozemštině, vysvětlím zde tabulky.

Tabulka 'ploeg':

Tato tabulka je tabulka pro cyklistické kluby. Obsahuje ID cyklistického klubu a název cyklistického klubu.

Tabulka „renners“:

Tato tabulka je tabulka pro cyklisty. Každý cyklista má LoRaID, který je také primárním klíčem tabulky. Mají také příjmení, křestní jméno, zemi původu a ID cyklistického klubu, které je spojeno se stolem cyklistického klubu.

Tabulka „plaatsen“:

Tato tabulka je tabulka, která ukládá místa v Belgii, kde se mohou konat cyklistické závody. Obsahuje název města (což je primární klíč) a provincii, kde se město nachází.

Tabulka 'wedstrijden':

Tato tabulka ukládá všechny cyklistické závody. Primární klíč tabulky je ID. Tabulka také obsahuje název cyklistického závodu, město závodu, které je spojeno s tabulkou míst, vzdálenost závodu, kategorii cyklistů a datum závodu.

Tabulka „gebeurtenissen“:

Tato tabulka ukládá všechny události, které se dějí. To znamená, že pokud je cyklista účastníkem havárie nebo má mechanickou poruchu, událost bude uložena do této tabulky. Primární klíč tabulky je ID. Tabulka také obsahuje datum a čas události, zeměpisnou šířku polohy, délku polohy, LoRaID cyklisty a typ události (havárie nebo mechanické zhroucení).

Tabulka 'wedstrijdrenner':

Tato tabulka je tabulka, která je potřebná pro vztah mnoho k mnoha.

Krok 3: Zaregistrujte svůj modul LoRa

Zaregistrujte svůj modul LoRa
Zaregistrujte svůj modul LoRa

Než začnete s kódem, musíte svůj modul LoRa zaregistrovat v bráně LoRa. Použil jsem telekomunikační společnost v Belgii s názvem „Proximus“, která zajišťuje komunikaci pro můj modul LoRa. Data, která odesílám se svým uzlem LoRa, se shromažďují na webu z AllThingsTalk. Pokud také chcete ke shromažďování údajů používat API AllThingsTalk, můžete se zde zaregistrovat.

Poté, co se zaregistrujete na AllThingsTalk, musíte zaregistrovat svůj uzel LoRa. Chcete -li to provést, můžete postupovat podle těchto kroků nebo se můžete podívat na výše uvedený obrázek.

  1. V hlavní nabídce přejděte na „Zařízení“
  2. Klikněte na 'Nové zařízení'
  3. Vyberte svůj uzel LoRa
  4. Vyplňte všechny klíče.

Nyní jste hotovi! Všechna data, která odešlete pomocí uzlu LoRa, se objeví ve vašem AllThingsTalk maker. Pokud máte nějaké problémy s registrací, můžete se kdykoli obrátit na dokumenty AllThingsTalk.

Krok 4: Kód

Kód
Kód
Kód
Kód
Kód
Kód
Kód
Kód

Pro tento projekt budeme potřebovat 5 kódovacích jazyků: HTML, CSS, Java Script, Python (Flask) a jazyk Arduino. Nejprve vysvětlím program Arduino.

Program Arduino:

Na začátku programu deklaruji některé globální proměnné. Uvidíte, že pro připojení k mému GPS používám SoftwareSerial. Důvodem je, že deska Mbili má pouze 2 sériové porty. GPS můžete připojit k Serial0, ale pak nebudete moci použít terminál Arduino pro ladění. To je důvod, proč používám SoftwareSerial.

Po globálních proměnných deklaruji některé funkce, které usnadňují čtení programu. Odečtou souřadnice GPS, vydají bzučák, odešlou hodnoty přes LoRa,…

Třetí blok je instalační blok. Tento blok je začátkem programu, který nastavuje piny, sériovou komunikaci a komunikaci I2C.

Po bloku nastavení přichází hlavní program. Na začátku této hlavní smyčky kontroluji, zda je dotykový senzor aktivní. Pokud ano, vydám bzučák, získám data GPS a odešlu všechny hodnoty přes LoRa nebo Bluetooth do Raspberry PI. Po dotykovém senzoru jsem přečetl hodnoty akcelerometru. Pomocí vzorce vypočítám přesný úhel osy X a Y. Pokud jsou tyto hodnoty příliš velké, můžeme usoudit, že cyklista havaroval. Když dojde k havárii, znovu zazní bzučák, získám data GPS a odešlu všechny hodnoty přes LoRa nebo Bluetooth do Raspberry PI.

Pravděpodobně si říkáte: „Proč používáte bluetooth a LoRa?“. Je to proto, že jsem měl nějaké potíže s licencí modulu LoRa, který jsem použil. Aby program fungoval pro mé demo, musel jsem chvíli používat Bluetooth.

2. Zadní konec:

Zadní část je trochu složitá. Pro své trasy používám Flask, které jsou přístupné pro frontend, pomocí socketio automaticky aktualizuji některé frontend stránky, pomocí pinů GPIO zobrazuji zprávy na LCD displeji a přijímám zprávy přes Bluetooth (není nutné, pokud používáte LoRa) a já používám Threading a Timers k pravidelnému čtení API AllThinksTalk a spouštění bankového serveru.

Využívám také databázi SQL k ukládání všech následujících nehod, čtení osobních údajů cyklistů a údajů o závodech. Tato databáze je připojena k back-endu a běží také na Raspberry Pi. K interakci s databází používám třídu 'Database.py'.

Jak víte ze schématu Fritzing, LCD je připojen k Raspberry Pi prostřednictvím protokolu SPI. Aby to bylo trochu jednodušší, napsal jsem třídu 'LCD_4_20_SPI.py'. S touto třídou můžete změnit kontrast, změnit barvu podsvícení, psát zprávy na obrazovku,…. Pokud chcete používat Bluetooth, můžete použít třídu 'SerialRaspberry.py'. Tato třída řídí sériovou komunikaci mezi modulem Bluetooth a Raspberry Pi. Jediná věc, kterou musíte udělat, je připojit modul Bluetooth k Raspberry Pi připojením RX k TX a virsa versa.

Trasy pro rozhraní frontend jsou psány pomocí pravidla @app.route. Zde si můžete vytvořit vlastní cestu pro vkládání nebo získávání dat do nebo z databáze. Ujistěte se, že máte vždy odpověď na konci trasy. Vždy vracím objekt JSON na frontend, i když došlo k chybě. Proměnnou v URL můžete použít tak, že proměnnou umístíte kolem ní.

Používám socketio pro webovou stránku s haváriemi závodu. Když Raspberry Pi přijme havárii, vysílám zprávu do frontendu přes socketio. Frontend pak ví, že musí znovu přečíst databázi, protože došlo k novému selhání.

Uvidíte, že v mém kódu je komunikace LoRa nastavena příkazem. Pokud chcete použít LoRa, musíte spustit časovač, který opakující se odešle požadavek do API AllThinksTalk. Z tohoto rozhraní API obdržíte hodnoty senzorů (GPS, čas, druh selhání), které jsou odesílány konkrétním uzlem LoRa. Tyto hodnoty můžete použít k vložení selhání do databáze.

3. Konec listu:

Přední konec se skládá ze 3 jazyků. HTML pro text webových stránek, CSS pro webové stránky a JavaScript pro komunikaci se zadním koncem. Pro tento projekt mám 4 webové stránky:

  • Index.html, kde najdete všechny cyklistické závody.
  • Stránka se všemi pády a mechanickými poruchami pro špičkový závod.
  • Stránka, kde můžete přidávat do databáze válečníky a upravovat jejich tým.
  • Stránka, kde můžete přidat nový závod se všemi jeho účastníky do databáze.

Jak je navrhnete, je plně na vás. Pokud chcete, můžete se inspirovat na mých webových stránkách. Můj web je bohužel vytvořen v nizozemském jazyce, za který se omlouvám.

Pro každou stránku mám samostatně soubor CSS a soubor JavaScript. Každý soubor JavaScript používá načtení k získání dat z databáze přes back -end. Když skript přijme data, html se dynamicky změní. Na stránce, kde najdete pády a mechanické poruchy, najdete mapu, kde se odehrály všechny události. K zobrazení této mapy jsem použil leták.

Můžete se podívat na všechny mé kódy zde na mém Githubu.

Krok 5: Postavte stavby

Stavět stavby
Stavět stavby
Stavět stavby
Stavět stavby
Stavět stavby
Stavět stavby

Než začneme se stavbou, ujistěte se, že máte všechny materiály z kusovníku nebo ze stránky „Nástroje + zásoby“.

Raspberry Pi + LCD

Začneme pouzdrem pro Raspberry Pi. Můžete si také vytisknout případ 3D, to byl také můj první nápad. Ale protože se můj termín velmi blížil, rozhodl jsem se udělat jednoduchý případ. Vzal jsem standardní pouzdro z Raspberry Pi a do pouzdra jsem vyvrtal otvor pro vodiče z mého LCD displeje. Chcete -li to provést, postupujte podle následujících jednoduchých kroků:

  1. Do krytu pouzdra vyvrtejte otvor. Udělal jsem to 7mm vrtákem na boku krytu. To můžete vidět na obrázku výše.
  2. Vyjměte vodiče z LCD displeje a posuňte hlavu, která se zmenší přes vodiče.
  3. Pomocí zapalovače nebo horkovzdušné pistole se zmenší hlava.
  4. Protáhněte dráty se smršťovací hlavou otvorem v pouzdře a připojte je zpět na LCD.

Nyní, když jste připraveni s pouzdrem pro Raspberry Pi, můžete začít s pouzdrem pro LCD displej. Pouzdro pro svůj LCD displej jsem vytiskl 3D, protože jsem na tomto odkazu našel případ online. Musel jsem udělat jen malou změnu výšky pouzdra. Když si myslíte, že kreslíte dobře, můžete exportovat soubory a začít tisknout. Pokud nevíte, jak 3D tisknout, můžete se řídit tímto návodem, jak 3D tisk pomocí Fusion 360.

Konstrukce SODAQ MBili

Pouzdro pro desku SODAQ Mbili jsem opravdu nevyráběl. Použil jsem sklo z plexi, abych umístil své součásti bez pouzdra kolem konstrukce. Pokud to chcete udělat také, můžete postupovat podle těchto kroků:

  1. Odhlaste plexisklo pomocí desetníků na desce SODAQ Mbili. Rozměry jsou: 85 mm x 56 mm
  2. Vyřízněte plexisklo skládačkou.
  3. Umístěte elektronické součástky na plexisklo a tužkou označte otvory.
  4. Vyvrtejte otvory, které jste právě podepsali, a otvory pro podpěry pomocí 3,5 mm vrtáku.
  5. Namontujte všechny elektronické součásti na plexisklo pomocí šroubů a matic 3M 10 mm.
  6. Posledním krokem je namontovat plexi nad desku Mbili. Můžete to udělat s distančními sloupky, ale já jsem použil dva 3M 50mm šrouby a 8 3M matic k montáži plexiskla nad desku.

Doporučuje: