MeshCore
1 пост
1 пост
Обожаю готовые платы с экранчиками. По сути это уже готовые для программирования девайсы. Сразу можно что-либо реализовать. Мне попала в руки плата от Waveshare. Плата сразу с RLCD экраном 4.2 дюйма (ST7305 300 x 400), 18650, микрофоном, спикером и чипом ESP32-S3.
Для понимания, что вообще за плата и из чего состоит внизу будут фото. Полное описание и конфигурация платы на wiki разработчика. А купить можно на популярных маркетплейсах.
Честный ответ: потому что в таком форм-факторе и в такой же конфигурации не было e-ink. В добавок e-ink медленно обновляется. Особо медленно если экран на электронных чернилах трехцветный. Скорость обновления RLCD такая же как на обычном LCD, вполне можно разогнать до 60 кадров в секунду. Поэтому можно юзать не только для часов, но об этом позже.
Программировать мы будем через VSCode + Platform IO (PIO). Можно через Arduino IDE, однако это не самая удобная и гибкая платформа для работы с кодом, а вот PIO сильно удобнее. Кодом я тут не буду душить аудиторию, единственное что скажу буду юзать либу U8g2 - библиотека графики для монохромных дисплеев на микроконтроллерах, автор Оливер Краус. Самая популярная в этой нише.
Что мне действительно хотелось видеть каждый день на столе это часы и погоду. Но ведь у меня в телефоне есть часы и погода! Крайне удобно перед выходом куда либо посмотреть будут ли осадки, какая температура, УФ-индекс. И да, погоду хочется видеть на 12 часов вперед на каждый час. Больше нет смысла смотреть, имхо, прогноз дальше суток крайне не точен. Убеждался в этом неоднократно. А вот на 12 часов можно посмотреть с вероятностью осадков - то что нужно знать сегодня. Итог ниже.
Давайте разберем по частям тут выведенное. К погоде я еще добавил давление, влажность и загрязнение воздуха в моем районе. Встроенные датчики не использовал. В качестве источника погоды использую Open-Meteo. Строчка чуть выше ЗАКАТа пустая, это не баг, там отображается вероятность осадков. Если пустая значит 0%. Цифр и так иного, поэтому так. Погода обновляется днем раз в полчаса, ночью раз в час. Помимо того что я обновляю погоду через интернет еще обновляется точное время через NTP. Такая точность более чем достаточна для настольных часов.
Энергосбережение
И тут самое время поговорить про энергосбережение, так как вы могли заметить что девайс питается от аккума. Сначала я отображал секунды, но обновление раз в секунду значит что микроконтроллер (МК) не засыпает, он постоянно работает. ESP32-S3 это вообще не про экономию, это невероятно прожорливый мощный чип.
Секунды было решено убрать. Теперь чип засыпает примерно на ~59 сек, просыпается, обновляет время и засыпает снова на ~59 секунд. В момент сна плата потребляет 8мА, во время обновления через интернеты (несколько секунд каждые полчаса/час) около 50мА.
Получаем, что при таких условиях таких часов хватит на пару недель автономной работы. Что более чем приемлимо на мой взгляд для данного типа МК и типа экрана.
Самая скучная и неудачная часть, но не могу не отметить, что была попытка это сделать. Новости это невероятно комплексная тема, так как нужно сортировать по категориям, внимательно подбирать источники новостей и релевантность.
В бесплатном NewsAPI, который я юзал, три источника на русском языке: DW, BBC и RT. Остановился на первых двух, но думаю надо придумать что-то получше для новостей.
Тут как говорится proof of concept. Если можно выводить текст, то наверно можно выводить тот текст который я написал в бота? Конечно! Только вот для телеги надо подключить SOCKS5, ибо из моей сети оно не работает. Пишешь в бот и сообщение со звуковым сигналом отображается на экране:
В целом эту фичу можно использовать для заметок которые будут перед глазами.
Наверное самое сложное по коду и реализации. Как взять показания который отображает MSI Afterburner и RivaTuner Statistics Server (RTSS)?
В начале статьи упоминал, что E-ink в некоторых сценариях не подходит, вот это как раз этот случай. Отображать надо 2 раза в секунду, можно и чаще конечно, но и так достаточно. Серверная часть на ПК написана на Go и скомпилирована в exe-файл, который поднимает API на определенном порту по одной кнопке. А плата подключается к этому порту и читает в бинарном виде показания. И это прям киллер-фича, те самые циферки где-то вне экрана.
Все эти 4 режима переключаются одной кнопкой по кругу. То есть всё это в одной прошивке!
В интернете еще нашел вот такой забавный проект радара на той же плате
Нужен еще радар LD2450 который подсоединяется к плате. В целом интересная штука, без понятия где это можно на практике примерить.
А что вы бы реализовали на такой плате?
Пользуюсь MeshCore уже почти год, держу свои репитеры. Недавно на Пикабу вышла статья про MeshCore - и это здорово, чем больше людей узнают про технологию, тем живее сеть. Несколько мест в той статье меня, честно говоря, царапнули. Автор там оговорился, что он не специалист как будто я специалист, не будем его винить. Давайте разберёмся, как оно работает слегка углубившись в подробности.
Радиолюбительство как хобби известно уже более 100 лет. А Mesh-сети на основе компактных нод это логичное продолжение этого увлечения. Новые поколения радиолюбитилей уже не хотят разговаривать голосом с незнакомцами по коротким (КВ) и ультракоротким (УКВ) волнам. Чатиться в разы удобнее. Поэтому все эти Mesh-сети можно описать как текстовое радио. Есть как личные сообщения так и чаты. Чаты тоже могут быть общедоступными или по секретному ключу. Общение крайне оживленное, на актуальные темы и в разных каналах. И главное без интернета. О чем общаются можно увидеть вот тут, через обсерверы (специальные репитеры с доступом в интернет - об этом как нибудь потом) сообщения попадают в Мешкартель.
Немного помучаю терминами и цифрами. В основе MeshCore лежит радиоинтерфейс LoRa - модуляция Semtech на базе CSS (Chirp Spread Spectrum), где данные кодируются линейно-частотными чирпами, что даёт работу ниже шумовой полки (отрицательный SNR) и большую дальность. Всё определяют три параметра - SF (Spreading Factor), BW (Bandwidth) и CR (Coding Rate): выше SF - больше дальность и чувствительность, но длиннее airtime (время приема-передачи) и ниже битрейт.
Исторически сети сидели на SF11, но примерно с октября 2025 многие регионы перешли на узкий пресет - BW 62.5 кГц и более низкий SF (7-9) вместо SF11, поскольку узкая полоса и низкий SF дают более низкий уровень шума, лучший SNR и более быстрые передачи. Работает MeshCore в нелицензируемых диапазонах: 868 МГц в UK/EU и 915 МГц в Австралии, Новой Зеландии и США, есть и сборки под 433 МГц; в Европе это диапазон 863-870 МГц с типовыми частотами 868.1/868.3/868.5 МГц. Конкретную частоту и пресет берут в местном сообществе, а в Европе действует ограничение по duty cycle - не более 10% эфирного времени в час. Чтобы ноды видели друг друга, у них должны совпадать частота, SF, BW и CR.
В Московском регионе используется частота 868.731 МГц (SF=7, CR=7, BW 62.5). Многие кто был в радиоклубах и те кто общались на LPD-частотах ушли в MeshCore. Тот же радиоклуб "Соседи" юга Москвы, например.
Эти маломощные устройства умного дома превратились в средство связи между абонентами. Изначально не было таких вот красивых нод, они не продавались. До 2024 года сами паяли ноды из ESP32/NRF чипов и модулей LoRa. А уже далее рынок дал ответ на спрос и появились готовые к использованию устройства которые можно приконнектить по BT к вашему Андроед/Эпол телефону и начать чатиться.
Ноду можно спаять как самому так и заказать у китайских продаванов с различных маркетплейсов. На фото выше популярные ноды Heltec. Как быстро подключится к MeshCore если такая нода у вас уже есть в этом видео. Подключаете антенну, а потом аккум и вуаля, вы уже можете как принимать сообщения от других абонентов так и общаться с ними. Для личного использования я лично рекомендую Heltec T114 - черезвычайно автономное переносное устройство. Заряда аккума хватает на трое суток. Идет сразу в стильном корпусе и с антенной.
MeshCore работает отлично там где большая плотность абонентов и репитеров. Как упомянул автор из статьи можно ставить репитер, а можно не ставить. Если хотите помочь сети и преисполнились в своем сознании - то пожалуйста, абоненты сети скажут вам спасибо. Репитер, он же повторитель, он же репа, он же ретранслятор - занимается тем что пересылает сообщения между другими репитерами и конечными нодами (компаньонами). Лучше всего это увидеть своими глазами на сайте Мешкортеля.
Теоретически при прямой видимости дальность достигает ~15 километров между двумя нодами, на практике в условиях городской застройки стабильная связь в радиусе 1 километра. Но учитывая взлет Mesh-сетей за последний год покрытие становится все лучше и больше.
А также есть царь-репа, легендарная в некоторых кругах Варшавка, которая вещает сигналом на половину Москвы. Найти на карте по ссылкам выше не составит труда.
Meshtastic появился сильно раньше в 2020 (на 5 лет раньше MeshCore) году и обладает примерно тем же функционалом. Почему бы не использовать уже проверенную технологию? Да и комьюнити там больше. Если коротко - Meshtastic не подходит для города и городских сетей. В поход - да, на природу - да, в спасательные операции - да. Но не в статичную урбанизированную сеть. Первый архитектурный затык - 7 хопов (в Meshcore 32/64). А по умолчанию вообще стоит 3.
Хоп (от англ. hop — «прыжок») — это одна ретрансляция пакета от узла к узлу. Каждый раз, когда сообщение принимает промежуточная нода и передаёт его дальше по эфиру, засчитывается один хоп.
Второе ограничение это его же философия - каждая Meshtastic нода по умолчанию ретрансилует сообщения, учитывая что большинство таких нод находятся в квартирах - ретранслятор получает отвратительным, да и сам аккум ноды высаживается очень быстро. Квартира как клетка Фарадея, сигналы из квартиры плохо как "выходят" так и "заходят".
И третье напоследок, Meshtastic - это все таки первый порожек, это как рекламная вывеска со входом где много новичков, а в чатах все просто пингуют друг друга без какого то нормального общения. Все абоненты MeshCore - это бывшие абоненты Meshtastic.
Всем спасибо за внимание, это мой первый пост на Пикабу. Если пост вызовет отклик - выпущу продолжение, есть еще о чем рассказать.