Pull to refresh

Comments 69

Спасибо за публикацию. Круто. Я сам лет более 20 назад занимался парапланеризмом и мы тоже начинали разрабатывать вариометр ParaKite именно с такой идеей вибросигнализации, правда не довели его до результата, завязли на выборе датчика давления. Тогда выбора было гораздо меньше и все было гораздо сложнее.

Да, сейчас, просто раздолье для самых фантастических проектов наступило, а нейросетки, так те сильно помогают даже у нас в embedded systems engineering. И, кстати, данные часы легко могут использоваться в качестве основы для вывода любых датчиков по шине I2C.

Было бы интересно еще прочитать про процесс вайб-кодинга прошивки. Мы занимаемся разработкой и производством диктофонов Edic-mini и пока используем олдскульный подход к программированию, так как у нас основное - оптимизация параметров. Но хочется попробовать насколько сейчас ИИ может помочь.

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

Вот краткая рекомендация по составлению эффективного промпта для генерации скетча на основе развернутого описания задачи:

📌 Структура промпта для точной генерации кода Arduino:

  1. Укажите целевой микроконтроллер и среду:
    Пример:
    > «Скетч для ESP32 в среде Arduino IDE (не PlatformIO)».

  2. Опишите функциональные требования по шагам — кратко, но однозначно:
    Пример:
    > «По нажатию кнопки 2 — переход в deep sleep, отключение всех периферийных модулей (Wi-Fi, Bluetooth, дисплей и т.д.).
    > По нажатию кнопки 3 — пробуждение, измерение напряжения с ADC (GPIO34), вывод на OLED, возврат в сон.
    > Использовать прерывания от кнопок для пробуждения.»

  3. Перечислите задействованные компоненты (пины, датчики, экраны):
    Пример:
    > «Кнопка 2 — GPIO25 (pull-up), кнопка 3 — GPIO26 (pull-up).
    > OLED SSD1306 подключен по I²C (SDA=21, SCL=22).»

  4. Укажите ограничения и предпочтения:
    Пример:
    > «Не использовать внешние библиотеки, кроме Adafruit_SSD1306 и Wire.
    > Минимизировать потребление тока в sleep (цель <10 мкА).
    > Код должен быть монолитным (один .ino-файл).»

  5. Попросите пояснения и комментарии в коде:
    > «Добавь комментарии к ключевым строкам и пояснения по режимам сна ESP32.»

✅ Пример итогового промпта:

> Напиши скетч для ESP32 в Arduino IDE, монолитный файл.
> Функционал:
> — При нажатии кнопки на GPIO25 — полное отключение всех периферийных модулей (Wi-Fi, BT, OLED) и переход в deep sleep с отключением RTC memory (light sleep не нужен);
> — При нажатии кнопки на GPIO26 — пробуждение по внешнему прерыванию, измерение напряжения с GPIO34 (ADC1_CH6), вывод значения в Вольтах на OLED SSD1306 (I²C: SDA=21, SCL=22), затем возврат в deep sleep.
> Требования:
> — Использовать esp_sleep_enable_ext0_wakeup();
> — Потребление в deep sleep <15 мкА;
> — Не использовать PlatformIO или внешние зависимости кроме Wire.h, Adafruit_SSD1306.h;
> — Код должен быть легко читаемым, с пояснениями по ключевым API ESP-IDF в комментариях.

Такой промпт обеспечивает однозначную интерпретацию, минимизирует количество итераций уточнений и повышает шансы на корректную генерацию кода с первого раза — особенно при использовании LLM или AI-ассистентов (включая GitHub Copilot, ChatGPT, CodeLlama и др.).

Большое спасибо. Общие принципы вайбкодинга знаю и пробовал, но тут ценность в том, чтобы увидеть связь конкретных промптов конкретным сеткам с конечным результатом.

Я уже год, как практикую эту магию, даже вот ту сварочную машину новой версии с видео завайбкодил 4 месяца назад за неделю еще с Gemini 2.5 (ориентировочно съэкономил часов 150). На то время - это была лучшая ллм по avr. Сейчас у меня работают связка Qwen-Max, Gemini3.

Большое спасибо. Общие принципы вайбкодинга знаю и пробовал, но тут ценность в том, чтобы увидеть связь конкретных промптов конкретным сеткам с конечным результатом.

Возьмите cursor. Он на порядок лучше просто обращений к отдельным инструментам

Я бы для тяжелых микропроцессорных проектов пошел в сторону связки VS Code + Google Cloud Code + Platformio. Сейчас Gemini 3 на моих изысканиях показывает наилучшие результаты по точности и пониманию проблемы.

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

В описанном мной проекте намеренно не использовался тот же Platformio и весь код монолитен в одном файле

Жесть, простите. Сначала отказываетесь от cursor, который сделан именно для работы с множеством отдельных файлов в проекте, а чтобы решить эту проблему, пишем весь код в одном файле. Любой проект со сколько-нибудь сложной логикой будет совершенно нечитаем в таком подходе.

Проект для новичков и вот оценка кто что использует:

  1. Абсолютный новичок (первые 1–3 проекта)

    • Arduino IDE: ~95%

    • PlatformIO: ~5%

  2. Продвинутый новичок / хобби-энтузиаст (3–10 проектов)

    • Arduino IDE: ~60%

    • PlatformIO: ~40%

  3. Профессионал / open-source разработчик

    • Arduino IDE: ~20%

    • PlatformIO: ~80%

выложив проект в Platformio я бы просто отсек 80% потенциальных тестеров. Профи спокойно сделает себе форк и будет прекрасно развивать проект там, если захочет.

По пункту 3 на сегодня уже все выглядит так:

Профессионал / open-source разработчик

  • Arduino IDE: ~10%

  • PlatformIO: ~50%

  • Cursor: ~40% (и быстро растёт)→ Особенно в проектах с:

    • сложной логикой ,

    • интеграцией датчиков ,

    • рефакторингом legacy-кода — AI в Cursor ускоряет итерации, помогает писать unit-тесты и т.д.

Не представляю, зачем профи-разрабу Arduino IDE, кроме как запустить blink, чтобы понять, работает контроллер или нет.

Не будет ли постоянная вибрация на запястье более раздражающей, чем постоянный писк? Я на него вообще не то чтобы много внимания обращал, мне у моего флаймастера даже нравится звук.

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

Ну и у e-ink экранов в полетах есть ведь один главный недостаток - они на холоде плохо работают, замерзают и перестают обновляться. Поэтому они широкой популярностью не пользуются, хотя по остальным пунктам, типа контрастности или энергоэффективности, они хороши.

Эту боль - про вибрации можно решить алгоритмически, скажем, если стоим в потоке уже 2 минуты, значит пилот уже нашел поток и отцентровал его, и счас будет 10-15 минут его накручивать. Прибор тогда не вибрирует. Далее пилот выпал из потока и ушел на переход с -2-3 на акселераторе, или вайбит с -1-1.2 по маршруту. Прибор молчит.

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

Пока это все в черновом режиме. И я предполагаю раздать по друзьям штук 5 приборов для профессиональной оценки, потом сделать получше, это пока MVP.
Там еще много есть возможностей для доработок. Ну а я выкладывал проект именно для того, чтобы и собрать обратную связь.

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

в одной из версий twatch на esp32 помниться тоже был барометр BME280 сразу встроенный. но эту модель давно не выпускают

Я еще хочу попробовать такую версию для прошивки на вариометр: https://aliexpress.ru/item/1005006455931427.html у этой платы есть на борту барометр, гироскоп и акселерометр. Полагаю - это уже коробочное решение будет.

суровый китайский маркетинг: что там датчики есть - надо очень вглядываться

У меня есть впечатление, что часто там продаются неликвиды через разные прокладки, которые не особо и разбираются в том, что они продают.

Добрый день. Очень интересный проект. Спасибо за ваш труд.

Может ли такой прибор понадобиться альпинистам? Там тоже важно вовремя заметить изменение погоды.

Так что можно расширить сферу применения вашей модели часов.

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

Если думать о нем как о приборе альтиметре, то есть один нюанс - в течение дня атмосферное давление меняется и он будет уплывать по высоте. Можно еще подумать о подключению по блютусу к смартфону. А здесь уже раздолье - экран на руке покажет все что надо прямо со смартфона.

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

Есть еще вопрос, который я не изучил, но возможно он интересен - предсказания по низкочастотным (1/100..1Гц) колебаниям давления. По имеющимся записям видно что в дождь и грозу давление скачет.

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

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

Место есть, просто нужно посмотреть на элементы другим взглядом. Например, можно убрать все надписи, типа Start, Sea. Откройте любой редактор (Figma например) и подвигайте- все получится.

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

Любопытная реализация. Единственное, не очень представляю, как вибро будет вести себя в болтанке. Не потеряется ли сигнал на фоне обычных колебаний подвески?

Я постарался фильтрацию хорошую в алгоритме сделать. Испытания для критики прибора на опытных пилотах запланированы.

Ну нееет... Что может быть приятнее веселого пи-пи-пи-п-и-и-и для ушей парителя?)) Знаю что многие даже на рингтон ставят. Но если серьезно - классная идея! Могу проверить как работает в планере. Для инструктора думаю будет как раз, чтобы не надоедало за целый день полетов с курсантами.

Забавный факт: буквально месяца 2 назад, починил с помощью LLM свой старенький flymaster - помер аккумулятор, а просто так новый не поставишь, ибо умный чип зарядки, запомнивший кол-во циклов и др. параметры. Нужно было сбросить калибровки. Нашел даташит, "скормил" llm, написал пару промтов и вуаля: вот тебе пины, куда i2c цеплять, вот тебе байтики и регистры, вот тебе код, запускай. Реально ушло на все пару часов)

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

Спрасибо за статью, интересно было почитать. Проблема с потреблением 15мА легко решается. Дело в том, что все такие платы с распаяными деталями делаются для ардуино на AVR, и выводы там расчитаны на максимально допустимое напряжение 5в. Отсюда много ненужной обвязки. На вашей плате стоит 2 чипа, скорее всего это преобразователи уровней и стабилизаторы напряжений. И в вашем случае они не нужны потому что BMP390 можно питать от 3.3в напрямую (именно от 3.3, а не от литиевой батарейки), и преобразователи не нужны. Чтобы не заморачиваться с новой или другой платой можнл просто отреверсть вашу плату и в нужных местах повесить перемычки. А все детали кроме конденсаторов по питанию и подтяжек для I2C можно убрать заменив перемычками.

Еще вопрос - вы не задумывались, как ваш датчик отреагирует на попадание пыли, мусора и воды внутрь? Я в своих проектах ставил MS5803 с гелевым покрытием датчика. Но у него недостаток - он немного чувствителен к пространственному положению, и для вариометра не очень годися.

Датчик BMP390 перепаяю, там на платке с датчиком надо убрать стабилизатор с 5 на 1.8 вольта и перемычку сделать. Как сделаю, на гитхаб выложу обновление мануала. Да и с кнопки уберу провод на 3.3в. Там как раз есть пятаки для 4 проводов все в одном месте. По пыли и грязи - полагаю плату с датчиком можно поместить в силиконовый чехол - давление точно передастся. Вопрос с самими часами - они совсем без защиты.

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

А по теме влагозащиты - можно переехать на устройство Bangle JS 2 от ESPRUINO (легко гуглится). Из коробки они предлагают часы для которых можно писать код на JS. Но наружу выведен SWD, так что можно залить что угодно. Чип у них NRF52840, а экран трансфлективный. Если что я поднимал свой код на базе Zephyr OS на предке Bangle JS 2 который называется SMA Q2.

Могу рассказать историю Bangle JS2.Приерно в 2017 году некая китайская фирма выпустила смарт часы SMA Q2 c трансфлективным экраном сделанным по технологии memory LCD от JapanDisplay (176x176 8 цветов и виден на солнце без подсветки, и почти не потребляет энергии в режиме статической индикации). Первая версяи часов была разборной - задняя панель ставилась на винтах. Несколько человек на Hackaday отреверсили эти часы и опубликовали разводку аппаратной части. Я в свое время тоже купил несколько таких часов, и использовал как отладочную плату с экраном и NRF52832. А вместо пульсометра подключил свою плату с датчиками давления, влажности и освещенности. Позже на hackaday кто-то выпустил новую начинку для этого корпуса уже на NRF52840. А потом уже собрали денег и выпустили заводской вариант: Bangle JS 2 В нем есть вибра, датчик BMP280, пульсометр, акселерометр, .. все что нужно. Корпус у него водонепроницаемый, один недостаток - наружу торчит линия SWD с подтяжкой. Поэтому надолго под воду нельзя, или надо заклеить контакты SWD. А так то корпус герметичный.

Интересные часы, но купить у нас сложновато их. Убрал, кстати, стабилизатор с BMP390 ток упал с 15 мА до 0.7мА. В ридми гита добавил.

Вот ток и упал для разумных значений. Мое изделие на базе SMA Q2 укладывалось в 0.1мА без BT и 0.2мА с BT. А Bangle JS есть в одном российском магазине, легко гуглится. А еще можно заказать через посредника. Но я себе еще не заказывал.

Занялся наконец, пришли часы и модуль. Рабираюсь, куда что паять :)

Можно попросить фото, куда окончательно припаяли все четыре провода? К каким именно пятакам? Я смотрю на стороне монтажа, хочется не рисковать! :)

Дисплей приклеен, не хочется трогать, понятно.

Пятаки
Пятаки

Пятаки под шлейфом, монитор не надо снимать. черный защелки выдвигаются, затем шлейф вытаскивается и можно к ним паяться подробно тут расписано: https://watchy.sqfmi.com/docs/hardware

О, спасибо, это похоже норм, завтра займусь! Но сначала почитаю по ссылке :)

2,3,5 и sw1

После выхода статьи и получения комментариев, в проект были внесены изменения, на плате датчика давления убран стабилизатор по питанию, что привело к падению энергопотребления датчика с 15мА до 0.68 мА. Инструкция на гитхабе изменена.

Да, я как раз об этом! Как я понял, не к кнопке SW1 ?

Красным помечены нужные пятаки?

Завтра под микроскопом буду смотреть, пока не уверен, что правильно понял, сорри!

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

А, понял теперь!:)

Да, датчик кушает даже без стабилизатора, как я понял, пусть спит, когда глубокий сон для всех!

Спасибо!!

Так, нашёл пятаки, спасибо!

VCC модуля → к точке пину кнопки 1

GND модуля → к GND TP5

SCL модуля → к GPIO 22 TP2

SDA модуля → к GPIO 21 TP3

Дополнил инструкцию, уточнил. Вопрос :)

К какой точке , где пин кнопки SW1 ? Я не сообразил, там 4 контакта, они соединяются (по прозвонке) при нажатии. Но куда паять? :) Если к BTN_1 по схеме(Там, где в описании окружено), то это подтянуто к земле через R4, верно?

Дополню, R4 соединяется с левым (дальним от края платы) контактом SW1, но - к нему паяться? :) Но там при подключении будет около 0в, по идее. Или к тому, который к +3.3В подключен, и только при замыкании падает потенциал?

Дополню прошлый пост чуть ниже!

Подпаиваться к кнопке, к пину 1 по схеме, где и есть +3.3В, верно? Толкьо сейчас на схеме увидел нумерацию! :)

Сорри за глупые вопросы :)

Надо паяться к контакту кнопки на котором нуль, и да он подтянут к земле 10к. Если припаяться к 3.3 вольта кнопки - датчик будет постоянно ток тянуть и прошивка не сможет отключить датчик.

Спасибо! То есть зелёным правильно окружено, ок. Подключу батарею и померяю на месте :)

Тогда сигнальные , на BMP390 по ссылке - контакты обозначены как: SCK, по идее это GPIO18, SPI Clock

и SDI , по идее это GPIO23 , SPI MOSI (Data In)

Я с этими шинами запутался, сорри!

Upd. ПОмерял напряжение на этом пине кнопки, в обычном положении ноль, при нажатии - +3.3В

Не соображу, как модуль BMP 390 будет работать, если питание только при нажатии кнопки! СОрри!

Маркировка неверная - разобрал часы, у меня так
Маркировка неверная - разобрал часы, у меня так

Понял, ок, дальше уже в прошивке буду разбираться! Ну, если провода правильно увидел :)

Про удаление стаба помню, просто не видел, как напряжение подаётся с нуля :)

Вижу, спасибо!

Фиолетовый земля TP5, питание красный на левый контакт кнопки, Коричневый TP2 = SCL=SCK тактовый, желтый TP3 = SDI модуля! И неясный красный наверх смотрит :)

Красный просто обрезок от первого варианта, до перепайки на кнопку, оставлен для резерва.

Добрый вечер!

Можно ещё уточнить? :)

Убрал микросхему стаба , но питание с кнопки паяю прямо на точку , куда желтый проводок приходит, или же сначала на пин VCC, а его соединяю с этой точкой? Там же ещё на входе есть что-то, на модуле, что или исключаем, или питаем по новому?

Пока подпаялся как по рисунку, и питание к пину (отверстию) VCC и вместо стабилизатора аналог жёлтого провода.

Я сдул стаб, и соединил vcc c площадкой выхода стаба. Провод подпаян к отверстию VCC.

Ок, спасибо! Я так же :)

Паяю дальше :)

Включил, вроде часы тикают, всё цело :)

Начал компилировать скетч, по инструкции на гитхабе, не было нескольких библиотек, доставил.

Теперь требует шрифт! :)

FreeMonoBold36pt7b.h - он должен быть в Adafruit GFX /Fonts, его нет. Нахожу файл, кидаю туда :)

Не хочет видеть..заново запускал IDE, скетч грузил,..

Вот выдаёт:

"C:\Users\ma\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2511/bin/xtensa-esp32-elf-g++" -c "@C:\Users\ma\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/cpp_flags" -w -Os -Werror=return-type -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD="ESP32_DEV"" "-DARDUINO_VARIANT="esp32"" -DARDUINO_PARTITION_default "-DARDUINO_HOST_OS="windows"" "-DARDUINO_FQBN="esp32:esp32:esp32:JTAGAdapter=default,PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,LoopCore=1,EventsCore=1,DebugLevel=none,EraseFlash=none,ZigbeeMode=default"" -DESP32=ESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DARDUINO_USB_CDC_ON_BOOT=0 "@C:\Users\ma\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/defines" "-IC:\Users\ma\Downloads\Прошивки MZ3D-360\Оригинальная прошивка от MZ3D\Marlin360-default\Vibro2\VibroVario-main" -iprefix "C:\Users\ma\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/include/" "@C:\Users\ma\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/flags/includes" "-IC:\Users\ma\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.5-9bb7aa84-v2\esp32/qio_qspi/include" "-IC:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\cores\esp32" "-IC:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\variants\esp32" "-IC:\Users\ma\Documents\Arduino\libraries\Adafruit_GFX_Library" "-IC:\Users\ma\Documents\Arduino\libraries\Adafruit_BusIO" "-IC:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\Wire\src" "-IC:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\SPI\src" "-IC:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\WiFi\src" "-IC:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\Network\src" "-IC:\Users\ma\Documents\Arduino\libraries\Adafruit_Unified_Sensor" "-IC:\Users\ma\Documents\Arduino\libraries\Adafruit_BMP3XX_Library" "-IC:\Users\ma\Documents\Arduino\libraries\GxEPD2\src" "@C:\Users\ma\AppData\Local\Temp\arduino_build_611243/build_opt.h" "@C:\Users\ma\AppData\Local\Temp\arduino_build_611243/file_opts" "C:\Users\ma\AppData\Local\Temp\arduino_build_611243\sketch\VibroVario-main.ino.cpp" -o nul
Alternatives for FreeMonoBold36pt7b.h: []
ResolveLibrary(FreeMonoBold36pt7b.h)VibroVario-main:26:10: fatal error: FreeMonoBold36pt7b.h: No such file or directory

-> candidates: []
compilation terminated.
Multiple libraries were found for "WiFi.h"
Used: C:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
Using library Adafruit_GFX_Library at version 1.12.4 in folder: C:\Users\ma\Documents\Arduino\libraries\Adafruit_GFX_Library
Using library Adafruit_BusIO at version 1.17.4 in folder: C:\Users\ma\Documents\Arduino\libraries\Adafruit_BusIO
Using library Wire at version 3.3.5 in folder: C:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\Wire
Using library SPI at version 3.3.5 in folder: C:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\SPI
Using library WiFi at version 3.3.5 in folder: C:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\WiFi
Using library Network at version 3.3.5 in folder: C:\Users\ma\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.3.5\libraries\Network
Using library Adafruit_Unified_Sensor at version 1.1.15 in folder: C:\Users\ma\Documents\Arduino\libraries\Adafruit_Unified_Sensor
Using library Adafruit_BMP3XX_Library at version 2.1.6 in folder: C:\Users\ma\Documents\Arduino\libraries\Adafruit_BMP3XX_Library
Using library GxEPD2 at version 1.6.5 in folder: C:\Users\ma\Documents\Arduino\libraries\GxEPD2
exit status 1
FreeMonoBold36pt7b.h: No such file or directory

ПОнял, понял! Спасибо!! Архив не брал, сорри!

Сейчас попробую :)

О, теперь программно норм!

Файл шрифта нужно кидать в корень библиотеки, не к другим шрифтам, я не сразу сообразил!:)

Загрузил, появились часы, сведения о батарее.

Кнопка Back работает, а вот Калибровка - под вопросом включается надпись Calibration и висит, и экран как бы выцветает?

В обычном режиме - шрифт понятно четкий ясный:)

Предполагаю, что всё же не совсем верно спаял :)

Но опыт уже некоторый получил, и удовольствие!:)

Завтра продолжу!

Выцветает
Выцветает
Тут хорошо четко тикает :)
Тут хорошо четко тикает :)

Могу точно сказать - нет данных от датчика, Советую другой счетч залить поискать датчик по шине i2c - Лучше проверить датчик на ардуине - получить отсчеты давления в ком порт, А сейчас или провода перепутаны по сигналу или питания нет или датчик неисправен.

Датчик надо проверять с учетом напряжения 3.3 вольта, чтобы его не пожечь

Да, понимаю

Завтра как минимум другой скетч гляну

Но то, что с железом проблема, имхо факт.

...может и датчик, кстати.

У меня есть правило: перед сборкой схемы - проверять все компоненты, еще с пайки синклеров вывел - надо каждый элемент проверять обязательно. Особенно китайский ноунейм.

Решил заменить на 24 размер, который есть в библиотеке, всё равно выдаёт ошибку. Причём в другой библиотеке:

Using library GxEPD2 at version 1.6.5 in folder: C:\Users\ma\Documents\Arduino\libraries\GxEPD2
exit status 1
FreeMonoBold24pt7b.h: No such file or directory

Попробую заново :)

Начисто загрузил :

Using library Adafruit_GFX_Library at version 1.12.4 in folder: C:\Users\ma\Documents\Arduino\libraries\Adafruit_GFX_Library
exit status 1
FreeMonoBold36pt7b.h: No such file or directory

Так же, как в начале, до того, как файлы стал кидать в директорию шрифтов.

Интересная задумка, любопытно узнать про реальное применение.

Правильно я понял, что есть только три варианта вибрации для вертикальной скорости?

// --- ПОРОГИ ЗВУКА И ИМПУЛЬСЫ ---
// Пороги вертикальной скорости (м/с) и соответствующее количество импульсов вибро
const float LIFT_TH[]    = {0.15f, 0.4f, 1.0f, 2.0f, 1000.0f}; 
const int   LIFT_PULSES[] = {1, 2, 3,  0};

В аудиовариометре хорошо слышно отличие скороподъёмности в 0.1-0.2 м/с, что критически важно при выживании в слабых потоках и при поиске ядра.

Такой код воспринимается мозгом за 200–300 мс — это быстрее, чем анализ тональности звука (там мозгу нужно около 400 мс).

А откуда эти данные? Если погуглить, то везде пишут, что слух является одним из самых быстрых органов чувств. Орган слуха расположен сильно ближе к мозгу.

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

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

Код прошивки сгенерированный ИИ мягко, говоря плохо, структурирован. Условно нас*ано.
https://github.com/isemaster/VibroVario/blob/main/VibroVario-main.ino
Товарную политику продукта делать не получится.
О модульном тестировании этой портянки и говорить не приходится.


Пусть ИИ сперва почитает вот этот текст
https://habr.com/ru/articles/683762/

Есть такое. Я в комментах писал, почему не стал использовать Platformio, кратко - монолитный код для ЛЛМ и для снижения порога входа новичкам. Не старался сделать коммерческий продукт, меня зацепила сама возможность навайбкодить за день работающий продукт.

Если бы я надумал продавать, раскидал бы по всем правилам, наверное. А теперь встречный вопрос - сколько времени вы бы потратили с нуля на написание такого кода традиционным способом, с условием - вот сегодня дали вам часы и датчик?

Ман https://habr.com/ru/articles/683762/ современные ллм могут такой текст держать под рукой в контекстном окне, как правила работы. Тогда и результат будет по таким правилам.

Чудес не бывает. Разработка займет столько времени сколько должна занять.

ИИ это игрушка.

Кто понесет ответственность в случае аварии вызванной генеренным ИИ кодом?

Как его потом ремонтировать и модернизировать?

Надо не снижать порог входа в наоборот повышать. В программировании нет царского пути. Школоты тут и так хватает.

Ок. Никого не убеждаю и не отговариваю. Но мне как контрактнику нравится сейчас делать за неделю, то что я делал раньше за месяц.

Ответы - ИИ не игрушка, а такой огромный дополнитель и усилитель своих мыслей.

Ответственность несет разработчик.

Ремонтировать и модернизировать варианты - ручками правим, или кормим нейросеть логами с ошибками.

Повышать порог входа нельзя.

Школота с нейросетями легко обойдет на повороте старую школу. Ну то есть вырастет из школоты затем обойдет.

И я лично предпочел осваивать новые инструменты, чем потом пыль глотать.

Sign up to leave a comment.

Articles