[Перевод] Автономный картографический сервер с питанием от USB
Представьте себе: вы только что добрались до начала тропы, за многие километры от цивилизации, а приложение с картами на вашем смартфоне решило, что самое время уйти в оффлайн-режим. Статус приложения? Отключено. Обновления? Забудьте об этом. Память? Заполнена. Добро пожаловать на природу, где ваш телефон потерян больше, чем вы сами.
Здесь на помощь приходит Backcountry Beacon — устройство с открытым исходным кодом, которое не зависит от Wi-Fi. В него предустановлены детализированные топографические карты USGS, которые не требуют обновлений; он оснащён надёжным GPS, точно определяющим ваше местоположение;, а ещё он работает как простой файловый сервер, где можно хранить всё, что может понадобиться в походе, — будь то руководства по узлам, справочники по растениям или даже аудиокниги классиков-натуралистов, которые действительно знали своё дело.
И при этом вам не придётся таскать с собой громоздкое устройство. Backcountry Beacon компактен и может питаться от автомобильного адаптера или надёжного внешнего аккумулятора, пока вы любуетесь закатами и отгоняете белок от пакета с едой.
Особенности:
Оффлайн карты и GPS: Уверенная навигация с помощью топографических карт USGS и встроенного GPS — всё это без подключения к интернету.
Персональный файловый сервер: Загружайте важные для похода файлы — руководства по завязыванию узлов, справочники по растениям, аудиокниги и многое другое — и получайте к ним доступ в любое время.
Портативность и питание от USB: Устройство достаточно компактно, чтобы поместиться в рюкзак, и питается через простой USB-A, так что работает столько, сколько хватает вашего аккумулятора.
Простое подключение: Устройство создаёт точку доступа Wi-Fi с QR-кодом, благодаря чему подключиться и получить доступ к картам и файлам легко.
Ограничения:
Ограничения скорости: С пропускной способностью около 1 МБ/с, придётся запастись терпением — устройство не предназначено для высокоскоростной передачи данных.
Ограниченная многозадачность: Хотя поддерживаются несколько подключений, устройство не справляется с одновременной загрузкой множества файлов. Обрабатывайте их поочередно.
Ручная загрузка файлов: Загружать карты и файлы перед походом придётся самостоятельно, так что подготовьтесь заранее.
Backcountry Beacon станет вашим верным спутником в автономных путешествиях без доступа к интернету, даже если он предпочитает работать не спеша. Он не создан для скорости, но он готов стабильно и надёжно держать вас в курсе событий, куда бы ни вела тропа.
Github-репозиторий теперь в общем доступе.
Необходимые материалы
Для сборки вам понадобятся:
Lilygo TDongle S3
GPS-модуль BZ-181 FPV
Кабель Qwiic длиной 50 мм
Подходящая microSD-карта (я использую эту)
3D-печатные держатели для GPS (опционально)
Список оборудования здесь довольно небольшой, и проект обойдётся менее чем в 100 долларов США, а в зависимости от выбора SD-карты и длины кабеля — и того меньше, примерно в 60 долларов.
Шаг 1: Печать держателя для GPS
Печать GPS-держателя
Печать GPS-держателя
Печать GPS-держателя
Печать GPS-держателя
Воплощение Backcountry Beacon в жизнь — слой за слоем
Пора запустить 3D-принтер и напечатать детали, которые будут удерживать GPS-модуль и обеспечивать его безопасность. В файлах ниже я разместил модели для ознакомления перед печатью.
Скачайте 3D-модели:
Перейдите в папку parts3D/ в GitHub-репозитории и скачайте STL-файлы для GPS-держателя и других компонентов, которые вы планируете использовать.
Печать деталей:
Мы печатали эти детали на фотополимерном принтере с использованием материала, похожего на ABS, для обеспечения прочности. Вот настройки, которые мы использовали:
Поддержки: Автоматические поддержки с плотностью 80%.
Толщина слоя: 100 мкм (0,1 мм)
Из-за мелких элементов конструкции мы не можем гарантировать качество печати на FDM-принтере, но если вы умеете настраивать свою машину для создания детализированных моделей, то можете попробовать.
Нет 3D-принтера?
Не беда! Эти детали можно заказать у различных сервисов 3D-печати. Просто предоставьте им STEP-файлы, и они всё сделают за вас.
BackcountryBeacon
Шаг 2: Подключение GPS-модуля
Подключение GPS-модуля
Теперь, когда у вас готовы все необходимые компоненты, можно подключить 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
Установка держателя GPS
Сборка GPS-модуля
Собрать GPS-модуль с T-Dongle S3 — проще простого, для этого выполните следующие действия:
Подключите кабель: Для начала соедините кабелем Qwiic T-Dongle S3 и GPS-модуль. Порядок пинов уже настроен, поэтому в дополнительных настройках необходимости нет.
Установите нижний держатель GPS: Наденьте нижний держатель GPS на T-Dongle S3. Он должен плотно прилегать, но если он кажется слишком тугим или слишкмом свободным, можно слегка зашлифовать или подправить 3D-печатную деталь для идеальной посадки.
Разместите GPS-модуль: Установите GPS-модуль на нижний держатель. Убедитесь, что он надёжно закреплен.
Защёлкните верхний держатель: Аккуратно зафиксируйте верхний держатель GPS-модуля — он должен защёлкнуться, надёжно удерживая всё на месте.
Опционально — закрепите стяжкой: Если вы планируете активные приключения в суровых условиях, можно дополнительно зафиксировать конструкцию, обмотав её стяжкой. Это добавит прочности и предотвратит расшатывание сборки при тряске.
Вот и всё! Теперь ваш GPS-модуль надёжно прикреплен к T-Dongle S3 и готов к работе. Помните, если 3D-печатные детали не идеально подходят после печати, немного шлифовки или подгонки сделают своё дело.
Шаг 4: Подготовка к компиляции
ESP32: Мал, да удал (с некоторыми особенностями)
Этот крошечный микроконтроллер — настоящий монстр для своего размера, но у него есть свои пределы. Представьте его как походный мультитул: очень полезный, но им нельзя свалить дерево. ESP32 отлично подходит для простых задач — он может обслуживать веб-страницы, работать с Wi-Fi и выполнять легковесные операции. Однако есть один нюанс — не стоит ждать от него высокой производительности. Этот контроллер не предназначен для работы с тяжёлыми приложениями или сложными серверами.
Почему статические файлы?
Учитывая эти ограничения, мы используем сильные стороны ESP32, полагаясь на статические файлы. Что это значит? Всё — карты, веб-интерфейсы, ресурсы — предварительно скомпилировано и хранится на microSD-карте в виде статических файлов. Когда вы подключаетесь к Backcountry Beacon, ESP32 не пытается генерировать страницы или обрабатывать запросы в режиме реального времени. Вместо этого он просто раздаёт заранее подготовленные файлы, как дружелюбный гид, протягивающий вам карту на входе в заповедник.
Ограничения нашего статического HTTPS-сервера
Вот в чём дело: подход со статическими файлами означает отсутствие динамического контента. Если вы рассчитываете на сложные веб-приложения с интерактивностью в реальном времени, это не тот случай. Наш сервер очень простой — как надёжный старый компас, который вы всегда носите с собой в рюкзаке. Он выполняет очень хорошо одну задачу: быстро и надёжно раздаёт статический контент. Но он не справится с выполнением сложных операций, обработкой данных «на лету» или обработкой множества тяжёлых запросов одновременно. Зато выигрывает в простоте и надёжности. Эта система просто работает, и это именно то, что нужно в условиях дикой природы.
Что мы компилируем?
Итак, что же у нас есть? Вот, что мы загружаем в те самые статические файлы:
Оффлайн-карты: Детализированные топографические карты USGS, сохранённые в виде тайлов изображений. Это ваша основная опора, когда вы находитесь вне зоны покрытия сети, показывающая ваше точное местоположение и окружающую местность.
Веб-интерфейс: HTML, CSS и JavaScript файлы, составляющие простой и интуитивно понятный интерфейс для взаимодействия с устройством. Никаких лишних элементов — только то, что необходимо для выполнения задачи.
Дополнительные материалы: Всё, что может понадобиться вам на маршруте — от руководств по завязыванию узлов и PDF-файлов с описанием растений до видео на случай, если застряли в палатке из-за непогоды.
Компилируя всё это в статические файлы, мы гарантируем, что Backcountry Beacon сможет выполнять свои функции — без необходимости в интернете, обновлениях или каких-либо усложнениях. Только надёжный, готовый к использованию доступ к картам и ресурсам, которые действительно важны, когда вы находитесь далеко от ближайшей точки Wi-Fi.
Шаг 5: Подготовка SD-карты — цифровая отправная точка
Подготовка SD-карты — цифровая тропа
Форматирование SD-карты
Прежде чем загрузить на SD-карту все карты и необходимые файлы, её нужно подготовить и очистить.
Возьмите MicroSD карту: Вам понадобится карта объёмом как минимум 32 ГБ, а если вы планируете загрузить много карт и ресурсов, лучше взять карту с большим объёмом.
Отформатируйте карту:
а) На 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. Здесь будут храниться все карты, веб-ассеты и любые дополнительные материалы, которые вы хотите использовать в походе.
Загрузите шаблон:
а) Перейдите в наш репозиторий GitHub и скачайте папку sdCard. В этой папке содержится шаблон структуры, который нужно будет скопировать на вашу SD-карту.
Скопируйте папку sdCard:
б) Просто перетащите папку sdCard, загруженную с GitHub, в корневой каталог вашей отформатированной SD-карты. После копирования структура на вашей SD-карте должна выглядеть следующим образом:
Корневой каталог:
leaflet.css (для стилизации карты)
leaflet.js (для интерактивности карты)
error.png (на случай, если какой-то тайл не загрузится))
favicon.ico (потому что каждый хороший сайт нуждается в фавиконе)
Каталог /tiles: Здесь будут храниться тайлы карты, организованные по уровням масштабирования и координатам.
/serve Directory: Здесь будут храниться ваши дополнительные ресурсы, такие как PDF-файлы, руководства или любые другие файлы, которые могут вам понадобиться.
Шаг 6: Загрузка тайлов карты — ваш офлайн-навигатор
Загрузка тайлов — ваш автономный навигатор
Настройка и использование скрипта Node.js для загрузки тайлов карт
Прежде чем отправиться в путь с Backcountry Beacon, вам нужно загрузить на него карты, на которые вы будете полагаться в условиях отсутствия связи. Эти тайлы карт позволят вам видеть детализированную топографическую информацию без необходимости в интернет-соединении. Мы упростили этот процесс с помощью удобного скрипта на Node.js.
1. Начните с Cache Explorer:
Визуализация доступных тайлов: Прежде чем приступить к загрузке, посетите сайт Cache Explorer. Этот визуальный инструмент поможет вам понять структуру тайлов карт и даст возможность предварительно просмотреть тайлы, которые вы будете загружать. Хотя на данный момент он показывает тайлы для Гавайев, вы получите представление о том, как организованы уровни масштабирования и регионы.
Планируйте загрузки: Используйте Cache Explorer, чтобы точно понять, какие тайлы и уровни масштабирования вам нужны для вашей конкретной области.
2. Настройте ваше локальное окружение:
Установите Node.js: Убедитесь, что на вашем компьютере установлен Node.js. Если нет, вы можете загрузить его с официального сайта Node.js.
Клонируйте репозиторий: Скачайте папку tileDownloader из нашего репозитория на GitHub и перейдите к ней в терминале.
3. Установите зависимости:
Запустите npm Install: В терминале перейдите в каталог tileDownloader и выполните команду для установки необходимых зависимостей для скрипта, включая @turf/turf и @mapbox/tilebelt.
4. Загрузите тайлы:
Выполните команду загрузки: Чтобы загрузить тайлы для определённого штата, например Калифорнии, до уровня масштабирования 14, выполните соответствующую команду в терминале.
node tile-downloader.js --states "California:14" --output ./tiles
Каталог вывода: Флаг
--output
указывает, куда будут сохранены загруженные плитки. В этом примере они будут сохранены в папку с названием tiles в текущем каталоге.
5. Проверьте загрузку:
Проверьте результаты: После завершения загрузки перейдите в каталог вывода и убедитесь, что тайлы загружены правильно.
Организуйте файлы: Если необходимо, организуйте тайлы по соответствующим каталогам для использования с Backcountry Beacon.
6. Загрузите тайлы в Backcountry Beacon:
Передача на устройство: После того как все нужные тайлы загружены, перенесите их в нужное место на microSD-карте вашего Backcountry Beacon.
Протестируйте настройку: Убедитесь, что всё работает, включив Backcountry Beacon и проверив загрузку карт.
Используя Cache Explorer, вы получите чёткое представление о необходимых вам тайлах, что сделает процесс загрузки ещё проще. Следуя этим шагам, вы сможете полностью оснастить свой Backcountry Beacon детализированными картами для ваших приключений на природе.
Шаг 7: Прошивка — оживление Backcountry Beacon
Прошивка — это мозг вашего Backcountry Beacon. Именно она превращает ESP32 в мощный портативный сервер, который даёт доступ к автономным картам и файлам в любое время, когда они вам нужны. Прошивка — это этап, на котором мы программируем ESP32 для выполнения заданных задач: раздачи предварительно скомпилированных статических файлов и управления Wi-Fi-соединениями.
Подготовка прошивки
Скачивание прошивки:
а) Перейдите в GitHub репозиторий и скачайте последнюю версию прошивки для Backcountry Beacon. Прошивка находится в каталоге firmware/ и уже настроена для работы с USB-адаптером LilyGo S3.
Настройка PlatformIO:
б) Вам понадобится PlatformIO, интегрированная среда разработки (IDE), которая упрощает прошивку микропрограммы на ESP32. Если вы ещё не установили её, загрузите PlatformIO в виде плагина для Visual Studio Code.
в) Откройте Visual Studio Code, перейдите в каталог firmware/, который вы скачали, и откройте его как проект в PlatformIO.
Подключение ESP32:
г) Подключите USB-адаптер LilyGo S3 к компьютеру с помощью USB-кабеля. Убедитесь, что PlatformIO распознаёт устройство, проверив подключенный COM-порт в нижней панели Visual Studio Code.
Конфигурация и прошивка:
д) Открыв проект в PlatformIO, убедитесь, что выбрана правильная конфигурация платы. Файл platformio.ini в каталоге firmware/ уже настроен для ESP32, так что вам не нужно вносить изменения.
е) Нажмите кнопку «Загрузить» в PlatformIO (она выглядит как стрелка вверх), чтобы начать процесс прошивки. PlatformIO скомпилирует прошивку и загрузит её в ESP32. Это может занять несколько минут, но по завершении ваш ESP32 станет полноценным Backcountry Beacon!
Проверка прошивки:
ж) После завершения прошивки откройте Serial Monitor в PlatformIO, чтобы убедиться, что ESP32 работает правильно. Вы должны увидеть сообщения о состоянии, указывающие на то, что устройство загружается и готово к раздаче файлов.
Что дальше?
После прошивки ваш Backcountry Beacon полностью готов к работе. Осталось только включить его, подключиться к его Wi-Fi сети и начать исследовать ваши офлайн-карты и ресурсы.
Шаг 8: Вперёд, исследуйте мир
Итак, ваш Backcountry Beacon готов сопровождать вас в новом приключении. Но это только начало.
Сделайте его своим: Независимо от того, настраиваете ли вы устройство под себя, исследуете новые способы его использования или добавляете личные штрихи, этот проект — ваша возможность для творчества. Ваша креативность и любопытство — главные движущие силы, которые помогут максимально раскрыть потенциал вашего Backcountry Beacon.
Делитесь своими открытиями: Отправляясь в приключение, подумайте о том, чтобы поделиться своими впечатлениями, советами и инсайтами. Вы никогда не знаете, кому может пригодиться ваш опыт, и это отличный способ внести вклад в дух исследования природы.
Самое главное — выходите на улицу: Теперь, когда ваше устройство готово, пора отправляться в путь. Мир ждёт, чтобы его исследовали, и Backcountry Beacon поможет вам ориентироваться и открывать новые места. Наслаждайтесь свежим воздухом, принимайте вызовы приключений и получайте максимум от каждого путешествия.
Все необходимые навыки программирования можно развить на онлайн-курсах под руководством экспертов. В каталоге можно посмотреть все программы, а в календаре — записаться на открытые уроки.