Mundarija:

Velosipedchilarni kuzatish moduli: 5 qadam
Velosipedchilarni kuzatish moduli: 5 qadam

Video: Velosipedchilarni kuzatish moduli: 5 qadam

Video: Velosipedchilarni kuzatish moduli: 5 qadam
Video: Сверлильное приспособление для токарного станка. Испытание фрезеровкой. 2024, Iyul
Anonim
Velosipedchilar uchun kuzatuv moduli
Velosipedchilar uchun kuzatuv moduli

Velosipedchilar uchun kuzatuv moduli - bu poygada avariyalarni avtomatik tarzda aniqlaydigan va sensorli sensorga tegib mexanik nosozlikni aniqlaydigan modul. Bu voqealardan biri sodir bo'lganda, modul voqeani LoRa orqali malina pi ma'lumotlar bazasiga yuboradi. Bu voqea LCD displeyda va veb -saytda ko'rsatiladi. Veb -saytida siz voqealar bilan ma'lum bir velosiped poygasini qidirishingiz va ma'lumotlar bazasiga velosiped poygalarini yoki velosipedchilarni qo'shishingiz mumkin. Men bu loyihani qildim, chunki men velosiped va IOTga juda qiziqaman, shuning uchun bu ikki mavzuni birlashtirish men uchun juda hayajonli edi.

Velosipedchilar uchun kuzatuv modulini yasashdan oldin, siz o'z materiallaringizni to'plashingiz kerak. Siz asboblar va materiallarni quyida keltirilgan ro'yxatlardan topishingiz yoki BOMni (Materiallar qurilishi) yuklab olishingiz mumkin.

Ta'minot:

  • pleksi shisha (56mm X 85mm)
  • 10 X 2M murvat 10 mm va yong'oqlar
  • 10 X 3M murvat 10 mm va yong'oqlar
  • 2 X 3M murvat 50 mm va yong'oqlar
  • LCD displeyini 3D bosib chiqarish uchun PLA filamenti
  • issiqlik qisqarishi
  • Erkak va ayol kabellari
  • Asosiy PCB
  • Erkaklar sarlavhalari
  • Raspberry Pi 3b+
  • 16 GB hajmli SD-karta
  • Yorqin 4X20 LCD
  • Sensorli sensorli sensor
  • Buzzer
  • 3 o'qli akselero + girometr
  • GPS moduli
  • SODAQ Mbili taxtasi
  • LoRa WAN moduli
  • Batareya quvvati 3.7V 1000mAh
  • Raspberry Pi 3b+ quvvat manbai

Asboblar:

  • Lehim qalay
  • Lehimlash temir
  • Qisqichlar
  • Tornavidalar
  • Jigsaw
  • Burg'ulash mashinasi
  • 2,5 va 3,5 mashqlar
  • Yengil / issiq havo quroli

Agar siz barcha materiallarni sotib olishingiz kerak bo'lsa, sizga 541,67 evrolik byudjet kerak bo'ladi. Bu loyiha juda qimmat, chunki men 299 evroga teng LoRa tez ishlab chiqish to'plamidan foydalandim (men bu to'plamni o'z maktabimdan foydalanish imkoniyatiga ega bo'ldim). Siz har doim oddiy Arduino -dan foydalanib, ko'p pul tejashingiz mumkin, lekin keyin dasturlar boshqacha bo'ladi.

1 -qadam: Ajratish sxemasi

Sovutish sxemasi
Sovutish sxemasi
Sovutish sxemasi
Sovutish sxemasi

Birinchi qadam - sxemalarni qurish. Ushbu loyiha uchun bizda ikkita elektr davri bor, bittasi Raspberry Pi bilan, ikkinchisi SADAQ Mbili kartasi bilan. Biz Raspberry Pi sxemasidan boshlaymiz.

Raspberry Pi Fritzing sxemasi:

Raspberry Pi sxemasi juda oddiy, biz Pi bilan bog'laydigan yagona narsa - 4X20 Sparkfun LCD displeyi. Displey ketma -ket aloqa, SPI yoki I2C bilan ishlaydi. Qaysi aloqa protokolidan foydalanish sizga bog'liq. Men SPI protokolidan foydalandim, chunki bu juda oddiy. Agar siz SPIni men kabi ishlatsangiz, sizga quyidagi ulanishlar kerak bo'ladi:

  • 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 sxemasida LCD displey 2X16 displey ekanligini ko'rasiz. Buning sababi shundaki, men 4X20 LCD displeyini topmadim. Biroq, barcha ulanishlar ba'zi, shuning uchun bu muhim emas.

SODAQ Mbili Fritzing sxemasi:

Biz 4 elektron komponentni SODAQ Mbili platasi bilan bog'laymiz, shuning uchun bu elektr sxemasi ham juda oddiy. Biz Capactive sensorli sensorni ulashdan boshlaymiz. Sensorga tegsa, OUT-pinli sensorlar yuqori bo'ladi, aks holda LOW bo'ladi. Bu shuni anglatadiki, OUT-pin-bu raqamli chiqish, biz uni Mbili kartasining raqamli kirishi bilan ulashimiz mumkin. Ulanishlar quyidagicha:

  • OUT sensorli sensor D5 Mbili
  • 3.3V Mbili VCC sensorli sensori
  • GND sensorli sensor GND Mbili

Ikkinchi komponent - Triple acces + gyro sensori. Men Mbili platasi bilan aloqa qilish uchun I2C protokolidan foydalanadigan GY-521 kartasidan foydalandim. E'tibor bering, GY-521 kartasining AD0-pinini Mbili platasining VCC-ga ulash lozim! Buning sababi, Mbili taxtasida GY-521 kabi I2C manzili bo'lgan soat bor. AD0-pinni VCC ga ulab, biz GY-521 ning I2C manzilini o'zgartiramiz. Ulanishlar quyidagicha:

  • 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

Shundan so'ng biz Buzzer -ni ulaymiz. Men oqim bo'lganda ovoz chiqaradigan standart signaldan foydalanaman. Bu shuni anglatadiki, biz signalni Mbili kartasining raqamli piniga ulashimiz mumkin. Ulanishlar quyidagicha:

  • + Buzzer D4 Mbili
  • - Buzzer GND Mbili

Oxir -oqibat, biz GPS modulini ulaymiz. GPS moduli RX va TX orqali aloqa o'rnatadi. Ulanishlar quyidagicha:

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

2 -qadam: normallashtirilgan ma'lumotlar bazasi

Normallashtirilgan ma'lumotlar bazasi
Normallashtirilgan ma'lumotlar bazasi

Ikkinchi qadam - normallashtirilgan ma'lumotlar bazasini loyihalash. Men ERD -ni Mysql -da ishlab chiqdim. Siz mening ma'lumotlar bazam golland tilida yozilganini ko'rasiz, men bu erda jadvallarni tushuntiraman.

"Ploeg" jadvali:

Bu stol velosiped klublari uchun mo'ljallangan stol. Unda velosiped klubining identifikatori va velosiped klubining nomi bor.

"Rennerlar" jadvali:

Bu stol velosipedchilar uchun mo'ljallangan stol. Har bir velosipedchi LoRaID -ga ega, bu ham jadvalning asosiy kaliti. Shuningdek, ular familiyasi, ismi, kelib chiqqan mamlakati va velosiped klubi stoliga bog'langan velosiped klubining identifikatoriga ega.

"Plaatsen" jadvali:

Bu jadval Belgiyada velosport poygasi bo'lishi mumkin bo'lgan joylarni saqlaydigan stol. Unda shahar nomi (asosiy kalit) va shahar joylashgan viloyat yozilgan.

"Uylanish" jadvali:

Bu jadvalda barcha velosiped poygalari saqlanadi. Jadvalning asosiy kaliti - bu identifikator. Jadvalda, shuningdek, velosiped poygasi nomi, joylar jadvaliga bog'langan poyga shahri, poyga masofasi, velosipedchilar toifasi va poyga sanasi ko'rsatilgan.

"Gebeurtenissen" jadvali:

Bu jadvalda sodir bo'lgan barcha voqealar saqlanadi. Bu shuni anglatadiki, velosipedchi avtohalokatga uchraganida yoki mexanik shikastlanganida, voqea shu jadvalda saqlanadi. Jadvalning asosiy kaliti - bu identifikator. Jadvalda, shuningdek, voqea sodir bo'lgan vaqt, joylashuv kengligi, uzunlik, velosipedchining LoRaID va voqea turi (avariya yoki mexanik buzilish) ko'rsatilgan.

"Nikohlar jadvali":

Bu jadval ko'pchilik munosabatlar uchun zarur bo'lgan jadval.

3 -qadam: LoRa modulini ro'yxatdan o'tkazing

LoRa modulini ro'yxatdan o'tkazing
LoRa modulini ro'yxatdan o'tkazing

Kodni ishga tushirishdan oldin LoRa modulini LoRa shlyuzida ro'yxatdan o'tkazishingiz kerak. Men Belgiyada LoRa moduli bilan aloqani tartibga soluvchi 'Proximus' telekommunikatsiya kompaniyasidan foydalanardim. Men LoRa tugunim bilan yuboradigan ma'lumotlar AllThingsTalk veb -saytida to'planadi. Agar siz ham ma'lumotlarni yig'ish uchun AllThingsTalk API -dan foydalanmoqchi bo'lsangiz, bu erda ro'yxatdan o'tishingiz mumkin.

AllThingsTalk -da ro'yxatdan o'tgandan so'ng, siz LoRa tugunini ro'yxatdan o'tkazishingiz kerak. Buning uchun siz quyidagi amallarni bajarishingiz yoki yuqoridagi rasmga qarashingiz mumkin.

  1. Asosiy menyuda "Qurilmalar" bo'limiga o'ting
  2. "Yangi qurilma" ni bosing
  3. LoRa tugunini tanlang
  4. Barcha kalitlarni to'ldiring.

Endi ishingiz tugadi! LoRa tuguningiz bilan yuborgan barcha ma'lumotlar AllThingsTalk ishlab chiqaruvchisida paydo bo'ladi. Agar sizda ro'yxatdan o'tish bilan bog'liq muammolar bo'lsa, har doim AllThingsTalk hujjatlariga murojaat qilishingiz mumkin.

4 -qadam: Kod

Kodeks
Kodeks
Kodeks
Kodeks
Kodeks
Kodeks
Kodeks
Kodeks

Ushbu loyiha uchun bizga 5 ta kodlash tili kerak bo'ladi: HTML, CSS, Java Script, Python (Flask) va Arduino tili. Birinchidan, men Arduino dasturini tushuntiraman.

Arduino dasturi:

Dasturning boshida men ba'zi global o'zgaruvchilarni o'chirib tashlayman. Siz GPS bilan ulanish uchun SoftwareSerial -dan foydalanganimni ko'rasiz. Buning sababi, Mbili kartasida faqat 2 ta ketma -ket port mavjud. Siz GPS -ni Serial0 -ga ulashingiz mumkin, lekin keyin siz disk raskadrovka uchun Arduino terminalidan foydalana olmaysiz. Men SoftwareSerial -dan foydalanishimning sababi shu.

Global o'zgaruvchilardan so'ng men dasturni o'qishni osonlashtiradigan ba'zi funktsiyalarni o'chirib tashlayman. Ular GPS koordinatalarini o'qiydilar, ovozli signal chiqaradi, LoRa orqali qiymatlarni yuboradilar,…

Uchinchi blok - o'rnatish bloki. Bu blok pinlar, ketma -ket aloqa va I2C aloqasini o'rnatadigan dasturning boshlanishi.

O'rnatish blokidan so'ng asosiy dastur keladi. Ushbu asosiy tsiklning boshida men sensorning faolligini tekshiraman. Agar shunday bo'lsa, men qo'ng'iroq tovushini chiqaraman, GPS ma'lumotlarini olaman va barcha qiymatlarni LoRa yoki Bluetooth orqali Raspberry PIga yuboraman. Sensorli sensordan so'ng men akselerometrning qiymatlarini o'qidim. Formulada men X va Y o'qlarining aniq burchagini hisoblayman. Agar bu qiymatlar katta bo'lsa, biz velosipedchi halokatga uchragan degan xulosaga kelishimiz mumkin. Qachonki, falokat yuz bersa, men yana qo'ng'iroq ovozini chiqaraman, GPS ma'lumotlarini olaman va barcha qiymatlarni LoRa yoki Bluetooth orqali Raspberry PIga yuboraman.

Ehtimol siz: "Nega bluetooth va LoRa ishlatasiz?" Deb o'ylayotgandirsiz. Buning sababi, men ishlatgan LoRa moduli litsenziyasi bilan bog'liq muammolarga duch kelganman. Shunday qilib, dastur mening demo -larim uchun ishlashi uchun men bir muddat Bluetooth -dan foydalanishga majbur bo'ldim.

2. Orqa tomoni:

Orqa tomoni biroz murakkab. Men Flask -ni old tomondan kirish mumkin bo'lgan marshrutlar uchun ishlataman, men oldingi sahifalarning bir qismini avtomatik yangilash uchun socketio -dan foydalanaman, LCD displeyda xabarlarni ko'rsatish va Bluetooth orqali xabarlarni qabul qilish uchun GPIO pinlaridan foydalanaman (agar kerak bo'lsa, kerak emas) LoRa) va men AllThinksTalk API -ni muntazam o'qish va kolba serverini ishga tushirish uchun Threading va Taymerlardan foydalanaman.

Shuningdek, men SQL ma'lumotlar bazasidan barcha kelayotgan avariyalarni saqlash, velosipedchilarning shaxsiy ma'lumotlari va poyga ma'lumotlarini o'qish uchun foydalanaman. Ushbu ma'lumotlar bazasi orqa tomonga ulangan va Raspberry Pi-da ishlaydi. Ma'lumotlar bazasi bilan ishlash uchun "Database.py" sinfidan foydalanaman.

Fritzing sxemasidan ma'lumki, LCD displey Raspberry Pi ga SPI protokoli orqali ulanadi. Buni osonlashtirish uchun men "LCD_4_20_SPI.py" sinfini yozdim. Bu sinf yordamida siz kontrastni o'zgartirishingiz, orqa yorug'lik rangini o'zgartirishingiz, ekranda xabarlar yozishingiz,…. Agar siz Bluetooth -dan foydalanmoqchi bo'lsangiz, "SerialRaspberry.py" sinfidan foydalanishingiz mumkin. Bu sinf Bluetooth moduli va Raspberry Pi o'rtasidagi ketma -ket aloqani boshqaradi. Sizga kerak bo'lgan yagona narsa - RXni TX ga ulash orqali Raspberry Pi -ga Bluetooth modulini ulash va aksincha.

Old tomondan yo'nalishlar @app.route qoidasi bilan yozilgan. Bu erda siz ma'lumotlar bazasiga ma'lumotlarni kiritish yoki olish uchun o'zingizning shaxsiy marshrutingizni qilishingiz mumkin. Har doim marshrut oxirida javob berishingizga ishonch hosil qiling. Men har doim JSON ob'ektini oldingi qismiga qaytaraman, hatto xato yuz bergan bo'lsa ham. O'zgaruvchini atrofga qo'yish orqali urlda o'zgaruvchidan foydalanishingiz mumkin.

Men poygada avariya bo'lgan veb -sahifa uchun socketio dan foydalanaman. Raspberry Pi qulab tushganda, men soketio orqali old tomonga xabar yuboraman. Old tomondan, ma'lumotlar bazasini qayta o'qish kerakligini bilishadi, chunki yangi avariya yuz berdi.

Siz mening kodimda LoRa aloqasi buyruqqa o'rnatilganligini ko'rasiz. Agar siz LoRa -dan foydalanmoqchi bo'lsangiz, AllThinksTalk API -ga so'rov yuboradigan takroriy taymerni ishga tushirishingiz kerak. Ushbu API -dan ma'lum LoRa tugunlari tomonidan yuboriladigan sensorlar qiymatlari (GPS, vaqt, ishdan chiqish turi) olasiz. Ma'lumotlar bazasiga buzilish kiritish uchun siz bu qiymatlardan foydalanishingiz mumkin.

3. Sochning oxiri:

Sochning uchi 3 tildan iborat. Veb -sayt matni uchun HTML, veb -saytni belgilash uchun CSS va orqa tomon bilan aloqa uchun JavaScript. Menda ushbu loyiha uchun 4 ta veb -sayt bor:

  • Index.html bu erda siz barcha velosiped poygalarini topishingiz mumkin.
  • Aniq poyga uchun barcha avariyalar va mexanik buzilishlar bo'lgan sahifa.
  • Ma'lumotlar bazasiga silindrlarni qo'shish va ularning jamoasini tahrirlash mumkin bo'lgan sahifa.
  • Ma'lumotlar bazasiga barcha ishtirokchilari bilan yangi poyga qo'shishingiz mumkin bo'lgan sahifa.

Siz ularni qanday loyihalashingiz to'liq sizga bog'liq. Agar xohlasangiz, veb -saytimdan ilhom olishingiz mumkin. Afsuski, mening veb -saytim golland tilida yaratilgan, buning uchun uzr so'rayman.

Menda har bir sahifa uchun alohida CSS fayli va JavaScript fayli bor. Har bir JavaScript fayli ma'lumotlar bazasidan ma'lumotlarni orqa tomondan olish uchun "fetch" dan foydalanadi. Skript ma'lumotlarni qabul qilganda, html dinamik ravishda o'zgaradi. Avariyalar va mexanik buzilishlarni topishingiz mumkin bo'lgan sahifada siz barcha voqealar sodir bo'lgan xaritani topasiz. Men bu xaritani ko'rsatish uchun varaqadan foydalandim.

Siz mening kodimni Github -da ko'rishingiz mumkin.

5 -qadam: Konstruktsiyalarni yarating

Qurilishlarni qurish
Qurilishlarni qurish
Qurilishlarni qurish
Qurilishlarni qurish
Qurilishlarni qurish
Qurilishlarni qurish

Qurilishni boshlashdan oldin, sizda BOM yoki "Asboblar + Materiallar" sahifasidagi barcha materiallar borligiga ishonch hosil qiling.

Raspberry Pi + LCD

Biz Raspberry Pi uchun ishni boshlaymiz. Siz har doim qutini 3D bosib chiqarishingiz mumkin, bu ham mening birinchi fikrim edi. Lekin mening muddatim juda yaqin bo'lgani uchun, men oddiy ishni qilishga qaror qildim. Men standart korpusni Raspberry Pi -dan oldim va men LCD displeyimdagi simlar uchun teshik ochdim. Buni amalga oshirish uchun siz oddiy qadamlarni bajarishingiz kerak:

  1. Koson qopqog'iga teshik qiling. Men buni qopqoqning yon tomonidagi 7 mm matkap bilan qildim. Buni yuqoridagi rasmda ko'rishingiz mumkin.
  2. LCD displeydan simlarni oling va simlar ustidan boshini qisib qo'ying.
  3. Boshning qisqarishi uchun engilroq yoki issiq tabancadan foydalaning.
  4. Qutidagi teshikdan boshi qisilib qolgan simlarni torting va ularni yana LCD -ga ulang.

Endi siz Raspberry Pi qutisiga tayyor bo'lgach, siz LCD displeyli korpusdan boshlashingiz mumkin. Men LCD displeyim uchun sumkani 3D bosib chiqardim, chunki men bu havolada Internetdan ish topdim. Men faqat korpusning balandligini biroz o'zgartirishim kerak edi. Agar siz chizish yaxshi deb o'ylasangiz, siz fayllarni eksport qilishingiz va chop etishni boshlashingiz mumkin. Agar siz 3D-bosib chiqarishni bilmasangiz, fusion 360 yordamida 3D-chop etish bo'yicha ko'rsatmalarga amal qilishingiz mumkin.

SODAQ MBili qurilishi

Men haqiqatan ham SODAQ Mbili boshqaruv kengashiga murojaat qilmaganman. Men pleksi oynadan foydalanib, komponentlarimni konstruksiyasiz korpussiz joylashtirdim. Agar siz ham buni qilishni xohlasangiz, quyidagi amallarni bajarishingiz mumkin:

  1. Pleksiglasni SODAQ Mbili taxtasining dimesnionlari bilan o'chiring. Olchamlari: 85mm X 56mm
  2. Pleksiglasni jigsaw bilan kesib oling.
  3. Elektron komponentlarni pleksiglasga joylashtiring va teshiklarni qalam bilan o'chiring.
  4. Siz hozirgina imzolagan teshiklarni va to'xtash joylarini 3,5 mm matkap bilan burg'ulang.
  5. Barcha elektron komponentlarni plexiglasga 3M 10 mm murvat va yong'oq bilan o'rnating.
  6. Oxirgi qadam - pleksiglasni Mbili taxtasi ustiga o'rnatish. Siz buni to'xtashlar bilan qilishingiz mumkin, lekin men pleksiglasni taxtaning tepasiga o'rnatish uchun 3 mm 50 mm ikkita bolt va 8 3M yong'oqdan foydalandim.

Tavsiya: