Stripboard Sucks

I have been trying to make my poi easier for anyone to duplicate by eliminating the costly custom circuit board. So I tried to make it on stripboard, which was a disaster. Here is the idea:

And here is how it ends up looking on the stripboard (with tilt switch):

So that looks great and all but in practice, having to cut the stripboard and solder and everything else, there are too many possibilities for shorts and troubleshooting it was turning out to be a nightmare. There are 18 solder points on the board above, not to mention cutting the metal on the stripboard (under the esp-01)

Here is another idea, I am trying to make this simple, the D1 mini costs just $1 more and can run on 5v which is the right voltage for the LED strip anyway. This is the new circuit:

Now we have only 9 points to solder (not including the LED Strip, I didn’t include it above either).

I also re-imagined my poi outer shell, to give access to the usb programming port on the D1 Mini, so this will help with development as well.

Looking forward to putting this all together, and updating my tutorial series (if it all works as planned)

Smart Poi Upgrade

So, my Smart Poi are battery powered, of course. I chose AAA NIMH batteries in a pack of 4 for this originally as this provides around 5 volts of power for the LED strip, and I have a voltage regulator to turn that into 3.3 volts for the ESP8266. Originally I got the batteries with tags on and had them soldered together into a battery pack (by a pro) and added a jack input for the charger. Nothing lasts forever, and after almost two years of use I find my battery packs are degraded to the point that they don’t power the poi anymore.

The simple solution would be to get some more packs made and simply replace the old ones, however I have found myself in situations where the one hour (big poi) or two hours (small poi) is simply not enough time. While they are charging the poi are not earning me money, so the plan now is to take the same batteries and make them replaceable. I found a cheap spring loaded plastic battery holder which fits inside the poi housing, so a simple jtag connector (molex whatever you want to call it, I am getting the cheapest one) will give me hours more poi spinning time, which means more money of course!

In addition, I am going to be adding a tilt switch to the LED strip power line, so while the poi are held upside down the strip will be off, but the controller will still be on, and connected to the Android app. This will save power significantly during down time (walking from one area to another for example).

Simple improvements, but with a major impact on my performance.

Now to get onto improving the code I promised to release as open source! A hard task but it’s coming.

Smart Poi Android app now available for testing

Just a quick update, I have uploaded a demo version of my Android app for anyone who is curious to play with:

There are two .apk files included in the zip file (4mb). In order for the app to work correctly you need to install and run “Smart Poi Setup.apk” – it creates the necessary folders inside the “Pictures” directory on your device. You may need to run this twice, depending on your Android version (file access permissions may only work the second time) – just check if WirelessSmartPoi and WirlessSmartPoi72px folders have pics inside or the main app will not work correctly.  Smart Poi Setup.apk can then be uninstalled.

The second “Smart Poi Demo.apk” is a test app to show the capabilities of the poi. This version of the app is for anyone demonstration purposes only, the UDP send is disabled and visualization enabled. In other words it does everything but send signals to the poi. This is because my app slows down function if no poi is connected, trying to send to nowhere. You may need to be connected to WiFi for this to work, I haven’t checked if that check is still in place.

Smart Poi Demo app menu

The Timeline option won’t work on this demo unfortunately as it requires a zip file created by the Timeline creator desktop program which isn’t quite ready for sharing. To see what the other options are meant to do on the poi check out my post here:

Anyway, have a look and let me know what you think! So far tested working on Android KitKat through to Nougat. Please note all images need to be rotated 90 degrees to the right for the app to work correctly. One day I will fix this..

I will be uploading the full app to the Play Store once the Poi Arduino code is ready for sharing. The ultimate goal is of course to enable anyone to make a set of affordable Wireless Streaming Smart Poi of their own, and hopefully find some programmers interested enough to contribute to the development of this project.

Animated Poi Spinning

So I am working on an online animated poi spinning web app to impress clients. You can check it out here:

Some images from one of my poi spinning gigs, animated to show how they look on the poi. I am hoping to be able to make this into a service for other poi spinners, so they too can showcase their work. All images copyright Nu Metro Cinemas, adapted for poi by my talented wife, Amanda Hastings.


Smart Poi Android streaming app control demo video

This is a bit old now, I have integrated all the functionality shown here into one large app since, however the video does give a good idea of the functionality.

When spun in this video, the poi look choppy due to the low frame rate. Please take my word for it, they look a lot better in real life. I have a better looking video of both sizes of poi being spun here:

POV poi image to circle

What does this do? Visualize poi image as it is spinning around, software turns rectangular image into circular representation of poi image arc.


Select and upload your poi image (best results with 72px image) – only one at a time at the moment for testing. Currently only .jpg format supported.

wait for rotation

If page says “oops that page can’t be reached”, refresh after a couple of seconds – this is alpha version so not perfect.

Upload files


This program is optimized for visualizing SmartPoi (72px version) - the worlds first wireless streaming poi. See for more details.

Lets stream some Pixels

First things first, have you tried setting up the breadboard test circuit?

Does the SmartPoiOffline sketch upload correctly, and display on 36 connected LED’s? (if you have a longer strip and don’t want to cut it, that’s fine, the rest will just be blank)

Ok it’s time to try streaming pixels.

First load the SmartPoiBasicStreaming sketch to your microcontroller. Right now this is only being tested on the D1 mini, but should work on any ESP8266 board.

The SmartPoiBasicStreaming_UDP_Send program works on PC or Android, you just need Processing IDE with Android Mode installed if you want to do Android.

First, switch on the D1 Mini with LED strip attached. Wait for the led’s to finish cycling their startup pattern, then you need to use the wifi settings to connect the device (PC, Android*) which is running the processing code to the Smart_Poi_2 access point. The password is for this test is: “bluefire”.

*Note: since Marshmallow version, Android has had a nasty “captive portal” detection which refuses to connect to AP’s unless they are able to access the internet. I understand why they did this (security), but without root the only workaround is to put the device in Airplane mode, then switch on WiFi while still in Airplane mode, and connect from there. The annoying notification should be ignored, as there is an option to “never connect to this network” in there somewhere and it will trip you up.  I should probably do a post about this. Just swipe it away, don’t click!!!

Once connected, start the program. Welcome to the world of streaming poi.

A couple of notes: the test program is not POV, it’s an animation (cylon effect) as this is easier to see on a breadboard. I have a complicated program to send images to the poi which are seen only when they are spun, however it’s easier right now to just start with a simple app for testing.

This program does demonstrate one advantage of streaming as opposed to rendering purely on the poi – that is control. It is trivial to change the colour from the random colours I have chosen to any you could wish. I had another version of this program with three knobs which can change the R, G, B values being sent. You could do a curve instead of straight lines, make the line fatter or thinner, slower, faster, and much more.

Have a go, and let me know what you think. Coming soon: more POV poi shenannigans!




Time for some Poi Sync

The esp8266 is an amazing chip. On my poi the Master* poi creates a wireless access point which the Slave* poi connects to – and Android app connects as well, in order to transmit images. No router needed, just switch on poi, 2nd poi connect automatically, connect phone and start sending pictures.

*I have designated these names, for descriptive purposes.

There are limits, however. The ESP chips have a limitation of 4 connected devices per access point device. If you want more devices talking to each other you need a Router to handle the traffic.

This is fairly simple using arduino examples but it brings up configuration issues. I wanted my poi to be able to be used in standalone as well as Master-Slave-Android configuration, and now Router-Multiple-Poi-Android as well. A few settings are in order.

The first option, standalone poi without wireless, I configured directly in the loop() of code. If no wifi signal has been received within the last 5 seconds the poi switch to backup images. Great, if my phone’s battery dies the show still goes on.

The second alternative (Router) is a bit harder to organize. First, there is a limitation where the chip has to be told if it’s in Access Point mode or not on boot. Ok so that’s a setting. Then we need to know what the static ip address is (hard coded but configurable via web interface) so that we don’t conflict with other poi. Also, once you are in Router mode, what if there is no router?

Right now, my poi check a web configurable EEProm switch on boot first, for Router mode on/off. If Router mode is on, the poi enter connect mode. If, after a certain amount of time, the router is not found, the poi restart in Access Point (master-slave-android) mode. However, upon rebooting again they revert back to Router check, so one has to manually set back to Access Point only mode if required.

I need a diagram here to really show what’s happening.

The problem came in if the router wasn’t configured correctly, or was simply not available, the poi needed a reliable way to get configured. My poi get configured by web interface (local network, no cloud) so AP mode was needed by default in case things went wrong.

Here is the note from my code:

//to activate in browser:

//to deactivate: router=0

So I just type it in the browser on my connected Android or PC and the poi are set. I will assign this to a button on the app at some point.

Currently the only option for multi-poi is to send the same image to all poi simultaneously (only 3 pairs, that’s all I have). This looks great, but there is much more to do obviously. Just a matter of code

Time to go play a bit with the toys…