Мазмуну:

Велосипедчилер үчүн көзөмөлдөө модулу: 5 кадам
Велосипедчилер үчүн көзөмөлдөө модулу: 5 кадам

Video: Велосипедчилер үчүн көзөмөлдөө модулу: 5 кадам

Video: Велосипедчилер үчүн көзөмөлдөө модулу: 5 кадам
Video: Судья Дредд Лордун тарыхы жана түшүндүрүлгөн алгачкы ... 2024, Июль
Anonim
Велосипедчилер үчүн көзөмөлдөө модулу
Велосипедчилер үчүн көзөмөлдөө модулу

Велосипедчилер үчүн бул көзөмөлдөө модулу жарыштагы аварияларды автоматтык түрдө аныктоочу жана сенсорго тийүү менен механикалык бузулууну аныктоочу модуль. Бул окуялардын бири болгондо, модуль окуяны LoRa аркылуу малина пи боюнча маалымат базасына жөнөтөт. Бул окуя LCD дисплейде жана веб -сайтта көрсөтүлөт. Сиз ошондой эле окуялар менен белгилүү бир веложарышты веб -сайттан издеп, веложарыштарды же велосипедчилерди маалымат базасына кошо аласыз. Мен бул долбоорду велосипед менен IOTко абдан кызыкканым үчүн жасадым, ошондуктан бул эки предметтин айкалышы мен үчүн абдан кызыктуу болду.

Велосипедчилерге көз салуу модулун түзүүдөн мурун, өзүңүздүн материалдарды чогултууңуз керек. Сиз инструменттерди жана жабдууларды төмөндөгү тизмелерден таба аласыз, же BOM (Build Of Materials) жүктөп алсаңыз болот.

Берилиштер:

  • плекси айнек (56mm X 85mm)
  • 10 X 2M болттор 10мм жана гайкалар
  • 10 X 3M болттор 10мм жана гайкалар
  • 2 X 3M болттор 50мм жана гайкалар
  • ЖК корпусун 3D басып чыгаруу үчүн PLA Filament
  • жылуулук кыскарат
  • Эркек -аял кабелдери
  • Негизги PCB
  • Эркектердин баш аттары
  • A Raspberry Pi 3b+
  • 16 ГБ SD-карта
  • Спаркфун 4X20 ЖК
  • Сыйымдуу сенсор сенсор
  • Зумер
  • 3 огу акселеро + гиро метр
  • GPS модулу
  • SODAQ Mbili тактасы
  • LoRa WAN модулу
  • 3.7V 1000mAh батарейкасы
  • Raspberry Pi 3b+ энергия менен камсыздоо

Куралдар:

  • Solder qalay
  • Кандооч
  • Кычкачтар
  • Бурамалар
  • Jigsaw
  • Тешүүчү станок
  • 2,5 жана 3,5 машыгуулар
  • Жеңил / ысык пистолет

Бардык жабдууларды сатып алуу керек болсо, сизге 541.67 евро бюджети керек болот. Бул долбоор абдан кымбат, анткени мен € 299 турган LoRa ылдам өнүгүү комплексин колдондум (бул комплектти менин мектебимден колдонууга мүмкүнчүлүк болгон). Сиз ар дайым кадимки Arduino колдонсоңуз болот, көп акчаны үнөмдөйсүз, бирок анда программалар башкача болот.

1 -кадам: Fritzing схемасы

Fritzing Scheme
Fritzing Scheme
Fritzing Scheme
Fritzing Scheme

Биринчи кадам микросхемаларды куруу болуп саналат. Бул долбоор үчүн бизде 2 электр схемасы бар, алардын бири Raspberry Pi менен, экинчиси SADAQ Mbili тактасы менен. Биз Raspberry Pi схемасынан баштайбыз.

Raspberry Pi Fritzing схемасы:

Raspberry Pi схемасы абдан жөнөкөй, биз Pi менен туташтырган жалгыз нерсе - 4X20 Sparkfun LCD дисплейи. Дисплей сериялык байланыш, SPI же I2C менен иштейт. Кайсы байланыш протоколун колдонуу сизден көз каранды. Мен SPI протоколун колдондум, анткени ал абдан жөнөкөй. Эгерде сиз SPIди мен сыяктуу колдонсоңуз, сизге төмөнкү байланыштар керек:

  • 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 схемасында LCD дисплейи 2X16 дисплей экенин көрөсүз. Себеби, мен 4X20 ЖКны фризингде тапкан жокмун. Бирок, бардык байланыштар кээ бирлери, андыктан мааниси жок.

SODAQ Mbili Fritzing схемасы:

Биз 4 электрондук компонентти SODAQ Mbili тактасы менен туташтырабыз, андыктан бул электр схемасы да абдан жөнөкөй. Биз Capactive сенсорун туташтыруудан баштайбыз. Бул сенсорлор OUT-pin сенсор тийгенде ЖОГОРУ болот, антпесе LOW болот. Бул OUT-пин-бул Mbili тактасынын санариптик кириши менен туташа турган санарип чыгаруу. Байланыштар төмөнкүчө:

  • OUT сенсор D5 Mbili
  • VCC сенсор 3.3V Mbili
  • GND сенсор GND Mbili

Экинчи компонент - Triple acces + гиро сенсор. Мен Mbili тактасы менен байланышуу үчүн I2C протоколун колдонгон GY-521 тактасын колдондум. GY-521 тактасынын AD0-пин Mbili тактасынын VCC менен туташуусу керек экенин байкаңыз! Себеби, Mbili тактасында GY-521 сыяктуу I2C дареги бар саат бар. AD0-пинди VCCге туташтыруу менен биз GY-521дин I2C дарегин өзгөртөбүз. Байланыштар төмөнкүчө:

  • 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

Андан кийин биз Buzzerди туташтырабыз. Мен ток болгондо үн чыгаруучу стандарттык сигналды колдоном. Бул жөн эле коңгуроону Mbili тактасынын санарип пинине туташтыра алабыз дегенди билдирет. Байланыштар төмөнкүчө:

  • + Buzzer D4 Mbili
  • - Buzzer GND Mbili

Акыркы, бирок жок дегенде, биз GPS модулун туташтырабыз. GPS модулу RX жана TX аркылуу байланышат. Байланыштар төмөнкүчө:

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

2 -кадам: Нормаланган маалымат базасы

Нормаланган маалымат базасы
Нормаланган маалымат базасы

Экинчи кадам - нормалдуу маалымат базасын түзүү. Мен ERDди Mysqlде иштеп чыктым. Сиз менин базам голланд тилинде жазылганын көрөсүз, мен бул жактагы таблицаларды түшүндүрөм.

'Ploeg' таблицасы:

Бул стол велоспорт клубдары үчүн стол. Анда велоклубдун IDси жана велоклубдун аталышы камтылган.

"Renners" столу:

Бул стол велосипедчилер үчүн стол. Ар бир велосипедчинде LoRaID бар, ал ошондой эле столдун негизги ачкычы. Ошондой эле алардын фамилиясы, аты, келип чыккан өлкөсү жана велоклубдун столуна байланышкан велоклубдун идентификатору бар.

"Плацен" таблицасы:

Бул стол Бельгияда веложарыш өтүшү мүмкүн болгон жерлерди сактаган стол. Бул шаардын аталышын (негизги ачкыч) жана шаар жайгашкан провинцияны камтыйт.

"Wedstrijden" таблицасы:

Бул таблицада веложарыштардын баары сакталат. Таблицанын негизги ачкычы - ID. Таблицада ошондой эле веложарыштын аталышы, орундар столуна байланышкан жарыштын шаары, жарыштын алыстыгы, велосипедчилердин категориясы жана жарыштын датасы камтылган.

Таблица 'gebeurtenissen':

Бул таблицада болуп өткөн бардык окуялар сакталат. Бул, велосипедчи кырсыкка учураганда же механикалык бузулууга учураганда, окуя ушул таблицада сакталат дегенди билдирет. Таблицанын негизги ачкычы - ID. Таблицада ошондой эле окуянын датасы, позициянын кеңдиги, позициянын узундугу, велосипедчинин LoRaID жана окуянын түрү (кыйроо же механикалык бузулуу) камтылган.

"Wedstrijdrenner" таблицасы:

Бул таблица - бул көптөгөн мамилелер үчүн керек болгон стол.

3 -кадам: LoRa модулуңузду каттаңыз

LoRa модулуңузду каттаңыз
LoRa модулуңузду каттаңыз

Кодду баштоодон мурун LoRa модулуңузду LoRa шлюзунда каттоодон өткөрүшүңүз керек. Мен Бельгияда LoRa модулум үчүн байланышты уюштурган 'Proximus' телекомпаниясын колдондум. Мен LoRa түйүнүм менен жөнөткөн маалыматтар AllThingsTalk сайтынан чогултулат. Эгерде сиз дагы AllThingsTalk API'син колдонуп, маалыматыңызды чогулткуңуз келсе, бул жерден катталсаңыз болот.

AllThingsTalkке катталгандан кийин, LoRa түйүнүн каттоодон өткөрүшүңүз керек. Бул үчүн бул кадамдарды аткарсаңыз болот же жогорудагы сүрөттү карасаңыз болот.

  1. Башкы менюдагы "Түзмөктөргө" өтүңүз
  2. "Жаңы түзмөктү" чыкылдатыңыз
  3. LoRa түйүнүн тандаңыз
  4. Бардык ачкычтарды толтуруңуз.

Эми бүттүңүз! LoRa түйүнүңүз менен жөнөткөн бардык маалыматтар AllThingsTalk жаратуучусунда көрүнөт. Эгерде сизде каттоого байланыштуу көйгөйлөр пайда болсо, сиз дайыма AllThingsTalk документтерине кайрыла аласыз.

4 -кадам: Код

Кодекс
Кодекс
Кодекс
Кодекс
Кодекс
Кодекс
Кодекс
Кодекс

Бул долбоор үчүн бизге 5 коддоо тили керек болот: HTML, CSS, Java Script, Python (Flask) жана Arduino тили. Алгач мен Arduino программасын түшүндүрөм.

Arduino программасы:

Программанын башында мен кээ бир глобалдык өзгөрмөлөрдү жок кылам. Сиз GPS менен туташуу үчүн SoftwareSerial колдонуп жатканымды көрөсүз. Бул Mbili тактасында болгону 2 сериялык порт бар. Сиз GPSти Serial0го туташтыра аласыз, бирок анда мүчүлүштүктөрдү оңдоо үчүн Arduino терминалын колдоно албайсыз. Бул менин SoftwareSerial колдонушумдун себеби.

Глобалдык өзгөрмөлөрдөн кийин, мен программаны окууну оңой кылган кээ бир функцияларды жок кылам. Алар GPS координаттарын окушат, коңгуроонун үнүн чыгарышат, LoRa аркылуу баалуулуктарды жөнөтүшөт,…

Үчүнчү блок - орнотуу блогу. Бул блок казыктарды, сериялык байланышты жана I2C байланышын орноткон программанын башталышы.

Орнотуу блогунан кийин негизги программа келет. Бул негизги циклдин башында мен сенсордун активдүү экенин текшерем. Андай болсо, мен коңгуроонун үнүн чыгарам, GPS маалыматын алам жана LoRa же Bluetooth аркылуу Raspberry PIге бардык баалуулуктарды жөнөтөм. Сенсордон кийин мен акселерометрдин маанилерин окуп чыктым. Формула менен мен X жана Y огунун так бурчун эсептейм. Эгерде бул баалуулуктар чоң болсо, анда велосипедчен кулады деп тыянак чыгарсак болот. Кырсык болгондо, мен дагы коңгуроонун үнүн чыгарам, GPS маалыматын алам жана бардык баалуулуктарды LoRa же Bluetooth аркылуу Raspberry PIге жөнөтөм.

Балким сиз ойлонуп жаткандырсыз: 'Эмнеге Bluetooth жана LoRa колдоносуз?'. Себеби мен колдонгон LoRa модулунун лицензиясы менен бир аз кыйынчылыкка туш болдум. Ошентип, программаны демо үчүн иштетүү үчүн, мен бир аз убакытка Bluetooth колдонууга туура келди.

2. Арткы учу:

Арткы учу бир аз татаал. Мен Flaskты алдыңкы учу үчүн жеткиликтүү болгон маршрутум үчүн колдоном, мен фокустук баракчалардын айрымдарын автоматтык түрдө жаңыртуу үчүн socketio колдоном, мен LCD дисплейде билдирүүлөрдү көрсөтүү жана Bluetooth аркылуу билдирүүлөрдү алуу үчүн GPIO казыктарын колдоном (эгер керек болсо LoRa) жана мен Threading менен Таймерди колдонуп, AllThinksTalk APIсин үзгүлтүксүз окуп, колбанын серверин иштетем.

Мен ошондой эле SQL маалымат базасын бардык келе жаткан кырсыктарды сактоо үчүн, велосипедчилердин жеке маалыматтарын жана жарыштардын маалыматтарын окуу үчүн колдоном. Бул маалымат базасы арткы жагына туташкан жана Raspberry Piде иштейт. Мен маалымат базасы менен иштөө үчүн 'Database.py' классын колдоном.

Fritzing схемасынан белгилүү болгондой, lcd Raspberry Pi менен SPI протоколу аркылуу туташат. Аны оңой кылуу үчүн, мен 'LCD_4_20_SPI.py' классын жаздым. Бул класстын жардамы менен сиз контрастты өзгөртө аласыз, жарыктын түсүн өзгөртө аласыз, экранга билдирүүлөрдү жаза аласыз,… Эгер Bluetooth колдонууну кааласаңыз, 'SerialRaspberry.py' классын колдоно аласыз. Бул класс Bluetooth модулу менен Raspberry Pi ортосундагы сериялык байланышты башкарат. Сиз эмне кылышыңыз керек болсо, RXти TXке жана вирсага тескерисинче Raspberry Pi менен Bluetooth модулун туташтыруу керек.

Фронталдык жолдор @app.route эрежеси менен жазылган. Бул жерде сиз маалымат базасына маалыматтарды киргизүү же алуу үчүн өзүңүздүн ыңгайлаштырылган маршрутуңузду түзө аласыз. Маршруттун аягында дайыма жообуңуз бар экенин тактаңыз. Мен дайыма JSON объектин алдыңкы четине кайтарам, ката кетсе дагы. Сиз өзгөрмөнү тегерете коюу менен urlдагы өзгөрмөнү колдоно аласыз.

Мен жарыштын кыйрашы менен веб -баракча үчүн соккито колдоном. Raspberry Pi кыйраганда, мен socketio аркылуу алдыңкы четине билдирүү жөнөтөм. Фронттун акыры алар жаңы база болгон үчүн базаны кайра окуусу керек экенин билет.

Сиз менин кодумда LoRa байланышы буйрукка коюлганын көрөсүз. Эгерде сиз LoRa колдонууну кааласаңыз, AllThinksTalk APIсине суроо -талапты кайталануучу таймерди баштооңуз керек. Бул APIден сиз белгилүү LoRa түйүнү тарабынан жөнөтүлгөн сенсор маанилерин (GPS, Time, Crash түрү) аласыз. Бул баалуулуктарды маалымат базасына ката кетирүү үчүн колдонсоңуз болот.

3. Фронттун аягы:

Фронттун аягы 3 тилден турат. Вебсайттын тексти үчүн HTML, веб -сайтты белгилөө үчүн CSS жана арткы учу менен байланыш үчүн JavaScript. Менде бул долбоор үчүн 4 веб -сайт бар:

  • Index.html, анда бардык веложарыштарды таба аласыз.
  • Өзгөчө жарыш үчүн бардык кыйроолор жана механикалык бузулуулары бар барак.
  • Маалымат базасына цилиндр кошуп, алардын командасын түзөтө турган барак.
  • Маалымат базасына анын бардык катышуучулары менен жаңы жарышты кошо ала турган барак.

Аларды кантип долбоорлоо сизге толугу менен көз каранды. Кааласаңыз, менин веб -сайтымдан кандайдыр бир илхам ала аласыз. Тилекке каршы, менин веб -сайтым голланд тилинде жасалган, бул үчүн кечирим сурайм.

Менде ар бир барак үчүн өзүнчө CSS файлы жана JavaScript файлы бар. Ар бир JavaScript файлы дайындарды арткы учу аркылуу алуу үчүн алып келүүнү колдонот. Скрипт маалыматтарды алганда, html динамикалык түрдө өзгөрөт. Кырсыктарды жана механикалык бузулууларды таба турган бетте сиз бардык окуялар болгон картаны таба аласыз. Мен бул картаны көрсөтүү үчүн баракчаны колдондум.

Сиз менин бардык коддорумду Githubдан карасаңыз болот.

5 -кадам: Конструкцияларды куруңуз

Конструкцияларды куруу
Конструкцияларды куруу
Конструкцияларды куруу
Конструкцияларды куруу
Конструкцияларды куруу
Конструкцияларды куруу

Курулушту баштаардан мурун, сизде бардык материалдар БОМдон же 'Tools + Supplies' барагынан бар экенине ынангыла.

Raspberry Pi + ЖК

Биз Raspberry Pi үчүн иштен баштайбыз. Сиз ар дайым капты 3D басып чыгара аласыз, бул менин биринчи идеям болчу. Бирок менин мөөнөтүм өтө жакындап калгандыктан, мен жөнөкөй бир ишти жасоону чечтим. Мен Raspberry Piден стандарттуу корпусту алдым жана ЖК дисплейимдеги зымдар үчүн тешик жасадым. Бул үчүн, сиз жөн гана бул жөнөкөй кадамдарды:

  1. Корпустун капкагына тешик жасаңыз. Мен муну капкактын капталындагы 7 мм бургу менен жасадым. Муну жогорудагы сүрөттөн көрө аласыз.
  2. ЖК дисплейден зымдарды алып, зымдардын үстүнө башын кичирейтүү.
  3. Башты кичирейтүү үчүн күйгүзгүчтү же ысык пистолетти колдонуңуз.
  4. Корпустагы тешиктен башы кичирейип, зымдарды тартып, ЖКга кайра туташтырыңыз.

Эми Raspberry Pi үчүн корпус менен даяр болгондон кийин, ЖК дисплейинин корпусунан баштасаңыз болот. Мен LCD дисплейимдин корпусун 3D басып чыгардым, анткени бул шилтемеден интернеттен бир ишти таптым. Мен болгону иштин бийиктигин кичине өзгөртүүгө туура келди. Чийип жатам деп ойлогондо, файлдарды экспорттой аласыз жана басып чыгара баштайсыз. Эгерде сиз 3D-басып чыгарууну билбесеңиз, анда Fusion 360 менен 3D-басып чыгарууну үйрөтө аласыз.

SODAQ MBili курулуш

Мен чындыгында SODAQ Mbili башкармалыгына иш козгогон жокмун. Мен плекси айнекти колдонуп, курулуштун айланасында корпусуз компоненттеримди жайгаштырдым. Эгерде сиз дагы муну кылгыңыз келсе, анда төмөнкү кадамдарды аткарсаңыз болот:

  1. SODAQ Mbili тактасынын dimesnions менен плексигласска жазылыңыз. Өлчөмдөрү: 85mm X 56mm
  2. Плексиглассты мозаика менен кесип алыңыз.
  3. Электрондук компоненттерди плексигласка коюп, тешиктерди карандаш менен өчүрүңүз.
  4. Жаңы эле кол койгон тешиктерди жана карама -каршылыктар үчүн тешиктерди 3,5 мм бургу менен бургулаңыз.
  5. Бардык электрондук компоненттерди 3M 10мм болт жана гайкалар менен плексигласска орнотуңуз.
  6. Акыркы кадам - плексиглассты Mbili тактасынын үстүнө орнотуу. Сиз муну каршылаштар менен жасай аласыз, бирок мен плексиглассаны тактанын үстүнө орнотуу үчүн 3М 50мм болт жана 8 3М гайканы колдондум.

Сунушталууда: