Coder Social home page Coder Social logo

retimer's Introduction

retimer

When I cook and particularly when I grill vegetables, I need a regular reminder to check on the food. Enter the retimer. The retimer is a cooking timer that re-triggers every x minutes to check on the grilling and, usually, toss the vegetables around.

Same thing with no-knead bread who needs a fold every 20-25 minutes.

For convenient, two regular timers are also supported, typically timer 1 goes off when cooking should be finished and timer 2 a little bit earlier to add aromatics. For bread-making, timer 1 goes off when the dough should be proofed while timer 2 is shaping time.

Last but not least, I wanted hands-free control of the retimer. Obstructing the light sensor is equivalent to pressing button A (restart).

retimer alarm goes off

UX Prototype

A kitchen timer is not a particulary difficult project. In fact I have had a similar workflow for some time: I set my kitchen timer to 5 minutes and when it goes off, I verify my grilling and restart the timer.

Expect I sometimes forget to restart the timer.

OKay, I often forget to restart the timer.

So the retimer aims to achieve a better UX for the task of grilling vegetables. When designing UX, it's important to formulate hypothesis and validate them through prototypes. Paper prototypes would not real work here so I had to build something fast. Which leads us to hardware.

Hardware

retimer is developed on the Adafruit PyBadge, in CircuitPython 5.3.0.

The PyBadge has plenty of buttons, a light sensor (hands-free operation), a screen, neopixels, on-board audio and sophisticated power management that includes a battery connector. It is also robust (mine has survived a few drops). All this makes it a great prototyping board.

Unfortunately I have found that the PyBadge is not Arduino-friendly. At least not friendly enough to my liking. It is certainly possible to develop in Arduino but I had to reset the board before every upload… which is a pain. So CircuitPython it was, plus Python is a great tool for rapid prototyping.

Unfortunately CircuitPython cannot handle RTC interrupts (according to the current FAQ) or allow the board to go to sleep, which makes it power hungry for a kitchen timer.

PyBadge or PyBadge LC

I used a plain PyBadge but the PyBadge LC should work also it is less expensive. The PyBadge LC has only one NeoPixel (adjust NEOPIXEL_LEN) and is limited to the onboard speaker.

Libraries

The following libraries are also used:

  • adafruit_bitmap_font
  • adafruit_display_text

The font Noto is from Google. I retrieved the BDF file from the PyBadge Conference Badge project

How to use?

At launch, the board shows the configuration screen. Set any of the 3 timers with the d-pad. Timers you don't need can be left to zero and they will not trigger an alarm. To start the countdown, hit the Start button.

While the timer is counting down, the Select button returns to the configuration screen.

When one of the timers reaches zero, the alarm goes off. Pressing the A (or B) button or momentarily obstructing the light sensor stops the alarm. If more than one timer has been selected, the alarm does not stop them. The retimer also restarts automatically, (unless it was set to zero).

The B button behaves differently for the retimer. It stops the retimer, so for timer 1 and timer 2, you can use either button indifferently. For the retimer button A stops the alarm but restart the timer. Button B stops the alarm and returns to the configuration screen.

A good trade-off

Using a generic board, like the PyBadge, has many benefits in terms of "time to market" but it's a little bit of a trade-off.

I would be interested to try rotary encoders as an alternative to the d-pad and the start/stop buttons. A gesture sensor, such as the APDS-9960, would expand options for hands-free operations, always a good thing in the kitchen.

It would be interested to connect to a thermometer or another sensor, maybe through Bluetooth. And I have already discussed power saving.

Yet overal I'm happy with the trade-off. At minimum, I have a prototype to validate in the kitchen. Later I'll see whether I need to improve.

retimer's People

Contributors

psol avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.