О, да, тема создана, это хорошо. Выскажу свое мнение по всем вопросам. Я вижу данный проект, как простое устройство, которое не делает никаких космических вещей, без WiFi и тачскрина. Которое будет доделано до конца и будет просто использоваться, а не бесконечно совершенствоваться.
Pingvin писал(а):
Мои предложения:
- прикрутить FreeRTOS
- реализовать прием пакета (аппаратными средствами)
- передачу пакета (аппаратно)
- прикрутить смарт RGB
Если хватит ресурсов
- прикрутить радиомодуль
1. Операционная система, на мой взгляд, не нужна. Она только усложнит работу. Хватит банального main loop с опросом всех "медленных" вещей + прерывания для "быстрых". Операционную систему применяют, когда у устройства есть задачи, занимающие длительное время, чтобы избежать залипания других задач. Пример - чтение и запись на SD-карту. Для всего остального достаточно кооперативной многозадачности в одном цикле. Кроме того, это позволяет избавиться от проблем "гонки данных" (data race). Не нужно мьютексов, семафоров и критических секций, коих полно в многопоточном коде с вытеснением (когда ОС может прервать ваш код в любом месте).
Ну и проект становится понятнее и проще.
2. Да, девайс должен реализовывать только физический уровень ИК-приемника-передатчика. То есть пришел массив - он его передал. Пришел ИК-сигнал - он записал в массив. Протокол разбирать уже должна повязка.
3. Не знаю, зачем смарт-RGB. Ножек хватает и на обычный RGB с полноценным ШИМ по каждому каналу. Можно воспроизвести абсолютно любой вызуальный эффект. А выходного тока МК хватит, чтобы питать диод напрямую, без транзисторов. При этом смарты дороже. Предлагаю сделать на обычных, а потом, если захочется, приделать смарт.
4. Радиомодуль - по-моему лишнее. Это будет уже другое устройство. Я за более простой девайс для начала. Аргументы против радио очевидные: чтобы уместиться в корпус датчика, нужно распаивать NRF самому на плате. Цена деталей, внезапно, в три раза больше, чем готового модуля. Делать огромный датчик, но зато без провода - вообще непонятно, зачем.
О других вещах:
5. UART на STM32 поддерживает аппаратно полудуплексный режим. Если бы не поддерживал, достаточно было бы соединить провода. Делать на I2C конечно же проще, но если можно уложиться в 3 провода ценой чуть более сложного кода - нужно это сделать, иначе просто неинтересно.
LTagKirov писал(а):
Как насчёт продумать такую реализацию схемы "умного датчика" чтобы на нём можно было сделать лазертаг-макет минимально необходимого для игры функционала (Tag8, Ltk_v1 и тд), пусть звук будет пищалка(просто ключ без усилителя), без радиомодуля и в пределе на односторонней лутовой плате
6. ИМХО, это другой проект, никак с "умным датчиком" на связанный. Если кто-то сделает - будет круто. За уши притягивать одну и ту же плату, да ещё чтобы она была ЛУТ-воспроизводимой - бессмысленно. Иначе датчик будет большой и страшный, изобилующий незадействованными гнездами и ненапаянными элементами. А раз уж платы разные, и прошивки разные - это разные проекты.