Оглавление:

Составитель пути: 6 шагов
Составитель пути: 6 шагов

Видео: Составитель пути: 6 шагов

Видео: Составитель пути: 6 шагов
Видео: БОКОВУШЕЧКА У ТУАЛЕТА в плацкарте 2024, Ноябрь
Anonim
Картограф пути
Картограф пути
Картограф пути
Картограф пути
Картограф пути
Картограф пути

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

Шаг 1. Получение материалов

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

Для этого проекта вам понадобится следующее:

  • Модуль GPS НЕО-6М
  • Ардуино Уно
  • Перемычки папа / папа (вам понадобится 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 к 5 В для напряжения. На следующем этапе нам нужно будет определить 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 library). SoftwareSerial позволяет нам иметь последовательное соединение; TinyGPS ++ дает нам простой инструмент для распечатки целевой информации в удобочитаемой форме. Убедитесь, что вы инициализировали объект SoftwareSerial соответствующими контактами на Arduino. В функции настройки мы используем 9600 в качестве скорости передачи.

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

В моем коде напечатаны дополнительные символы для легко форматируемого регулярного выражения на следующем шаге. Однако, если вы хотите остановиться на этом шаге, не стесняйтесь форматировать данные по-другому для облегчения просмотра на последовательном мониторе.

Шаг 4. Использование обработки для прослушивания

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

Хотя у нас есть настроенный код для IDE Arduino, у нас есть проблема с сохранением этих данных. На данный момент мы можем просматривать данные на последовательном мониторе только по мере их сбора. Есть много способов регистрировать эти данные, но я выбрал Обработку в первую очередь потому, что его интерфейс имитирует IDE Arduino и использует Java, язык, с которым я знаком (обратите внимание, что вы также можете управлять платой Arduino с помощью Processing, если загрузите Firmata). Обработка прослушивает порт, подключенный к Arduino, и имеет возможность манипулировать данными, которые считываются на последовательный монитор. Чтобы найти имя этого порта, вернитесь к своему файлу IDE Arduino и выберите Инструменты> Порт.

Я предоставил код обработки, но вот краткий обзор того, как он работает.

Перед функцией настройки убедитесь, что у вас есть переменные для порта, итоговой таблицы, строки, с которой мы будем работать, и имени файла. Затем в функции настройки есть параметры для установки размера вашего окна Run, но эти числа не влияют на нашу функциональность (например, установите их на (500, 500)). Когда вы инициализируете порт, используйте имя порта в строковой форме и скорость передачи 9600 бод. Наконец, создайте девять столбцов (для семи категорий GPS, времени и даты) для инициализации таблицы.

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

Я использую регулярное выражение для анализа точных данных с помощью функции matchAll, которая ищет любое выражение между знаком равенства и точкой с запятой (разделители, которые я вставил в свой код Arduino). Это впоследствии помещает все совпавшие теги, числовые данные, в двумерный массив. Затем мы можем вызвать эти индексы массивов, чтобы поместить их под заголовками таблицы Excel.

Чтобы сохранить новый файл.csv, мы используем нажатие клавиши, чтобы закрыть окно «Выполнить». Чем дольше вы ждете нажатия клавиши, тем больше данных вы соберете. Следуя манере другого руководства, я также решил сохранить файл в папку данных с датой и временем в качестве имени файла.

Шаг 5. Отображение данных на Tableau Public

Отображение данных на Tableau Public
Отображение данных на Tableau Public
Отображение данных на Tableau Public
Отображение данных на Tableau Public
Отображение данных на Tableau Public
Отображение данных на Tableau Public

Последний шаг включает в себя визуализацию данных. Существует множество программ для создания и отображения визуализаций данных, например, Plotly, но для этого проекта мы будем использовать Tableau. Откройте Tableau Public и откройте сохраненный файл Excel как текстовый файл. Чтобы создать рабочий лист, щелкните Лист 1 в нижнем левом углу.

Поскольку мы работаем с данными GPS, мы будем использовать карту для отображения нашей информации. В левом столбце, где написано «Меры», мы перетащим долготу в столбцы и широту в строки вверху. По умолчанию для обоих показателей в Tableau установлено значение AVG, поэтому щелкните раскрывающийся список рядом с условиями и измените оба показателя на «Размер». Теперь на карте должен отображаться путь с использованием собранных значений широты и долготы.

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

Шаг 6: уточнение визуализации

Улучшение Viz
Улучшение Viz

Последняя часть - сделать эти данные более читабельными. Если вам нужен уличный контекст, вы можете выбрать «Карта»> «Слой карты»> «Улицы и шоссе». Не стесняйтесь экспериментировать с другими Знаками. Я перетащил Скорость на Цвет, чтобы показать, как интенсивность цвета увеличивается при увеличении скорости. Я также использовал деталь вместо метки для курса, потому что метка будет отображать числа на карте, тогда как я хотел, чтобы информация всплывала только при наведении курсора на точки местоположения.

Теперь, когда вы испытали весь процесс сбора данных и отображения того, что у вас есть в визуализации данных, вы можете применить это к другим проектам!

Автор: Пинди Хуанг, лето 2018 г.

Рекомендуемые: