Съдържание:

Модул за проследяване за велосипедисти: 5 стъпки
Модул за проследяване за велосипедисти: 5 стъпки

Видео: Модул за проследяване за велосипедисти: 5 стъпки

Видео: Модул за проследяване за велосипедисти: 5 стъпки
Видео: Германски мотоциклет MAW от 1955 г.! Демонтаж, преглед на дизайна 2024, Юли
Anonim
Модул за проследяване за велосипедисти
Модул за проследяване за велосипедисти

Този модул за проследяване на велосипедисти е модул, който автоматично открива катастрофи в състезание и който открива механична повреда чрез докосване на сензор за докосване. Когато се случи едно от тези събития, модулът изпраща събитието в база данни на малинов pi чрез LoRa. Това събитие ще бъде показано на LCD дисплей и на уебсайт. Можете също да търсите на уебсайта за конкретно колоездачно състезание със събитията и да добавите колоездачни състезания или колоездачи към базата данни. Направих този проект, защото много се интересувам от колоездене и IOT, така че комбинирането на тези две теми беше много вълнуващо за мен.

Преди да можете да направите модул за проследяване на велосипедисти, трябва да съберете материалите си. Можете да намерите инструментите и консумативите в списъците по -долу или можете да изтеглите BOM (Build Of Materials).

Консумативи:

  • плекси стъкло (56 мм х 85 мм)
  • 10 X 2M болтове 10 мм и гайки
  • 10 X 3M болтове 10 мм и гайки
  • 2 X 3M болта 50 мм и гайки
  • PLA нишка за 3D отпечатване на вашия LCD корпус
  • термосвиваемо
  • Мъжки към женски кабели
  • Основна печатна платка
  • Заглавки за мъже
  • Малина Pi 3b+
  • 16GB SD карта
  • Sparkfun 4X20 LCD
  • Капацитивен сензор за докосване
  • Звуков сигнал
  • Триосен акселерометър + жиромер
  • GPS модул
  • Дъска на SODAQ Mbili
  • Модул LoRa WAN
  • 3.7V 1000mAh батерия
  • Захранване Raspberry Pi 3b+

Инструменти:

  • Калай за запояване
  • Поялник
  • Клещи
  • Отвертки
  • Мозайката
  • Пробивна машина
  • 2,5 и 3,5 бормашини
  • Запалка / пистолет за горещ въздух

Ако трябва да закупите всички консумативи, ще ви трябва бюджет от 541,67 евро. Този проект е много скъп, защото използвах комплект за разработка на LoRa rappid, който струва 299 евро (имах възможност да използвам този комплект от моето училище). Винаги можете да използвате нормален Arduino и да спестите много пари, но тогава програмите ще бъдат различни.

Стъпка 1: Схема за оформяне

Схема за фриттинг
Схема за фриттинг
Схема за фриттинг
Схема за фриттинг

Първата стъпка е изграждането на вериги. За този проект имаме 2 електрически вериги, една с Raspberry Pi и една с платка SADAQ Mbili. Ще започнем с схемата Raspberry Pi.

Схема за фризиране на Raspberry Pi:

Схемата 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 LCD при фризиране. Всички връзки обаче са някои, така че няма особено значение.

SODAQ Mbili Fritzing схема:

Ще свържем 4 електронни компонента с платката SODAQ Mbili, така че тази електрическа схема също е много проста. Ще започнем с свързването на сензора за докосване Capactive. Този сензор OUT-pin ще бъде ВИСОК при докосване на сензора и в противен случай ще бъде НИСКИ. Това означава, че OUT-изводът е цифров изход, който можем да свържем с цифров вход на платката Mbili. Връзките са както следва:

  • OUT сензор за докосване D5 Mbili
  • VCC сензор за докосване 3.3V Mbili
  • GND Сензор за докосване GND Mbili

Вторият компонент е Triple acces + gyro sensor. Използвах платката GY-521, която използва протокола I2C за комуникация с платката Mbili. Забележете, че AD0-изводът на платката GY-521 трябва да бъде свързан с VCC на платката Mbili! Това е така, защото платката Mbili има часовник със същия I2C адрес като GY-521. Чрез свързване на AD0-пина към VCC променяме I2C адреса на GY-521. Връзките са както следва:

  • 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

След това ще свържем зумера. Използвам стандартния зумер, който издава звук, когато има ток. Това означава, че можем просто да свържем зумера с цифров щифт на платката Mbili. Връзките са както следва:

  • + Звуков сигнал D4 Mbili
  • - Звуков сигнал 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“:

Тази таблица е маса за велосипедните клубове. Той съдържа идентификационен номер на велосипеден клуб и име на клуб за колоездене.

Таблица „наематели“:

Тази таблица е маса за велосипедистите. Всеки колоездач има LoRaID, който е и първичният ключ на таблицата. Те също имат фамилия, име, държава на произход и идентификационен номер на велосипеден клуб, който е свързан с масата на велосипедния клуб.

Таблица „plaatsen“:

Тази таблица е маса, която съхранява местата в Белгия, където може да се проведе колоездене. Той съдържа името на града (който е първичен ключ) и провинцията, в която се намира градът.

Таблица „wedstrijden“:

Тази таблица съхранява всички колоездачни състезания. Първичният ключ на таблицата е идентификационен номер. Таблицата съдържа също името на колоездачното състезание, града на състезанието, който е свързан с таблицата с места, разстоянието на състезанието, категорията на колоездачите и датата на състезанието.

Таблица „gebeurtenissen“:

Тази таблица съхранява всички събития, които се случват. Това означава, че когато колоездач участва в катастрофа или има механична повреда, събитието ще се съхранява в тази таблица. Първичният ключ на таблицата е идентификационен номер. Таблицата съдържа също дата и час на събитието, географска ширина на позицията, дължина на позицията, LoRaID на колоездача и вида на събитието (катастрофа или механична повреда).

Таблица „wedstrijdrenner“:

Тази таблица е таблица, която е необходима за връзката много към много.

Стъпка 3: Регистрирайте своя LoRa модул

Регистрирайте своя LoRa модул
Регистрирайте своя LoRa модул

Преди да започнете с кода, трябва да регистрирате модула си LoRa в шлюз LoRa. Използвах телекомуникационна компания в Белгия, наречена „Proximus“, която организира комуникацията за моя модул LoRa. Данните, които изпращам с моя възел LoRa, се събират на уебсайта от AllThingsTalk. Ако също искате да използвате AllThingsTalk API за събиране на вашите данни, можете да се регистрирате тук.

След като се регистрирате на AllThingsTalk, трябва да регистрирате вашия LoRa възел. За да направите това, можете да изпълните тези стъпки или да погледнете снимката по -горе.

  1. Отидете на „Устройства“в главното меню
  2. Кликнете върху „Ново устройство“
  3. Изберете вашия възел LoRa
  4. Попълнете всички ключове.

Сега сте готови! Всички данни, които изпращате с вашия възел LoRa, ще се появят във вашия AllThingsTalk maker. Ако имате някакви проблеми с регистрацията, винаги можете да се консултирате с документите на AllThingsTalk.

Стъпка 4: Кодът

Кодът
Кодът
Кодът
Кодът
Кодът
Кодът
Кодът
Кодът

За този проект ще ни трябват 5 кодиращи езика: HTML, CSS, Java Script, Python (Flask) и езикът Arduino. Първо ще обясня програмата Arduino.

Програмата Arduino:

В началото на програмата декларирам някои глобални променливи. Ще видите, че използвам SoftwareSerial за връзката с моя GPS. Това е така, защото платката 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, за да актуализирам автоматично някои от предните страници, използвам пиновете GPIO, за да показвам съобщения на LCD дисплей и да получавам съобщения чрез Bluetooth (не е необходимо, ако използвате LoRa) и аз използвам Threading и Timers, за да чета редовно API на AllThinksTalk и да стартирам сървъра за колби.

Аз също използвам базата данни на SQL, за да съхранявам всички входящи сривове, да чета личните данни на велосипедистите и данните за състезанията. Тази база данни е свързана към back-end и също работи на Raspberry Pi. Използвам клас „Database.py“за взаимодействие с базата данни.

Както знаете от схемата Fritzing, lcd е свързан към Raspberry Pi чрез SPI протокол. За да направя малко по -лесно, написах клас 'LCD_4_20_SPI.py'. С този клас можете да промените контраста, да промените цвета на подсветката, да пишете съобщения на екрана,…. Ако искате да използвате Bluetooth, можете да използвате класа 'SerialRaspberry.py'. Този клас управлява серийната комуникация между Bluetooth модула и Raspberry Pi. Единственото нещо, което трябва да направите, е да свържете Bluetooth модул към Raspberry Pi, като свържете RX към TX и virsa обратно.

Маршрутите за предния край са написани с правилото @app.route. Тук можете да направите свой собствен персонализиран маршрут за вмъкване или получаване на данни във или от базата данни. Уверете се, че винаги имате отговор в края на маршрута. Винаги връщам JSON обект към предния край, дори когато възникне грешка. Можете да използвате променлива в URL адреса, като поставите около променливата около.

Използвам socketio за уеб страницата с катастрофите на състезание. Когато Raspberry Pi получи срив, излъчвам съобщение до предния край чрез socketio. Тогава предният край знае, че те трябва да прочетат базата данни отново, защото имаше нов срив.

Ще видите, че в моя код комуникацията LoRa е зададена като команда. Ако искате да използвате LoRa, трябва да стартирате таймер, който повтарящо се изпраща заявка до API на AllThinksTalk. От този API ще получите стойностите на сензора (GPS, Time, Crash kind), които се изпращат от конкретен възел LoRa. Можете да използвате тези стойности, за да вмъкнете срив в базата данни.

3. Лицевият край:

Предният край се състои от 3 езика. HTML за текста на уебсайта, CSS за маркиране на уебсайта и JavaScript за комуникацията с задната част. Имам 4 страници на уебсайт за този проект:

  • Index.html, където можете да намерите всички колоездачни състезания.
  • Страница с всички сривове и механични повреди за конкретно състезание.
  • Страница, където можете да добавяте цилиндри към базата данни и да редактирате техния екип.
  • Страница, където можете да добавите ново състезание с всички негови участници в базата данни.

Как ще ги проектирате зависи изцяло от вас. Можете да получите малко вдъхновение от моя уебсайт, ако искате. За съжаление уебсайтът ми е на холандски език, съжалявам за това.

Имам отделно CSS файл и JavaScript файл за всяка страница. Всеки JavaScript файл използва извличане, за да получи данните от базата данни през задния край. Когато скриптът получи данните, html се променя динамично. На страницата, където можете да намерите сривове и механични повреди, ще намерите карта, на която са се случили всички събития. Използвах листовка, за да покажа тази карта.

Можете да разгледате целия ми код тук в моя Github.

Стъпка 5: Изградете конструкциите

Изградете конструкциите
Изградете конструкциите
Изградете конструкциите
Изградете конструкциите
Изградете конструкциите
Изградете конструкциите

Преди да започнем строителството, уверете се, че имате всички материали от спецификацията или от страницата „Инструменти + консумативи“.

Raspberry Pi + LCD

Ще започнем със случая за Raspberry Pi. Винаги можете да отпечатате 3D калъф, това беше и първата ми идея. Но тъй като срокът ми наближаваше, реших да направя един прост случай. Взех стандартния калъф от Raspberry Pi и пробих дупка в кутията за проводниците от моя LCD дисплей. За да направите това, просто следвайте тези прости стъпки:

  1. Пробийте дупка в капака на кутията. Направих това със 7 мм бормашина отстрани на капака. Можете да видите това на снимката по -горе.
  2. Вземете проводниците от LCD дисплея и плъзнете глава, която се свива по проводниците.
  3. Използвайте запалка или пистолет с горещ въздух, за да намалите свиването на главата.
  4. Издърпайте проводниците, като главата се свива през отвора в кутията, и ги свържете отново към LCD дисплея.

Сега, когато сте готови с калъфа за Raspberry Pi, можете да започнете с калъфа за LCD дисплея. Отпечатах 3D калъфа за моя LCD дисплей, защото намерих калъф онлайн на тази връзка. Трябваше само да направя малка промяна във височината на кутията. Когато смятате, че рисувате добре, можете да експортирате файловете и да започнете да печатате. Ако не знаете как да 3D-печат, можете да следвате тази инструкция за това как да 3D-печат с fusion 360.

SODAQ MBili конструкция

Всъщност не направих случай за борда на SODAQ Mbili. Използвах плекси стъкло, за да поставя компонентите си без кутия около конструкцията. Ако искате да направите и това, можете да изпълните следните стъпки:

  1. Отпишете плексигласа с размерите на дъската SODAQ Mbili. Размерите са: 85 мм х 56 мм
  2. Изрежете плексигласа с мозайката.
  3. Поставете електронните компоненти върху плексигласа и подпишете дупките с молив.
  4. Пробийте дупките, които току -що сте подписали, и дупките за отстояванията с бормашина 3,5 мм.
  5. Монтирайте всички електронни компоненти върху плексигласа с 3M 10 мм болтове и гайки.
  6. Последната стъпка е да монтирате плексигласа над дъската Mbili. Можете да направите това със стойки, но аз използвах два 3M 50 мм болта и 8 3M гайки, за да монтирам плексигласа над дъската.

Препоръчано: