Free Domestic Shipping on orders over $150!


November 09, 2017


Posted in store news

No Shipments Monday 13th November

Please note that Canada Post and Fedex will not be accepting shipments on Monday in honour of Remembrance Day. Any orders placed after our shipping cut-off time on Friday will be shipped on Tuesday. For more details about shipping times, please see our About Us page.
October 04, 2017


Posted in store news

The OnOff SHIM: the power button for your Raspberry Pi

If there's one feature we wished the wonderful Raspberry Pi had built in, it wouldn't be for a faster processor or more memory. While those features would be nice, just a simple power button is all we ask for. Pulling the plug on a Raspberry Pi — particularly one that's running without a screen and keyboard — can be a risk to your programs and data.

Pimoroni's OnOff SHIM is all we could have asked for in a power button. Install it on your GPIO headers, run Pimoroni's easy setup code, and you're done! The SHIM (the name's a slightly silly acronym, but Pimoroni have never been too sensible) re-routes the Raspberry Pi power supply through the GPIO pins and adds some electronics to disconnect power once your Pi is shut down.

Using it is very simple:

  • If your Raspberry Pi is powered off, just touch the button on the OnOff SHIM and it will boot up normally
  • If you want to shut down your Raspberry Pi, press and hold the button for a second, and the normal controlled shutdown will happen. The power LED on your Raspberry Pi will go out when it's all finished.

No messing about with keyboards or remote logins required!

While the OnOff SHIM comes with a header connector that most users will want to use, what if you wanted to use it along with most existing Raspberry Pi HATs and accessories? The adventurous user can solder the OnOff SHIM directly to the GPIO pins to save all of the space:

This makes your OnOff SHIM much more shim-like when you see it with a HAT attached:

Soldered OnOff SHIM with attached pHAT for illustrative purposes only

Depending on your application, you may not need to cut away the GPIO pin supports as I did. Either way, you might wish to put some isolating tape on the base of the OnOff SHIM to prevent the possibility of an electrical short.

Before permanently soldering an OnOff SHIM to your Raspberry Pi, you might want to check the GPIO pins you need to use on The OnOff SHIM needs exclusive access to physical pins 7 & 11, and any other board you put on top can't use those.

BBC micro:bit

Once upon a time in a faraway land there was a computer called the BBC Micro. And all the children in that faraway land (including your humble scribe) nominally learned to program on those fabled BBC Micros. And, as they say, all lived happily ever after. Or at least learned how to print rude words on a computer screen while the teacher wasn't looking.

The BBC Micro may be consigned to history, but the BBC micro:bit is no fairy tale. It's a tiny microcontroller board developed for UK schools. At its heart is an ARM Cortex-M0 processor with Bluetooth LE, coupled to a motion sensor and electronic compass. It's got a 5*5 array of red LEDs as a display and two buttons for inputs. It can also run from a battery pack via the built-in JST connector, and its edge connector has pads and rings for alligator clips and banana plugs.

We're happy to offer a variety of micro:bit equipment in Canada, including the micro:bit go bundle and many micro:bit accessories. While you can program it in many languages, I especially like MicroPython. It works really well with the Mu editor for easy and quick coding.

Here's an example script that slowly changes the colours of an 8 NeoPixel strip. 


from microbit import *
from random import randint
import neopixel

# Define a NeoPixel Strip of 8 pixels with
#  DATAIN connected to micro_bit pin 0
np = neopixel.NeoPixel(pin0, 8)

# wheel() returns (R, G, B) tuple of colours
#  picked from a colour wheel from input 0..255
# converted from Adafruit example code for Arduino
def wheel(pos):
    if pos<85:
        return (pos * 3, 255 - pos * 3, 0)
    elif pos<170:
        return (255 - pos*3, 0, pos * 3)
        return (0, pos*3, 255 - pos*3)

while True:                     # endless loop
    k=k+1                       # colour counter
    if k>255:
    # Set whole strip to same colour
    for pixel_id in range(0, len(np)):
        np[pixel_id] = wheel(k)
    # update strip

And here's a spectacularly annoying example that plays the NyanCat theme through a small speaker or piezo buzzer forever — but it gets slightly faster every time!

# nyan but it gets faster
import music
beats = 120
while True:
    beats = beats + 1

Have fun with your micro:bit!

Clap on 👏👏, Clap off 👏👏

The offices next to Elmwood's must be wondering what we've been up to over the last couple of days. They would have heard sudden bursts of applause, then giggling, then more applause, and so on. There is, I can now reveal, a very good reason for this odd behaviour.

We've been testing Verbal Machines' Hand Clap Sensor VM-CLAP1. While it might look a bit like a cheap “noise detector” board, VM-CLAP1 has a bunch of clever signal processing built in so that almost all background noise is filtered out. Only handclaps or finger snaps will make the sensor trigger, and will do so over a range of a few metres.

We tried it with a speaker blaring right next to the microphone, and it could still pick out our handclaps over the noise. Really short percussive sounds like sharp snare hits might confuse the VM-CLAP1, but the board makes audio control of your electronic projects much simpler.

VM-Clap1 is really easy to set up, with only three connections:

  1. GND – to your system's ground
  2. PWR – anything from 2.5 – 5.5 V, so it will work with all common micro-controller project boards, including the Raspberry Pi. It draws only 1.7 mA at 3 V, too.
  3. OUT – this is an open collector output, which means the sensor sinks current when it is triggered. To use it with an Arduino, be sure to set INPUT_PULLUP for the VM-CLAP1 pin, or use an external pull-up resistor. Output is normally HIGH but is held LOW for 40 m/s when triggered.

I've written a couple of Arduino demos to show off what the VM-CLAP1 can do. The first is a very simple “clap twice for on, clap twice for off” script that switches the built-in LED on and off. Flashing LED_BUILTIN is no big deal, but choose a different pin, add a coffee maker and a Power Switch Tail II, and you've got a clappuccino machine!

Wiring is as follows:

  • OUT → Pin 2
  • PWR → 5 V or 3.3 V
  • GND → GND

And here's the code for Arduino:

    Verbal Machines VM-CLAP1 sensor test
    clap twice within ¼ second to turn Arduino LED on or off

    by  scruss - 2017-06
    for Elmwood Electronics -

    Sensor wiring:

      OUT   → Arduino Pin 2 (use INPUT_PULLUP)
      PWR   → 5V or 3.3V
      GND   → GND

#define CLAPIN  2             // pin must be interrupt-capable
#define CLAP_DELAY   250      // max gap between claps to trigger

volatile boolean clap = false;                // clap detected state
boolean led_state = false;                    // LED on/off state
unsigned long clap_time, last_clap_time = 0;  // clap time records

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // control built-in LED by clapping
  Serial.println("# Clap sensor test ...");
  attachInterrupt(                  // register Interrupt Service Routine (ISR):
    digitalPinToInterrupt(CLAPIN),  //   pin to watch for interrupt
    heard_clap,                     //   void function to call on interrupt
    FALLING                         //   trigger interrupt on HIGH → LOW change

void loop() {
  digitalWrite(LED_BUILTIN, led_state);  // set LED based on clap status
  if (clap) {                       // we heard a clap from ISR
    clap = false;                   // make sure we don't trigger again too soon
    last_clap_time = clap_time;     // store old clap time
    clap_time = millis();           // note current clap time
    if (clap_time - last_clap_time < CLAP_DELAY) {  // if two claps heard in ¼ s:
      Serial.println("clap clap!");                 //   notify
      led_state = !led_state;                       //   and switch LED state
    else {
      Serial.println("clap!");                      // notify of only one clap

void heard_clap() {
  clap = true;      // just set clap state in ISR

 The next demo is a "clapometer", where we use an Adafruit NeoPixel Stick - 8 x WS2812 5050 RGB LED as the indicator. The faster you clap, the more LEDs light up - and in different colours, too!

Wiring is as follows:

  • VM-CLAP1 Sensor OUT → Pin 2
  • VM-CLAP1 PWR → 5 V or 3.3 V
  • NeoPixel stick DATA IN → Pin 6
  • NeoPixel stick PWR → 5 V
  • NeoPixel stick GND → GND

You'll need to install the Adafruit NeoPixel Arduino Library to use the code:

    Verbal Machines VM-CLAP1 sensor test
    clapometer with neopixel output

    by  scruss - 2017-06
    for Elmwood Electronics -

    Sensor wiring ("open collector"):

      OUT   → Arduino Pin 2 
      PWR   → 5V
      GND   → GND

    8 Neoxpixel strip on Arduino pin 6

#define CLAPIN          2     // pin must be interrupt-capable
#define CLAP_INTERVAL   600  // time over which claps are counted
#define MAX_COUNT       7    // max claps to count
#define NEOPIN          6     // 8 px strip on pin 6
#define NUMPIXELS       8     // 0 ..7

// this is a colour table of pleasing(ish) HSV hues:
unsigned long hues[] = {0x7F0000, // 0 degree hue
                        0x7F5F00, // 45 deg
                        0x407F00, // 90 ...
                        0x007F40, // 135
                        0x007F7F, // 180
                        0x00407F, // 225
                        0x40007F, // 270
                        0x7F005F  // 315
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>

volatile boolean clap = false;          // clap detected state
unsigned long clap_times[MAX_COUNT];   // clap time records
int array_pos = 0;                      // index of current time record
int clap_count = 0;                     // count of claps within CLAP_INTERVAL
unsigned long current_time = 0;
int i, j = 0;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, NEOPIN,
                           NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.println("# Clapometer ...");
  for (i = 0; i < NUMPIXELS; i++) {
    // turn all pixels off
    pixels.setPixelColor(i, 0);
  attachInterrupt(                  // register Interrupt Service Routine (ISR):
    digitalPinToInterrupt(CLAPIN),  //   pin to watch for interrupt
    heard_clap,                     //   void function to call on interrupt
    FALLING                         //   trigger interrupt on HIGH → LOW change

void loop() {
  if (clap) {                       // we heard a clap from ISR
    clap = false;                   // make sure we don't trigger again too soon
    clap_times[array_pos] = millis();
    if (array_pos == MAX_COUNT) {
      array_pos = 0;
  current_time = millis();
  clap_count = 0;
  for (i = 0; i < MAX_COUNT ; i++) {
    if (current_time - clap_times[i] <= CLAP_INTERVAL) {
  // set neopixels to clap count in right hue

  for (i = 0; i <= clap_count ; i++) {
    pixels.setPixelColor(i, hues[i]);
  if (clap_count < NUMPIXELS) {
    // blank any unused pixels
    for (i = clap_count + 1; i < NUMPIXELS ; i++) {
      pixels.setPixelColor(i, 0);
  Serial.print("clap count: ");

void heard_clap() {
  clap = true;      // just set clap state in ISR

Have fun with your new 👏-enhanced projects!


Stewart  would like to thank/blame Brent Marshall and Anna Humphrey for the idea of the "clappuccino" machine.

March 27, 2017


Posted in store news

Saturday April 1: Arduino Day Canada!

We are pleased to announce that we are co-hosting Arduino Day Canada with Rogue Robotics at our co-working space, MakeWorks Toronto.  Come visit us between 10:00 and 3:00 to see demos, learn more about Arduino, and meet other Arduino fans.  Please RSVP at EventBrite so we know how many people are coming.   This event is held in conjunction with the global Arduino Day celebration!

We will have limited stock of Arduino Uno, Mega, and Starter Kits on hand.  If you want to pick something else up, please order online, select "Toronto Local Pickup" at checkout, and let us know you would like to pick up the order at Arduino Day.
March 02, 2017


Posted in store news

New reduced Canada Post rates!

We are pleased to announce reduced Canada Post shipping rates!  We have reduced our Canadian shipping rates by 10% across the board.  We are shipping hundreds of packages per month now, so Canada Post was nice enough to give us a discount.

Thank you for your support and enjoy the new rates!

February 09, 2017


Posted in store news

February 2017 Newsletter


We are pleased to announce that we recently celebrated our 1,000th website order!  With over 900 items in stock and thousands more available via pre-order, we have everything you need.

New Products
Every week we are adding the latest from SparkFun and Adafruit to our website!  Keep an eye out for new products.

We are pleased to now offer AdaBox kits for pre-order!  AdaBox is Adafruit's subscription service that sends a box of electronics goodness once a quarter.  Unfortunately you cannot subscribe to the service if you are outside the US, but we can now sell the kits!  Check out the Patriotic Canadian Robot that we made using AdaBox002.  

Some of our favourite new products from SparkFun include the LIlyPad Sewable Electronics Kit, the  ESP32 thing IoT microcontroller, and the super fun PiRetrocade kit.   

Raspberry Pi
We continue to be one of Canada's leading Raspberry Pi resellers.  From configured Raspberry Pi systems to our competitively priced Pi 3 kits, we want to be your supplier of all things Pi!   Need a custom Pi system built for corporate or educational use?  Let us know, we can do that!