Niston Cloud’s WiFi IoT Signaleer is -you guessed it- an Internet-of-Things signal lamp. It can visualize a great many things: Internet connection availability, NAGIOS alarms, home automation indicators, (3D) printer job status – you name it. My use case is to monitor the order queue of a webshop we run at work. So, the current Signaleer Firmware uses HTTP polling. I plan to write an MQTT version for some other use cases.
The heart of the IoT Signaleer consists of a nodeMCU board. This integrates an ESP8266 Microcontroller (has built-in WiFi), 4MB FLASH memory, a 3v3 regulator and an USB-TTL Serial bridge onto a tiny, ridiculously cheap board. Thanks to the nodeMCU firmware, the ESP can be programmed in LUA. I had some previous experience in writing LUA code, dating back to my World-of-Warcraft days. So, getting going with nodeMCU wasn’t much involving. I found that it’s event-driven approach is very similar to writing event-driven programms in (ancient) Visual Basic 6 – Which is something I once used to be extremely comfortable with.
The light stack used in this project has incadescent lamps. As you can see, I took to some rather very, totally and extremely beefy MOSFETS (IRFP064N) to blink ’em lights. Because, you know, Overkill! The MOSFETS do not fully turn on @ 3v3, so I used pairs of BC547 transistors as non-inverting gate drivers (thx SpeedEvil). Due to the relatively high MOSFET slew rate, I had to take some measures to prevent ringing (which would emit unwanted RFI) and so used a 100KOhm gate resistor. Filament protection is provided by a bunch of 470Ohm bias resistors across the MOSFETs, which pre-heat the bulb filaments with roughly 30mA each (thx Kludge & _abc_).
To further extend bulb life, I implemented softstart on all lamp channels, paralleling a 4.7uF capacitance with each MOSFETs Gate. Going overkill++ on the MOSFETs allows for this mode of operation (slowly ramping down RDS) without using any heatsinking or even considering thermal management. Considering thermal management: I had to rewire the beeper inside the lamp stack, for common anode operation. Doing so, it came to light that the manufacturer had put unsuitable wiring in place, rated for 105°C only. But I measured the inside of the stack to reach 103°C @ 24°C ambient. Thus, some new 180°C rated SiF wiring finally fixed this potential fire hazard. There’s also a little piezo beeper inside the lamp stack; it is driven by a single BC547.
I mostly used ESPlorer to code the Firmware, which you can obtain from here. ESPlorer is a tad bit cumbersome to use, and some of the features don’t work at all while others do work, but just not quite right. Still: It got the job done, nonetheless! I need to look around for a suitable dev environment though. Something VS-ish would be nice indeed.