ДронЗавод – Telegram
ДронЗавод
2.41K subscribers
240 photos
113 videos
13 files
26 links
Производим FPV дроны. По всем вопросам @dronemaster @techno_drone
Чат https://news.1rj.ru/str/dronesfactoryc
Биткоин кошелек для пожертвований: перемещен
Download Telegram
🤫Вроде бы все вышло как и думали, но есть нюанс. Видимо толщина кабеля имеет значение, нельзя так просто взять и увеличить антенну частично.
#антенны
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62😎21🔥1👾1
Media is too big
VIEW IN TELEGRAM
🧳 Wi-fi и bluetooth гарнитура детектед, надо бы теперь сделать мавик детектед и желательно в полях :)
#новое
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2🤝2🆒2
Media is too big
VIEW IN TELEGRAM
🧳 Мавик тоже отдетектирован, осталось пойти с ним в поля, когда это станет возможным 😊

#новое
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉52👾2👍1🍾1😎1
Media is too big
VIEW IN TELEGRAM
🤫 Это правда не MAYHEM, но уже что-то...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1😁1😎1
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