Satura rādītājs:

Riteņbraucēju izsekošanas modulis: 5 soļi
Riteņbraucēju izsekošanas modulis: 5 soļi

Video: Riteņbraucēju izsekošanas modulis: 5 soļi

Video: Riteņbraucēju izsekošanas modulis: 5 soļi
Video: POE комплект видеонаблюдения РАБОТА ПО ОДНОМУ КАБЕЛЮ!!! 2024, Novembris
Anonim
Riteņbraucēju izsekošanas modulis
Riteņbraucēju izsekošanas modulis

Šis velosipēdistu izsekošanas modulis ir modulis, kas automātiski nosaka sacensību avārijas un kas nosaka mehānisku bojājumu, pieskaroties skārienjutīgajam sensoram. Kad notiek kāds no šiem notikumiem, modulis nosūta notikumu aveņu pi datu bāzei, izmantojot LoRa. Šis notikums tiks parādīts LCD displejā un vietnē. Vietnē varat arī meklēt konkrētu velobraucienu ar notikumiem, kā arī pievienot datu bāzei velobraucienus vai riteņbraucējus. Es izveidoju šo projektu, jo mani ļoti interesē riteņbraukšana un IOT, tāpēc šo divu priekšmetu apvienošana man bija ļoti aizraujoša.

Pirms jūs varat izveidot velosipēdistu izsekošanas moduli, jums ir jāsavāc savi materiāli. Instrumentus un izejmateriālus varat atrast zemāk esošajos sarakstos, vai arī varat lejupielādēt BOM (Build Of Materials).

Piegādes:

  • Plexi stikls (56 mm x 85 mm)
  • 10 X 2M skrūves 10 mm un uzgriežņi
  • 10 X 3M skrūves 10 mm un uzgriežņi
  • 2 X 3M skrūves 50 mm un uzgriežņi
  • PLA pavedieni, lai 3D drukātu jūsu LCD korpusu
  • siltuma saraušanās
  • Kabeļi no tērauda līdz sievietei
  • Pamata PCB
  • Vīriešu galvenes
  • Aveņu Pi 3b+
  • 16 GB SD karte
  • Mirdzošs 4X20 LCD
  • Kapacitīvs pieskāriena sensors
  • Skaņas signāls
  • Trīs asu akselerācijas + žiroskopu mērītājs
  • GPS modulis
  • SODAQ Mbili tāfele
  • LoRa WAN modulis
  • 3.7V 1000mAh akumulators
  • Aveņu Pi 3b+ barošanas avots

Rīki:

  • Lodēšanas alva
  • Lodāmurs
  • Tongs
  • Skrūvgrieži
  • Finierzāģis
  • Urbjmašīna
  • 2,5 un 3,5 urbji
  • Šķiltavas / karstā gaisa pistole

Ja jums ir jāpērk visas preces, jums būs nepieciešams 541,67 eiro budžets. Šis projekts ir ļoti dārgs, jo es izmantoju LoRa rappid izstrādes komplektu, kas maksā 299 eiro (man bija iespēja izmantot šo komplektu no savas skolas). Jūs vienmēr varat izmantot parasto Arduino lv, ietaupot daudz naudas, taču tad programmas būs atšķirīgas.

1. solis: Fritzēšanas shēma

Fritzēšanas shēma
Fritzēšanas shēma
Fritzēšanas shēma
Fritzēšanas shēma

Pirmais solis ir izveidot ķēdes. Šim projektam mums ir 2 elektriskās shēmas, viena ar Raspberry Pi un otra ar SADAQ Mbili plati. Mēs sāksim ar Raspberry Pi ķēdi.

Raspberry Pi Fritzing shēma:

Raspberry Pi shēma ir diezgan vienkārša, vienīgais, ko mēs savienojam ar Pi, ir 4X20 Sparkfun LCD displejs. Displejs darbojas ar seriālo komunikāciju, SPI vai I2C. Tas, kuru sakaru protokolu izmantot, ir atkarīgs no jums. Es izmantoju SPI protokolu, jo tas ir ļoti vienkārši. Ja izmantojat SPI kā es, jums ir nepieciešami šādi savienojumi:

  • 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

Fritzing shēmā jūs redzēsit, ka LCD displejs ir 2X16 displejs. Tas ir tāpēc, ka es neatradu 4X20 LCD ekrānu. Tomēr visi savienojumi ir daži, tāpēc tam nav īsti nozīmes.

SODAQ Mbili Fritzing shēma:

Mēs savienosim 4 elektroniskās sastāvdaļas ar SODAQ Mbili plati, tāpēc arī šī elektriskā shēma ir ļoti vienkārša. Sāksim ar Capactive touch sensora pievienošanu. Šis sensoru OUT-pin būs augsts, kad pieskarsies sensoram, un pretējā gadījumā tas būs LOW. Tas nozīmē, ka OUT-pin ir digitāla izeja, ko mēs varam savienot ar Mbili plates digitālo ieeju. Savienojumi ir šādi:

  • OUT pieskāriena sensors D5 Mbili
  • VCC skārienjūtīgais sensors 3.3V Mbili
  • GND Touch sensors GND Mbili

Otra sastāvdaļa ir Triple acces + žiroskopa sensors. Es izmantoju GY-521 plati, kas izmanto I2C protokolu, lai sazinātos ar Mbili plati. Ievērojiet, ka GY-521 plates AD0-pin ir jāsavieno ar Mbili plates VCC! Tas ir tāpēc, ka Mbili panelī ir pulkstenis ar tādu pašu I2C adresi kā GY-521. Savienojot AD0 kontaktu ar VCC, mēs mainām GY-521 I2C adresi. Savienojumi ir šādi:

  • 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

Pēc tam mēs pievienosim skaņas signālu. Es izmantoju standarta skaņas signālu, kas rada skaņu, kad ir strāva. Tas nozīmē, ka mēs varam vienkārši savienot skaņas signālu ar Mbili plates digitālo tapu. Savienojumi ir šādi:

  • + Signāls D4 Mbili
  • - skaņas signāls GND Mbili

Visbeidzot, mēs pievienosim GPS moduli. GPS modulis sazinās, izmantojot RX un TX. Savienojumi ir šādi:

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

2. darbība: normalizēta datu bāze

Normalizēta datu bāze
Normalizēta datu bāze

Otrais solis ir izveidot normalizētu datu bāzi. Esmu izstrādājis savu ERD MySQL. Jūs redzēsit, ka mana datu bāze ir uzrakstīta holandiešu valodā, es šeit paskaidrošu tabulas.

Tabula "ploeg":

Šī tabula ir riteņbraukšanas klubu galds. Tajā ir riteņbraukšanas kluba ID un riteņbraukšanas kluba nosaukums.

Tabulas "pļāvēji":

Šī tabula ir riteņbraucēju galds. Katram velosipēdistam ir LoRaID, kas ir arī tabulas primārā atslēga. Viņiem ir arī uzvārds, vārds, izcelsmes valsts un riteņbraukšanas kluba ID, kas ir saistīts ar riteņbraukšanas kluba tabulu.

Tabula "plaatsen":

Šī tabula ir tabula, kurā glabājas vietas Beļģijā, kur var notikt velobrauciens. Tajā ir pilsētas nosaukums (primārā atslēga) un province, kurā pilsēta atrodas.

Tabula "wedstrijden":

Šajā tabulā ir apkopotas visas riteņbraukšanas sacensības. Tabulas primārā atslēga ir ID. Tabulā ir arī riteņbraukšanas sacensību nosaukums, sacensību pilsēta, kas ir saistīta ar vietu tabulu, sacensību attālums, riteņbraucēju kategorija un sacensību datums.

Tabula “gebeurtenissen”:

Šajā tabulā tiek glabāti visi notiekošie notikumi. Tas nozīmē, ka tad, ja velosipēdists ir iesaistīts avārijā vai tam ir mehānisks bojājums, notikums tiks saglabāts šajā tabulā. Tabulas primārā atslēga ir ID. Tabulā ir arī notikuma datums un laiks, pozīcijas platums, pozīcijas garums, velosipēdista LoRaID un notikuma veids (avārija vai mehānisks sadalījums).

Tabula “wedstrijdrenner”:

Šī tabula ir tabula, kas nepieciešama daudzām attiecībām.

3. darbība: reģistrējiet savu LoRa moduli

Reģistrējiet savu LoRa moduli
Reģistrējiet savu LoRa moduli

Lai sāktu darbu ar kodu, jums jāreģistrē LoRa modulis LoRa vārtejā. Es izmantoju telekomunikāciju uzņēmumu Beļģijā ar nosaukumu “Proximus”, kas organizē saziņu manam LoRa modulim. Dati, ko sūtu ar savu LoRa mezglu, tiek apkopoti vietnē no AllThingsTalk. Ja arī vēlaties datu apkopošanai izmantot AllThingsTalk API, varat reģistrēties šeit.

Pēc reģistrēšanās AllThingsTalk jums jāreģistrē LoRa mezgls. Lai to izdarītu, varat veikt šīs darbības vai apskatīt iepriekš redzamo attēlu.

  1. Dodieties uz "Ierīces" galvenajā izvēlnē
  2. Noklikšķiniet uz "Jauna ierīce"
  3. Atlasiet savu LoRa mezglu
  4. Aizpildiet visas atslēgas.

Tagad esat pabeidzis! Visi dati, ko sūtāt ar savu LoRa mezglu, parādīsies jūsu AllThingsTalk veidotājā. Ja jums rodas kādas problēmas ar reģistrāciju, vienmēr varat iepazīties ar AllThingsTalk dokumentiem.

4. solis: kods

Kods
Kods
Kods
Kods
Kods
Kods
Kods
Kods

Šim projektam mums būs nepieciešamas 5 kodēšanas valodas: HTML, CSS, Java Script, Python (kolba) un Arduino valoda. Vispirms es izskaidrošu Arduino programmu.

Arduino programma:

Programmas sākumā es paziņoju dažus globālos mainīgos. Jūs redzēsit, ka savienojumam ar savu GPS es izmantoju SoftwareSerial. Tas ir tāpēc, ka Mbili platei ir tikai 2 seriālie porti. Jūs varat savienot GPS ar Serial0, bet tad nevarēsit izmantot Arduino termināli atkļūdošanai. Tas ir iemesls, kāpēc es izmantoju SoftwareSerial.

Pēc globālajiem mainīgajiem es paziņoju dažas funkcijas, kas atvieglo programmas lasīšanu. Viņi nolasa GPS koordinātus, rada skaņas signālu, nosūta vērtības, izmantojot LoRa,…

Trešais bloks ir iestatīšanas bloks. Šis bloks ir programmas sākums, kurā tiek uzstādītas tapas, seriālā komunikācija un I2C komunikācija.

Pēc iestatīšanas bloka nāk galvenā programma. Šīs galvenās cilpas sākumā es pārbaudu, vai skārienjūtīgais sensors ir aktīvs. Ja tā, es atskanu skaņas signālam, saņemu GPS datus un visas vērtības, izmantojot LoRa vai Bluetooth, nosūtu Raspberry PI. Pēc pieskāriena sensora es nolasīju akselerometra vērtības. Ar formulu es aprēķinu precīzu X un Y ass leņķi. Ja šīs vērtības ir pārāk lielas, mēs varam secināt, ka velosipēdists avarēja. Kad notiek avārija, es lieku atskanēt skaņas signālam, iegūt GPS datus un nosūtīt visas vērtības, izmantojot LoRa vai Bluetooth, uz Raspberry PI.

Jūs droši vien domājat: "Kāpēc jūs izmantojat Bluetooth un LoRa?". Tas ir tāpēc, ka man bija dažas problēmas ar izmantotā LoRa moduļa licenci. Tāpēc, lai programma darbotos manā demonstrācijā, man kādu laiku bija jāizmanto Bluetooth.

2. Aizmugure:

Aizmugurējais gals ir nedaudz sarežģīts. Es izmantoju kolbu maršrutam, kas ir pieejams priekšgalā, es izmantoju socketio, lai automātiski atjauninātu dažas priekšējās lapas, es izmantoju GPIO tapas, lai parādītu ziņojumus LCD displejā un saņemtu ziņojumus, izmantojot Bluetooth (nav nepieciešams, ja izmantojat LoRa) un es izmantoju Threading un Timers, lai regulāri lasītu AllThinksTalk API un palaistu kolbas serveri.

Es arī izmantoju SQL datu bāzi, lai saglabātu visas avārijas, nolasītu riteņbraucēju personas datus un sacensību datus. Šī datu bāze ir savienota ar aizmuguri un darbojas arī Raspberry Pi. Es izmantoju klasi "Database.py", lai mijiedarbotos ar datu bāzi.

Kā jūs zināt no Fritzing shēmas, LCD ir savienots ar Raspberry Pi, izmantojot SPI protokolu. Lai to padarītu vieglāku, es uzrakstīju nodarbību “LCD_4_20_SPI.py”. Izmantojot šo klasi, varat mainīt kontrastu, mainīt fona apgaismojuma krāsu, rakstīt ziņojumus ekrānā,…. Ja vēlaties izmantot Bluetooth, varat izmantot klasi 'SerialRaspberry.py'. Šī klase nosaka sērijas sakarus starp Bluetooth moduli un Raspberry Pi. Vienīgais, kas jums jādara, ir savienot Bluetooth moduli ar Raspberry Pi, savienojot RX ar TX un otrādi.

Priekšpuses maršruti ir rakstīti ar noteikumu @app.route. Šeit jūs varat izveidot savu pielāgoto maršrutu datu ievietošanai vai iegūšanai datu bāzē vai no tās. Pārliecinieties, ka maršruta beigās vienmēr ir atbilde. Es vienmēr atdodu JSON objektu priekšpusē, pat ja radās kļūda. Jūs varat izmantot mainīgo URL, ievietojot ap mainīgo.

Es izmantoju socketio tīmekļa lapai ar sacensību avārijām. Kad Raspberry Pi saņem avāriju, es caur socketio nosūtu ziņojumu uz priekšgalu. Priekšpuse tad zina, ka viņiem atkal jāizlasa datu bāze, jo notika jauna avārija.

Jūs redzēsit, ka manā kodā LoRa komunikācija ir iestatīta komandā. Ja vēlaties izmantot LoRa, jums jāuzsāk taimeris, kas atkārtoti nosūta pieprasījumu AllThinksTalk API. No šīs API jūs saņemsiet sensoru vērtības (GPS, laiks, avārijas veids), ko nosūta konkrēts LoRa mezgls. Šīs vērtības varat izmantot, lai datu bāzē ievietotu avāriju.

3. Fronta gals:

Priekšējā daļa sastāv no 3 valodām. HTML vietnes tekstam, CSS vietnes iezīmēšanai un JavaScript saziņai ar aizmuguri. Man ir 4 šī projekta vietnes lapas:

  • Index.html, kur var atrast visas riteņbraukšanas sacensības.
  • Lapa ar visām avārijām un mehāniskiem bojājumiem pikantām sacensībām.
  • Lapa, kurā varat pievienot cilindrus datu bāzei un rediģēt viņu komandu.
  • Lapa, kurā datu bāzei var pievienot jaunu sacensību ar visiem tās dalībniekiem.

Tas, kā jūs tos izstrādājat, ir pilnībā atkarīgs no jums. Ja vēlaties, varat smelties iedvesmu no manas vietnes. Diemžēl mana vietne ir veidota holandiešu valodā, es atvainojos.

Man katrai lapai ir atsevišķi CSS fails un JavaScript fails. Katrs JavaScript fails izmanto ielādi, lai iegūtu datus no datu bāzes, izmantojot aizmuguri. Kad skripts saņem datus, html dinamiski mainās. Lapā, kur var atrast avārijas un mehāniskos bojājumus, jūs atradīsit karti, kurā ir notikuši visi notikumi. Es izmantoju skrejlapu, lai parādītu šo karti.

Jūs varat apskatīt visu manu kodu šeit, manā Github.

5. solis: veidojiet konstrukcijas

Veidojiet konstrukcijas
Veidojiet konstrukcijas
Veidojiet konstrukcijas
Veidojiet konstrukcijas
Veidojiet konstrukcijas
Veidojiet konstrukcijas

Pirms mēs varam sākt būvniecību, pārliecinieties, vai jums ir visi materiāli no BOM vai no lapas "Tools + Supplies".

Raspberry Pi + LCD

Mēs sāksim ar Raspberry Pi lietu. Jūs varat arī 3D izdrukāt futrāli, tā bija arī mana pirmā ideja. Bet, tā kā mans termiņš tuvojās ļoti tuvu, es nolēmu izskatīt vienkāršu lietu. Es paņēmu standarta korpusu no Raspberry Pi un no sava LCD displeja izurbju caurumu vadiem. Lai to izdarītu, vienkārši izpildiet šīs vienkāršās darbības:

  1. Izurbiet caurumu korpusa vākā. Es to izdarīju ar 7 mm urbi vāka malā. To var redzēt augšējā attēlā.
  2. Izņemiet vadus no LCD displeja un pabīdiet galvu, kas saraujas pār vadiem.
  3. Izmantojiet šķiltavas vai karstā gaisa pistoli, lai saruktu galvu.
  4. Izvelciet vadus ar galvas saraušanos caur korpusa caurumu un pievienojiet tos atpakaļ LCD.

Tagad, kad esat gatavs Raspberry Pi korpusam, varat sākt ar LCD displeja korpusu. Es 3D drukāju korpusu savam LCD displejam, jo uz šīs saites atradu lietu tiešsaistē. Man bija tikai jāmaina lietas augstums. Ja uzskatāt, ka zīmējat labi, varat eksportēt failus un sākt drukāt. Ja nezināt, kā drukāt 3D formātā, varat izpildīt šo pamācību par 3D drukāšanu, izmantojot fusion 360.

SODAQ MBili konstrukcija

Es īsti neveidoju lietu SODAQ Mbili padomei. Es izmantoju plexi stiklu, lai novietotu komponentus bez korpusa ap konstrukciju. Ja arī jūs vēlaties to darīt, varat veikt šādas darbības:

  1. Izrakstiet plexiglass ar SODAQ Mbili dēļa izmēriem. Izmēri: 85 x 56 mm
  2. Izgrieziet plexiglass ar finierzāģi.
  3. Novietojiet elektroniskos komponentus uz organiskā stikla un ar zīmuli norakstiet caurumus.
  4. Ar 3,5 mm urbi urbiet caurumus, kurus tikko parakstījāt, un caurumus atdalīšanai.
  5. Uzstādiet visas elektroniskās detaļas uz organiskā stikla ar 3M 10 mm skrūvēm un uzgriežņiem.
  6. Pēdējais solis ir uzstādīt plexiglass virs Mbili plates. To var izdarīt ar pārtraukumiem, bet es izmantoju divas 3M 50 mm skrūves un 8 3M uzgriežņus, lai piestiprinātu plexiglass virs dēļa.

Ieteicams: