Хроники виртуальной перчатки
Mar. 24th, 2023 10:30 amНаучился работать с мультиплексором i2c из питона.
Вообще, набор модулей adafruit_circuitpython не устаёт удивлять количеством поддерживаемого железа при едином подходе к API. Их вариант MPU6050 заработал через их же модуль мультиплексора с первой попытки, данные с двух акселерометров снимаются отлично.
Поддержки DMP там, правда, тоже нет, но с этим я уже смирился. Зато появилась идея поставить на перчатку промежуточный контроллер для сглаживания выбросов и расчёта эйлеровых координат, эдакий DIY DMP.
По софту: всё прототипирование будет на питоне, сейчас это, скорее, POC, чем полноценный проект, по результатам приму решение о целевой архитектуре и языках.
Вообще, набор модулей adafruit_circuitpython не устаёт удивлять количеством поддерживаемого железа при едином подходе к API. Их вариант MPU6050 заработал через их же модуль мультиплексора с первой попытки, данные с двух акселерометров снимаются отлично.
Поддержки DMP там, правда, тоже нет, но с этим я уже смирился. Зато появилась идея поставить на перчатку промежуточный контроллер для сглаживания выбросов и расчёта эйлеровых координат, эдакий DIY DMP.
По софту: всё прототипирование будет на питоне, сейчас это, скорее, POC, чем полноценный проект, по результатам приму решение о целевой архитектуре и языках.
Хроники виртуальной перчатки
Mar. 17th, 2023 10:03 pmПродолжаю пилить мелкими фракциями железячный pet-проект.
Вечер пятницы прошёл под флагом 6-осевого гироакселерометра MPU-6050.
Во-первых, внезапно выяснилось, что эта плата модуля жрёт 100 миллиампер вместо заявленных для чипа 39 в максимально неэкономном режиме. Если питать её от распберри, жутко греется стабилизатор питания, превращающий 5 вольт в штатные 3.3. Возможно, всё это из-за встроенных в плату резисторов подтяжки, надо отпаять и посмотреть. При внешнем питании от 3.3В стабилизатор почти не греется, но потребляемый ток всё равно порядка 80 mA.
Во-вторых, научился получать данные акселерометра и гироскопа по i2c на распберри из плюсов и питона, и это хорошо. Плохо то, что в чипе есть некий Digital Motion Processor (DMP), доступный только из софта производителя (InvenSence, сейчас TDK) по недокументированным портам, и, в теории, сильно облегчающий обработку данных. Но не для опенсорса.
Пишут, что сам чип довольно старый (2017) и шумный. Заказал десяток более современных сенсоров BMI160, чуть дороже, но точнее и без секретных DMP. Приедут в мае, пока обойдусь тем, что есть. В принципе, на рынке имеются более интересные чипы по $25-50 за штуку, но мы же делаем дешёвую перчатку :)
В-третьих, разобрался в принципах работы motion-трекера Vive Tracker. Высокая точность и абсолютное позиционирование. Ага. Он оптический и абсолютный за счёт настенных маяков. Т.е. для автономного трекинга в движении не годится совсем. Но некоторые идеи можно почерпнуть и оттуда. До кучи посмотрел подходы к определению положения пальцев в разных AR/VR-проектах. Где-то тензодатчики длиной во весь палец, где-то - индукционные маяки на каждой фаланге, где-то - вообще оптическое распознавание.
В-четвёртых, научился дешифровывать i2c-протокол с помощью логического анализатора DSLogic Plus. Скорее до кучи, чтобы освоить прибор. На клиентской стороне - линуксовый DSView, разбираться с ним было достаточно прикольно.
В целом, доволен, буду дальше двигаться понемногу. На очереди - полноценный сбор данных с множества IMU-датчиков через i2c-мультиплексор (приедет в апреле), станут ясны требования к производительности. А там и до ключевого момента - обучения и распознавания движений нейросеткой, глядишь, дойдёт.
Ну и просто отвлечься от софтописательства разной степени энтерпрайзности на что-тотновое - бесценно :)
Вечер пятницы прошёл под флагом 6-осевого гироакселерометра MPU-6050.
Во-первых, внезапно выяснилось, что эта плата модуля жрёт 100 миллиампер вместо заявленных для чипа 39 в максимально неэкономном режиме. Если питать её от распберри, жутко греется стабилизатор питания, превращающий 5 вольт в штатные 3.3. Возможно, всё это из-за встроенных в плату резисторов подтяжки, надо отпаять и посмотреть. При внешнем питании от 3.3В стабилизатор почти не греется, но потребляемый ток всё равно порядка 80 mA.
Во-вторых, научился получать данные акселерометра и гироскопа по i2c на распберри из плюсов и питона, и это хорошо. Плохо то, что в чипе есть некий Digital Motion Processor (DMP), доступный только из софта производителя (InvenSence, сейчас TDK) по недокументированным портам, и, в теории, сильно облегчающий обработку данных. Но не для опенсорса.
Пишут, что сам чип довольно старый (2017) и шумный. Заказал десяток более современных сенсоров BMI160, чуть дороже, но точнее и без секретных DMP. Приедут в мае, пока обойдусь тем, что есть. В принципе, на рынке имеются более интересные чипы по $25-50 за штуку, но мы же делаем дешёвую перчатку :)
В-третьих, разобрался в принципах работы motion-трекера Vive Tracker. Высокая точность и абсолютное позиционирование. Ага. Он оптический и абсолютный за счёт настенных маяков. Т.е. для автономного трекинга в движении не годится совсем. Но некоторые идеи можно почерпнуть и оттуда. До кучи посмотрел подходы к определению положения пальцев в разных AR/VR-проектах. Где-то тензодатчики длиной во весь палец, где-то - индукционные маяки на каждой фаланге, где-то - вообще оптическое распознавание.
В-четвёртых, научился дешифровывать i2c-протокол с помощью логического анализатора DSLogic Plus. Скорее до кучи, чтобы освоить прибор. На клиентской стороне - линуксовый DSView, разбираться с ним было достаточно прикольно.
В целом, доволен, буду дальше двигаться понемногу. На очереди - полноценный сбор данных с множества IMU-датчиков через i2c-мультиплексор (приедет в апреле), станут ясны требования к производительности. А там и до ключевого момента - обучения и распознавания движений нейросеткой, глядишь, дойдёт.
Ну и просто отвлечься от софтописательства разной степени энтерпрайзности на что-тотновое - бесценно :)
Продолжаю развлекаться с железом
Mar. 16th, 2023 02:29 amСенсорные кнопки вполне успешно подключились по i2c к RPi через контроллер TI PCF8574. Сам не фанат вертикальных видео, но иначе не показать всю мощь решения :)
Большую часть времени убил на то, чтобы понять: распберри и плата с внешним питанием должны иметь общую землю, иначе мастер i2c просто не видит устройство. Я, всё-таки, ненастоящий сварщик.
Подтяжка резисторами не понадобилась. Соседняя плата гироскопа-акселерометра (Pololu AltIMU-1) тоже успешно определилась.
Следующим шагом будет монтаж всего великолепия на перчатке, когда подъедет мультиплексор i2c. Заодно станет понятно, хватит ли скорости шины для параллельной обработки пяти акселерометров в реальном времени.
Большую часть времени убил на то, чтобы понять: распберри и плата с внешним питанием должны иметь общую землю, иначе мастер i2c просто не видит устройство. Я, всё-таки, ненастоящий сварщик.
Подтяжка резисторами не понадобилась. Соседняя плата гироскопа-акселерометра (Pololu AltIMU-1) тоже успешно определилась.
Следующим шагом будет монтаж всего великолепия на перчатке, когда подъедет мультиплексор i2c. Заодно станет понятно, хватит ли скорости шины для параллельной обработки пяти акселерометров в реальном времени.
По выходным слегка вожусь с железом
Mar. 13th, 2023 11:58 amКупил для одного пет-проекта немного сенсорных кнопок на базе чипа TTP223 с режимами нажатия и фиксации (задаются перемычкой). На выходе - сигнал срабатывания (прямой или инвертированный, тоже определяется перемычкой). Чувствительность регулируется внешним конденсатором.
Следующим шагом буду делать из них i2c, когда доедет контроллер TI PCF8574.
Следующим шагом буду делать из них i2c, когда доедет контроллер TI PCF8574.



