DIY Wifi Enabled Fish Tank


  Source Code

I recently purchased a Aquarius AQ11204 BettaView Brite Corner Tank and a cheerfully blue betta fish. The tank is a simple corner shaped tank that fits perfectly on my desk and adds a bit of life to the mountain of technology that every other inch of my office occupies. This particular tank also incorporates a multi-mode RGB LED that can cycle through different modes by pressing the button at the top. Overall, even without modifications, it’s a great tank!

But.. the lighting is a bit lacking. The light can only be toggled to stay on for a few hours after a complicated sequence of long and short button presses. The lighting modes are quite boring with only a few solid colors and an awkward attempt at PWM control of the LEDs for the fading. Now this got me thinking how I could improve this. I’ve had a bag full of ESP8266 boards for a while now, almost 6 months, that I haven’t done anything with.

For those who do not know anything about the ESP8266; it’s specs are as follows:

  • Cost is less than $2 shipped!
  • Wi-Fi chip with full TCP/IP stack
  • 80 MHz Microcontroller
  • 64 KiB of instruction RAM
  • 96 KiB RAM
  • External 512 KiB flash.

In short, a powerful enough WiFi enabled microcontroller to control both the IO devices and host a basic HTTP server on the cheap!

So let’s get started! The goal for this project were as followed.

  • Weekend project. Shouldn’t take more than two days from start to finish.
  • Monitor and record water temperature every 30 seconds.
  • Text message alert if the water temperature reaches a concerning level.
  • Mobile friendly web interface for changing the color and effect mode. (Constant color, fading, etc)

Continue reading

Reverse Engineering a Bluetooth Enabled Battery Charger


Through the never ending stream of “connected” devices on the market we have yet another. Today, I look at and tear into the workings of Efest’s latest product, the Efest LUC BLU6 OLED Intelligent Charger.

The goal of this project is to identify, reverse engineer, and evaluate the safety of this device. Through this process I’ll also be writing a simple interface library in Go as a working exercise in my pursuit to become more efficient in this new programming language.

Continue reading