Talaan ng mga Nilalaman:

Modyul sa Pagsubaybay para sa Mga Bisikleta: 5 Hakbang
Modyul sa Pagsubaybay para sa Mga Bisikleta: 5 Hakbang

Video: Modyul sa Pagsubaybay para sa Mga Bisikleta: 5 Hakbang

Video: Modyul sa Pagsubaybay para sa Mga Bisikleta: 5 Hakbang
Video: Pagganyak na Gawain para sa Demo Teaching 2024, Nobyembre
Anonim
Modyul sa Pagsubaybay para sa Mga Bisikleta
Modyul sa Pagsubaybay para sa Mga Bisikleta

Ang module ng pagsubaybay na ito para sa mga nagbibisikleta ay isang module na awtomatikong nakakakita ng mga pag-crash sa isang karera, at nakakakita ng isang mekanikal na pagkasira sa pamamagitan ng pagpindot sa isang touch sensor. Kapag nangyari ang isa sa mga kaganapang ito, ipinapadala ng module ang kaganapan sa isang database sa isang raspberry pi sa pamamagitan ng LoRa. Ang kaganapang ito ay ipapakita sa isang LCD display at sa isang website. Maaari ka ring maghanap sa website para sa isang tukoy na karera sa pagbibisikleta kasama ang mga kaganapan, at magdagdag ng mga karera ng pagbibisikleta o mga nagbibisikleta sa database. Ginawa ko ang proyektong ito dahil interesado ako sa Cycling at IOT, kaya't ang pagsasama-sama ng dalawang asignaturang ito ay talagang nakaganyak sa akin.

Bago ka makagawa ng isang module ng pagsubaybay para sa mga nagbibisikleta, kailangan mong kolektahin ang iyong mga materyales. Maaari mong makita ang mga tool at supply sa mga listahan sa ibaba, o maaari mong i-download ang BOM (Build Of Materials).

Mga Pantustos:

  • baso ng plexi (56mm X 85mm)
  • 10 X 2M bolts 10mm at mga mani
  • 10 X 3M bolts 10mm at mga mani
  • 2 X 3M bolts 50mm at mga mani
  • PLA Filament upang i-print sa 3D ang iyong kaso sa LCD
  • pag-urong ng init
  • Mga kable na Lalaki hanggang Babae
  • Isang pangunahing PCB
  • Mga header ng lalaki
  • Isang Raspberry Pi 3b +
  • Isang 16GB SD-card
  • Isang sparkfun 4X20 LCD
  • Isang capacitive touch sensor
  • Isang buzzer
  • Isang 3-axis accelero + gyro meter
  • Isang module ng GPS
  • Isang board ng SODAQ Mbili
  • Isang module ng LoRa WAN
  • Isang 3.7V 1000mAh na baterya
  • Isang suplay ng kuryente na Raspberry Pi 3b +

Mga tool:

  • Lata ng panghinang
  • Panghinang
  • Tongs
  • Screwdrivers
  • Itinaas ng Jigsaw
  • Makina ng pagbabarena
  • 2.5 at 3.5 drills
  • Magaan / mainit na baril ng hangin

Kung kailangan mong bilhin ang lahat ng mga supply, kakailanganin mo ang isang € 541.67 na badyet. Napakamahal ng proyektong ito dahil gumamit ako ng isang LoRa rappid development kit na nagkakahalaga ng € 299 (Nagkaroon ako ng pagkakataong gamitin ang kit na ito mula sa aking paaralan). Maaari mong palaging gumamit ng isang normal na Arduino upang makatipid ng maraming pera, ngunit magkakaiba ang mga programa noon.

Hakbang 1: Fritzing Scheme

Fritzing Scheme
Fritzing Scheme
Fritzing Scheme
Fritzing Scheme

Ang unang hakbang ay upang maitayo ang mga circuit. Para sa proyektong ito mayroon kaming 2 mga de-koryenteng circuit, isa na may Raspberry Pi at isa na may SADAQ Mbili board. Magsisimula kami sa Raspberry Pi circuit.

Skema ng Raspberry Pi Fritzing:

Ang pamamaraan ng Raspberry Pi ay medyo simple, ang tanging bagay na kumonekta kami sa Pi ay isang 4X20 Sparkfun LCD display. Gumagana ang Display sa Serial na komunikasyon, SPI o I2C. Nasa iyo ang protokol na komunikasyon na ginagamit mo. Ginamit ko ang SPI protocol dahil napakasimple nito. Kung gagamit ka ng SPI tulad ko, kailangan mo ang mga sumusunod na koneksyon:

  • 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

Sa Fritzing scheme makikita mo na ang LCD display ay isang 2X16 display. Dahil hindi ako nakakita ng 4X20 LCD sa pag-frizting. Gayunpaman, ang lahat ng mga koneksyon ay ang ilan kaya't hindi talaga ito mahalaga.

SODAQ Mbili Fritzing scheme:

Ikonekta namin ang 4 na mga elektronikong sangkap sa board ng SODAQ Mbili, kaya't ang pamamaraan ng elektrisidad na ito ay napaka-simple din. Magsisimula kami sa pagkonekta sa Capactive touch sensor. Ang mga sensor na OUT-pin na ito ay magiging TAAS kapag ang sensor ay hinawakan, at magiging Mababa kung hindi man. Nangangahulugan ito na ang OUT-pin ay isang digital output na maaari naming kumonekta sa isang digital input ng Mbili board. Ang mga koneksyon ay ang mga sumusunod:

  • OUT touch sensor D5 Mbili
  • VCC touch sensor 3.3V Mbili
  • GND Touch sensor GND Mbili

Ang pangalawang sangkap ay ang sensor ng Triple acces + gyro. Ginamit ko ang board na GY-521 na gumagamit ng I2C protocol upang makipag-usap sa Mbili board. Pansinin na ang AD0-pin ng board ng GY-521 ay kailangang maiugnay sa VCC ng Mbili board! Ito ay dahil ang Mbili board ay mayroong isang orasan na may parehong I2C address tulad ng GY-521. Sa pamamagitan ng pagkonekta sa AD0-pin sa VCC binabago namin ang I2C address ng GY-521. Ang mga koneksyon ay ang mga sumusunod:

  • 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

Pagkatapos ay ikonekta namin ang Buzzer. Gumagamit ako ng karaniwang buzzer na gumagawa ng isang tunog kapag may isang kasalukuyang. Nangangahulugan ito na maaari lamang naming ikonekta ang buzzer sa isang digital na pin ng Mbili board. Ang mga koneksyon ay ang mga sumusunod:

  • + Buzzer D4 Mbili
  • - Buzzer GND Mbili

Huling ngunit hindi pa huli, ikokonekta namin ang module ng GPS. Ang module ng GPS ay nakikipag-usap sa pamamagitan ng RX at TX. Ang mga koneksyon ay ang mga sumusunod:

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

Hakbang 2: Normalisadong Database

Normalisadong Database
Normalisadong Database

Ang pangalawang hakbang ay ang pagdisenyo ng isang normalisadong Database. Dinisenyo ko ang aking ERD sa Mysql. Makikita mo ang aking database ay nakasulat sa wikang Dutch, ipapaliwanag ko ang mga talahanayan dito.

Talahanayan 'ploeg':

Ang talahanayan na ito ay isang talahanayan para sa mga club ng cyclings. Naglalaman ito ng isang cycling club ID at isang pangalan ng cycling club.

Talaan ng mga 'renner':

Ang mesa na ito ay isang mesa para sa mga nagbibisikleta. Ang bawat siklista ay mayroong LoRaID na siyang Pangunahing Susi ng talahanayan. Mayroon din silang apelyido, unang pangalan, Bansang pinagmulan at isang cycling club ID na naka-link sa mesa ng pagbibisikleta club.

Talahanayan 'plaatsen':

Ang talahanayan na ito ay isang mesa na nag-iimbak ng mga lugar sa Belgium kung saan maaaring maganap ang isang karera sa pagbisikleta. Naglalaman ito ng pangalan ng lungsod (na kung saan ay ang Pangunahing Susi) at ang lalawigan kung saan matatagpuan ang lungsod.

Talahanayan 'wedstrijden':

Iniimbak ng talahanayan na ito ang lahat ng mga karera sa pagbibisikleta. Ang Pangunahing Susi ng talahanayan ay isang ID. Naglalaman din ang talahanayan ng pangalan ng karera ng pagbibisikleta, ang lungsod ng karera na naka-link sa talahanayan ng mga lugar, ang distansya ng karera, kategorya ng mga nagbibisikleta at ang petsa ng karera.

Talahanayan 'gebeurtenissen':

Iniimbak ng mga talahanayan na ito ang lahat ng mga kaganapan na nangyari. Nangangahulugan ito, kapag ang isang siklista ay nasangkot sa isang pag-crash o may isang pagkasira ng mekanikal, ang kaganapan ay maiimbak sa talahanayan na ito. Ang Pangunahing Susi ng talahanayan ay isang ID. Naglalaman din ang talahanayan ng datime ng kaganapan, ang Latitude ng posisyon, ang Longhitud ng posisyon, ang LoRaID ng siklista at ang uri ng kaganapan (pag-crash o pagkasira ng mekanikal).

Talahanayan 'wedstrijdrenner':

Ang talahanayan na ito ay isang talahanayan na kinakailangan para sa maraming relasyon.

Hakbang 3: Irehistro ang Iyong LoRa Modyul

Irehistro ang Iyong LoRa Modyul
Irehistro ang Iyong LoRa Modyul

Bago ka magsimula sa code, kailangan mong irehistro ang iyong module ng LoRa sa isang LoRa gateway. Gumamit ako ng isang kumpanya ng telecom sa Belgium na tinatawag na 'Proximus' na nag-aayos ng komunikasyon para sa aking module na LoRa. Ang data na ipinapadala ko sa aking LoRa node ay natipon sa website mula sa AllThingsTalk. Kung nais mo ring gamitin ang AllThingsTalk API upang mangolekta ng iyong data, maaari kang magparehistro dito.

Pagkatapos mong magparehistro sa AllThingsTalk, kailangan mong irehistro ang iyong LoRa node. Upang magawa ito, maaari mong sundin ang mga hakbang na ito o maaari kang tumingin sa larawan sa itaas.

  1. Pumunta sa 'Mga Device' sa pangunahing menu
  2. Mag-click sa 'Bagong Device'
  3. Piliin ang iyong LoRa node
  4. Punan ang lahat ng mga susi.

Tapos na! Ang lahat ng data na ipinadala mo sa iyong LoRa node ay lilitaw sa iyong tagagawa ng AllThingsTalk. Kung mayroon kang anumang mga problema sa pagpaparehistro, maaari mong palaging kumunsulta sa mga dokumento ng AllThingsTalk.

Hakbang 4: Ang Code

Ang Code
Ang Code
Ang Code
Ang Code
Ang Code
Ang Code
Ang Code
Ang Code

Para sa proyektong ito kakailanganin namin ng 5 mga wika sa pag-coding: HTML, CSS, Java Script, Python (Flask) at wikang Arduino. Una ay ipaliwanag ko ang programa ng Arduino.

Ang programa ng Arduino:

Sa simula ng programa, nag-declaire ako ng ilang Mga Global Variable. Makikita mo na gumagamit ako ng SoftwareSerial para sa koneksyon sa aking GPS. Ito ay dahil ang board ng Mbili ay mayroon lamang 2 serial port. Maaari mong ikonekta ang GPS sa Serial0, ngunit hindi mo magagamit ang Arduino terminal para sa pag-debug pagkatapos. Ito ang dahilan kung bakit gumagamit ako ng isang SoftwareSerial.

Matapos ang Mga Global Variable, nag-declaire ako ng ilang mga pagpapaandar na ginagawang madali upang basahin ang programa. Nabasa nila ang coördinates ng GPS, ginawa ang tunog ng buzzer, nagpapadala ng mga halaga sa pamamagitan ng LoRa,…

Ang pangatlong bloke ay ang pag-setup block. Ang bloke na ito ay ang simula ng programa na nagtatakda ng mga pin, serial na komunikasyon at komunikasyon sa I2C.

Matapos ang pag-setup block ay dumating ang pangunahing programa. Sa simula ng pangunahing loop na ito, tinitingnan ko kung ang touchsensor ay aktibo. Kung gayon, gagawin ko ang tunog ng buzzer, nakukuha ang data ng GPS at ipinapadala ang lahat ng mga halaga sa pamamagitan ng LoRa o Bluetooth sa Raspberry PI. Matapos ang touch sensor, binasa ko ang mga halaga ng Accelerometer. Sa isang pormula kinakalkula ko ang eksaktong anggulo ng X at Y axis. Kung ang mga halagang ito ay malaki, maaari nating tapusin na nag-crash ang nagbibisikleta. Kapag nangyari ang isang pag-crash, ginagawa ko muli ang tunog ng buzzer, makuha ang data ng GPS at ipadala ang lahat ng mga halaga sa pamamagitan ng LoRa o Bluetooth sa Raspberry PI.

Marahil ay iniisip mo: 'Bakit gumagamit ka ng Bluetooth at LoRa?'. Ito ay dahil nagkaroon ako ng kaunting problema sa lisensya ng module na LoRa na ginamit ko. Kaya upang gumana ang programa para sa aking demo, kinailangan kong gumamit ng Bluetooth nang ilang sandali.

2. Ang hulihan:

Ang likurang dulo ay isang litle na bit kumplikado. Gumagamit ako ng Flask para sa aking ruta na naa-access para sa front end, gumagamit ako ng socketio upang ma-update ang ilan sa mga front end page nang awtomatiko, ginagamit ko ang mga GPIO pin upang ipakita ang mga mensahe sa isang LCD display at makatanggap ng mga mensahe sa pamamagitan ng Bluetooth (hindi kinakailangan kung gagamitin mo LoRa) at ginagamit ko ang Threading at Timers upang basahin nang regular ang AllThinksTalk API at simulan ang flask server.

Gumagamit din ako ng database ng SQL upang maiimbak ang lahat ng nag-crash na incomming, basahin ang personal na data ng mga nagbibisikleta at ang data ng karera. Ang database na ito ay konektado sa back-end at tumatakbo din sa Raspberry Pi. Gumagamit ako ng isang klase na 'Database.py' upang makipag-ugnay sa database.

Tulad ng alam mo mula sa Fritzing scheme, ang lcd ay konektado sa Raspberry Pi sa pamamagitan ng SPI protocol. Upang gawing mas madali ang isang litulo, nagsulat ako ng isang klase na 'LCD_4_20_SPI.py'. Sa klase na ito maaari mong baguhin ang kaibahan, baguhin ang kulay ng backlight, magsulat ng mga mensahe sa screen,…. Kung nais mong gumamit ng Bluetooth, maaari mong gamitin ang klase na 'SerialRaspberry.py'. Ang klase na ito ang namumuno sa serial na komunikasyon sa pagitan ng module ng Bluetooth at ng Raspberry Pi. Ang tanging bagay na kailangan mong gawin ay ikonekta ang isang module ng Bluetooth sa Raspberry Pi sa pamamagitan ng pagkonekta sa RX sa TX at sa kabaligtaran.

Ang mga ruta para sa front end ay nakasulat sa panuntunang @ app.route. Dito maaari kang gumawa ng iyong sariling pasadyang ruta upang magsingit o makakuha ng data sa o mula sa database. Tiyaking palagi kang may tugon sa pagtatapos ng ruta. Palagi kong ibabalik ang isang bagay na JSON sa harap na dulo, kahit na may naganap na error. Maaari kang gumamit ng variable sa url sa pamamagitan ng paglalagay ng arround ng variable.

Gumagamit ako ng socketio para sa webpage na may mga pag-crash ng isang lahi. Kapag ang Raspberry Pi ay tumatanggap ng isang pag-crash, naglalabas ako ng isang mensahe sa harap na dulo sa pamamagitan ng socketio. Alam ng front end na dapat nilang basahin muli ang database dahil may isang bagong pag-crash.

Makikita mo na sa aking code ang komunikasyon ng LoRa ay nakatakda sa utos. Kung nais mong gamitin ang LoRa, kailangan mong magsimula ng isang timer na paulit-ulit na nagpapadala ng isang kahilingan sa AllThinksTalk API. Mula sa API na ito, makakatanggap ka ng mga halaga ng sensor (GPS, Oras, uri ng Crash) na ipinapadala ng isang tukoy na LoRa node. Maaari mong gamitin ang mga halagang ito upang magsingit ng isang pag-crash sa database.

3. Ang dulo ng frond:

Ang dulo ng frond ay binubuo ng 3 mga wika. HTML para sa teksto ng website, CSS para sa markup ng website at JavaScript para sa komunikasyon na may back end. Mayroon akong 4 na mga pahina ng website para sa proyektong ito:

  • Ang index.html kung saan mahahanap mo ang lahat ng mga karera sa pagbibisikleta.
  • Isang pahina na may lahat ng mga pag-crash at mekanikal na pagkasira para sa isang spicific na lahi.
  • Isang pahina kung saan maaari kang magdagdag ng mga cylist sa database at mai-edit ang kanilang koponan.
  • Isang pahina kung saan maaari kang magdagdag ng isang bagong lahi kasama ang lahat ng mga dumalo sa database.

Nasa iyo ang pagdidisenyo ng mga ito. Maaari kang makakuha ng ilang inspirasyon mula sa aking website kung nais mo. Sa kasamaang palad ang aking website ay ginawa sa wikang Dutch, humihingi ako ng paumanhin para sa isang iyon.

Mayroon akong hiwalay na CSS file at JavaScript file para sa bawat pahina. Ang bawat file na JavaScript ay gumagamit ng pagkuha upang makuha ang data mula sa database sa pamamagitan ng back end. Kapag natanggap ng script ang data, ang html ay nagbabago nang pabago-bago. Sa pahina kung saan maaari mong makita ang mga pag-crash at mekanikal na pagkasira, makakahanap ka ng isang mapa kung saan ang lahat ng mga kaganapan ay naganap. Gumamit ako ng polyeto upang ipakita ang map na ito.

Maaari mong tingnan ang lahat ng aking mga code dito sa aking Github.

Hakbang 5: Buuin ang Mga Bumubuo

Buuin ang Mga Konstruksyon
Buuin ang Mga Konstruksyon
Buuin ang Mga Konstruksyon
Buuin ang Mga Konstruksyon
Buuin ang Mga Konstruksyon
Buuin ang Mga Konstruksyon

Bago kami makapagsimula sa konstruksyon, tiyaking mayroon ka ng lahat ng mga materyales mula sa BOM o mula sa pahina ng 'Mga Tool + Panustos'.

Raspberry Pi + LCD

Magsisimula kami sa kaso para sa Raspberry Pi. Maaari mong i-print ang isang 3D kaso, ito rin ang aking unang ideya. Ngunit dahil malapit na malapit na ang aking deadline, nagpasya akong gumawa ng isang simpleng kaso. Kinuha ko ang karaniwang kaso mula sa Raspberry Pi, at nag-drill ako ng butas sa kaso para sa mga wires mula sa aking LCD display. Upang magawa ito, susundin mo lang ang mga simpleng hakbang na ito:

  1. Mag-drill ng isang butas sa takip ng kaso. Ginawa ko ito sa isang 7mm drill sa gilid ng takip. Maaari mo itong makita sa larawan sa itaas.
  2. Kunin ang mga wire mula sa display ng LCD at i-slide ang isang ulo na lumiit sa mga wire.
  3. Gumamit ng isang mas magaan o isang mainit na air gun upang mapaliit ang ulo.
  4. Hilahin ang mga wire na may ulo na lumiit sa butas sa kaso, at ikonekta ang mga ito pabalik sa LCD.

Ngayon na handa ka na sa kaso para sa Raspberry Pi, maaari kang magsimula sa kaso para sa LCD display. 3D-print ko ang kaso para sa aking LCD Display dahil nakakita ako ng isang kaso sa online sa link na ito. Kailangan ko lamang gumawa ng isang litle na pagbabago sa taas ng kaso. Kung sa tingin mo ay maganda ang pagguhit, maaari mong i-export ang mga file at simulang mag-print. Kung hindi mo alam kung paano mag-print ng 3D, maaari mong sundin ang itinuturo na ito tungkol sa kung paano mag-print sa 3D na may fusion 360.

Konstruksiyon ng SODAQ MBili

Hindi talaga ako gumawa ng kaso para sa board ng SODAQ Mbili. Gumamit ako ng isang baso ng plexi upang ilagay ang aking mga sangkap nang walang kaso na arround ang konstruksyon. Kung nais mo ring gawin ito, maaari mong sundin ang mga hakbang na ito:

  1. Mag-sign off sa plexiglass gamit ang dimesnions ng SODAQ Mbili board. Ang sukat ay: 85mm X 56mm
  2. Gupitin ang plexiglass gamit ang isang jigsaw.
  3. Ilagay ang mga elektronikong sangkap sa plexiglass at mag-sign off ang mga butas gamit ang isang lapis.
  4. I-drill ang mga butas na naka-sign off lamang at ang mga butas para sa mga standoff na may isang 3.5mm drill.
  5. I-mount ang lahat ng mga elektronikong sangkap sa plexiglass gamit ang 3M 10mm bolts at nut.
  6. Ang huling hakbang ay i-mount ang plexiglass sa itaas ng board ng Mbili. Maaari mo itong gawin sa mga standoff, ngunit gumamit ako ng dalawang 3M 50mm bolts at 8 3M nut upang mai-mount ang plexiglass sa itaas ng board.

Inirerekumendang: