The Le Nez du Vin MasterKit 54 is a set of 54 aromas found in wine varieties across the world and is designed to help you develop your ability to distinguish aromas.
The aromas range from lemon to smoky via hawthorn, mushroom, leather and more. The box contains 54 vials, a book and a set of cards describing each aroma and its relationship to specific wines.
There's also a
game you can play with friends. Throw a die, land on a category (fruity, floral, vegetal/spicy, animal, roasted or wildcard) and someone picks an aroma from that category at random and you have to smell it and determine what it is.
It's great fun, but picking the random vials is hard. The fruity category is vials 1 to 23, floral is 24 to 29, vegetal/spicy is 30 to 44, animal is 45 to 47 and roasted is 48 to 54. Humans are notoriously bad at picking random numbers, so I created a little "aroma picker" using things I had on hand from my box of spare parts.
It's made from six
arcade style buttons with integrated 5V LEDs (happily these LEDs also had current limiting resistors so they can be connected directly to a GPIO port on a microcontroller), an on/off switch I salvaged from something, a little cardboard box made to contain a gift, an
Adafruit Trinket Pro 5V (note that these are deprecated and I had to program via an FTDI cable because the bit-banged USB would not work), and an ancient
SparkFun seven segment display.
I'm using the Trinket Pro because I had it lying around but also because it has a lot of GPIO ports (and I need 12: six for the buttons and six for the LEDs). Note that since the microcontroller has built in pull-up resistors there's no need for any resistors on the buttons. Also, the Trinket Pro 5V will provide 5V to light the LEDs and run the seven-segment display (and it has SPI to talk to it).
A fun aspect of this project is that I needed to do some old-fashioned geometry with a compass and straight edge to place the buttons nicely. First up is find the centre of the lid.
It's a little hard to see but you first draw an arbitrary
chord to the circle and then create the
perpendicular bisector using a compass. That results in a line through the centre (i.e. a diameter). You then bisect the diameter line to obtain another diameter and where they cross is the centre.
Then on the other side you draw a circle where you want the centres of the buttons and then construct their
placement using a compass. Since there are six buttons they will be 60 degrees apart and it's enough to set the compass to the radius of the circle and then mark a point on the circle and just inscribe arcs using the compass. They will be 60 degrees apart.
The actually "circuitry" is just a lot of wiring. Six GPIO ports connected to the buttons, six for the LEDs, and the other terminals on the LEDs and buttons all tied together to ground. The seven segment display requires power and three SPI signals: SCK, SS, MOSI. And one other connection... I used this type of display before in a
project and it's prone to corruption. There's an extra wire between RX and ground to make sure that the display doesn't pick up any noise from the floating serial connection.
The whole thing runs on a 9V battery connected to Vbatt on the Trinket Pro. Those big, thick green wires are another thing that came out of the "box of random things". They are left over from back when I cut up a set of
GE addressable Christmas lights to make a display.
The software itself is pretty simple and you can
see the code here. Here's a GIF of the aroma picker in action after pressing the "fruity" button (the one with the apple on it):