Tartalomjegyzék:

Követő modul kerékpárosoknak: 5 lépés
Követő modul kerékpárosoknak: 5 lépés

Videó: Követő modul kerékpárosoknak: 5 lépés

Videó: Követő modul kerékpárosoknak: 5 lépés
Videó: What does an Ethical Hacker do? 2024, Július
Anonim
Követő modul kerékpárosoknak
Követő modul kerékpárosoknak

Ez a kerékpárosok nyomkövető modulja egy olyan modul, amely automatikusan észleli a versenyen bekövetkező baleseteket, és mechanikus meghibásodást érzékel egy érintésérzékelő megérintésével. Amikor az egyik ilyen esemény megtörténik, a modul a LoRa -n keresztül elküldi az eseményt egy málna pi -n található adatbázisba. Ez az esemény megjelenik egy LCD kijelzőn és egy webhelyen. A webhelyen rákereshet egy adott kerékpáros versenyre is az eseményekkel, és hozzáadhat kerékpáros versenyeket vagy kerékpárosokat az adatbázishoz. Azért hoztam létre ezt a projektet, mert nagyon érdekel a kerékpározás és az IOT, ezért a két téma kombinálása nagyon izgalmas volt számomra.

Mielőtt nyomkövető modult készíthet a kerékpárosok számára, össze kell gyűjtenie az anyagokat. Az eszközöket és kellékeket az alábbi listákban találhatja meg, vagy letöltheti a BOM -ot (Build Of Materials).

Kellékek:

  • plexi üveg (56 mm x 85 mm)
  • 10 X 2M csavarok 10 mm és anyák
  • 10 X 3M csavarok 10 mm és anyák
  • 2 x 3M csavar 50 mm és anyák
  • PLA szál az LCD tok 3D nyomtatásához
  • hő zsugorodik
  • Férfi -női kábelek
  • Egy alap NYÁK
  • Férfi fejlécek
  • A Raspberry Pi 3b+
  • 16 GB-os SD kártya
  • Sparkfun 4X20 LCD
  • Kapacitív érintésérzékelő
  • Egy zümmögő
  • 3 tengelyes gyorsító + giroszkóp
  • GPS modul
  • A SODAQ Mbili tábla
  • Egy LoRa WAN modul
  • 3.7V 1000mAh akkumulátor
  • A Raspberry Pi 3b+ tápegység

Eszközök:

  • Forrasztóforma
  • Forrasztópáka
  • Fogó
  • Csavarhúzók
  • Lombfűrész
  • Fúrógép
  • 2,5 és 3,5 fúrók
  • Könnyebb / meleg levegő pisztoly

Ha minden kelléket meg kell vásárolnia, akkor 541,67 eurós költségvetésre lesz szüksége. Ez a projekt nagyon drága, mert egy LoRa rappid fejlesztő készletet használtam, amely 299 euróba kerül (volt lehetőségem használni ezt a készletet az iskolámból). Mindig használhat normál Arduino -t en, és sok pénzt takaríthat meg, de a programok akkor másak lesznek.

1. lépés: Fritzezési séma

Fritzing séma
Fritzing séma
Fritzing séma
Fritzing séma

Az első lépés az áramkörök felépítése. Ehhez a projekthez 2 elektromos áramkörünk van, az egyik Raspberry Pi -vel, a másik SADAQ Mbili táblával. Kezdjük a Raspberry Pi áramkörrel.

Raspberry Pi Fritzing séma:

A Raspberry Pi séma meglehetősen egyszerű, az egyetlen dolog, amit a Pi -vel összekötünk, egy 4X20 -as Sparkfun LCD kijelző. A kijelző soros kommunikációval, SPI -vel vagy I2C -vel működik. Az, hogy melyik kommunikációs protokollt használja, csak rajtad áll. Az SPI protokollt használtam, mert nagyon egyszerű. Ha SPI -t használ, mint én, akkor a következő kapcsolatokra van szüksége:

  • 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

A Fritzing sémán látni fogja, hogy az LCD kijelző 2X16 méretű. Ennek az az oka, hogy nem találtam 4X20 -as LCD -t frizing -en. Mindazonáltal minden csatlakozás bizonyos, így nem igazán számít.

SODAQ Mbili Fritzing séma:

4 elektronikai alkatrészt csatlakoztatunk a SODAQ Mbili kártyához, így ez az elektromos rendszer is nagyon egyszerű. Kezdjük a Capactive touch érzékelő csatlakoztatásával. Ez az érzékelő OUT-csap MAGAS lesz, amikor megérinti az érzékelőt, és különben LOW lesz. Ez azt jelenti, hogy az OUT-pin egy digitális kimenet, amelyet az Mbili kártya digitális bemenetéhez csatlakoztathatunk. A csatlakozók a következők:

  • OUT érintőérzékelő D5 Mbili
  • VCC érintőérzékelő 3.3V Mbili
  • GND Érintésérzékelő GND Mbili

A második komponens a Triple acces + giroszkóp. Az I2C protokollt használó GY-521 táblát használtam az Mbili táblával való kommunikációhoz. Vegye figyelembe, hogy a GY-521 kártya AD0-érintkezőjét csatlakoztatni kell az Mbili kártya VCC-jéhez! Ennek az az oka, hogy az Mbili táblán van egy óra, ugyanazzal az I2C címmel, mint a GY-521. Az AD0-pin VCC-hez való csatlakoztatásával megváltoztatjuk a GY-521 I2C címét. A csatlakozók a következők:

  • VCC GY-521 3.3V Mbili
  • GND GY-521 GND Mbili
  • SCL GY-521 SCL Mbili
  • SDA GY-521 SDA Mbili
  • AD0 GY-521 3.3V Mbili

Ezt követően összekötjük a zümmögőt. A szokásos hangjelzőt használom, amely hangot ad, amikor áram van. Ez azt jelenti, hogy csak csatlakoztathatjuk a hangjelzőt az Mbili kártya digitális tűjéhez. A csatlakozók a következők:

  • + Zümmögő D4 Mbili
  • - Zümmögő GND Mbili

Végül, de nem utolsó sorban csatlakoztatjuk a GPS modult. A GPS modul RX és TX kapcsolaton keresztül kommunikál. A csatlakozók a következők:

  • VCC GPS 3.3V Mbili
  • GND GPS GND Mbili
  • TX GPS RX Mbili
  • RX GPS TX Mbili

2. lépés: Normalizált adatbázis

Normalizált adatbázis
Normalizált adatbázis

A második lépés egy normalizált adatbázis tervezése. Az ERD -t Mysql -ben terveztem. Látni fogja, hogy az adatbázisom holland nyelven íródott, és itt elmagyarázom a táblázatokat.

"Ploeg" táblázat:

Ez a táblázat a kerékpáros klubok táblázata. Tartalmaz egy kerékpáros klub azonosítót és egy kerékpáros klub nevét.

Táblázat "renners":

Ez a táblázat egy táblázat a kerékpárosok számára. Minden kerékpárosnak van LoRaID azonosítója, amely egyben a táblázat elsődleges kulcsa is. Ezenkívül van vezetéknevük, keresztnevük, származási országuk és egy kerékpáros klub azonosítója, amely a kerékpáros klub asztalához kapcsolódik.

„Plaatsen” táblázat:

Ez a táblázat egy táblázat, amely azokat a belgiumi helyeket tárolja, ahol kerékpáros versenyre kerülhet sor. Tartalmazza a város nevét (amely az elsődleges kulcs) és a tartomány nevét, ahol a város található.

„Wedstrijden” táblázat:

Ez a táblázat tárolja az összes kerékpáros versenyt. A táblázat elsődleges kulcsa egy azonosító. A táblázat tartalmazza a kerékpáros verseny nevét, a verseny városát, amely a helyek táblázatához kapcsolódik, a verseny távját, a kerékpárosok kategóriáját és a verseny dátumát.

„Gebeurtenissen” táblázat:

Ez a táblázat tárolja az összes eseményt. Ez azt jelenti, hogy ha egy kerékpáros balesetet szenved vagy mechanikai meghibásodást szenved, az esemény ebben a táblázatban kerül tárolásra. A táblázat elsődleges kulcsa egy azonosító. A táblázat tartalmazza az esemény dátumát, a pozíció szélességi fokát, a pozíció hosszúságát, a kerékpáros LoRaID -jét és az esemény típusát (összeomlás vagy mechanikai meghibásodás).

"Wedstrijdrenner" táblázat:

Ez a táblázat egy táblázat, amelyre sok -sok kapcsolathoz szükség van.

3. lépés: Regisztrálja LoRa modulját

Regisztrálja LoRa modulját
Regisztrálja LoRa modulját

Mielőtt elkezdené a kóddal, regisztrálnia kell a LoRa modult egy LoRa átjáróban. Egy belga belga távközlési céget használtam, a Proximus néven, amely a LoRa modulom kommunikációját szervezi. A LoRa csomóponttal együtt küldött adatok a webhelyen az AllThingsTalk webhelyről gyűjtenek össze. Ha az AllThingsTalk API -t is szeretné használni az adatok gyűjtéséhez, itt regisztrálhat.

Miután regisztrált az AllThingsTalk szolgáltatásra, regisztrálnia kell LoRa csomópontját. Ehhez kövesse az alábbi lépéseket, vagy nézze meg a fenti képet.

  1. Lépjen az "Eszközök" elemre a főmenüben
  2. Kattintson az "Új eszköz" elemre
  3. Válassza ki LoRa csomópontját
  4. Töltse ki az összes kulcsot.

Most kész! A LoRa csomóponttal küldött összes adat megjelenik az AllThingsTalk készítőjében. Ha bármilyen problémája van a regisztrációval, akkor mindig keresse meg az AllThingsTalk dokumentumokat.

4. lépés: A kód

A kód
A kód
A kód
A kód
A kód
A kód
A kód
A kód

Ehhez a projekthez 5 kódoló nyelvre lesz szükségünk: HTML, CSS, Java Script, Python (Flask) és az Arduino nyelv. Először elmagyarázom az Arduino programot.

Az Arduino program:

A program elején néhány globális változót deklarálok. Látni fogja, hogy a SoftwareSerial -t használom a GPS -lel való kapcsolathoz. Ennek oka az, hogy az Mbili kártyának csak 2 soros portja van. Csatlakoztathatja a GPS -t a Serial0 -hoz, de akkor nem tudja használni az Arduino terminált hibakereséshez. Ezért használok SoftwareSerial -t.

A globális változók után néhány funkciót deklarálok, amelyek megkönnyítik a program olvasását. Felolvassák a GPS -es társadatokat, megszólaltatják a zümmögőt, értékeket küldenek a LoRa -n keresztül,…

A harmadik blokk a beállítási blokk. Ez a blokk a kezdete annak a programnak, amely beállítja a csapokat, a soros kommunikációt és az I2C kommunikációt.

A telepítőblokk után jön a fő program. A fő ciklus elején ellenőrzöm, hogy az érintőérzékelő aktív -e. Ha igen, hangjelzést adok, megkapom a GPS -adatokat, és LoRa -n vagy Bluetooth -on keresztül elküldöm az összes értéket a Raspberry PI -nek. Az érintésérzékelő után kiolvastam a gyorsulásmérő értékeit. Egy képlettel kiszámítom az X és Y tengely pontos szögét. Ha ezek az értékek túl nagyok, akkor arra a következtetésre juthatunk, hogy a kerékpáros lezuhant. Amikor összeomlik, ismét hangjelzést adok, beszerezem a GPS -adatokat, és minden értéket elküldök LoRa -n vagy Bluetooth -on keresztül a Raspberry PI -nek.

Valószínűleg arra gondol: „Miért használja a Bluetooth -ot és a LoRa -t?”. Ez azért van, mert némi gondom akadt az általam használt LoRa modul licencével. Tehát ahhoz, hogy a program működjön a demóimnál, egy ideig Bluetooth -ot kellett használnom.

2. Hátsó vége:

A hátsó rész kicsit bonyolult. A lombikot használom a kezelőfelület számára hozzáférhető útvonalakhoz, a socketio segítségével frissítem néhány kezelőoldal automatikus frissítését, a GPIO csapokat használom az üzenetek LCD kijelzőn történő megjelenítéséhez és az üzenetek fogadásához Bluetooth -on keresztül (nem szükséges, ha használja LoRa) és én a Threading és az Timers segítségével rendszeresen olvassuk az AllThinksTalk API -t és elindítjuk a lombik szervert.

Az SQL adatbázist is használom az összes bekövetkező összeomlás tárolására, a kerékpárosok személyes adatainak és a versenyek adatainak felolvasására. Ez az adatbázis a háttérhez csatlakozik, és a Raspberry Pi-n is fut. A "Database.py" osztályt használom az adatbázis kezeléséhez.

Amint a Fritzing sémából tudja, az LCD az SPI protokollon keresztül csatlakozik a Raspberry Pi -hez. Hogy könnyebb legyen a címe, írtam egy osztályt "LCD_4_20_SPI.py". Ezzel az osztállyal megváltoztathatja a kontrasztot, megváltoztathatja a háttérvilágítás színét, üzeneteket írhat a képernyőre,…. Ha Bluetooth -ot szeretne használni, használhatja a "SerialRaspberry.py" osztályt. Ez az osztály szabályozza a Bluetooth modul és a Raspberry Pi közötti soros kommunikációt. Csak annyit kell tennie, hogy csatlakoztat egy Bluetooth modult a Raspberry Pi -hez úgy, hogy az RX -et a TX -hez csatlakoztatja, és fordítva.

A kezelőfelület útvonalait a @app.route szabály írja. Itt saját egyéni útvonalat készíthet az adatbázisba való beillesztéshez vagy az adatokba való beolvasáshoz. Ügyeljen arra, hogy mindig legyen válasz az útvonal végén. Mindig visszaküldök egy JSON objektumot a kezelőfelületre, még akkor is, ha hiba történt. Használhat egy változót az URL -ben, ha a változó köré helyezi.

A socketio -t használom a weboldalhoz a verseny összeomlásaival. Amikor a Raspberry Pi összeomlik, üzenetet küldök a kezelőfelületre a socketio segítségével. A kezelőfelület ekkor tudja, hogy újra ki kell olvasniuk az adatbázist, mert új összeomlás történt.

Látni fogja, hogy a kódomban a LoRa kommunikáció parancsban van beállítva. Ha LoRa -t szeretne használni, el kell indítania egy időzítőt, amely ismétlődően kérést küld az AllThinksTalk API -nak. Ebből az API -ból megkapja az érzékelő értékeit (GPS, idő, összeomlás típusa), amelyeket egy adott LoRa csomópont küld. Ezen értékek segítségével összeomlást szúrhat be az adatbázisba.

3. A hajtás vége:

Előlapja 3 nyelvből áll. HTML a webhely szövegéhez, CSS a webhely jelöléséhez és JavaScript a kommunikációhoz a hátsó véggel. 4 weboldalam van a projekthez:

  • Az index.html, ahol megtalálja az összes kerékpáros versenyt.
  • Egy oldal az összes összeomlással és mechanikai meghibásodással egy fűszeres versenyre.
  • Egy oldal, ahol felveheti a listákat az adatbázisba, és szerkesztheti a csapatukat.
  • Egy oldal, ahol felvehet egy új versenyt az összes résztvevőjével az adatbázisba.

A tervezés módja teljesen rajtad múlik. Ha akarod, inspirációt meríthetsz a webhelyemről. Sajnos a honlapom holland nyelven készült, sajnálom.

Minden oldalhoz külön CSS- és JavaScript -fájlom van. Minden JavaScript -fájl lekéréssel használja az adatokat az adatbázisból a háttérben. Amikor a szkript megkapja az adatokat, a html dinamikusan megváltozik. Az oldalon, ahol megtalálhatja az összeomlásokat és a mechanikai meghibásodásokat, talál egy térképet, ahol minden esemény megtörtént. A térkép megjelenítéséhez röplapot használtam.

Itt megnézheted az összes kódomat a Githubon.

5. lépés: Készítse el a konstrukciókat

Építsd meg a konstrukciókat
Építsd meg a konstrukciókat
Építsd meg a konstrukciókat
Építsd meg a konstrukciókat
Építsd meg a konstrukciókat
Építsd meg a konstrukciókat

Mielőtt hozzákezdhetnénk az építkezéshez, győződjön meg arról, hogy rendelkezik minden anyaggal a BOM -ból vagy az „Eszközök + kellékek” oldalról.

Raspberry Pi + LCD

Kezdjük a Raspberry Pi tokjával. Mindig 3D nyomtathat egy tokot, ez volt az első ötletem. De mivel a határidőm nagyon közeledett, úgy döntöttem, hogy egyszerű ügyet írok. A szabványos tokot a Raspberry Pi -ből vettem, és lyukat fúrtam a tokba a vezetékekhez az LCD kijelzőmről. Ehhez kövesse az alábbi egyszerű lépéseket:

  1. Fúrjon lyukat a tok fedelébe. Ezt egy 7 mm -es fúróval végeztem a fedél oldalán. Ezt láthatja a fenti képen.
  2. Vegye ki a vezetékeket az LCD -kijelzőről, és csúsztassa a fejet a zsugorodáshoz.
  3. Használjon öngyújtót vagy meleg levegő pisztolyt, hogy a fej zsugorodjon.
  4. Húzza át a vezetékeket úgy, hogy a fejük összezsugorodik a házon lévő lyukon, majd csatlakoztassa vissza az LCD -re.

Most, hogy készen áll a Raspberry Pi tokjára, kezdheti az LCD kijelző tokjával. 3D-ben kinyomtattam az LCD kijelzőm tokját, mert ezen a linken találtam egy tokot online. Csak a tok magasságában kellett változtatnom. Ha úgy gondolja, hogy jól rajzol, exportálhatja a fájlokat, és elkezdheti a nyomtatást. Ha nem tudja, hogyan kell 3D-nyomtatni, kövesse ezt az utasítást a 3D-nyomtatásról a fusion 360 segítségével.

SODAQ MBili konstrukció

Nem igazán csináltam tokot a SODAQ Mbili táblához. Plexi üveget használtam az alkatrészek elhelyezésére tok nélkül, a konstrukció körül. Ha ezt is meg szeretné tenni, akkor kövesse az alábbi lépéseket:

  1. Írja le a plexit a SODAQ Mbili tábla méreteivel. Méretei: 85 x 56 mm
  2. Vágja le a plexit egy szúrófűrésszel.
  3. Helyezze az elektronikus alkatrészeket a plexire, és ceruzával írja le a lyukakat.
  4. 3,5 mm -es fúróval fúrja ki az imént leírt lyukakat és a leálláshoz szükséges lyukakat.
  5. Szerelje fel az összes elektronikus alkatrészt a plexire a 3M 10 mm -es csavarokkal és anyákkal.
  6. Az utolsó lépés a plexi felszerelése az Mbili tábla fölé. Ezt megteheti megállásokkal is, de én két 3M 50 mm -es csavart és 8 3M -os anyát használtam a plexi felhelyezésére a tábla fölé.

Ajánlott: