Продажи временно приостановлены
Модуль расширения Teensy Prop Shield с датчиками движения
Вступление
Появление в коллекции Arduino-совместимой платформы Teensy новых разработок несомненно радует всех любителей проектирования и знатоков конструирования, оживляя их интерес к активному обсуждению на просторах всемирной паутины, одновременно вдохновляя на новые творческие мысли. Новое инженерное решение в виде компактной платы расширения Teensy Prop Shield призвано внести элементы навигационного контроля, интерактивные световые и звуковые эффектыв в разрабатываемые пользователем электронные проекты. Её аппаратная основа предоставит возможность смастерить увлекательные и в тоже время уникальные в своём роде схемы с невероятным набором спецэффектов на борту.
Плата предлагает мощный инструмент контроля и управления по 10-ти степеням свободы. На борту расширения установленно несколько датчиков движения, 2Вт усилитель звука, высокоскоростные 5-вольтовые буферы адресуемых светодиодов (или светодиодных лент), 8 Мбайт легкодоступной свободной флеш-памяти.
Аналогичный модуль расширения Teensy Prop Sield LC входит в диапазон низкой ценовой категории. Он наделён ограниченными функциональными возможностями — из его схемы исключены датчики движения.
Датчики движения
Взаимосвязь с датчиками движения реализована в библиотеке NXPMotionSense (.zip).
Перед тем, как получить максимально точные данные с датчиков, необходимо их откалибровать. Наглядным примером передачи неоткалиброванных данных станет быстро печатаемый текст в окне Монитора последовательно порта, открытого в Arduino IDE, при выполнении предварительно прошитого в Teensy скетча "Файл>Примеры>NXPMotionSense>CalibrateSensors".
![]() |
Закрыв окно, воспользуйтесь специальным приложением Motion Sensor Calibration.
В запущенной программе Motion Sensor Calibration, в меню "Port" следует указать имя виртуального порта, присвоенного Teesny при подключении к компьютеру.
Данные калибровки собираются при физическом вращении платы в разные стороны и под разным углом. Цель калибровки — добиться уменьшения отклонений четырёх показателей в нижней части окна. Одновременно с этим, разбросанные по углам красные точки максимально близко переместятся к центру сформировавшейся сферы. Последующий перенос откалиброванных данных в память EEPROM платы Teensy выполняется командой из меню "File>Send Calibration".
![]() |
Записанные в память калибровочные значения нужны фильтрам обработки инерционных данных, примеры которых присутствую в библиотеке NXPMotionSense. Каждый из фильтров требует различную вычислительную мощность. Наименее требовательный фильтр MahonyIMU рекомендован для совместного использования с Teensy LC или обычными 8-битными платами Arduino.
Файл > Примеры > NXPMotionSense > Orientation - для Teensy 3.2
Файл > Примеры > NXPMotionSense > MahonyIMU - для Teensy LC или Arduin
Запущенный фильтр отображает в окне Монитора последовательного порта вычисленные показатели по осям крена, тангажа и рыскания. Вращение или наклон платы расширения Prop Shiled, на подобие траектории движения самолёта в воздухе, приведёт к видимому изменению в значениях углов.
![]() |
Скетч Orientation Visualizer, написанный для открытого Java-языка программирования Processing, предлагает возможность графического отображения данных ориентации. Он также входит в комплект библиотеки NXPMotionSense.
![]() |
Аудио усилитель
Встроенный в Prop Shield аудио усилитель класса D с выходной мощностью чуть более 2 Вт заставит громко звучать любой небольшой внешний динамик с сопротивлением 4 или 8 Ом.
![]() |
Изначально, усилитель находится в "спящем" режиме с низким энергопотреблением, за его 8-миллисекундное пробуждение отвечает высокоуровневый сигнал, переданный на вывод 5 (AMP_EN).
void setup() {
pinMode(5, OUTPUT);
digitalWrite(5, HIGH); // активация усилителя
delay(10); // пауза, необходимая для пробуждения
Создание и обработка звука на Teensy 3.X основано на программной библиотеке Teensy Audio (страница проекта на GitHub.com), содержащей в себе примеры для звуковой платы Teensy Audio Shield Board. Чтобы адаптировать их для Prop Shield, необходимо заменить "i2s1" на "dac1" в Утилите проектирования аудиосистем, или заменить AudioOutputI2S на AudioOutputAnalog в коде Arduino с последующим удалением объекта SGTL5000 и любого кода, который его использует.
По умолчанию, звуковая библиотека формирует на контакте DAC аналоговый сигнал синусоидальный формы с характеристикой 1.2В от верхней пиковой точки положительной границы до нижней пиковой точки отрицательной границы волны (1.2Vp-p). Сигнал создаёт уровень громкости звучания, комфортный для прослушивания в тихой комнате. Изначально, установленная характеристика сигнала не является полной мощностью усилителя. Изменение параметра объекта dac1 на использование внешнего (EXTERNAL) опорного напряжения позволит добиться максимальной мощности на выходе усилителя. Чтобы избежать неприятных на слух громких щелчков в динамике, перенастройку желательно выполнить в обесточенном режиме.
AudioMemory(20);
dac1.analogReference(EXTERNAL); // максимально громко!
delay(50); // время стабилизации напряжения DAC
pinMode(5, OUTPUT);
digitalWrite(5, HIGH); // активация усилителя
delay(10); // пауза, необходимая для пробуждения
Использование объекта "микшер" (Mixer) в утилите проектирования аудиосистем, расположенного непосредственно перед выводом dac, позволит управлять точной регулировкой изменяемой громкости.
На Teensy LC, библиотека Talkie может использоваться для простого синтеза голоса.
Быстрый светодиодный драйвер
Prop Shield имеет 5-вольтовые буферы, предназначенные для отправки данных на адресуемые светодиоды, такие как Dotstar или APA102.
![]() |
Свободно распространяемая библиотека FastLED (.zip), входящая в пакет установщика Teensyduino (программное дополнение для Arduino IDE, позволяющее запускать скетчи на Teensy и Teensy++), поддерживает управление огромным количеством типов адресных светодиодов. Седьмой контакт платы расширения Teensy Prop Shield управляет доступом к ним. Если в конструкцию проектируемого изделия не предполагается внедрение других SPI-микросхем, вывод 7 предварительно настраивается на постоянный высокий сигнал в функции setup().
#include (тип светодиодов, NUM_LEDS);
pinMode(7, OUTPUT);
digitalWrite(7, HIGH); // активация доступа к светодиодам
}
void loop() {
// Двигающийся белый светодиод
for(int n = 0; n < NUM_LEDS; n++) {
leds[n] = CRGB::White;
FastLED.show();
delay(8);
leds[n] = CRGB::Black;
}
}
В случае присутствия в разрабатываемой пользователем схеме проекта внешних SPI-коммуникаций, контакт 7 должен работать в режиме настраиваемых "SPI-транзакций" (библиотека SPI). Переключение уровня сигнала на высокий и низкий поможет избежать аппаратного конфликта между светодиодной лентой и SPI-периферией.
// beginTransaction предотвращает конфликты шины SPI
SPI.beginTransaction(SPISettings(24000000, MSBFIRST, SPI_MODE0)); // скорость SPI 24 МГц
digitalWrite(7, HIGH); // активация доступа к светодиодам
FastLED.show();
digitalWrite(7, LOW);
SPI.endTransaction(); // разрешение другим библиотекам снова использовать SPI
Флеш-память
Плата расширения Teensy Prop Shield оснащена флеш-памятью размером 8 Мбайт, предназначенной для взаимодействия с периферией. Она послужит удобным местом хранения звуковых семплов, картинок или файлов логгирования данных. Её ресурс может быть задействован пользователем на своё усмотрение. Для доступа к памяти, в проект должна быть добавлена библиотека SerialFlash.
Примечание. Существует специально разработанная программа TeensyTransfer (.zip), позволяющая записывать данные в подключенную к контроллеру Teensy 3.Х микросхему флеш-памяти, без необходимости в использовании внешнего слота под карты SD. Программа не имеет графического интерфейса и работает в командной строке на Linux, Windows и MAC. Подробное описание можно найти на странице форума.
Назначение контактов
Датчики движения и температуры связаны между собой общей шиной интерфейса I2C — сигнал данных на 18 выводе (SDA) и сигнал синхронизации на выводе 19 (SCL). Линия обработки внешних прерываний INT одна у всех, она выведена на контакт 2 (IRQ).
Связь со светодиодами организована по собственной отдельной шине. Импульсы передаваемых данных LED_DAT и синхронизации LED_CLK формируются 5-вольтовым напряжением на выходе логических блоков "И".
Примечание. Работу логического буферного блока "И" можно представить следующим образом: поступающий на вход микросхемы 74AHCT1G08 высокоуровневый сигнал воспринимается ей как логическая единица, его отсутствие приравнивается к логическому нулю. Блок имеет два входа и один выход. Он выполняет единственную операцию сравнения — проверяет наличие логической единицы на каждом входе и, если правило выполнено, генерирует логический сигнал на выходе.
Первый вход каждого блока "И" принимает сигнал управления от вывода 7 (LED_EN), выполняющий роль включения или отключения процесса передачи на светодиоды. На второй вход поступают SPI-импульсы.
Интерфейс SPI задействован и для обращения к встроенной флеш-памяти. Вывод 11 (MOSI) исходящих данных от Teensy, вывод 12 (MISO) входящих данных, тактирующий сигнал расположен на выводе 13 (SCK), низкоуровневый сигнал доступа к памяти размещён на контакте 6 (MEM_CS).
Монофонический аудио усилитель активируется высокоуровневым сигналом на выводе 5 (AMP_EN). Звуковой сигнал поступает с контактов цифро-аналогового преобразователя DAC (Audio_IN) микроконтроллера и аналогового заземления (AGND). К выводам усилителя "Speaker-" и "Speaker+" подключается небольшой динамик с сопротивлением 4 Ом или 8 Ом.
![]() |
Питание платы расширения Teensy Prop Shield
Как видно из принципиальной электрической схемы, рабочее напряжение модуля Teensy Prop Shiled является двухдиапазонным. Микросхемы акселерометра, гироскопа, температурного датчика и флеш-памяти запитываются от постоянного напряжения +3.3 вольта, микросхемам логических блоков и аудио усилителя требуется +5 вольт. Оба типа напряжения генерируются непосредственно подключенной платой Teensy, либо другой микроконтроллерной платой, с которой планируется использовать расширение.
Принципиальная схема Teensy Prop Shield
![]() |
Техническая информация
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2023г https://compacttool.ru