Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 12 of 12

Thread: [queued] Venti-POV v2.0 80HD

  1. #1
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)

    [queued] Venti-POV v2.0 80HD

    Venti-POV 2.0 80HD

    Click image for larger version. 

Name:	pikaaaa.jpg 
Views:	133 
Size:	77.0 KB 
ID:	14179pikachu Click image for larger version. 

Name:	sonic.jpg 
Views:	164 
Size:	102.5 KB 
ID:	14183Sonic the hedgehog

    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.

    Click image for larger version. 

Name:	32469097_2006676856018350_6794020250837843968_n.jpg 
Views:	159 
Size:	78.8 KB 
ID:	14182see the ruler for LED-intensify reference

    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 .
    Click image for larger version. 

Name:	80HD.jpg 
Views:	127 
Size:	63.1 KB 
ID:	14181
    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

    Click image for larger version. 

Name:	SSC.jpg 
Views:	112 
Size:	90.8 KB 
ID:	14180"SWAG SHORTS CRUSADER" is my friends with same interest in playing flowart performance
    Coding of the modes took weeks to complete.
    These modes are all reachable by user touch-clicks.
    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.

    Click image for larger version. 

Name:	80HD3.jpg 
Views:	149 
Size:	58.3 KB 
ID:	14178
    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:
    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.
    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.

    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)

    //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.

    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.

    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

  2. #2
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)

    Schematics & code diagram:

    Click image for larger version. 

Name:	schematics.jpg 
Views:	209 
Size:	35.2 KB 
ID:	14184 schematics like mentioned at features above, see the hand-writing.

    Specific pins used in features:
    Battery power measuring : A4(set as gnd), A5(analog Reader) : using internal reference, and with a 2.2K&10K to divide voltage level.
    N-channel MOSFET gate: pin 14(A0)
    DMASPI to apa102 chains: pin 11&13 (Dout and Clock of hardware SPI)
    Touch-sense: pin 23(A9)
    Click image for larger version. 

Name:	diagram.jpg 
Views:	157 
Size:	43.9 KB 
ID:	14185 Diagrams of code
    pinMode // set them to what they had to.
    setupthings // such as SD,Flexitimer2 so clicks start working
    showsomeLEDtest // so that’s easy to sure hardware is fine
    testonsnooze // to check with hibernate.
    MTP.loop() // if USB connection is present, loop this loop
    breaks with DB-click Or just skip if not,
    Menu(): { this is the most important handler to let user able to switch between modes, and change variables via DB-clicks/multi-clicks.

    Mainswitchcase() { do the modes-function like mentioned above.

    Rest() { stops the flexitimer2, pull-down the N-MOSFET gate, SPI port and anything the drains mana, and hibernate with snooze, wake with A single touch and resume power supply and flexitimer2.
    Flexitimer ISR: {
    Every 25ms this is called to check if the touch-pad(or button) was clicked, deal with the results and launch the next touchread(but don’t wait ).
    Sets break flags if situation met.

    Click image for larger version. 

Name:	fire.jpg 
Views:	101 
Size:	67.2 KB 
ID:	14186some kind of fire Click image for larger version. 

Name:	fly.jpg 
Views:	89 
Size:	70.7 KB 
ID:	14187 butterfly

  3. #3
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)


    Click image for larger version. 

Name:	apa102-2020.jpg 
Views:	132 
Size:	62.8 KB 
ID:	141891. prepare LEDs
    Click image for larger version. 

Name:	stencil.jpg 
Views:	116 
Size:	73.8 KB 
ID:	141902. Stencil and apply solder paste
    Click image for larger version. 

Name:	paste&place.jpg 
Views:	134 
Size:	104.1 KB 
ID:	141913. put those tiny LEDs with tweezers
    Click image for larger version. 

Name:	cook .jpg 
Views:	126 
Size:	74.6 KB 
ID:	141924. cook them!
    5. clean up excess solder and all short/bridges

    Due to the expensive of materials, and personal project was such small amount not appropriate for automatic-smt.
    one of the major challenge of this project falls on apa102-2020 hand-soldered with stencil /paste,
    needs hot-air and iron repair afterwards, so many shorts a board of 80 Leds took ~2 hours, however they did work after cleaning,
    that gives hope to my long torture of cleaning up.

    Click image for larger version. 

Name:	80HD2.jpg 
Views:	115 
Size:	52.4 KB 
ID:	14193

    Poly Carbonate tube: (ID*OD: 22*25mm)overall length of this poi tube is 32cm.
    the tube gives enough protecting , usually your PCB/wires will fail much more often than the tube.

    Power: two small package lithium batteries, with 450mAh each, makes 900mAh at total.

    PCB core is parted into 3,
    The LED board – holds the apa102-2020 in place, the other side of board have pads for battery connection.
    The core board – holds the teensy 3.6, voltage divider resistors, N-channel MOSFET, DC-plug for charging and connector to the three PCBs.
    The touch-Pad – used for touching, also slighty bigger then PC-tube so it stucks the device in the same place, I don’t need to drill holes and hold it on the tube. See picture for referece. The core is interchangeable with any empty tube, such as a staff-tube.

    Click image for larger version. 

Name:	boards2.jpg 
Views:	146 
Size:	61.8 KB 
ID:	14194 the boards at left were used in 80HD,
    the blue one is the core board; the long white one is the LED board; and the circle black one is the touch-Pad

    some struggling histories:

    JUL - start study about Arduino
    SEP - first POV made-with Nano&SD&ws2812 air-wired
    OCT- heard of teensy and PJRC
    DEC- tried a PCB with MK20, but failed with bad solder and design.
    APR- switched to apa102
    APR- a first working POV with 72 LEDs&SDIO&teensy 3.6 with air-wired board ( it has a huge area and good POV, but long staff build(160cm) makes it bad to play with.
    JUL- drawn a board with 3535LED &TLC5947 as driver, worked but abandoned for complication. ( )
    JUL- Tested prototype pcb footprint of apa102 and worked (
    MAY- PCB hardware of 80HD assembled, and planned features worked. (
    JUN- Coding complete, and a nice/stable working prototype poi for picturing is done. Thus I have those tooked pictures.

    Click image for larger version. 

Name:	boards22.jpg 
Views:	253 
Size:	114.3 KB 
ID:	14195 a good half of the boards were failed/abandoned

  4. #4
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)

    Some more photos

    Click image for larger version. 

Name:	tree under sky.jpg 
Views:	85 
Size:	114.9 KB 
ID:	14196"tree by dawn" some picture actually need to be adjusted on PC, for gamma correction
    Click image for larger version. 

Name:	settingb.jpg 
Views:	87 
Size:	77.6 KB 
ID:	14197 a "bmp" with "settingB.txt" to show the "page" you're in
    Click image for larger version. 

Name:	runez.jpg 
Views:	99 
Size:	97.3 KB 
ID:	14198 colorful runes
    Click image for larger version. 

Name:	IMG_3179.jpg 
Views:	98 
Size:	60.5 KB 
ID:	14199 Click image for larger version. 

Name:	IMG_3184.jpg 
Views:	83 
Size:	41.8 KB 
ID:	14200
    this two are marquee mode, with arrow/triangle figures, they are not the 80HD POV but 36HD POV instead,
    however the marquee display functions are mostly the same
    and I forgot to took photo with marquee mode with 80HD

    I don't know anything about MCU/Arduino/8051/whatever electronics, before 2015 June.
    It's more than two years after I first mess with home-made POV devices, I still remember stuffs seldom work properly when I was still new.
    Never thought of making a stable 80 HD POV and have good-enough effects, since 80HD is about the POV with most pixels you can find in market @2014-2015
    (and now they got 200 and 256 pixels lol, )

    Keep moving on and anything could be possible!
    Hope my experience can encourage anyone in the community to keep pushing on their projects

    TODO in future:
    ->More pixels (e.t.c 200HD), will need more speed on reading data.
    ->Find SPI-flash or other storage devices much faster, or cooler.
    ->DO some remote control/ synchronizer.
    ->Make different POV hardware version with 5050 package. As I see big POV companies most have 80HD in a “Lite” version of 4pixel/cm and a “Classic” version of 2pixel/cm
    And the bigger area did different objective.

  5. #5
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)

    Some extras

    Here are some more about how I setup the details of a perform-project.
    Click image for larger version. 

Name:	project.jpg 
Views:	155 
Size:	195.9 KB 
ID:	14209
    the red circles are pictures that tooked photo at comments above,
    mostly with ~1/4 shuttle, aperture of 8.0 , and a flash on to capture the player.
    Left is one of the "settings.txt", the text filename and all variable of it is defined by my code. It is the core file in SD.
    if any of the settings (frame-speed, repeat times) is 0, then it is unlimited.

    Click image for larger version. 

Name:	speed.jpg 
Views:	116 
Size:	51.3 KB 
ID:	14210
    use the serial monitor for debug and see the exact frame speed (or row speed)

    the fastest here by far is ~1425 FPS, @192Mhz , FPS of other clock settings are:
    ~1327 @240Mhz, ~1194@216Mhz, ~1325 @ 80Mhz, ~1236 @168Mhz, ~1420 @144Mhz,
    ~1320 @120Mhz, ~1416 @96Mhz, ~1281 @72, ~1397 @ 48Mhz, ~1280@24Mhz

    I don't have a clear idea about why, but if 50Mhz > (Mhz/2^n) > 40Mhz than its probably fast, this case 192Mhz/4 yield a 48Mhz.
    Should have something to do with SDIO clocks. I'm suprised by the speed@24Mhz, clearly the storage-device is most speed-determining.

    at 192Mhz , different cards may have different speed, ranged from 1100 to ~1450 FPS.
    above 1000 is pretty enough, but pictures may need adjust on PC for better POV effect.

    Click image for larger version. 

Name:	Xcel.jpg 
Views:	98 
Size:	69.9 KB 
ID:	14207
    Absolute timing(to ms) was used to follow a music, I use Audacity to get the absolute timing of a music,
    And excel for easier manage to multi-pages, comments and cleaner views.

    If you wish to see the project files used in a PC, here's a zip of the example project, with 7 pages and 7 pictures used per page,
    note that there is no limit to picture per page, but there are only 7 pages as I coded to. :)

  6. #6
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)
    What a mistake.

    Just out of curiosity about how fast is pure-SPI can do,
    and found that with SPI but not DMASPI it has ~1520FPS @192Mhz
    turns out that I forgot to set the clock of my DMASPI so it's using default settings:

    with correct settings it uses 16Mhz for DMASPI , ~1830FPS @240Mhz,180Mhz---96Mhz, ~1700@72Mhz,
    (16Mhz has a approx. 6000FPS maximum from my calculation of 32bit/per pixel *80leds)
    later I test different microSDs,
    and the difference between cards became much bigger(1200~2800FPS)
    1200FPS from a 128MB card, 1800 from 256MB card, and 2600 from SANDISK 8/16GB (class4), 2700 from 32GD SANDISK (class4)
    (the 128/256 card's from alibaba and speed varies each card)
    way more than enough.
    with this speed maybe 160HD or 200HD is reachable with good POV effect.
    And here's more photos

    Click image for larger version. 

Name:	IMG_0021.jpg 
Views:	90 
Size:	118.5 KB 
ID:	14220Click image for larger version. 

Name:	IMG_0024.jpg 
Views:	77 
Size:	102.2 KB 
ID:	14221Click image for larger version. 

Name:	IMG_0031.jpg 
Views:	82 
Size:	85.7 KB 
ID:	14222
    Click image for larger version. 

Name:	IMG_0023.jpg 
Views:	74 
Size:	87.3 KB 
ID:	14223Click image for larger version. 

Name:	IMG_0007.jpg 
Views:	84 
Size:	83.9 KB 
ID:	14224Click image for larger version. 

Name:	IMG_0013.jpg 
Views:	86 
Size:	69.6 KB 
ID:	14225
    Last edited by Po Ting; 07-13-2018 at 09:39 PM.

  7. #7

    Question: I just tried compiling your POV sketch on Github. No dice. Now, I realize that its name includes the word "corrupted" in it. Is it supposed to be functional?

    Figured I'd report in, on the chance it's supposed to work :-)

  8. #8
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)
    Quote Originally Posted by Howsthewater View Post

    Question: I just tried compiling your POV sketch on Github. No dice. Now, I realize that its name includes the word "corrupted" in it. Is it supposed to be functional?

    Figured I'd report in, on the chance it's supposed to work :-)
    I just compiled it with my Arduino 1.85 newest build and its compile-able .

    It is a less_featured version back in 2016_MARCH. Calling it "corrupted" might be wrong as its only less_featured with a low bmp count limit and strict file names.
    notice my comments in the start of program "Arduino328_APA102_SD/ornot POV stick" , its coded and used on Arduino Nano.
    to use in one of the PCB mentioned above: "stable version of 18 leds"
    see album for its marquee effects, not very good design then. "" 2016/MAR/20

    it was far more improved 2 years later, 18 leds were made of NANO and were enough for some of pictures,
    see : "" 2018/MAR
    but by far I've done, 36 leds is the limit on atmega328p, for usable POV flowart device.

    The corrupted version needs very lots of change to achieve greater NUM_LEDS and file reading, adapt it to teensy 3.6.

    if you were planning to make a POV with 72 leds or something, this version can be a stepping stone to understand all things related,
    with Teensy 3.6 you don't even need DMASPI and still can get a good POV_FPS with 80 leds

    also, if you were new to solder, I STRONGLY ADVICE YOU ENHANCE YOUR SOLDER SKILLS AND START ON STRIP/5050, before you work on apa102-2020.

  9. #9
    FYI you can get APA102-2020 LEDs in a rigid bar (aluminum backed PCB) format from China. I got a sample of a bar like this from iPixelLED for 22 USD:

  10. #10
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)

    thanks for the link! It's useful for anyone would make their own POV

    I use my own board for many reasons,
    preferred density/count and size,
    there is also special designed route so the resistance by trace is same to each LED,
    stripped-LED can easily see decay of brightness over length.
    also because I can source the LED chip here in my country, since it's made here.
    Further prototype/production will be easy for me.

  11. #11
    Po Ting where can we find your full code at? If it's on github, can you please provide a link? I desperately want my poi working from an SD card more than anything.

  12. #12
    Senior Member
    Join Date
    Sep 2015
    Taiwan, Asai. (Traditional Chinese)
    Quote Originally Posted by Grimes_Frank View Post
    Po Ting where can we find your full code at? If it's on github, can you please provide a link? I desperately want my poi working from an SD card more than anything.
    Hi Frank,
    you can find an older version for arduino nano here :

    currently I'm not planning on publishing Teensy version of code yet, however you can find many other code here:
    or other source from
    I haven't look for new reference for a while, like 3 years, cause I already built what I met and too busy for improvements :P
    there should be plenty of new codes somewhere
    hope you can build one too

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts