🛠 Важность Писать Читаемый Код 🛠
Привет, коллеги-разработчики! Сегодня хотим поговорить о важности написания простого и читаемого кода. В мире программирования, читаемость кода имеет огромное значение. Это не только облегчает процесс отладки и поддержки, но и делает наш код более понятным для других разработчиков.
📡 Наш Подход 📡
На скриншоте приведён ключевой метод из прошивки нашего сканера частот "ФИЛИН". Этот метод отвечает за несколько важных задач: обновление данных всех диапазонов частот, вычисление максимального RSSI, обновление временных меток всех диапазонов, агрегация данных для отображения на интерфейсе, сглаживание значений с помощью скользящего окна, отсечка значений по среднеквадратичному отклонению, установка уведомлений и состояний устройства на основе текущих данных и предупреждений, проверка состояний всех диапазонов на наличие активных предупреждений.
Этот код еще претерпит множество изменений, но он должен оставаться понятным для всех, кто будет с ним работать.
🔍 Почему это важно?
1. 📚 Читаемость и Понятность: Хорошо структурированный код легко читается и понимается, даже если вы видите его впервые.
2. 🛠 Отладка и Поддержка: В явном коде легче находить и исправлять ошибки, добавлять новые функциональности.
3. 📈 Совместная Работа: Когда ваша команда растет, читаемый код помогает новым разработчикам быстро включаться в работу.
4. 🎯 Надежность: Читаемый код снижает вероятность появления багов и упрощает тестирование.
Создавайте программы, которыми будете гордиться! Пишите читаемый код, снижайте технический долг и делайте мир программирования лучше!
#филин
Привет, коллеги-разработчики! Сегодня хотим поговорить о важности написания простого и читаемого кода. В мире программирования, читаемость кода имеет огромное значение. Это не только облегчает процесс отладки и поддержки, но и делает наш код более понятным для других разработчиков.
📡 Наш Подход 📡
На скриншоте приведён ключевой метод из прошивки нашего сканера частот "ФИЛИН". Этот метод отвечает за несколько важных задач: обновление данных всех диапазонов частот, вычисление максимального RSSI, обновление временных меток всех диапазонов, агрегация данных для отображения на интерфейсе, сглаживание значений с помощью скользящего окна, отсечка значений по среднеквадратичному отклонению, установка уведомлений и состояний устройства на основе текущих данных и предупреждений, проверка состояний всех диапазонов на наличие активных предупреждений.
Этот код еще претерпит множество изменений, но он должен оставаться понятным для всех, кто будет с ним работать.
🔍 Почему это важно?
1. 📚 Читаемость и Понятность: Хорошо структурированный код легко читается и понимается, даже если вы видите его впервые.
2. 🛠 Отладка и Поддержка: В явном коде легче находить и исправлять ошибки, добавлять новые функциональности.
3. 📈 Совместная Работа: Когда ваша команда растет, читаемый код помогает новым разработчикам быстро включаться в работу.
4. 🎯 Надежность: Читаемый код снижает вероятность появления багов и упрощает тестирование.
Создавайте программы, которыми будете гордиться! Пишите читаемый код, снижайте технический долг и делайте мир программирования лучше!
#филин
👍11🔥1🫡1
Media is too big
VIEW IN TELEGRAM
🌊 Реализация Диаграммы "Водопад" в Нашем Сканере Частот "ФИЛИН" 🌊
Привет, коллеги! Сегодня хотим поделиться с вами тем, как мы реализовали диаграмму "Водопад" в нашем сканере частот "ФИЛИН". Диаграмма "Водопад" позволяет визуализировать изменения уровня сигнала (RSSI) с течением времени, отображая данные в виде движущегося графика.
📋 Цель:
Создать визуализацию, которая покажет изменения RSSI (Received Signal Strength Indicator) в режиме реального времени, перемещая данные вверх по экрану, подобно движению воды в водопаде.
🛠 Как мы это сделали:
Мы использовали библиотеку TFT_eSPI для работы со спрайтами и отображения данных на экране. Далее, применили класс WaterfallSprite, который наследуется от TFT_eSprite и добавили в него метод drawWaterfall для отрисовки диаграммы.
Метод drawWaterfall выполняет следующие задачи:
1. 📏 Получает размеры спрайта.
2. 📉 Перемещает данные на один пиксель вниз, освобождая верхнюю строку.
3. 🎨 Отрисовывает верхнюю строку данных на основе текущих значений RSSI.
🔥 Пример использования:
Создание и очистка спрайта:
Обновление спрайта при наличии новых данных:
Перемещение и вывод спрайта на экран:
🔍 Почему это важно?
Диаграмма "Водопад" позволяет нам видеть изменения сигнала в динамике, что очень полезно для анализа и мониторинга. Реализуя это в нашей прошивке, мы обеспечили наглядность и удобство восприятия данных пользователем.
#филин
Привет, коллеги! Сегодня хотим поделиться с вами тем, как мы реализовали диаграмму "Водопад" в нашем сканере частот "ФИЛИН". Диаграмма "Водопад" позволяет визуализировать изменения уровня сигнала (RSSI) с течением времени, отображая данные в виде движущегося графика.
📋 Цель:
Создать визуализацию, которая покажет изменения RSSI (Received Signal Strength Indicator) в режиме реального времени, перемещая данные вверх по экрану, подобно движению воды в водопаде.
🛠 Как мы это сделали:
Мы использовали библиотеку TFT_eSPI для работы со спрайтами и отображения данных на экране. Далее, применили класс WaterfallSprite, который наследуется от TFT_eSprite и добавили в него метод drawWaterfall для отрисовки диаграммы.
class WaterfallSprite : public TFT_eSprite
{
public:
using TFT_eSprite::TFT_eSprite;
void drawWaterfall(uint8_t *data)
{
int16_t height = this->height();
int16_t width = this->width();
memmove(_img + width, _img, (height - 1) * width * 2);
for (size_t x = 0; x < width; ++x)
{
uint16_t color = rssiToColor565(data[x]);
drawPixel(x, 0, color);
}
}
};
Метод drawWaterfall выполняет следующие задачи:
1. 📏 Получает размеры спрайта.
2. 📉 Перемещает данные на один пиксель вниз, освобождая верхнюю строку.
3. 🎨 Отрисовывает верхнюю строку данных на основе текущих значений RSSI.
🔥 Пример использования:
Создание и очистка спрайта:
waterfallSprite.createSprite(DISPLAY_CHANNELS(), GRAPH_HEIGHT);
waterfallSprite.fillScreen(TFT_BLACK);
Обновление спрайта при наличии новых данных:
waterfallSprite.drawWaterfall(frequencyRange.rssi);
Перемещение и вывод спрайта на экран:
waterfallSprite.pushSprite(0,0);
🔍 Почему это важно?
Диаграмма "Водопад" позволяет нам видеть изменения сигнала в динамике, что очень полезно для анализа и мониторинга. Реализуя это в нашей прошивке, мы обеспечили наглядность и удобство восприятия данных пользователем.
#филин
🔥8❤2👍2
Media is too big
VIEW IN TELEGRAM
🔧 Разработка state машины для обработки кнопок: больше, чем просто нажатие!
Наверняка многие из вас сталкивались с задачей обработки нажатий кнопок в своих проектах. На первый взгляд, задача выглядит простой: реагировать на нажатия двух кнопок. Но когда дело доходит до определения коротких и длинных нажатий, одновременных нажатий и устранения дребезга, процесс становится гораздо интереснее и сложнее.
🎯 Основные задачи:
1. Устранение дребезга при нажатии и отпускании кнопок.
2. Определение коротких нажатий.
3. Определение длинных нажатий.
4. Обработка одновременных нажатий обеих кнопок.
🛠 Структура нашей state машины с подробными переходами:
- IDLE (Ожидание):
- Ждём нажатия кнопки.
- При нажатии любой кнопки переходим в состояние DEBOUNCE и отмечаем время.
- DEBOUNCE (Устранение дребезга):
- Проверяем, прошло ли время дребезга (30 мс).
- Если да и кнопку отпустили, возвращаемся в IDLE.
- Если да и кнопку удерживают, фиксируем состояние кнопок и переходим в PRESS_FIXED.
- PRESS_FIXED (Проверка фиксированного нажатия):
- Если обе кнопки удерживаются:
- при отпускании до 1000 мс: переход в SHORT_PRESS_BOTH.
- при удержании более 1000 мс: переход в LONG_PRESS_BOTH.
- Если одна кнопка удерживается:
- при отпускании до 1000 мс: переход в соответствующее SHORT_PRESS состояние.
- при удержании более 1000 мс: переход в соответствующее LONG_PRESS состояние.
- SHORT_PRESS_UP, SHORT_PRESS_DOWN, SHORT_PRESS_BOTH:
- Обрабатывать короткое нажатие.
- Сохранять настройки.
- Переход в состояние RELEASE_DEBOUNCE для ожидания устранения дребезга при отпускании.
- LONG_PRESS_UP, LONG_PRESS_DOWN, LONG_PRESS_BOTH:
- Обрабатывать длинное нажатие с повторяющимся действием (например, увеличение/уменьшение чувствительности).
- Сохранять настройки.
- При отпускании переход в RELEASE_DEBOUNCE.
- RELEASE_DEBOUNCE (Устранение дребезга при отпускании):
- Проверять, прошло ли достаточное время для устранения дребезга при отпускании (30 мс).
- Возвращаться в состояние IDLE.
📊 Итоги:
- Реализация state машины для обработки кнопок может быть непростой задачей.
- Важно думать о всех возможных состояниях и переходах между ними.
- Учитывайте устранение дребезга для стабильной работы вашей системы.
Обработка нажатий кнопок – это искусство! 🎨 Поделитесь своим опытом и лайфхаками в комментариях. 👇
#Программирование #Задачи #Arduino #Электроника #StateMachine #филин
Наверняка многие из вас сталкивались с задачей обработки нажатий кнопок в своих проектах. На первый взгляд, задача выглядит простой: реагировать на нажатия двух кнопок. Но когда дело доходит до определения коротких и длинных нажатий, одновременных нажатий и устранения дребезга, процесс становится гораздо интереснее и сложнее.
🎯 Основные задачи:
1. Устранение дребезга при нажатии и отпускании кнопок.
2. Определение коротких нажатий.
3. Определение длинных нажатий.
4. Обработка одновременных нажатий обеих кнопок.
🛠 Структура нашей state машины с подробными переходами:
- IDLE (Ожидание):
- Ждём нажатия кнопки.
- При нажатии любой кнопки переходим в состояние DEBOUNCE и отмечаем время.
- DEBOUNCE (Устранение дребезга):
- Проверяем, прошло ли время дребезга (30 мс).
- Если да и кнопку отпустили, возвращаемся в IDLE.
- Если да и кнопку удерживают, фиксируем состояние кнопок и переходим в PRESS_FIXED.
- PRESS_FIXED (Проверка фиксированного нажатия):
- Если обе кнопки удерживаются:
- при отпускании до 1000 мс: переход в SHORT_PRESS_BOTH.
- при удержании более 1000 мс: переход в LONG_PRESS_BOTH.
- Если одна кнопка удерживается:
- при отпускании до 1000 мс: переход в соответствующее SHORT_PRESS состояние.
- при удержании более 1000 мс: переход в соответствующее LONG_PRESS состояние.
- SHORT_PRESS_UP, SHORT_PRESS_DOWN, SHORT_PRESS_BOTH:
- Обрабатывать короткое нажатие.
- Сохранять настройки.
- Переход в состояние RELEASE_DEBOUNCE для ожидания устранения дребезга при отпускании.
- LONG_PRESS_UP, LONG_PRESS_DOWN, LONG_PRESS_BOTH:
- Обрабатывать длинное нажатие с повторяющимся действием (например, увеличение/уменьшение чувствительности).
- Сохранять настройки.
- При отпускании переход в RELEASE_DEBOUNCE.
- RELEASE_DEBOUNCE (Устранение дребезга при отпускании):
- Проверять, прошло ли достаточное время для устранения дребезга при отпускании (30 мс).
- Возвращаться в состояние IDLE.
📊 Итоги:
- Реализация state машины для обработки кнопок может быть непростой задачей.
- Важно думать о всех возможных состояниях и переходах между ними.
- Учитывайте устранение дребезга для стабильной работы вашей системы.
Обработка нажатий кнопок – это искусство! 🎨 Поделитесь своим опытом и лайфхаками в комментариях. 👇
#Программирование #Задачи #Arduino #Электроника #StateMachine #филин
👍8🔥4🤓3
Media is too big
VIEW IN TELEGRAM
🚁 Тест нашего сканера частот "ФИЛИН" в поле 🚁
И снова привет, друзья! Сегодня хотим поделиться с вами результатами полевых испытаний нашего сканера частот "ФИЛИН", который находится в стадии разработки. Мы взяли Mavic 3T и протестировали наш детектор с точки старта на расстоянии 400 метров. Результаты оказались многообещающими!
📡 Как это было:
Мы использовали наш прототип сканера частот "ФИЛИН", чтобы зафиксировать сигнал на частоте 2.4 ГГц. Оператор и точка старта были расположены на расстоянии 400 метров от устройства. Во время полета Mavic 3T наш детектор успешно обнаружил сигнал, и вы можете увидеть это на прикрепленном видео.
🔍 Почему это важно:
1. Дальность обнаружения: Наше устройство продемонстрировало хорошие результаты на расстоянии 400 метров, что подтверждает его высокую чувствительность.
2. Реальное тестирование: Эти тесты показывают, что наш сканер частот "ФИЛИН" движется в правильном направлении и может эффективно отслеживать и анализировать сигналы.
3. Постоянное совершенствование: Мы продолжаем работать над улучшением нашего устройства, и такие тесты помогают нам выявить области для улучшений.
#филин
И снова привет, друзья! Сегодня хотим поделиться с вами результатами полевых испытаний нашего сканера частот "ФИЛИН", который находится в стадии разработки. Мы взяли Mavic 3T и протестировали наш детектор с точки старта на расстоянии 400 метров. Результаты оказались многообещающими!
📡 Как это было:
Мы использовали наш прототип сканера частот "ФИЛИН", чтобы зафиксировать сигнал на частоте 2.4 ГГц. Оператор и точка старта были расположены на расстоянии 400 метров от устройства. Во время полета Mavic 3T наш детектор успешно обнаружил сигнал, и вы можете увидеть это на прикрепленном видео.
🔍 Почему это важно:
1. Дальность обнаружения: Наше устройство продемонстрировало хорошие результаты на расстоянии 400 метров, что подтверждает его высокую чувствительность.
2. Реальное тестирование: Эти тесты показывают, что наш сканер частот "ФИЛИН" движется в правильном направлении и может эффективно отслеживать и анализировать сигналы.
3. Постоянное совершенствование: Мы продолжаем работать над улучшением нашего устройства, и такие тесты помогают нам выявить области для улучшений.
#филин
🔥7⚡4👍3❤2🎉2👀1
📢 Режим обновления прошивки по WiFi!
Пока готовится железо, мы в настоящее время работаем над новой функцией нашего прототипа, которая значительно упростит процесс обновления прошивки устройства. Теперь не нужны никакие дополнительные кабели или сложные инструкции. Все, что нужно, – это смартфон! 📱
✨ Вот как это будет работать:
🔧 Переход в режим обновления:
- Пользователь зажимает две кнопки и включает устройство. Простое действие, и устройство мгновенно переходит в режим обновления прошивки.
📶 QR-код для подключения к WiFi:
- На экране устройства появляется QR-код. Пользователь сканирует его смартфоном, и он автоматически подключится к WiFi-сети, созданной устройством. Это первый шаг к обновлению прошивки.
🌐 Шаг второй - доступ к странице загрузки прошивки:
- После успешного подключения устройство покажет второй QR-код. Отсканировав его, пользователь попадет на страницу загрузки новой прошивки. Быстро и просто, как никогда раньше!
💡 Преимущества:
- 📲 Обновления прошивки станут максимально удобными.
- 🔌 Без кабелей, без сложных инструкций – только смартфон и QR-коды.
- 🔄 Уверенность в актуальности программного обеспечения устройства.
Мы уверены, что эта функция сделает процесс обновления прошивки еще более простым и удобным.
Пока готовится железо, мы в настоящее время работаем над новой функцией нашего прототипа, которая значительно упростит процесс обновления прошивки устройства. Теперь не нужны никакие дополнительные кабели или сложные инструкции. Все, что нужно, – это смартфон! 📱
✨ Вот как это будет работать:
🔧 Переход в режим обновления:
- Пользователь зажимает две кнопки и включает устройство. Простое действие, и устройство мгновенно переходит в режим обновления прошивки.
📶 QR-код для подключения к WiFi:
- На экране устройства появляется QR-код. Пользователь сканирует его смартфоном, и он автоматически подключится к WiFi-сети, созданной устройством. Это первый шаг к обновлению прошивки.
🌐 Шаг второй - доступ к странице загрузки прошивки:
- После успешного подключения устройство покажет второй QR-код. Отсканировав его, пользователь попадет на страницу загрузки новой прошивки. Быстро и просто, как никогда раньше!
💡 Преимущества:
- 📲 Обновления прошивки станут максимально удобными.
- 🔌 Без кабелей, без сложных инструкций – только смартфон и QR-коды.
- 🔄 Уверенность в актуальности программного обеспечения устройства.
Мы уверены, что эта функция сделает процесс обновления прошивки еще более простым и удобным.
🔥11👍2👀1👾1
Media is too big
VIEW IN TELEGRAM
🔧 Прогресс нашего проекта: новая функция обновления прошивки!
Как и было заявлено, мы реализовали функцию обновления прошивки. После подключения сетевых библиотек прошивка значительно увеличилась в размере — практически вдвое! Поэтому нам пришлось заняться оптимизацией: сжимали все, что можно сжать, избавлялись от ненужных зависимостей — все для того, чтобы сохранить красоту и удобство использования.
🔍 На видео ниже можно увидеть функцию обновления в действии.
Теперь впереди еще немного работы над железной частью. Мы планируем собрать первые 10 экземпляров для тестирования.
⏳ Оптимистичный план — месяц на изготовление.
⏳ Пессимистичный план — полтора месяца на изготовление.
Следите за нашими обновлениями и оставайтесь с нами!🚀
Как и было заявлено, мы реализовали функцию обновления прошивки. После подключения сетевых библиотек прошивка значительно увеличилась в размере — практически вдвое! Поэтому нам пришлось заняться оптимизацией: сжимали все, что можно сжать, избавлялись от ненужных зависимостей — все для того, чтобы сохранить красоту и удобство использования.
🔍 На видео ниже можно увидеть функцию обновления в действии.
Теперь впереди еще немного работы над железной частью. Мы планируем собрать первые 10 экземпляров для тестирования.
⏳ Оптимистичный план — месяц на изготовление.
⏳ Пессимистичный план — полтора месяца на изготовление.
Следите за нашими обновлениями и оставайтесь с нами!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12⚡4❤1
📦 Понедельник – день разбора зависших проектов!
Мы продолжаем улучшать наш код, разруливая домены и обновляя драйверы. Сегодня, мы переработали логику обработки частотных доменов, чтобы сделать их более структурированными и удобными для работы. Теперь мы имеем два домена:
🔧 Что мы сделали?
- Переписали структуру
- Удалили устаревшие домены и добавили новые, следующие новому принципу именования.
- Обновили функции для работы с новыми доменами.
- Переписали код для объединения доменов в одну строку формата
🔍 На скрине пасхалка про тот функционал, который мы имеем в виду!🚀
Мы продолжаем улучшать наш код, разруливая домены и обновляя драйверы. Сегодня, мы переработали логику обработки частотных доменов, чтобы сделать их более структурированными и удобными для работы. Теперь мы имеем два домена:
domain_0 и domain_1, которые описывают низкий и высокий частотные диапазоны соответственно.🔧 Что мы сделали?
- Переписали структуру
fhss_config_t для поддержки новых доменов.- Удалили устаревшие домены и добавили новые, следующие новому принципу именования.
- Обновили функции для работы с новыми доменами.
- Переписали код для объединения доменов в одну строку формата
domain_0-domain_1.🔍 На скрине пасхалка про тот функционал, который мы имеем в виду!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥰1👌1💯1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с attachInterrupt под разными микроконтроллерами
🤖 Введение
Наш сбросной механизм подключается как обычная серво машинка и читает PWM сигнал. Мы столкнулись с особенностями работы функции
💡 STM32: Лямбда-функции
STM32 позволяет использовать лямбда-функции для настройки прерываний, что упрощает код.
⚠️ ESP32: Ограничения и синглтон
ESP32 не поддерживает лямбда-функции в
И да, на видео демонстрация работы механизма от подписчика.🚀
🤖 Введение
Наш сбросной механизм подключается как обычная серво машинка и читает PWM сигнал. Мы столкнулись с особенностями работы функции
attachInterrupt под разными микроконтроллерами, такими как STM32 и ESP32.💡 STM32: Лямбда-функции
STM32 позволяет использовать лямбда-функции для настройки прерываний, что упрощает код.
c++
#include "device/PwmHandler.h"
void PwmHandler::Init(callback_function_t callback)
{
mCallback = callback;
pinMode(mPwmPin, INPUT);
attachInterrupt(
digitalPinToInterrupt(mPwmPin), [this]()
{ this->ISR_pwm(); },
CHANGE);
}
void PwmHandler::ISR_pwm()
{
// Логика обработчика прерываний
}
⚠️ ESP32: Ограничения и синглтон
ESP32 не поддерживает лямбда-функции в
attachInterrupt. Решение — использование шаблона Singleton и статических методов.c++
#include "device/PwmHandler.h"
PwmHandler* PwmHandler::instance = nullptr;
void IRAM_ATTR handler_wrapper()
{
if (PwmHandler::instance) {
PwmHandler::instance->ISR_pwm();
}
}
void PwmHandler::Init(callback_function_t callback)
{
mCallback = callback;
pinMode(mPwmPin, INPUT);
instance = this;
attachInterrupt(digitalPinToInterrupt(mPwmPin), handler_wrapper, CHANGE);
}
void PwmHandler::ISR_pwm()
{
// Логика обработчика прерываний
}
И да, на видео демонстрация работы механизма от подписчика.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8✍2🆒1😎1
ДронЗавод
🔧 Прогресс нашего проекта: новая функция обновления прошивки! Как и было заявлено, мы реализовали функцию обновления прошивки. После подключения сетевых библиотек прошивка значительно увеличилась в размере — практически вдвое! Поэтому нам пришлось заняться…
🔧 Обновление по нашему проекту: временные рамки и прогресс!
😔 К сожалению, нам пришлось перейти на пессимистичный план. В процессе работы над железной частью возникли некоторые трудности, из-за чего мы вынуждены были перерисовывать некоторые компоненты. Но несмотря на это, мы движемся вперед и стараемся не упускать из вида нашу конечную цель.
🚀 Хорошая новость заключается в том, что на данный момент все Gerber файлы готовы! Теперь дело стоит за тестированием первых 10 экземпляров.
⏳ Оптимистичный план завершения — 1.5 месяца на изготовление.
⏳ Пессимистичный план — около 2 месяцев на изготовление.
Спасибо за вашу поддержку и понимание! 📡
😔 К сожалению, нам пришлось перейти на пессимистичный план. В процессе работы над железной частью возникли некоторые трудности, из-за чего мы вынуждены были перерисовывать некоторые компоненты. Но несмотря на это, мы движемся вперед и стараемся не упускать из вида нашу конечную цель.
🚀 Хорошая новость заключается в том, что на данный момент все Gerber файлы готовы! Теперь дело стоит за тестированием первых 10 экземпляров.
⏳ Оптимистичный план завершения — 1.5 месяца на изготовление.
⏳ Пессимистичный план — около 2 месяцев на изготовление.
Спасибо за вашу поддержку и понимание! 📡
👍8⚡6😁3😎2🏆1
ДронЗавод
This media is not supported in your browser
VIEW IN TELEGRAM
Вот еще один интересный проект, нужно подключиться к китайской железке и по QueneProtocal работать вот с такого девайса, очень современно и амбициозно :).
Мы столкнулись с задачей интеграции с устройством, работающим по уникальному протоколу, который требует тщательного анализа и кастомной реализации. 🛠
Проект включает в себя:
1. Обратная разработка протокола: Разбираем и тестируем
2. CQRS подход и фасад для UDP протокола: Мы используем подход CQRS для эффективного управления запросами и командами, и оборачиваем сложный двусторонний UDP протокол в удобное API. Это API будет доступно для написания клиента, что делает взаимодействие с устройством намного проще и удобнее. 🔄
3. Развертывание на Raspberry Pi: Весь наш код и API будут развернуты на компактном и мощном устройстве Raspberry Pi, что позволит эффективно обрабатывать запросы и команды в режиме реального времени. 🍓🖥
Работа с таким устройством требует постоянного тестирования и общения через UDP, что добавляет свою изюминку в процесс разработки. ⚙️
Каждое сообщение между нашим приложением и устройством было перехвачено Wireshark и распаршено в структуру для правильной обработки на стороне железки. В итоге, работа над таким проектом не только расширяет технические знания и навыки, но и представляет собой увлекательный и креативный процесс, где каждая мелочь имеет значение. 💡
Следите за нашими обновлениями, будет ещё много увлекательного! 🚀
#разработка #технологии #интеграция #инженерия #RaspberryPi #QueneProtocal
Мы столкнулись с задачей интеграции с устройством, работающим по уникальному протоколу, который требует тщательного анализа и кастомной реализации. 🛠
Проект включает в себя:
1. Обратная разработка протокола: Разбираем и тестируем
QueneProtocal, чтобы понять, как устройство общается с внешним миром. Мы использовали Wireshark для перехвата и анализа каждого сообщения, распарсив его в структурированный формат. 📡2. CQRS подход и фасад для UDP протокола: Мы используем подход CQRS для эффективного управления запросами и командами, и оборачиваем сложный двусторонний UDP протокол в удобное API. Это API будет доступно для написания клиента, что делает взаимодействие с устройством намного проще и удобнее. 🔄
3. Развертывание на Raspberry Pi: Весь наш код и API будут развернуты на компактном и мощном устройстве Raspberry Pi, что позволит эффективно обрабатывать запросы и команды в режиме реального времени. 🍓🖥
Работа с таким устройством требует постоянного тестирования и общения через UDP, что добавляет свою изюминку в процесс разработки. ⚙️
Каждое сообщение между нашим приложением и устройством было перехвачено Wireshark и распаршено в структуру для правильной обработки на стороне железки. В итоге, работа над таким проектом не только расширяет технические знания и навыки, но и представляет собой увлекательный и креативный процесс, где каждая мелочь имеет значение. 💡
Следите за нашими обновлениями, будет ещё много увлекательного! 🚀
#разработка #технологии #интеграция #инженерия #RaspberryPi #QueneProtocal
👍4❤3😍3❤🔥1⚡1👏1
🚀 Влияние GPT на IT-профессии и перспективы
Для разработчиков и инженеров 💻:
1. Автоматизация рутинных задач: GPT освобождает разработчиков от рутинной работы, позволяя сосредоточиться на более сложных задачах.
2. Генерация кода: GPT-4 помогает писать фрагменты кода и тесты, ускоряя процесс разработки.
3. Обучение: Новички могут использовать GPT как наставника для объяснения сложных концепций.
Для специалистов по данным 📊:
1. Анализ данных: GPT помогает находить инсайты в больших объемах данных.
2. Создание отчетов: Автоматическая генерация отчетов и визуализаций.
3. Прогнозирование: Поддержка в построении моделей и прогнозов.
Для специалистов по кибербезопасности 🔒:
1. Выявление угроз: GPT анализирует лог-файлы и сетевой трафик для обнаружения аномалий.
2. Автоматизация мер: Помощь в автоматизации ответных мер на инциденты.
Будущее IT-профессий 🌟:
1. Сотрудничество человека и ИИ: GPT будет усиливать производительность и креативность специалистов.
2. Новые роли: Появятся новые направления и роли, связанные с интеграцией GPT.
3. Этические и правовые аспекты: Важно установить правила использования GPT для защиты прав пользователей.
GPT уже меняет IT и будет делать это дальше. Важно адаптироваться и использовать все преимущества ИИ! 💪
#IT #GPT #Будущее #Технологии
▍
Для разработчиков и инженеров 💻:
1. Автоматизация рутинных задач: GPT освобождает разработчиков от рутинной работы, позволяя сосредоточиться на более сложных задачах.
2. Генерация кода: GPT-4 помогает писать фрагменты кода и тесты, ускоряя процесс разработки.
3. Обучение: Новички могут использовать GPT как наставника для объяснения сложных концепций.
Для специалистов по данным 📊:
1. Анализ данных: GPT помогает находить инсайты в больших объемах данных.
2. Создание отчетов: Автоматическая генерация отчетов и визуализаций.
3. Прогнозирование: Поддержка в построении моделей и прогнозов.
Для специалистов по кибербезопасности 🔒:
1. Выявление угроз: GPT анализирует лог-файлы и сетевой трафик для обнаружения аномалий.
2. Автоматизация мер: Помощь в автоматизации ответных мер на инциденты.
Будущее IT-профессий 🌟:
1. Сотрудничество человека и ИИ: GPT будет усиливать производительность и креативность специалистов.
2. Новые роли: Появятся новые направления и роли, связанные с интеграцией GPT.
3. Этические и правовые аспекты: Важно установить правила использования GPT для защиты прав пользователей.
GPT уже меняет IT и будет делать это дальше. Важно адаптироваться и использовать все преимущества ИИ! 💪
#IT #GPT #Будущее #Технологии
▍
👍2😱2💩2😨2👎1
Целая гора пластиковых 3D печатных проставок, готовых к отправке! 🚀✈️
Как думаете, сколько здесь штук? Пишите ваши догадки в комментариях! 😉
#3Dпечать #проставки #угадайчисло #сбросноймеханизм
Как думаете, сколько здесь штук? Пишите ваши догадки в комментариях! 😉
#3Dпечать #проставки #угадайчисло #сбросноймеханизм
👍3🤷♂2🤩2⚡1👎1🔥1
🚀 Борьба за граммы и поиск идеального облегчения! 🚀
Старая подкладка весила целых 21,5 грамма, но благодаря использованию другого материала удалось снизить вес до 4,3 грамма! 🌟 Мы находимся на пути к совершенству и уже нашли несколько мест для дальнейшего облегчения. 🔧 Ожидаем тестовые образцы деталей с нетерпением! 💡
#сбросноймеханизм
Старая подкладка весила целых 21,5 грамма, но благодаря использованию другого материала удалось снизить вес до 4,3 грамма! 🌟 Мы находимся на пути к совершенству и уже нашли несколько мест для дальнейшего облегчения. 🔧 Ожидаем тестовые образцы деталей с нетерпением! 💡
#сбросноймеханизм
🔥11👍4🤩3⚡1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Допекаем последнюю партию плат на сбросы 🚀
Новая версия плат уже вот вот подъедет!
Контакты в шапке описания канала.
#сбросноймеханизм
Новая версия плат уже вот вот подъедет!
Контакты в шапке описания канала.
#сбросноймеханизм
👍11⚡7🔥6😎2👎1👌1🤓1
This media is not supported in your browser
VIEW IN TELEGRAM
🎉 Большая благодарность всем причастным!
🔧 Благодаря вашим и нашим усилиям у нас теперь есть ещё один 3D принтер, который в три-четыре раза производительнее тех, что у нас уже есть. 🚀
🔍 Для сравнения: наш самый высокопроизводительный принтер мог печатать 8 проставок за 11 часов, а новый принтер справляется с 12 проставками всего за 5 часов 30 минут! 💪
🔥 С этим новым оборудованием мы сможем значительно улучшить наши проекты и достичь новых высот. Спасибо каждому, кто помог сделать это возможным!
#благодарность #3Dпринтер #технологии #производительность #сбросноймеханизм
🔧 Благодаря вашим и нашим усилиям у нас теперь есть ещё один 3D принтер, который в три-четыре раза производительнее тех, что у нас уже есть. 🚀
🔍 Для сравнения: наш самый высокопроизводительный принтер мог печатать 8 проставок за 11 часов, а новый принтер справляется с 12 проставками всего за 5 часов 30 минут! 💪
🔥 С этим новым оборудованием мы сможем значительно улучшить наши проекты и достичь новых высот. Спасибо каждому, кто помог сделать это возможным!
#благодарность #3Dпринтер #технологии #производительность #сбросноймеханизм
🔥14👍7👌3⚡1👏1
ДронЗавод
🔧 Обновление по нашему проекту: временные рамки и прогресс! 😔 К сожалению, нам пришлось перейти на пессимистичный план. В процессе работы над железной частью возникли некоторые трудности, из-за чего мы вынуждены были перерисовывать некоторые компоненты. Но…
🚀 Обновление по проекту "Филин"! 🦉
Платы для нашего проекта "Филин" приехали уже пару недель назад. Однако, мелкие детали ("рассыпуха") все еще находятся в пути. Временные логистические трудности не помешают нашему прогрессу.
В качестве временного решения, для изготовления первого образца мы решили использовать детали из старой техники. 💡🔧💻 В доноры попал "горелый" полетный контроллер от SpeedyBee, который, несмотря на свой прежний опыт, все еще может послужить делу! 🔥🛠
#филин
Платы для нашего проекта "Филин" приехали уже пару недель назад. Однако, мелкие детали ("рассыпуха") все еще находятся в пути. Временные логистические трудности не помешают нашему прогрессу.
В качестве временного решения, для изготовления первого образца мы решили использовать детали из старой техники. 💡🔧💻 В доноры попал "горелый" полетный контроллер от SpeedyBee, который, несмотря на свой прежний опыт, все еще может послужить делу! 🔥🛠
#филин
🔥10👍3❤🔥2⚡1💩1
Media is too big
VIEW IN TELEGRAM
🔧 Собрали первый экземпляр "Филин"! 🚀
✨ Обошлось не без помарок, но всё починили на месте. 😅
🔧 В ходе сборки выяснили несколько важных моментов:
1. Нужно добавить в сервисный режим режимы калибровки, так как каждая железка требует своих параметров.
2. Уменьшить количество используемых потоков. 🎛
🖌 Помимо этого, необходимо нарисовать новый корпус и выбрать элементы питания. К сожалению, литий-ионные батареи оказались слишком большими. 🔋
🎉 Радует, что устройство заработало с первой итерации!
Продолжаем работу, чтобы улучшить и оптимизировать "Филин".
#филин
✨ Обошлось не без помарок, но всё починили на месте. 😅
🔧 В ходе сборки выяснили несколько важных моментов:
1. Нужно добавить в сервисный режим режимы калибровки, так как каждая железка требует своих параметров.
2. Уменьшить количество используемых потоков. 🎛
🖌 Помимо этого, необходимо нарисовать новый корпус и выбрать элементы питания. К сожалению, литий-ионные батареи оказались слишком большими. 🔋
🎉 Радует, что устройство заработало с первой итерации!
Продолжаем работу, чтобы улучшить и оптимизировать "Филин".
#филин
👍12🔥12❤2👻2⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
📡 Парсер кроссфаер протокола на Python
Друзья, может для кого-то будет полезным Python-скрипт, который позволяет парсить данные встроенного кроссфаер (Crossfire) протокола и выводить содержимое различных каналов!
Этот скрипт считывает данные из выбранного последовательного порта и выводит информацию о:
- GPS-позиции (широта, долгота, скорость, высота и количество спутников)
- Скорости подъема/спуска (Vario)
- Углах наклона (Pitch, Roll, Yaw)
- Барометрической высоте
- Состоянии связи (RSSI, LQ, SNR)
- Параметрах батареи (напряжение, ток, заряд, процент заряда)
- Упакованных RC-каналах
Как запустить скрипт:
1. Убедитесь, что у вас установлен Python 3 и необходимые библиотеки.
2. Сохраните скрипт в файл, например
3. Откройте терминал или командную строку и перейдите в каталог с сохраненным файлом.
4. Запустите скрипт с указанием последовательного порта и скорости:
Пример:
Скрипт начнет выводить соответствующую информацию в реальном времени.
Приятного использования и удачных полетов! 🚀
Скачать скрипт можно по ссылке [сылка на файл / архив с Python скриптом].
Друзья, может для кого-то будет полезным Python-скрипт, который позволяет парсить данные встроенного кроссфаер (Crossfire) протокола и выводить содержимое различных каналов!
Этот скрипт считывает данные из выбранного последовательного порта и выводит информацию о:
- GPS-позиции (широта, долгота, скорость, высота и количество спутников)
- Скорости подъема/спуска (Vario)
- Углах наклона (Pitch, Roll, Yaw)
- Барометрической высоте
- Состоянии связи (RSSI, LQ, SNR)
- Параметрах батареи (напряжение, ток, заряд, процент заряда)
- Упакованных RC-каналах
Как запустить скрипт:
1. Убедитесь, что у вас установлен Python 3 и необходимые библиотеки.
2. Сохраните скрипт в файл, например
crossfire_parser.py.3. Откройте терминал или командную строку и перейдите в каталог с сохраненным файлом.
4. Запустите скрипт с указанием последовательного порта и скорости:
python3 crossfire_parser.py -P <Ваш COM порт> -b <Скорость>
Пример:
python3 crossfire_parser.py -P COM6 -b 420000
Скрипт начнет выводить соответствующую информацию в реальном времени.
Приятного использования и удачных полетов! 🚀
Скачать скрипт можно по ссылке [сылка на файл / архив с Python скриптом].
👍14🆒3⚡1👎1🔥1🤩1👌1🤓1
Media is too big
VIEW IN TELEGRAM
⚠️ Экстренное введение процедуры калибровки в проект "Филин"! 🛠
📡 Описание проблемы:
Для корректной работы устройства необходимо учесть вариации в аналоговом выходе напряжения. В связи с этим требуется провести измерения и определить рабочие диапазоны для различных компонентов.
🎥 Что добавлено:
В сервисном режиме теперь доступна калибровка нижнего и верхнего порога напряжения. Это позволит точно установить границу шума и максимального приема, обеспечивая мониторинг в рабочем диапазоне.
Детали на видео! 👇
#филин
📡 Описание проблемы:
Для корректной работы устройства необходимо учесть вариации в аналоговом выходе напряжения. В связи с этим требуется провести измерения и определить рабочие диапазоны для различных компонентов.
🎥 Что добавлено:
В сервисном режиме теперь доступна калибровка нижнего и верхнего порога напряжения. Это позволит точно установить границу шума и максимального приема, обеспечивая мониторинг в рабочем диапазоне.
Детали на видео! 👇
#филин
👍8😎2👎1🎉1