Оглавление:
- Запасы
- Шаг 1: исходное состояние
- Шаг 2: BerryGPS-GSM и Raspberry Pi Zero
- Шаг 3. Панель управления местоположением и скоростью
Видео: Отслеживание GPS в реальном времени: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Подписаться Другие автора:
В этом руководстве мы покажем вам, как отслеживать местоположение в реальном времени с помощью BerryGPS-GSM, Raspberry Pi Zero и Initial State. Мы отправим долготу, широту и скорость через 3G с помощью BerryGPS-GSM в исходное состояние.
Запасы
- Raspberry Pi Zero
- BerryGPS-GSM
- Начальное состояние
Шаг 1: исходное состояние
Мы хотим передавать все наши данные о долготе, широте и скорости в облачную службу, чтобы эта служба превращала наши данные в удобную панель управления, к которой мы можем получить доступ с нашего ноутбука или мобильного устройства. Мы будем использовать начальное состояние.
Шаг 1. Зарегистрируйтесь для получения учетной записи с исходным состоянием
Перейдите на https://iot.app.initialstate.com и создайте новую учетную запись. Вы получаете 14-дневную бесплатную пробную версию, и любой, у кого есть адрес электронной почты edu, может зарегистрироваться для бесплатного студенческого плана.
Шаг 2: Установите ISStreamer
Установите модуль Python начального состояния на свой Raspberry Pi. В командной строке выполните следующую команду:
$ cd / home / pi /
$ / curl -sSL https://get.initialstate.com/python -o - | sudo bash
Шаг 3: сделайте немного автомагии
После шага 2 вы увидите что-то похожее на следующий вывод на экран:
pi @ raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o - | sudo bashPassword: Начало простой установки ISStreamer Python! Установка может занять пару минут, выпейте кофе:) Но не забудьте вернуться, у меня будут вопросы позже! Найдено easy_install: setuptools 1.1.6 Найдено pip: pip 1.5.6 из /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) основная версия pip: 1 второстепенная версия pip: 5 ISStreamer обнаружен, обновляется… Требование уже актуально: ISStreamer в Library / Python / 2.7 / site-packages Очистка… Хотите автоматически получить пример скрипта? [да / нет] Где вы хотите сохранить пример? [по умолчанию:./is_example.py] Выберите, какое приложение начального состояния вы используете: 1. app.initialstate.com 2. [НОВИНКА!] iot.app.initialstate.com Введите вариант 1 или 2: введите iot.app Имя пользователя.initialstate.com: Введите пароль iot.app.initialstate.com:
Когда вас спросят, хотите ли вы автоматически получить пример сценария, поставьте «y» вместо «да» и нажмите клавишу ввода, чтобы сохранить сценарий в папке по умолчанию. Чтобы задать вопрос о том, какое приложение вы используете, выберите 2 (если вы не зарегистрировались до ноября 2018 г.) и введите свое имя пользователя и пароль.
Шаг 4: Запустите пример сценария
Запустите тестовый сценарий, чтобы убедиться, что мы можем создать поток данных для вашей учетной записи в исходном состоянии. Напишите следующую команду:
$ python is_example.py
Шаг 5: пример данных
Вернитесь к своей учетной записи в исходном состоянии в веб-браузере. Слева на полке журнала должна появиться новая корзина данных под названием «Пример потока Python» (возможно, вам придется обновить страницу). Нажмите на эту корзину, чтобы просмотреть свои данные.
Шаг 2: BerryGPS-GSM и Raspberry Pi Zero
Если вы используете BerryGPS-GSM, вы можете следовать этому руководству, чтобы заставить работать GPS и подключить Pi через 3G с помощью PPP.
Связанное руководство также показывает, как сделать так, чтобы ваш Pi автоматически подключался к сети оператора при загрузке. Это понадобится вам, если вы планируете выполнять удаленное отслеживание.
Установить библиотеки
Вам потребуется установить следующие библиотеки:
$ sudo apt-get install python-pip
$ sudo pip install pynmea2 $ sudo pip install ISStreamer
Основной скрипт Python
Здесь мы создадим основной скрипт, который будет передавать данные GPS в исходное состояние. Код ниже создает отдельный поток, который используется для мониторинга последовательного порта. Это необходимо, потому что у нас есть пауза в основном цикле. Пауза предназначена для ограничения объема данных, которые мы загружаем через 3G.
Если бы мы сделали все в одном потоке во время паузы, последовательный буфер был бы заполнен (это FIFO), и когда мы получим следующее значение из буфера, оно устареет на несколько секунд. Это происходит каждый цикл, и в конечном итоге данные будут отставать на несколько минут или часов.
Чтобы создать скрипт python и открыть текстовый редактор, введите следующую команду:
$ nano GPStracker.py
Скопируйте и вставьте следующий код в текстовый редактор. Вам нужно будет ввести свой ключ доступа к исходному состоянию в строке 11, где написано «ВВЕДИТЕ КЛЮЧ ДОСТУПА»:
#! / usr / bin / pythonfrom gps import * from time import * import threading import datetime from ISStreamer. Streamer import Streamer gpsd = None # Настроить глобальную переменную # Настроить поток исходного состояния, ввести свой ключ доступа ниже streamer = Streamer (bucket_name = "GPS_Tracker ", bucket_key =" GPS_TRACKER ", access_key =" ВВЕДИТЕ КЛЮЧ ДОСТУПА ") class GPSDcollector (threading. Thread): def _init _ (self, threadID): threading. Thread._ init _ (self) self.threadID = threadID global gpsd #bring it in scope gpsd = gps (mode = WATCH_ENABLE) #Start GPSD self.running = True # Запустить этот поток def run (self): global gpsd while gpsdThread.running: gpsd.next () if _name_ == '_main_': gpsdThread = GPSDcollector (1) # создать поток для сбора данных try: gpsdThread.start () # запустить его, пока True: print 'GPS', gpsd.utc, 'CPU time->', datetime.datetime.now ().time (), если (gpsd.fix.longitude0) и (gpsd.fix.longitude'nan '): streamer.log ("Местоположение", "{lat}, {lon}". format (lat = gpsd.fix.latitude, lon = gpsd.fix.longitu de)) streamer.log ("скорость", gpsd.fix.speed) print 'lat', gpsd.fix.latitude, print 'lon', gpsd.fix.longitude, print 'speed', gpsd.fix.speed sleep (5) except (KeyboardInterrupt, SystemExit): # когда вы нажимаете ctrl + c print "\ nKilling Thread…" gpsdThread.running = False gpsdThread.join () # ждите, пока поток закончит то, что он делает print "Done. / NExiting"."
Сохраните и выйдите из текстового редактора, нажав CTRL + X, Y, Enter.
Запускать скрипт автоматически при загрузке
Если вы выполняете удаленный мониторинг, вам нужно, чтобы сценарий запускался при загрузке. Для этого мы создадим небольшой скрипт, который запустит основную программу Python. Введите следующую команду:
$ nano GPStrackerStart.sh
Скопируйте строки в текстовый редактор:
#! / bin / bash
сон 15 питон /home/pi/GPStracker.py &
Вышеупомянутая пауза предназначена для того, чтобы дать Pi время для загрузки и подключения через PPP.
Сделайте скрипт исполняемым:
$ chmod + x ~ / GPStrackerStart.sh
Мы будем использовать cron для запуска скрипта каждый раз при загрузке Pi:
$ crontab -e
Добавьте строку ниже внизу:
@reboot /home/pi/GPStrackerStart.sh &
Шаг 3. Панель управления местоположением и скоростью
Теперь, когда у вас есть проект, данные должны быть отправлены в исходное состояние. У вас будут данные GPS и данные о скорости. Вы можете использовать данные GPS на плитке карт для отслеживания местоположения. Для фрагмента карты обязательно установите флажок Draw Path, чтобы отслеживание вашего местоположения отображалось, как на приборной панели выше. Вы можете нанести данные о скорости на линейный график, чтобы увидеть скорость с течением времени.
Рекомендуемые:
Решающая программа для куба Рубика вслепую в реальном времени с использованием Raspberry Pi и OpenCV: 4 шага
Кубик Рубика «вслепую» в реальном времени с использованием Raspberry Pi и OpenCV: это вторая версия кубика Рубика, предназначенная для решения «вслепую». Первая версия была разработана с помощью javascript, вы можете увидеть проект RubiksCubeBlindfolded1В отличие от предыдущей, эта версия использует библиотеку OpenCV для определения цветов и е
ESP32-CAM Создание собственного автомобиля-робота с потоковой передачей видео в реальном времени: 4 шага
ESP32-CAM Создание собственного автомобиля-робота с потоковой передачей видео в реальном времени: идея состоит в том, чтобы сделать описанный здесь автомобиль-робот как можно более дешевым. Поэтому я надеюсь охватить большую целевую группу своими подробными инструкциями и выбранными компонентами для дешевой модели. Хочу представить вам свою идею машины-робота
Как сделать отслеживание данных о коронавирусе COVID 19 в реальном времени с помощью ESP8266, отображение электронной бумаги: 7 шагов
Как сделать трекер данных о коронавирусе COVID 19 в реальном времени с ESP8266, дисплей электронной бумаги: 1
Построение графика в реальном времени на Android от Arduino до HC-05: 3 шага
Построение графика в реальном времени на Android от Arduino до HC-05: Привет, вот руководство о том, как построить график значений в реальном времени из микроконтроллера, такого как Arduino, в приложение. Он использует модуль Bluetooth, такой как HC-05, чтобы действовать как устройство обмена сообщениями для передачи и приема данных между Ar
Самодельный GPS-трекер в реальном времени (SIM800L, Ublox NEO-6M, Arduino): 8 шагов
Самодельный GPS-трекер в реальном времени (SIM800L, Ublox NEO-6M, Arduino): Значит, у вас, как и у меня, валяется GSM-модуль? Тоже GPS-трекер? Мы думаем так же! В этих инструкциях я попытаюсь рассказать вам, как достичь своей цели с точки зрения новичка. Поскольку у меня не было предыдущих знаний в области электротехники (чтобы