Автономный картографический сервер с питанием от USB

в 17:40, , рубрики: картографический сервер, топографические карты

Представьте себе: вы только что добрались до начала тропы, за многие километры от цивилизации, а приложение с картами на вашем смартфоне решило, что самое время уйти в оффлайн-режим. Статус приложения? Отключено. Обновления? Забудьте об этом. Память? Заполнена. Добро пожаловать на природу, где ваш телефон потерян больше, чем вы сами.

Здесь на помощь приходит Backcountry Beacon — устройство с открытым исходным кодом, которое не зависит от Wi-Fi. В него предустановлены детализированные топографические карты USGS, которые не требуют обновлений; он оснащён надёжным GPS, точно определяющим ваше местоположение; а ещё он работает как простой файловый сервер, где можно хранить всё, что может понадобиться в походе, — будь то руководства по узлам, справочники по растениям или даже аудиокниги классиков-натуралистов, которые действительно знали своё дело.

И при этом вам не придётся таскать с собой громоздкое устройство. Backcountry Beacon компактен и может питаться от автомобильного адаптера или надёжного внешнего аккумулятора, пока вы любуетесь закатами и отгоняете белок от пакета с едой.

Особенности:

  1. Оффлайн карты и GPS: Уверенная навигация с помощью топографических карт USGS и встроенного GPS — всё это без подключения к интернету.

  2. Персональный файловый сервер: Загружайте важные для похода файлы — руководства по завязыванию узлов, справочники по растениям, аудиокниги и многое другое — и получайте к ним доступ в любое время.

  3. Портативность и питание от USB: Устройство достаточно компактно, чтобы поместиться в рюкзак, и питается через простой USB-A, так что работает столько, сколько хватает вашего аккумулятора.

  4. Простое подключение: Устройство создаёт точку доступа Wi-Fi с QR-кодом, благодаря чему подключиться и получить доступ к картам и файлам легко.

Ограничения:

  1. Ограничения скорости: С пропускной способностью около 1 МБ/с, придётся запастись терпением — устройство не предназначено для высокоскоростной передачи данных.

  2. Ограниченная многозадачность: Хотя поддерживаются несколько подключений, устройство не справляется с одновременной загрузкой множества файлов. Обрабатывайте их поочередно.

  3. Ручная загрузка файлов: Загружать карты и файлы перед походом придётся самостоятельно, так что подготовьтесь заранее.

Backcountry Beacon станет вашим верным спутником в автономных путешествиях без доступа к интернету, даже если он предпочитает работать не спеша. Он не создан для скорости, но он готов стабильно и надёжно держать вас в курсе событий, куда бы ни вела тропа.

Github-репозиторий теперь в общем доступе.

Необходимые материалы

Supplies

Для сборки вам понадобятся:

  1. Lilygo TDongle S3

  2. GPS-модуль BZ-181 FPV 

  3. Кабель Qwiic длиной 50 мм

  4. Подходящая microSD-карта (я использую эту)

  5. 3D-печатные держатели для GPS (опционально)

Список оборудования здесь довольно небольшой, и проект обойдётся менее чем в 100 долларов США, а в зависимости от выбора SD-карты и длины кабеля — и того меньше, примерно в 60 долларов.

Шаг 1: Печать держателя для GPS

Print GPS Holder

Печать GPS-держателя
Print GPS Holder

Печать GPS-держателя
Print GPS Holder

Печать GPS-держателя
Print GPS Holder

Печать GPS-держателя

Воплощение Backcountry Beacon в жизнь — слой за слоем

Пора запустить 3D-принтер и напечатать детали, которые будут удерживать GPS-модуль и обеспечивать его безопасность. В файлах ниже я разместил модели для ознакомления перед печатью.

Скачайте 3D-модели:

  1. Перейдите в папку parts3D/ в GitHub-репозитории и скачайте STL-файлы для GPS-держателя и других компонентов, которые вы планируете использовать.

Печать деталей:

Мы печатали эти детали на фотополимерном принтере с использованием материала, похожего на ABS, для обеспечения прочности. Вот настройки, которые мы использовали:

  1. Поддержки: Автоматические поддержки с плотностью 80%.

  2. Толщина слоя: 100 мкм (0,1 мм)

Из-за мелких элементов конструкции мы не можем гарантировать качество печати на FDM-принтере, но если вы умеете настраивать свою машину для создания детализированных моделей, то можете попробовать.

Нет 3D-принтера?

Не беда! Эти детали можно заказать у различных сервисов 3D-печати. Просто предоставьте им STEP-файлы, и они всё сделают за вас.

BackcountryBeacon

Шаг 2: Подключение GPS-модуля

Wiring the GPS Module

Подключение GPS-модуля
Wiring the GPS Module
Wiring the GPS Module

Теперь, когда у вас готовы все необходимые компоненты, можно подключить GPS-модуль.

И T-Dongle S3, и GPS-модуль дрона используют разъёмы Qwiic, что делает подключение относительно простым, но с одной хитростью: хотя разъёмы одинаковы, конфигурации пинов различаются. Вам нужно будет поменять местами пины на стороне GPS-разъёма — операция требует весьма аккуратного подхода, но после её завершения вы получите работающее подключение.

Конфигурация пинов разъёма Qwiic:

  • T-Dongle S3 (Qwiic): GND, 3,3 В, TX (T-Dongle), RX (T-Dongle).

  • GPS-модуль: 5V, RX (GPS), TX (GPS), GND

Настройка порядка пинов:

Чтобы сделать правильную распиновку, аккуратно используйте маленькую плоскую отвёртку или инструмент для извлечения пинов, чтобы освободить каждый пин из корпуса GPS-разъёма. Затем вставьте их в правильном порядке в соответствии с указанной конфигурацией пинов.

Если вы не знакомы с этим процессом, пример извлечения и повторной установки пинов приведён здесь.

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

Подключение GPS-модуля к T-Dongle S3:

После того как вы правильно расставили пины, подключите разъём Qwiic к GPS-модулю, а другой конец — к T-Dongle S3. Убедитесь, что соединение надёжное и что провода не натянуты и не ослаблены.

Теперь, когда подключение завершено, GPS-модуль готов начать обмен данными с T-Dongle S3. Далее переходим к установке держателя для GPS и сборке всей конструкции.

Шаг 3: Установка держателя GPS 

Installing the GPS Holder – Snap, Slide, and Secure

Установка держателя GPS
Installing the GPS Holder – Snap, Slide, and Secure
Installing the GPS Holder – Snap, Slide, and Secure

Сборка GPS-модуля

Собрать GPS-модуль с T-Dongle S3 — проще простого, для этого выполните следующие действия:

  1. Подключите кабель: Для начала соедините кабелем Qwiic T-Dongle S3 и GPS-модуль. Порядок пинов уже настроен, поэтому в дополнительных настройках необходимости нет.

  2. Установите нижний держатель GPS: Наденьте нижний держатель GPS на T-Dongle S3. Он должен плотно прилегать, но если он кажется слишком тугим или слишкмом свободным, можно слегка зашлифовать или подправить 3D-печатную деталь для идеальной посадки.

  3. Разместите GPS-модуль: Установите GPS-модуль на нижний держатель. Убедитесь, что он надёжно закреплен.

  4. Защёлкните верхний держатель: Аккуратно зафиксируйте верхний держатель GPS-модуля — он должен защёлкнуться, надёжно удерживая всё на месте.

  5. Опционально — закрепите стяжкой: Если вы планируете активные приключения в суровых условиях, можно дополнительно зафиксировать конструкцию, обмотав её стяжкой. Это добавит прочности и предотвратит расшатывание сборки при тряске.

Вот и всё! Теперь ваш GPS-модуль надёжно прикреплен к T-Dongle S3 и готов к работе. Помните, если 3D-печатные детали не идеально подходят после печати, немного шлифовки или подгонки сделают своё дело.

Шаг 4: Подготовка к компиляции

Get Ready to Compile

ESP32: Мал, да удал (с некоторыми особенностями)

Этот крошечный микроконтроллер — настоящий монстр для своего размера, но у него есть свои пределы. Представьте его как походный мультитул: очень полезный, но им нельзя свалить дерево. ESP32 отлично подходит для простых задач — он может обслуживать веб-страницы, работать с Wi-Fi и выполнять легковесные операции. Однако есть один нюанс — не стоит ждать от него высокой производительности. Этот контроллер не предназначен для работы с тяжёлыми приложениями или сложными серверами.

Почему статические файлы?

Учитывая эти ограничения, мы используем сильные стороны ESP32, полагаясь на статические файлы. Что это значит? Всё — карты, веб-интерфейсы, ресурсы — предварительно скомпилировано и хранится на microSD-карте в виде статических файлов. Когда вы подключаетесь к Backcountry Beacon, ESP32 не пытается генерировать страницы или обрабатывать запросы в режиме реального времени. Вместо этого он просто раздаёт заранее подготовленные файлы, как дружелюбный гид, протягивающий вам карту на входе в заповедник.

Ограничения нашего статического HTTPS-сервера

Вот в чём дело: подход со статическими файлами означает отсутствие динамического контента. Если вы рассчитываете на сложные веб-приложения с интерактивностью в реальном времени, это не тот случай. Наш сервер очень простой — как надёжный старый компас, который вы всегда носите с собой в рюкзаке. Он выполняет очень хорошо одну задачу: быстро и надёжно раздаёт статический контент. Но он не справится с выполнением сложных операций, обработкой данных «на лету» или обработкой множества тяжёлых запросов одновременно. Зато выигрывает в простоте и надёжности. Эта система просто работает, и это именно то, что нужно в условиях дикой природы.

Что мы компилируем?

Итак, что же у нас есть? Вот, что мы загружаем в те самые статические файлы:

  1. Оффлайн-карты: Детализированные топографические карты USGS, сохранённые в виде тайлов изображений. Это ваша основная опора, когда вы находитесь вне зоны покрытия сети, показывающая ваше точное местоположение и окружающую местность.

  2. Веб-интерфейс: HTML, CSS и JavaScript файлы, составляющие простой и интуитивно понятный интерфейс для взаимодействия с устройством. Никаких лишних элементов — только то, что необходимо для выполнения задачи.

  3. Дополнительные материалы: Всё, что может понадобиться вам на маршруте — от руководств по завязыванию узлов и PDF-файлов с описанием растений до видео на случай, если застряли в палатке из-за непогоды.

Компилируя всё это в статические файлы, мы гарантируем, что Backcountry Beacon сможет выполнять свои функции — без необходимости в интернете, обновлениях или каких-либо усложнениях. Только надёжный, готовый к использованию доступ к картам и ресурсам, которые действительно важны, когда вы находитесь далеко от ближайшей точки Wi-Fi.

Шаг 5: Подготовка SD-карты — цифровая отправная точка

Prepping Your SD Card – the Digital Trailhead

Подготовка SD-карты — цифровая тропа

Форматирование SD-карты

Прежде чем загрузить на SD-карту все карты и необходимые файлы, её нужно подготовить и очистить.

  1. Возьмите MicroSD карту: Вам понадобится карта объёмом как минимум 32 ГБ, а если вы планируете загрузить много карт и ресурсов, лучше взять карту с большим объёмом.

  2. Отформатируйте карту:

а) На Windows:

  • 32 Гб или меньше: Щёлкните правой кнопкой мыши на SD-карте в разделе «Этот компьютер», выберите «Форматировать» и выберите FAT32 в качестве файловой системы. Быстрое форматирование вполне подойдёт.

  • 64 Гб или больше: Windows может не позволить вам форматировать большие карты в FAT32, поэтому выберите вместо нее exFAT. Этот формат так же надёжен и поддерживает более крупные файлы.

б) На macOS:

  • 32 Гб или меньше: Откройте «Дисковую утилиту», выберите SD-карту и нажмите «Стереть». Выберите MS-DOS (FAT) для карт FAT32 или ExFAT для карт большего объёма, и укажите схему Master Boot Record (MBR). Затем нажмите «Стереть».

  • 64 Гб или больше: Следуйте тем же шагам, но выберите формат ExFAT.

в) На Linux:

  • 32 ГБ или меньше: Используйте команду sudo mkfs.vfat -F 32 /dev/sdX (замените X на идентификатор вашей SD-карты), чтобы отформатировать карту в FAT32.

  • 64 ГБ или больше: Отформатируйте карту в exFAT, используя команду sudo mkfs.exfat /dev/sdX. Это позволит вам эффективно использовать больший объём памяти и обрабатывать крупные файлы.

Настройка начальной структуры директорий

После форматирования и подготовки карты пора настроить структуру директорий, необходимую для работы Backcountry Beacon. Здесь будут храниться все карты, веб-ассеты и любые дополнительные материалы, которые вы хотите использовать в походе.

  1. Загрузите шаблон:

а) Перейдите в наш репозиторий GitHub и скачайте папку sdCard. В этой папке содержится шаблон структуры, который нужно будет скопировать на вашу SD-карту.

  1. Скопируйте папку sdCard:

б) Просто перетащите папку sdCard, загруженную с GitHub, в корневой каталог вашей отформатированной SD-карты. После копирования структура на вашей SD-карте должна выглядеть следующим образом:

Корневой каталог:

  • leaflet.css (для стилизации карты)

  • leaflet.js (для интерактивности карты)

  • error.png (на случай, если какой-то тайл не загрузится))

  • favicon.ico (потому что каждый хороший сайт нуждается в фавиконе)

Каталог /tiles: Здесь будут храниться тайлы карты, организованные по уровням масштабирования и координатам.

/serve Directory: Здесь будут храниться ваши дополнительные ресурсы, такие как PDF-файлы, руководства или любые другие файлы, которые могут вам понадобиться.

Шаг 6: Загрузка тайлов карты — ваш офлайн-навигатор

Downloading Map Tiles – Your Offline Navigator

Загрузка тайлов — ваш автономный навигатор
Downloading Map Tiles – Your Offline Navigator
Downloading Map Tiles – Your Offline Navigator
Downloading Map Tiles – Your Offline Navigator

Настройка и использование скрипта Node.js для загрузки тайлов карт

Прежде чем отправиться в путь с Backcountry Beacon, вам нужно загрузить на него карты, на которые вы будете полагаться в условиях отсутствия связи. Эти тайлы карт позволят вам видеть детализированную топографическую информацию без необходимости в интернет-соединении. Мы упростили этот процесс с помощью удобного скрипта на Node.js. 

1. Начните с Cache Explorer:

  1. Визуализация доступных тайлов: Прежде чем приступить к загрузке, посетите сайт Cache Explorer. Этот визуальный инструмент поможет вам понять структуру тайлов карт и даст возможность предварительно просмотреть тайлы, которые вы будете загружать. Хотя на данный момент он показывает тайлы для Гавайев, вы получите представление о том, как организованы уровни масштабирования и регионы.

  2. Планируйте загрузки: Используйте Cache Explorer, чтобы точно понять, какие тайлы и уровни масштабирования вам нужны для вашей конкретной области.

2. Настройте ваше локальное окружение:

  1. Установите Node.js: Убедитесь, что на вашем компьютере установлен Node.js. Если нет, вы можете загрузить его с официального сайта Node.js.

  2. Клонируйте репозиторий: Скачайте папку tileDownloader из нашего репозитория на GitHub и перейдите к ней в терминале.

3. Установите зависимости:

  1. Запустите npm Install: В терминале перейдите в каталог tileDownloader и выполните команду для установки необходимых зависимостей для скрипта, включая @turf/turf и @mapbox/tilebelt.

4. Загрузите тайлы:

  1. Выполните команду загрузки: Чтобы загрузить тайлы для определённого штата, например Калифорнии, до уровня масштабирования 14, выполните соответствующую команду в терминале.

node tile-downloader.js --states "California:14" --output ./tiles

  1. Каталог вывода: Флаг --output указывает, куда будут сохранены загруженные плитки. В этом примере они будут сохранены в папку с названием tiles в текущем каталоге.

5. Проверьте загрузку:

  1. Проверьте результаты: После завершения загрузки перейдите в каталог вывода и убедитесь, что тайлы загружены правильно.

  2. Организуйте файлы: Если необходимо, организуйте тайлы по соответствующим каталогам для использования с Backcountry Beacon.

6. Загрузите тайлы в Backcountry Beacon:

  1. Передача на устройство: После того как все нужные тайлы загружены, перенесите их в нужное место на microSD-карте вашего Backcountry Beacon.

  2. Протестируйте настройку: Убедитесь, что всё работает, включив Backcountry Beacon и проверив загрузку карт.

Используя Cache Explorer, вы получите чёткое представление о необходимых вам тайлах, что сделает процесс загрузки ещё проще. Следуя этим шагам, вы сможете полностью оснастить свой Backcountry Beacon детализированными картами для ваших приключений на природе.

Шаг 7: Прошивка — оживление Backcountry Beacon

Flashing the Firmware – Bringing Your Backcountry Beacon to Life

Прошивка — это мозг вашего Backcountry Beacon. Именно она превращает ESP32 в мощный портативный сервер, который даёт доступ к автономным картам и файлам в любое время, когда они вам нужны. Прошивка — это этап, на котором мы программируем ESP32 для выполнения заданных задач: раздачи предварительно скомпилированных статических файлов и управления Wi-Fi-соединениями.

Подготовка прошивки

  1. Скачивание прошивки:

а) Перейдите в GitHub репозиторий и скачайте последнюю версию прошивки для Backcountry Beacon. Прошивка находится в каталоге firmware/ и уже настроена для работы с USB-адаптером LilyGo S3.

  1. Настройка PlatformIO:

б) Вам понадобится PlatformIO, интегрированная среда разработки (IDE), которая упрощает прошивку микропрограммы на ESP32. Если вы ещё не установили её, загрузите PlatformIO в виде плагина для Visual Studio Code.

в) Откройте Visual Studio Code, перейдите в каталог firmware/, который вы скачали, и откройте его как проект в PlatformIO.

  1. Подключение ESP32:

г) Подключите USB-адаптер LilyGo S3 к компьютеру с помощью USB-кабеля. Убедитесь, что PlatformIO распознаёт устройство, проверив подключенный COM-порт в нижней панели Visual Studio Code.

  1. Конфигурация и прошивка:

д) Открыв проект в PlatformIO, убедитесь, что выбрана правильная конфигурация платы. Файл platformio.ini в каталоге firmware/ уже настроен для ESP32, так что вам не нужно вносить изменения.

е) Нажмите кнопку «Загрузить» в PlatformIO (она выглядит как стрелка вверх), чтобы начать процесс прошивки. PlatformIO скомпилирует прошивку и загрузит её в ESP32. Это может занять несколько минут, но по завершении ваш ESP32 станет полноценным Backcountry Beacon!

  1. Проверка прошивки:

ж) После завершения прошивки откройте Serial Monitor в PlatformIO, чтобы убедиться, что ESP32 работает правильно. Вы должны увидеть сообщения о состоянии, указывающие на то, что устройство загружается и готово к раздаче файлов.

Что дальше?

После прошивки ваш Backcountry Beacon полностью готов к работе. Осталось только включить его, подключиться к его Wi-Fi сети и начать исследовать ваши офлайн-карты и ресурсы. 

Шаг 8: Вперёд, исследуйте мир

Get Out and Explore

Итак, ваш Backcountry Beacon готов сопровождать вас в новом приключении. Но это только начало.

  • Сделайте его своим: Независимо от того, настраиваете ли вы устройство под себя, исследуете новые способы его использования или добавляете личные штрихи, этот проект — ваша возможность для творчества. Ваша креативность и любопытство — главные движущие силы, которые помогут максимально раскрыть потенциал вашего Backcountry Beacon.

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

  • Самое главное — выходите на улицу: Теперь, когда ваше устройство готово, пора отправляться в путь. Мир ждёт, чтобы его исследовали, и Backcountry Beacon поможет вам ориентироваться и открывать новые места. Наслаждайтесь свежим воздухом, принимайте вызовы приключений и получайте максимум от каждого путешествия.


Все необходимые навыки программирования можно развить на онлайн-курсах под руководством экспертов. В каталоге можно посмотреть все программы, а в календаре — записаться на открытые уроки.

Автор: kmoseenk

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js