Po Ting
Well-known member
Venti-POV 2.0 80HD


Introduction: (for short: Persistence Of Vision Poi with Teensy 3.6)
Venti-POV 80HD is a design teensy 3.6, used in flow arts, e.g. Pois, Staves. It is intended to (trying to) sell as a product to local community, but it’s more like a self-using product in the end. “Venti” is my name of it, as I like the word “breeze” in Chinese, so I chose the word in Latin as the name of the POV series. And 2.0 as it’s the second generation of mine. 80HD means 80 pixels in “High Density” of 4 LEDs/cm.

It is programmed with Arduino 1.83 and Teensy 1.38 , with many library modified for some purpose. The PCBs were designed with Fritzing.
Core function: It reads the pictures from the built-in SD slot card, and fast enough to perform. First it catches a “settings.txt” file, that user have to define what picture / what time(ms)/what brightness to display at computer, and write in this file. Then T3.6 will display .bmp file in intended timing and order, for performance usage.
It can be controlled through a single touch pad and has many modes, I’m quite proud of this result of coding mysel

Touch-pad :: T3.6's USB port accessible at the end of the poi, and a DC-plug for battery recharging.
------------------
My features:
->Lithium battery direct powered for T3.6 and apa102.
After on-board regulated, the power for T3.6 sometimes went as low as 2.8V, but still works fine anyway.
->3 parts of PCB : ( the core holder, the touch pad, the LED stick*2)
->the touch-sense pad act as a control button (like a momentary button with no spring -feedback) that debounces, and can tells apart-single click, double-clicks, multi-clicks and long-press.
->Apa102 – 2020 - 80 (24-bit RGB) pixels in 20cm, I had some very hard time soldering with those evil devils.
->Feedback with LEDs – since there are 80 LEDs to use as indicators, it is possible to tell user every detail about the clicking, variable changing, and many details of the device.
->Indicated power level with long-press – almost every LED product on market has this feature.
->Inboard-SD slot with micro-SD : this makes it have ~1,400 rows/second with a 24bit bmp file, also the T3.6 is compiled to 192Mhz for best speed with SDIO, by tests.
->A N-channel Mosfet controls the ground power line for all other devices,so apa102 cannot steal mana from the battery while hibernating.
->Snooze library with SdCard&touch : hibernate with consumption lower than 1mA
->MTP accesses the SD card so don’t need to remove&insert SD card everytime
-----------

Coding of the modes took weeks to complete.
These modes are all reachable by user touch-clicks.
Modes:
1. SD card auto display – For performance, draw pictured(.bmp) from instructions in a defined “.txt” file, it tells the timing/brightness/speed/repeat-time and sequences of picture to display. In this mode single click, DB-clicks cannot interfere your performance and timing, only multi-click and long-press can work.
2. SD card manual mode – draw picture, stick to the same bmp until you clicked. Double clicks change your rune page, to read another .txt file for another pre-defined route.
3. Marque auto – A pre-defined figure with FastLED color palettes to fill in. Auto-switching every 5 seconds.
4. Marquee manual – same above with single click to change palette, DB-click to change figure.
5. Adjustable HSV single color – set Hue/brightness via single/DB-clicks
6. Adjust global brightness – like title.
7. Adjust white balance – switch from pre-defined color temps(from FastLED) or customized settings.
8. Reset all variables
9. Watch Dog Timer reset.

the T3.6 's Mk66 chip is buried in black hot-glue, the SD-slot and program button is visible outside.
It is a hard and sticky kind of glue, and shock-protection is needed for the BGA chip,
not sure how much extra protection is given, but I haven't had a board with black-glue damaged,
In compare I had 2xT3.6s shown poor contact after some shock. I had no skills to repair them so had to replece them.
----------------
I'll talk about schematics and hardwares and other things in replies,
but here ::
Thanks to:
mortonkopf –https://forum.pjrc.com/threads/24535-OctoWS2811-POV-reading-BMP-from-SD-card
The project shared was my first of Arduino, it gave me a good first step and confidence on making more complicated POV. Though I still stick to SD and (.bmp) format, I got many other code&hardware improved. All thanks to this starting.
Teensy 3.6 by PJRC – key to high framerate, fast clock, and the onboard - SDIO slot is a powerful feature to do the job.
the FastLED library– const palettes and CRGB struct and many LED-related usage.
http://fastled.io/
Flexitimer2 library – for easy access to timer interrupt used in touch/button action determining.
Teensy Saber from fredrik – I benefit from new version of MTP (using SD.h) from Teensy saber OS, uses SD.h so it can work with snooze Sdcard.
https://fredrik.hubbe.net/lightsaber/teensy_saber.html
Touch.c – touch.c in “\hardware\teensy\avr\cores\teensy3”
(modified so that T3.6 don’t wait for results and pick it up next timer interrupt instead)
Code:
//while (TSI0_GENCS & TSI_GENCS_SCNIP) ; //don’t wait for complete, takes as much as 10ms.
.....
int tsiResult = TSI0_DATA & 0xFFFF; // instead pick it up later. 25ms is enough,
//warning: this cause hangs if touchread is not called before and TSI0_DATA is probably void or something...
DMASPI library from KurtE - Another key to high-frame-rate, this lets T3.6 to draw the LEDs without waiting, can focus on time-determining step, the SDIO.
https://github.com/kurte/DmaSpi/
Snooze library from duff2013– Provides the device(with SD) hibernate so it is possible to hard-wire power line and can rest long before recharging.
https://github.com/duff2013/Snooze
Adafruit_SleepyDog library – for WTD that resets system hang(unusually) and manual reset option.
Arduino IDE & Teensyduino – Everything worked with them.
Fritzing – Took part in every single PCB I made.
SketchUp – used to draw 3D simulations to make sure PCB and parts fit with my PC-tube.
and thanks to the PJRC Community – had much fun discussing everything and learnt a lot