Craftalight | Brighten up your (hand)bags | MAKE 100


The story

Yannic and myself were walking home one warm summer night, realizing that it is really hard to find stuff in Timelord-technology-equipped handbags (you know, those bigger on the inside :D) especially when it is dark. We were simply discussing that it’s sometimes difficult to find small things in one’s handbag/backpack and decided to hack a solution to test – the Craftalight was born. Now, approximately half a year later we figured that Kickstarter’s MAKE 100 was the perfect time to share that small solution with the world. We already gained some experience on Kicksarter with our first project the PGCSU.

Who’s the Craftalight for?

You tell us ;) the “out-of-the-box experience” requires only basic sewing skills: you sew it (and the magnet) in your hand-bag and hook it to a power bank. Voilà, you’re pretty much done. Enjoy your brightened-up accessories. For those with no sewing skills you can also use velcro to attach it to your bag.

programming pins
break out pins

But that’s not it: we want you to be able to customize the Craftalight, which is why we will provide full sources (schematics, mechanical drawings, source code etc). Additionally we have broken out the unused pins to pads on the back side of the PCB. 

Finally, for easier mods that don’t require software changes, we added a switched power pad to which you can simply attach any device you want. When the Craftalight switches on, you can draw as much as 500mA from that pad (at the voltage supplied by your power source).

How does the Craftalight work?

The Craftalight is based on a STM8 value-line microcontroller and a Hall-Effect sensor. The Hall-Effect sensor senses the presence of magnetic fields which enables it to detect the presence of a magnet.

How it works

This allows you to make the Craftalight switch on or off using a magnet on the lid of the purse or bag. To allow different setups you can configure whether the Craftalight should switch on in presence or absence of the magnet.

Furthermore to power the Craftalight, you can either use a USB power bank (thar most people already carry in thier bags) or provide 3.3 to 5.5V on two pads on the PCB directly.


  • Hackable: open source hardware and firmware
  • Small and light: 70x20x6.5mm and ~10g
  • Available with white and black PCB solder mask
  • Adjustable brightness
  • Warm white LEDs (3200K) under a frosted acrylic diffusor window
  • Hall-Effect switch to detect when the purse is opened
  • High quality and low stress design components
  • EPDM rubber seal to prevent dust accumulating between the PCB and the acrylic diffusor
  • Sew-able using the holes in the PCB
  • Includes a strong, sew-able magnet
  • for you to tinker: most unused micro-controller pins broken out to soldering pads
  • NEW: power-bank “blip” function for improved compatibility!
cad view

What else can I do with it?

Off the top of our heads you could:

  • use it to light a drawer or a cabinet (stick the magnet to the front panel or door)
  • put it in your glove-box
  • add it to your suitcase
  • use it as a STM8 micro-controller breakout board with white LEDs, low power LDO and Hall-Effect sensor

and may other usecases, too. Just be creative!

pcb rendering
pcb rendering

Let’s talk about technology

The microcontroller and programming

The micro we use is an STM8S003 series controller. (because it’s cheap, good, widely used and we know and like it)

We gave Visual Studio Code with the plugin a shot. It worked rather well and its free, so this is what we will ship for. The compiler being SDCC (Small Device C Compiler) the programming language is SDCC-flavored C. We didn’t use any fancy library, RTOS etc… because the application is rather simple.

As an substiute you could try SDuino, the SDCC integration for STM8 in the Arduino IDE. Alternatively – for a fully fledged debugging experience – you may want to try IAR’s Embedded Workbench for STM8 (they offer a free version). Some code rework may me required when switching compilers.

Moreover, you’ll need a SWIM-compatible programming adapter (for examples an ST-Link v2). If you don’t own one yet, have a look at the rewards in the Kicksarter Campaign.


Lightning and power consumption

The LEDs are rated for 150mA at 3V. On the Craftalight we drive them with 110mA max. This ensures they don’t heat up much which is beneficial to their life-time while they’re still super bright. The LEDs are switched by a single N-Channel MOSFET which is driven by the micro-controller.

MOreover you can dim the LEDs by using PWM (at about 40kHz).

Full on the current consuption is at about 230mA and in the off state the Craftalight draws just around 60uA .

What about the magnet?

In addition, the magnet should not demagnetize / damage my credit card magnet strip, unless you hold the card directly on the magnet for a long period of time. This is because the credit cards (and most other magnet strip cards that are not meant to be re-written often) use high coercivity strips which require powerful magnetic fields to change. As long as your cards stay approx. 2cm / 1 inch away from the magnet they should be a safe.

Alltogether, in our opinion the Craftalight is a super cool gadget for your bags. Me personally I find it very usefull, epecially when I want to find the keys in my handbag. If it’s useful or only a “nice to have ” it’s up to you to decide!

Open firmware for Waveshare’s 7 inch touch screen

Some time ago I was searching a touch display for a project of mine. The requirements were 7 inch in size, capacitive touch digitizer and at least a resolution of 800x480px. I figured out Waveshare’s “7 inch HDMI LCD (B)” would be the perfect match. And I was thrilled that not only it was not only relatively cheap, but they got it right and (so the claim) implemented “fully valid” HID protocol (their shop still states “When work as a computer monitor, supports Windows 10/8.1/8/7, five-points touch, and driver free”).

When I received the display, everything was working out of the box with my Raspberry Pi 2 running on Windows 10 IoT. Then the Anniversary Update came and that’s when things got weird. Over-night my slightly laggy touch display turned into one that responded to scroll movements, but I could hardly get a “click” to trigger. Later I found that thread over at the MSDN support forums: Waveshare 7 inch display doesnt work on windows 10 iot core

After a few days of discussion Microsoft acknowledged that there was some change in the HID report processing pipeline, which now discards HID reports that are malformed. The advice was to contact Waveshare to see what they could do about the issue. Long story short, I never got a satisfying answer. So I decided to fix it on my own.
Continue reading

My NLog – OWIN Adapter went “official”

You might remember I published a Nuget package to help integrate NLog with OWIN back in December 2014. And it worked great so far! A few weeks ago I got a notification from Github that my name was mentioned in some issue. Long story short, the main NLog maintainer and I decided to move Pysco68.Owin.Logging.NLogAdapter over to the NLog organization to give it a bit more visibility.

So there we go; from today on, you should use NLog.Owin.Logging to get OWIN and NLog together. Oh, and there’s a new Nuget package too: NLog.Owin.Logging@Nuget.

The usage remains the same:

Fixing bugs in MySQL Connector/NET – or how to make code first migrations work

Hello folks – just a quick post!

I finally found the time to publish a workaround I wrote back in May this year. I was hacking a fully automatic irrigation system (garden stuff you know ^^) and because I had to do that really quickly (before leaving for vacation) I decided go the route of a known framework: OWIN, ASP.NET WebAPI 2, NOWIN (as a host), Identity 2.0, EntityFramework, MariaDB, a good HTML5 stack… etc…

Well mostly a known framework; I had to run on a Raspberry and Microsoft wasn’t quite as ready with Windows 10 IoT as I’d needed it… So it was a quick decision to stick with Raspbian and Mono. Which by the way work out great. At the time of writing my little application has over 140 days of uptime! – Yay –

I’ll probably write more about the whole project in the next months!

Anyhow I faced the problem that the MySQL Connector/NET is *still* (I posted the bug on November 7th 2014 – Bug Ticket: #74726 EF migrations fail on long foreign keys) having issues with code first migrations, long entity names and foreign keys… and as I really lost any confidence that ****** is going to fix that any-time soon I decided to do it on my own…

Continue reading

Mixed authentication – NTLM with ASP.NET Identity

Tl;dr: You can use NTLM authentication without relying on IIS or HttpListener in OWIN projects by using my OWIN autentication middleware: more information on my Github project: Pysco68.Owin.Authentication.Ntlm middleware. It’s working flawlessly with ASP.NET Identity 2.0! And there’s a Nuget package too!

As you may have noticed, I’m relatively busy these days with things like OWIN and surrounding technologies. All there shiny and new things that just fit together so well. And then you have customers just requiring plain old things like NTLM for their latest shiny intranet application.

Continue reading

How-to: Hawk authentication scheme with SignalR

On a recent machine-to-machine communication scenario I needed to enable secure push messages. The server side of the project was plain ASP.NET Web API 2 (on OWIN – I just love it) so dropping in SignalR and a few hubs was done in minutes. The tricky part was that I was using the Hawk authentication scheme to secure the access (and I was very happy on how it worked out so far). So no reason to change anything about the global setup if it wasn’t for the .NET SignalR client library not supporting Hawk out-of-the-box.

But luckily SignalR sources can be crawled through easily over at github ( And even more luckily I found that it would be no more that a few lines to wire it up with Thinktecture’s Hawk implementation (Thinktecture.IdentityModel.Hawk on Nuget).

So there you go, my latest, greatest Nuget packages is: Pysco68.SignalR.HawkHandler.

Continue reading

Using NLog as OWIN logger

BTW. there’s some news about that topic: My NLog OWIN adapter went “official”

While playing around with OWIN, WebAPI 2 and the other new kids I was missing a logger factory for my favorite logging framework: NLog! And I wouldn’t be a good software engineer if I didn’t wire this up in a nice tiny library.

There you go: Pysco68.Owin.Logging.NLogAdapter on GitHub

And to make it a breeze I built a Nuget package for this one! That means that you can now use NLog as logger for your next OWIN project just by doing this:

Voila! If you’d like to customize the log-level translation table just take a look at the Github page!

Note: this is not a logging middleware! If you want some of those Google is your friend. The log factory (it’s an implementation of Microsoft.Owin.Logging.ILoggerFactory in fact) does provide an implementation of ILogger that wraps arround NLog.There’s some pretty good information about the architecture at Tugber Kugurlu’s blog / introduction to OWIN Logging.

I really hope you enjoy this one! Leave a comment if you have any question or suggestions! Contributions are welcome, just fork and create a pull request, I’ll review it for sure!

ASP.NET Identity 2.0 and MariaDB

…I finally made it: ASP.NET Identity 2.0 running with MariaDB! It was more difficult than I expected it to be. I’ve been using EntityFramework with MySQL successfully in my day-time job for over two years now. As I was starting a small toy project at home last week I decided to go the easy route: ASP.NET Web API 2 running in an OWIN application. That was the perfect opportunity for giving ASP.NET Identity 2.0 a shot – instead of rolling my own authentication framework.

I still believe that this choice isn’t bad at all, but I underestimated the cost of getting it to run in a heterogeneous environment (read: not everything is Microsoft technology).

Surprisingly (to me – but hey!) Microsoft is providing an example of how to use MySQL and EntityFramework 6 as a storage provider for ASP.NET Identity 2.0. Sadly the example isn’t working out of the box – at least not in my setup. One aspect is that when they wrote the tutorial the MySQL Connector/NET wasn’t supporting EF Code-first migrations as well as it does nowadays. The second issue was the primary keys in the ASP.NET Identity tables being too long for MySQL.

Continue reading