An automatic fish feeding system mounted on an aquarium

The FishFeeder Keeps Your Fish Fed While You’re Away

With summer in full swing in the Northern Hemisphere, millions of people are out on vacation leaving millions of homes empty. Thanks to modern technology it’s easier than ever to keep an eye on those empty homes: internet-connected cameras report suspicious activity, and smart-home devices like curtains and light bulbs can be operated from your holiday home. If you’ve got an aquarium and want to keep your fish well-fed during your vacation, then [FoxIS]’s internet-connected automated fish feeder might come in handy too.

The heart of the system is a 3D-printed mechanism that holds a bottle of fish food in a funnel and dispenses a set amount through a servo-operated shutter. The servo is driven by an ESP32 sitting inside an M5StickC IoT development kit. [FoxIS] wanted to use TinyGo for this project, which unfortunately meant that he couldn’t use the ESP32’s built-in WiFi system due to software limitations. He therefore connected the M5StickC to a Raspberry Pi, which he can log into from anywhere in the world to operate the feeding mechanism or to watch his aquatic pets through a USB camera.

A small IoT device with an LCD screen showing aquarium-related informationApart from automating the feeding process, the FishFeeder system also keeps track of the aquarium’s temperature through an IR thermometer and shows reminders for other maintenance tasks, such as changing the water or cleaning the filter. A minor inconvenience is the requirement to have that Raspberry Pi present for internet connectivity, but perhaps a future version of TinyGo will support WiFi on the ESP32 and make the FishFeeder a fully self-contained system.

While 3D-printing is an obvious choice for custom mechanisms like this, you can also make a much simpler system from a Tupperware bin and a drill bit. If metalworking is your thing, you can build really accurate fish feeders too.

TinyGo Brings Go To Arduino

Go — a modern programming language with roots at Google — is one of the new generation languages that would like to unseat C (and C++) for what we think of as traditional programming. It is only for PCs, though, right? Not so fast! TinyGo provides a compiler that — in their words — is for small places. How small? They can target code for the Arduino Uno or the BBC micro:bit. It can also produce code for x86 or ARM Linux (both 32- and 64-bit) as well as WebAssembly. They claim that a recent project to add ESP8266 and EPS32 support to LLVM will eventually enable TinyGo to target those platforms, too.

As you would expect, there are some subtle differences between TinyGo and the full-blown version. The compiler handles the entire program at once which is slower but offers more for optimization. Certain optimizations for interface methods are not used in TinyGo, and global variable handling changes to accommodate moving data from flash to RAM efficiently. TinyGo passes parameters in registers.

Continue reading “TinyGo Brings Go To Arduino”