ДронЗавод – Telegram
ДронЗавод
2.41K subscribers
240 photos
113 videos
13 files
26 links
Производим FPV дроны. По всем вопросам @dronemaster @techno_drone
Чат https://news.1rj.ru/str/dronesfactoryc
Биткоин кошелек для пожертвований: перемещен
Download Telegram
Media is too big
VIEW IN TELEGRAM
🧳 доказательство концепции практически готово к полю, спорим как назвать как обычно 😂
#новое
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤‍🔥1🤩1🤓1🆒1
Media is too big
VIEW IN TELEGRAM
🧳 Чем вот ещё на выходных в праздники позаниматься как не поделать всякие прототипы 😂

#новое
👍73👏2🔥1🏆1🫡1
Media is too big
VIEW IN TELEGRAM
🤨 Раньше одни ребята лошадь надували через соломинку, теперь другие ребята с высокими технологиями делают "качественный" карбон...
Please open Telegram to view this post
VIEW IN TELEGRAM
🤬11😁3💩3👍1🤯1🤡1💯1🦄1😎1
🧳 присели на дорожку...

#сбросноймеханизм
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤩4🔥3😎21
This media is not supported in your browser
VIEW IN TELEGRAM
🧳 переписали под RTOS, стало плавнее работать .... Белый не ярко ли?
#филин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👎1🤓1🆒1
🧳Чем же еще заниматься на выходных, как ковырять SPI шину и разбираться почему несколько устройств ни как не начнут нормально работать на ней. Фух, было весело особенно когда в ход пошел китайский анализатор.

для интересующихся:

0x8F4320 => 1000 1111 0100 0011 0010 0000

разворачиваем каждые 4 бита

1000 1111 0100 0011 0010 0000 => 0001 1111 0010 1100 0100 0000

Получение первых 4 битов: Двоичное: 0001 Десятичное: 1

Получение оставшихся 20 бит: Двоичное: 1111 0010 1100 0100 0000 Десятичное: 1 * 2^19 + 1 * 2^18 + 1 * 2^17 + 1 * 2^16 + 0 * 2^15 + 0 * 2^14 + 1 * 2^13 + 0 * 2^12 + 1 * 2^11 + 1 * 2^10 + 0 * 2^9 + 0 * 2^8 + 1 * 2^7 + 0 * 2^6 + 0 * 2^5 + 1 * 2^4 + 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 0 * 2^0 Десятичное: 524288 + 262144 + 131072 + 65536 + 0 + 0 + 4096 + 0 + 2048 + 1024 + 0 + 0 + 128 + 0 + 0 + 16 + 0 + 0 + 0 + 0 Десятичное: 983040

все по даташиту.

#филин
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤓2👨‍💻2👾2
ДронЗавод
🧳Чем же еще заниматься на выходных, как ковырять SPI шину и разбираться почему несколько устройств ни как не начнут нормально работать на ней. Фух, было весело особенно когда в ход пошел китайский анализатор. для интересующихся: 0x8F4320 => 1000 1111 0100…
Как рассчитать синтезатор частоты RTC6715: пример для частоты 5386 MHz
В этом посте мы рассмотрим, как с помощью шины SPI настроить синтезатор частоты на чипе RTC6715 для получения частоты 5386 MHz. Мы отправляем данные по шине SPI в 25-битном формате, который включает в себя адрес, бит чтения/записи и сами данные.

Шина SPI и структура данных
На шине SPI данные передаются в последовательном виде. В нашем случае, данный поток состоит из:

4 бит адреса
1 бит чтения/записи (write = 1)
20 бит данных
Порядок передачи: 4 бита адреса, 1 бит чтения/записи, 20 бит данных.

0001 1 0000 0010 1010 0000 0101

Значение данных
ADDRESS (0x01) - Синтезатор регистра B
R/W (1) - Запись (Write)
DATA (0000 0010 1010 0000 0101) - Данные синтезатора

Разбиение данных регистра

Регистры синтезатора разбиваются следующим образом:

SYN_RF_N_REG [12:0]: первые 13 бит данных
0000 0010 1010 0
SYN_RF_A_REG [6:0]: последние 7 бит данных
000 0101

Значения
N (10-битное значение): 00001010100 (84 в десятичной форме)
A (7-битное значение): 0101 (5 в десятичной форме)

Формула расчета частоты
С помощью этих значений и следующих параметров системы мы сможем рассчитать частоту:

FLO (Частота локального осциллятора)

FREF (Частота опорного осциллятора = 1 MHz)

R = 8 (Делитель частоты)

FLO = 2 * (N * 32 + A) * (FREF / R)

Расчет частоты
Подставим значения:

FLO = 2 * (84 * 32 + 5) * (8 MHz / 8)
FLO = 2 * (2688 + 5) * 1 MHz
FLO = 2 * 2693 MHz
FLO = 5386 MHz

Итог
Таким образом, данные, отправленные по шине SPI: 0001 1 0000 0010 1010 0000 0105, настраивают синтезатор RTC6715 на получение частоты локального осциллятора (FLO) равной 5386 MHz.

Эту технику можно использовать для настройки других частот путем изменения регистров SYN_RF_N_REG и SYN_RF_A_REG.

Надеюсь, это руководство было полезным! Не стесняйтесь задавать вопросы или предоставлять комментарии.
👍65👀3🤯1🌚1🤓1👨‍💻1🙉1
🤫 Чудес мы тут и не ожидали увидеть, но нужно было чекнуть перед растворением. И пошли сомнения, а нужно ли растворять, может быть и так сойдет.
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤯1🤓1👨‍💻1
Media is too big
VIEW IN TELEGRAM
📡 Сканер Частот "ФИЛИН" 📡
Представляем "ФИЛИН" – сканер для мониторинга радиочастотных диапазонов 1.2 ГГц, 2.4 ГГц и 5.8 ГГц.

🚀 Roadmap - что планируем реализовать

Основные Особенности:
Многочастотное Сканирование:

Независимое сканирование всех трёх диапазонов.
Высокая точность и надежность обнаружения сигналов.

Регулярное Обновление:

Использует RTOS (Real-Time Operating System) для постоянного обновления данных.

Настройки Порогов Сигнала:

Возможность устанавливать пороги сигналов для каждого диапазона.

Функция Мьюта:

Возможность отключения нежелательных диапазонов.

Сброс к Заводским Настройкам:

Быстрое возвращение к исходной конфигурации при необходимости.

Технические Характеристики:

Частотные Диапазоны: 1.2 ГГц, 2.4 ГГц, 5.8 ГГц.
Дисплей: OLED.
Питание: встроенная lion батарея выход под power bank.

#филин
🔥11👍5🎉2🍾2😍1🏆1
🛠 Важность Писать Читаемый Код 🛠

Привет, коллеги-разработчики! Сегодня хотим поговорить о важности написания простого и читаемого кода. В мире программирования, читаемость кода имеет огромное значение. Это не только облегчает процесс отладки и поддержки, но и делает наш код более понятным для других разработчиков.

📡 Наш Подход 📡

На скриншоте приведён ключевой метод из прошивки нашего сканера частот "ФИЛИН". Этот метод отвечает за несколько важных задач: обновление данных всех диапазонов частот, вычисление максимального 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 для отрисовки диаграммы.

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);


🔍 Почему это важно?

Диаграмма "Водопад" позволяет нам видеть изменения сигнала в динамике, что очень полезно для анализа и мониторинга. Реализуя это в нашей прошивке, мы обеспечили наглядность и удобство восприятия данных пользователем.
#филин
🔥82👍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 #филин
👍8🔥4🤓3
Media is too big
VIEW IN TELEGRAM
🚁 Тест нашего сканера частот "ФИЛИН" в поле 🚁

И снова привет, друзья! Сегодня хотим поделиться с вами результатами полевых испытаний нашего сканера частот "ФИЛИН", который находится в стадии разработки. Мы взяли Mavic 3T и протестировали наш детектор с точки старта на расстоянии 400 метров. Результаты оказались многообещающими!

📡 Как это было:

Мы использовали наш прототип сканера частот "ФИЛИН", чтобы зафиксировать сигнал на частоте 2.4 ГГц. Оператор и точка старта были расположены на расстоянии 400 метров от устройства. Во время полета Mavic 3T наш детектор успешно обнаружил сигнал, и вы можете увидеть это на прикрепленном видео.

🔍 Почему это важно:

1. Дальность обнаружения: Наше устройство продемонстрировало хорошие результаты на расстоянии 400 метров, что подтверждает его высокую чувствительность.
2. Реальное тестирование: Эти тесты показывают, что наш сканер частот "ФИЛИН" движется в правильном направлении и может эффективно отслеживать и анализировать сигналы.
3. Постоянное совершенствование: Мы продолжаем работать над улучшением нашего устройства, и такие тесты помогают нам выявить области для улучшений.

#филин
🔥74👍32🎉2👀1
📢 Режим обновления прошивки по WiFi!

Пока готовится железо, мы в настоящее время работаем над новой функцией нашего прототипа, которая значительно упростит процесс обновления прошивки устройства. Теперь не нужны никакие дополнительные кабели или сложные инструкции. Все, что нужно, – это смартфон! 📱

Вот как это будет работать:

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

📶 QR-код для подключения к WiFi:
- На экране устройства появляется QR-код. Пользователь сканирует его смартфоном, и он автоматически подключится к WiFi-сети, созданной устройством. Это первый шаг к обновлению прошивки.

🌐 Шаг второй - доступ к странице загрузки прошивки:
- После успешного подключения устройство покажет второй QR-код. Отсканировав его, пользователь попадет на страницу загрузки новой прошивки. Быстро и просто, как никогда раньше!

💡 Преимущества:
- 📲 Обновления прошивки станут максимально удобными.
- 🔌 Без кабелей, без сложных инструкций – только смартфон и QR-коды.
- 🔄 Уверенность в актуальности программного обеспечения устройства.

Мы уверены, что эта функция сделает процесс обновления прошивки еще более простым и удобным.
🔥11👍2👀1👾1
Media is too big
VIEW IN TELEGRAM
🔧 Прогресс нашего проекта: новая функция обновления прошивки!

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

🔍 На видео ниже можно увидеть функцию обновления в действии.

Теперь впереди еще немного работы над железной частью. Мы планируем собрать первые 10 экземпляров для тестирования.

Оптимистичный план — месяц на изготовление.
Пессимистичный план — полтора месяца на изготовление.

Следите за нашими обновлениями и оставайтесь с нами! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1241
📦 Понедельник – день разбора зависших проектов!

Мы продолжаем улучшать наш код, разруливая домены и обновляя драйверы. Сегодня, мы переработали логику обработки частотных доменов, чтобы сделать их более структурированными и удобными для работы. Теперь мы имеем два домена: 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 сигнал. Мы столкнулись с особенностями работы функции 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
👍82🆒1😎1
ДронЗавод
🔧 Прогресс нашего проекта: новая функция обновления прошивки! Как и было заявлено, мы реализовали функцию обновления прошивки. После подключения сетевых библиотек прошивка значительно увеличилась в размере — практически вдвое! Поэтому нам пришлось заняться…
🔧 Обновление по нашему проекту: временные рамки и прогресс!

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

🚀 Хорошая новость заключается в том, что на данный момент все Gerber файлы готовы! Теперь дело стоит за тестированием первых 10 экземпляров.

Оптимистичный план завершения — 1.5 месяца на изготовление.
Пессимистичный план — около 2 месяцев на изготовление.

Спасибо за вашу поддержку и понимание! 📡
👍86😁3😎2🏆1
ДронЗавод
🧳 Немного в коде, по этому контента пока не много. И да, на картинке оригинальное китайское название QUENE PROTOCAL. #код
This media is not supported in your browser
VIEW IN TELEGRAM
Вот еще один интересный проект, нужно подключиться к китайской железке и по QueneProtocal работать вот с такого девайса, очень современно и амбициозно :).

Мы столкнулись с задачей интеграции с устройством, работающим по уникальному протоколу, который требует тщательного анализа и кастомной реализации. 🛠

Проект включает в себя:

1. Обратная разработка протокола: Разбираем и тестируем QueneProtocal, чтобы понять, как устройство общается с внешним миром. Мы использовали Wireshark для перехвата и анализа каждого сообщения, распарсив его в структурированный формат. 📡

2. CQRS подход и фасад для UDP протокола: Мы используем подход CQRS для эффективного управления запросами и командами, и оборачиваем сложный двусторонний UDP протокол в удобное API. Это API будет доступно для написания клиента, что делает взаимодействие с устройством намного проще и удобнее. 🔄

3. Развертывание на Raspberry Pi: Весь наш код и API будут развернуты на компактном и мощном устройстве Raspberry Pi, что позволит эффективно обрабатывать запросы и команды в режиме реального времени. 🍓🖥

Работа с таким устройством требует постоянного тестирования и общения через UDP, что добавляет свою изюминку в процесс разработки. ⚙️

Каждое сообщение между нашим приложением и устройством было перехвачено Wireshark и распаршено в структуру для правильной обработки на стороне железки. В итоге, работа над таким проектом не только расширяет технические знания и навыки, но и представляет собой увлекательный и креативный процесс, где каждая мелочь имеет значение. 💡

Следите за нашими обновлениями, будет ещё много увлекательного! 🚀

#разработка #технологии #интеграция #инженерия #RaspberryPi #QueneProtocal
👍43😍3❤‍🔥11👏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 #Будущее #Технологии
👍2😱2💩2😨2👎1