$25 WiFi Webcam from China – I am livin’ on the edge!

Rock on – what could possibly go wrong with cheapest-possible piece of equipment that is designed to capture both sound and video, is made in China and costs about 25 USD, and comes with real internet connectivity – you know: cloud backends and all.

So, I went off to dig some more blood from my nose. I bought one – no, I bought three Xiaomi Xiaoyi Ants web cameras, and went to see what’s inside and how (in)secure they are. Continue reading

My Air Purifier is in the Internet – should I be worried?

Typical IoT system level components

Typical IoT system level components

It is 2016 and everything is connected to internet in a way or another, what’s the big fuzz about privacy and security of these little devices? After all we have made consumer gadgets since ages, and one in a while malfunction or vulnerability gets discovered and shotly it gets fixed, right?

By looking closely at some of my connected devices, I found interesting stuff that has gone largely unnoticed. And more interesting is to come, for reasons I am about to explain.

Continue reading

Moving from through hole to surface mount components – how difficult can it be?

I have seen quite a number of people ponder on moving from through hole mounted components to surface mount – so how difficult is it?

Pro through-hole:


Through hole mounted microcontroller with some discrete surface mount parts.

  • Through-hole components are bigger, one can actually touch them with bare hands
  • Through-hole fits bread board ideally – no way to put chip components there

Pro surface mount:

  • SMD are cleaner. Being so small one is less likely to handle them with bare hands (no grease, less oxidisation)
  • SMD are easier to re-solder as the pads play it nice, when removing through-hole is pain
  • Surface mount components leave backside of PCB clean, nothing to cut there

Continue reading

Programmable led pixels – which model should I choose?

It is tempting to think dream led pixels strips as one-dimensional displays, but when the pixel count of the display is limited, and individual dots are far apart, and surrounding brightness can be anything between zero lux and full on daylight, number of factors come to play in design – even if the design is just a bit-more-advanced x-mas tree decoration. Here are some of my experiences when playing around with these.

I have been using TM1809 and APA 102c programmable “dream” LED strips and while they are easy to use in principle, there has been number of issues to troubleshoot. Below some findings:

APA 102C led strip

Led strip with questionable solder joint quality

  • 12Volt is bad. Programmable 12V led strips seem to drive individual pixels with current-limiting resistors, thus never getting good efficiency: 12 volt source voltage dropped to 3..4 volt for LED results roughly 60%..75% power dissipation into resistor. See, there goes that five start energy star rating.
  • 5 Volt led strips have issues too. On greater lengths (I have a four meter with 240 LED pixels) these seem to suffer from voltage drop when pushed to highest brightness levels. The drop is easy to detect with multimeter, my APA strip voltage got down to three volts on the far end, resulting nasty flickering for last meter or so. One can overcome this by installing extra cables to support 5V and ground from both ends of the strip.
  • Since I am cheap and I like to source the cheapest option from China, the quality is what it is; the picture above tells story shows mass-produced connector with, eh, less than stellar success in soldering work. (Yes, it still works, but how long? Reliably? Also, we run about 10 Amps over those connectors for brighter moments – any additional resistance adds to rather uncontrolled heat dissipation there)
  • APA102c != APA102c. Identical LED pixel type does not guarantee color channel order: I have a four meter and a one meter string, both with APA 102c pixels. Magically the red and the blue channels have been swapped between those strips. This presents some challenges if one were to design a controller that can drive number of different led strips. (No, this is not a wiring issue, it is in the chip itself.)
  • Five volt led strips hog quite nice amount of current – I drive 240 pixel strip with 50W/10A power supply – and it is barely enough for it. Now, take another look at those connectors in the pic above.
  • When thinking about brightness levels, eight bits per colour is ok, but since we are talking about led strips and not displays, their intended use environment may present additional challenges:
    • at the darkest levels human eye can easily detect the difference between lowest levels 0,1,2,3 – brightness change is visible as a jump
    • at these darkest levels, LED strip color reproduction becomes, quantized – again, human eye can see this as a color change. Note that in dark human eye will detect colors from these strips as they still are bright enough if they are the only light source.
    • currently common libraries (aka FastLED) that support these strips on Arduino or Raspberry PI do not support global brightness setting (on APA 102c it would add 5 bits to brightness control)
  • For smooth animation, the same applies as for screens: 24 Hz will do, 30 Hz is better, 70Hz is even better. Above that I cannot see any difference.
  • RGB led strips do not provide high CRI light. Yes, one can set the color freely, but it will not result in great quality light for color rendering. Not today at least. Maybe when RGBW strips become more common.

Continue reading