Цилиндр POV с Arduino Due
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 |
Необходимые инструменты и машины
| ||||
| ||||
| ||||
| ||||
|
Приложения и онлайн-сервисы
| ||||
| ||||
| ||||
|
Об этом проекте
Введение
Это мой первый проект Arduino. Моя работа была вдохновлена несколькими проектами производителей, которые создали Persistence of Vision Displays [2,3,4].
Постоянство зрения (POV) относится к оптической иллюзии, при которой несколько дискретных изображений сливаются в единое изображение в человеческом сознании, и считается объяснением восприятия движения в кино и анимационных фильмах [1].
В проектах [2, 3, 4] реализуются POV-дисплеи в виде глобуса с использованием дискретных светодиодов и дискретных регистров сдвига. Вместо этого в моем устройстве в качестве POV-дисплея используется вращающийся цилиндр и стандартные светодиодные ленты RGB.
Основные особенности моего цилиндра POV:
- Отображение POV (постоянство зрения)
- Отображает анимированные изображения в формате GIF на вращающемся цилиндре.
- Изображения в формате GIF хранятся в оперативной или флэш-памяти Arduino.
- Связь с ПК через Bluetooth
Технический обзор
- Диаметр цилиндра:200 мм
- Высота цилиндра:200 мм
- Материал цилиндра:пенополистирол.
- Вес баллона:420 г
- 4 светодиодные ленты RGB на базе LPD8806
- Размер экрана 151 x 40 пикселей
- На основе Arduino Due
- Включает модуль Bluetooth HC06
- Управляется через Bluetooth с ПК.
Механическая конструкция
Механическая конструкция показана на рисунке ниже.
Устройство состоит из шасси и ротора. Шасси состоит из двух круглых фанерных дисков, соединенных тремя стержнями с резьбой. Расстояние между дисками 120 мм. Посередине два шариковых подшипника и вал. Для вала также используется стержень с резьбой. Вал приводится в движение электродвигателем через две коронные шестерни и зубчатый ремень. Скорость вращения до 1300 об / мин (22 Гц).
Ротор состоит из двух цилиндров из пенополистирола и двух круглых алюминиевых дисков. Цилиндры из пенополистирола приклеены к нижнему диску. Верхний диск можно снять. Он используется для крепления ротора к валу.
Электроника расположена в верхней части ротора. Он включает в себя следующие части:
- Плата Arduino Due
- Самодельный щиток для платы Arduino Due
- Плата блока питания (PS)
- Модуль Bluetooth HC-06
Питание (7,5 В) на плату блока питания подается через скользящие контакты и контактное кольцо.
Используются четыре светодиодные ленты с 40 светодиодами RBG. Они подключены кабелями к Arduino Shield.
Четыре светодиодные полосы размещены, как показано на рисунке ниже. При использовании четырех смещенных светодиодных полос расстояние по оси Y между светодиодами делится на 4. Расстояние по оси X обрабатывается SW. ПО обновляет все 40 светодиодов 151 раз за оборот. Сетка на чертеже соответствует видимым пикселям.
Электронная схема
Электронная схема показана в прилагаемой схеме в формате PDF.
Имеется плата блока питания с регулятором напряжения LM317. Входное напряжение составляет 7,5 Вольт, а выходное напряжение - 4,6 В. Регулятор напряжения питает плату Arduino Due и светодиодные ленты.
Также есть самодельный щиток для Ардуино. Он содержит соединительные кабели для светодиодных лент и схему для ИК-приемника. ИК-приемник используется для определения положения ротора. Он подключен к входу таймера / прерывания Arduino.
Есть четыре светодиодные ленты с названиями от STRIP0 до STRIP3. Каждая полоска имеет 5 светодиодных драйверов LPD8806 и 10 светодиодов RBG. STRIP0 подключен к USART0, а STRIP1 подключен к USART1. Оба USART работают в режиме SPI. STRIP2 и STRIP3 соединены последовательно и управляются интерфейсом SPI Arduino.
Для связи с ПК к USART3 подключается Bluetooth-модуль HC-06. Модуль Bluetooth получает питание 3,3 В от платы Arduino.
Программное обеспечение Arduino
Программное обеспечение Arduino состоит из основной программы ( mpc.ino ) и следующие библиотеки:
- bt - ПО драйвера для модуля Bluetooth
- LDP8806 - Программное обеспечение драйвера для светодиодных лент.
- Без памяти - Функции для определения доступной свободной оперативной памяти.
- mpcgif - Воспроизведение файлов GIF, находящихся в оперативной или флеш-памяти.
- изображения - Внутренние изображения в формате GIF, хранящиеся во Flash.
- след - Функции для отладки ПО
Периодический вывод картинок на светодиодные ленты осуществляется по прерыванию. Есть два переключаемых буфера кадров. Каждый буфер кадра содержит одно изображение размером 40 x 151 пиксель. Каждый пиксель представляет собой однобайтовый индекс цветовой палитры. В то время как один буфер кадра выводится на светодиодные ленты через прерывание и DMA, другой буфер кадра подготавливается основной программой (например, функцией декодирования изображений GIF). Переключение буферов кадра выполняется программой прерывания кадра.
ИК-датчик вызывает прерывание по одному кадру на один оборот. Программа прерывания кадра измеряет (с помощью аппаратного таймера) скорость эволюции и программирует периодические прерывания столбца (по одному на столбец, т.е. 150 прерываний на оборот) с помощью аппаратного таймера. Программа прерывания столбца выводит текущий столбец на светодиодные ленты. По соображениям производительности вывод осуществляется через три канала прямого доступа к памяти, которые работают полностью параллельно.
Полный исходный код Arduino доступен на github.
Программа управления ПК
Программа управления ПК ( pccp ) - это инструмент командной строки, написанный на C ++. Он работает под Cygwin и связывается с Arduino через Bluetooth. pccp позволяет управлять цилиндром POV с помощью следующих односимвольных команд:
- 0–7 - заливка экрана цветом (черный, красный, желтый, зеленый, голубой, синий, фиолетовый, белый)
- t - нарисовать треугольную кривую (как тестовую картинку)
- s - включить или отключить поворот отображаемого изображения
- г - нарисовать одну строку
- в - нарисовать один столбец
- г - воспроизведение внутреннего изображения в формате GIF, хранящегося во флэш-памяти.
- f - скачать внешний файл GIF с ПК через BT
- x - воспроизведение загруженного внешнего файла GIF.
pccp также предоставляет интерфейс к графическому пользовательскому интерфейсу. Кроме того, он отображает текущую скорость вращения (в Гц и мкс) и значение счетчика кадров.
Полный исходный код доступен на github.
Графический интерфейс пользователя
Графический пользовательский интерфейс представляет собой универсальное приложение для Windows. Это позволяет выбрать файл GIF, который будет отображаться цилиндром POV. Это приложение является производным от приложения FilePicker из «Универсальных образцов Microsoft Windows» [5].
Полный исходный код доступен на github.
Ссылки
[1] https://en.wikipedia.org/wiki/Persistence_of_vision
[2] ГЛОБУС RGB LED - POV - 40 x 200
[3] Отображение глобуса POV, RGB
[4] POV Globe Display RGB - описание проекта (на немецком языке)
[5] https://github.com/Microsoft/Windows-universal-samples
Код
Исходный код Arduino для цилиндра POV
https://github.com/hanoba/povc-arduinoПрограмма управления на ПК для цилиндра POV
Это программа командной строки C ++, работающая под Cygwin https://github.com/hanoba/povc-pccpГрафический интерфейс пользователя для цилиндра POV
Это универсальное приложение для Windows https://github.com/hanoba/povc-win-appСхема
Это схема.Производственный процесс
- Часы видения Arduino pov
- DIY Простой осциллограф Arduino 20 кГц на ЖК-дисплее Nokia 5110
- Умные жалюзи
- Arduino Due TIC TAC TOE с сенсорным экраном
- Управление монетоприемником с помощью Arduino
- Итальянские часы со словами
- Arduino с Bluetooth для управления светодиодом!
- Простой датчик препятствий с Arduino
- Счетчик кВтч Sigfox
- Изолированный аналоговый вход для Arduino