Съдържание:

Картографът на пътя: 6 стъпки
Картографът на пътя: 6 стъпки

Видео: Картографът на пътя: 6 стъпки

Видео: Картографът на пътя: 6 стъпки
Видео: Название на стихът: "Картография на Съдбата" 2024, Ноември
Anonim
Картографът на пътя
Картографът на пътя
Картографът на пътя
Картографът на пътя
Картографът на пътя
Картографът на пътя

В този проект на IoT ние свързваме NEO-6M (GPS модул), за да доставяме локални данни през Arduino до лист на Excel, който ще бъде записан на компютъра. След това с Tableau Public създаваме визуализация на тези данни, за да очертаем пътя, който сме поели. Въпреки че това е един от начините за събиране и представяне на данни в реално време във високо корелирани данни, а именно, този процес може да се приложи и към други проекти, управлявани от данни.

Стъпка 1: Придобиване на материали

Придобиване на материали
Придобиване на материали

За този проект ще ви трябва следното:

  • GPS модул NEO-6M
  • Arduino Uno
  • Мъжки/мъжки проводници (ще ви трябват 4 проводника)
  • USB 2.0 кабел тип A до B
  • Компютър с тези програми: Tableau Public, Arduino IDE (с TinyGPS ++) и Processing

Стъпка 2: Настройка на устройствата

Настройване на устройствата
Настройване на устройствата
Настройване на устройствата
Настройване на устройствата

Първо трябва да настроим GPS модула с Arduino UNO, за да може Arduino да ни даде интерфейс за показване на данните. Всеки от четирите проводника, свързани към NEO-6M, съответства на специфични портове. Ако вашият NEO-6M не идва с кабелите, ще трябва да го свържете директно с джъмперни проводници. В горната диаграма червеното съответства на мощността (VCC), черното към земята (GND), жълтото за предаване на данни (TxD) и бялото за приемане на данни (RxD). Свързваме тези проводници към мъжки/мъжки проводници, за да можем да ги свържем с Arduino. Следвайки диаграмата по -горе, ние свързваме заземяващия проводник към цифровия щифт GND на Arduino, проводника TxD към 4, проводника RxD към ~ 3 и VCC проводника към 5V за напрежение. В бъдеща стъпка ще трябва да дефинираме TxD и RxD с правилните числа в SoftwareSerial.

След като двете устройства са свързани помежду си, трябва да осигурим източник на захранване. Свържете USB 2.0 кабела към вашия лаптоп и светлината на NEO-6M трябва да светне.

Стъпка 3: Кодиране на Arduino за извличане на данни

Кодиране на Arduino за извличане на данни
Кодиране на Arduino за извличане на данни

Сега, когато сме настроили устройствата за събиране на GPS данни от спътниците, ще напишем код, за да анализираме желаните от нас GPS данни. Ако приемем, че сте взели сигнал (моят GPS модул ще мига в синьо), NEO-6M по подразбиране отпечатва необработени данни на серийния монитор под формата на съобщения NMEA, които изглеждат като $ GP, последвани от още букви и поредица на числа. Изображението по -горе дава обща представа за това какво трябва да се показва на вашия сериен монитор, след като бъде поставен основният код на Arduino.

За да обясните кода, който съм приложил (или ако искате да опитате да го кодирате сами), първо трябва да включите както библиотеките SoftwareSerial, така и TinyGPS ++ (за последната Sketch> Include> Add. ZIP). SoftwareSerial ни позволява да имаме серийна връзка; TinyGPS ++ ни дава лесен инструмент за отпечатване на целевата информация в четлива форма. Уверете се, че инициализирате обекта SoftwareSerial към съответните щифтове на Arduino. Във функцията за настройка използваме 9600 като скорост на предаване.

За целите на тази инструкция ще отпечатаме само седем вида данни във функцията за цикъл: географска ширина (градуси), дължина (градуси), скорост (км), курс (градуси), надморска височина (км), брой сателити в use и hdop. Можете да търсите синтаксиса за отпечатване на тази информация в библиотеката Arduiniana. Общата форма е Serial.print (). Например, за да отпечатате географска дължина, бихме написали Serial.print (gps.location.lng (), 6). 6 представлява колко цифри искаме вдясно от десетичната запетая.

Моят код има допълнителни символи, отпечатани в името на лесно форматирано регулярно изражение в следващата стъпка. Ако обаче искате да спрете на тази стъпка, не се колебайте да форматирате данните по различен начин за по -лесен изглед на серийния монитор.

Стъпка 4: Използване на обработката за слушане

Използване на обработката за слушане
Използване на обработката за слушане

Въпреки че имаме код за настройката на Arduino IDE, имаме проблем със запазването на тези данни. Към момента можем да преглеждаме данните само на серийния монитор, докато ги събираме. Има много начини за регистриране на тези данни, но аз избрах Processing преди всичко, защото неговият интерфейс имитира Arduino IDE и използва Java, език, който ми е познат (имайте предвид, че можете също да контролирате дъската Arduino с Processing, ако изтеглите Firmata). Обработката се вслушва в порта, свързан към Arduino и има възможност да манипулира данните, които се четат на серийния монитор. За да намерите името на този порт, се върнете към вашия Arduino IDE файл и проверете в Инструменти> Порт.

Предоставих кода за обработка, но ето кратък преглед за това как работи кодът.

Преди функцията за настройка се уверете, че имате променливи за порта, получената таблица, реда, с който ще работим, и името на файла. След това във функцията за настройка има параметри за задаване на размера на прозореца Run, но тези числа не влияят на нашата функционалност (например задайте ги на (500, 500)). Когато инициализирате порта, използвайте името на порта в String форма и скорост на предаване 9600. И накрая, създайте деветте колони (за седемте GPS категории, час и дата), за да инициализирате таблицата.

Във функцията за теглене използваме вградените функции за дата и час, за да следим кога се извлича всеки набор от GPS данни. Сега, за да прочетем потока от данни от Arduino и да го поставим под съответните заглавки с правилния час и дата, използваме регулярни изрази.

Използвам regex, за да анализирам точните данни с функцията matchAll, която търси всеки израз между знака за равенство и точката с запетая (разделителите, които поставям в кода на Arduino). Това впоследствие поставя всички съвпадащи тагове, числовите данни, в двуизмерен масив. След това можем да извикаме тези индекси на масиви, за да ги поставим под заглавките на листа на Excel.

За да запазим новия.csv файл, използваме натискане на клавиш, за да затворим прозореца Run. Колкото по -дълго чакате да натиснете клавиш, толкова повече данни ще съберете. Следвайки начина на друго ръководство, също реших да запиша файла в папката с данни с дата и час като име на файла.

Стъпка 5: Показване на данни на Tableau Public

Показване на данни на Tableau Public
Показване на данни на Tableau Public
Показване на данни на Tableau Public
Показване на данни на Tableau Public
Показване на данни на Tableau Public
Показване на данни на Tableau Public

Последната стъпка включва известна визуализация на данни. Има много програми за създаване и показване на визуализации на данни, т.е. Plotly, но за този проект ще използваме Tableau. Отворете Tableau Public и отворете записания Excel файл като текстов файл. За да създадете работен лист, щракнете върху лист 1 в долната лява ръка.

Тъй като работим с GPS данни, ще използваме карта за изобразяване на нашата информация. В лявата колона, където пише Measures, ще плъзнем Longitude в колони и Latitude в редове в горната част. Tableau по подразбиране и двете мерки са AVG, така че кликнете върху падащото меню до условията и променете и двете на Dimension. Сега картата трябва да има показан път, като се използват събраните стойности за географска ширина и дължина.

За да изчистите данните си от грешка (което може да се направи и преди да отворите Tableau), можете да изберете да изключите някои кръгове за местоположение, като щракнете върху тях и изберете опцията. Моят GPS модул не е 100% точен, тъй като някои части от пътя ми не са локализирани, но общият път е записан.

Стъпка 6: Прецизиране на Viz

Подобряване на Viz
Подобряване на Viz

Последната част е да направим тези данни по -четими. Ако искате уличен контекст, можете да отидете на Карта> Слой на картата> Улици и магистрали. Чувствайте се свободни да експериментирате с други знаци. Плъзнах скорост над цвят, за да покажа как интензитетът на цвета се увеличава, когато скоростта се увеличава. Използвах също Детайл вместо Етикет за курс, защото етикетът ще показва числата на картата, докато исках информация да се появи само когато задържите курсора на мишката върху точките за местоположение.

Сега, след като сте изпитали целия процес на събиране на данни и показване на това, което имате за визуализация на данни, можете да приложите това към други проекти!

от Pingdi Huang, лято 2018

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