All prices in Canadian dollars. Free shipping on orders over $150!


March 03, 2017

Posted in

Escape Room Part 1: Pulse Sensor

I am in the process of starting a relatively large-scale project for my senior thesis at school. I will be creating an escape room for which I will be transforming the lighting studio at my school into an abandoned hospital lab. I will be putting players through a scenario in which they must retrieve blood samples from the hospital to help scientists create a cure for a mass contagion that is wiping out humanity. My escape room will contain a variety of puzzles and challenges and will make extensive use of Arduinos and Particle Photons. One of the main components of my escape room will be vests that players wear that will essentially monitor their health as they are exposed to the contagion. You can find more information about my thesis on my website.

The first component of my escape room that I will be working on are the health monitoring vests. They will monitor both the players' exposure to the contagion and pulse. The pulse will be important because if the players' exposure level becomes too high they will have to get their pulse up in order to circulate a temporary antibiotic through their body. In order to monitor the players' pulse, I will be using the Pulse Sensor Amped. The Pulse Sensor Amped is an open-source product that we developed by a company called World Famous Electronics, LLC. The Pulse Sensor Amped can work with any Arduino and can be used to display heart rate data using Processing.

For the vest in my escape room, I will be connecting the Pulse Sensor Amped to a Particle Photon so that I can transmit the pulse data over WiFi and display the data using p5.js in a web app. However, for today I will be using a SparkFun RedBoard just so I can experiment with the Pulse Sensor Amped and learn how it works. The RedBoard is one of my favorite physical computing tools. It functions exactly like an Arduino Uno but costs a fraction of the price. You can also get it as part of a Tinker Kit that gives you everything you need to create basic physical computing projects. The RedBoard will be perfect to allow me to get data from the Pulse Sensor Amped and display an EKG using Processing. The Pulse Sensor Amped comes with several components: there's the Pulse Sensor itself, clear stickers to protect the Pulse Sensor from water, Velcro and a strap to attach the Pulse Sensor to your finger, and a clip on earring to attach the Pulse Sensor to your earlobe.

To setup the Pulse Sensor Amped you can follow the Getting Started Guide on World Famous Electronics website. They have two versions of the guide there: a new one that links to a GitHub project and an old one that they say is there for archival purposes. I will mostly be following the new version of the guide, however there is a section of the old guide that talks about sealing the back of the Pulse Sensor Amped with hot glue to protect the electronic components from moisture and skin oils. This seems important to me so I will be doing that. So, the basic setup process is to cover the front of the Pulse Sensor Amped with one of the clear stickers that came with it and to seal the back of it with hot glue as mentioned in the old guide. After doing so your Pulse Sensor Amped should look like this:

From here you can stick one of the Velcros on it if you want to use the finger strap or you can attach it to the earring using a small dab of hot glue. For my project I will be using to finger strap so I put one of the Velcros on it. There are two main tutorials on World Famous Electronic's website: one that lets you blink/fade an LED in time with your heart rate and display pulse data using a serial plotter in the Arduino IDE, and another that lets you display pulse data in Processing. These tutorials include all the code you will need to get up and running with the Pulse Sensor Amped. It's important to note that before doing the Processing tutorial, you must first setup your Pulse Sensor Amped with the Arduino code from the first tutorial. You should connect your Pulse Sensor Ampled to the Arduino board of your choice as follows: red to 5v, black to ground, and purple to A0.

After hooking up the Pulse Sensor Amped to your Arduino board you can grab the code from GitHub and you should be good to go. You will know everything's working if, once you upload the code to your Arduino board and attach the pulse sensor to your finger/earlobe, the built-in LED next to pin 13 starts blinking. This blinking corresponds to your live heart rate. Then after setting up the Processing sketch (don't forget to change the outputType variable in the Arduino code from SERIAL_PLOTTER to PROCESSING_VISUALIZER) you should get a nice visual representation of your heart rate.

Overall, I was very impressed by the Pulse Sensor Amped. The setup was super simple and I was able to get up and running quickly using the tutorials provided by World Famous Electronics. The next step in my project will be adapting the demo code to make it work using a Particle Photon and p5.js instead of an Arduino and Processing. I will also have to use a shield to make the Photon wearable and integrate it with the other system that the vest will be monitoring which is the level of exposure to the contagion. However, as of now I am pretty confident going forward that I should be able to get everything working!

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 25, 2017

Posted in projects

Hungry Hippos

This project is a digital remake classic board game Hungry Hungry Hippos. I decided to try and recreate the motion of the hippos from the game at the push of a button. I knew going into this that the hippos had two main motions: the forward and backward motion of their body and the up and down motion of their head. I figured that I could use a servo to control the body motion and a solenoid to control the head motion. I decided that would program my hippo using an Arduino Mega 2560 R3. I started by 3D printing a head for the hippo and a rack and pinion that would represent the hippo's body. This was an iterative process (it took a few tries to get the pinion to fit on the servo), but I finally ended up with a set of parts that I was happy with.

The next thing I had to do was connect the head to the rack. I knew that the head had to pivot up and down in order to "eat" the marbles, so I attached it to the rack using a hinge and some superglue.

I then started working on attaching the solenoid to the rack and head. I was going to glue it to the rack and use a piece of copper pipe to attach it to the head. However, I quickly realized that the solenoid drew too much power to be powered by the Arduino alone. I was able to resolve this problem using a 9V battery adapter and a TIP120 transistor. (Side note: when working with transistors, make sure you use the right one for your project. I thought I could get away with using a transistor that I had laying around in an electronics kit, and when I went to touch it after hooking it up I almost burnt my fingers.) I then encountered another setback: the solenoid did not have enough pullback force to lift the head. I realized that I either had to get a larger solenoid (which may or may not have solved the problem) or come up with another way to move the head. Since I was short on time, I ultimately ended up putting the solenoid aside for another project.

In the mean time, I got to work on setting up the pinion attached to the servo since I was confident that my rack and pinion system would work. I pressure fit the pinion on the servo and taped the servo on the underside of the box lid I was using as the base for the project. I cut a hole in the box lid so that the pinion would be able to connect with the rack.

At this point it was time to wire everything. I decided to make two hippos so I got everything setup and taped all the wiring and components in place on the bottom of the box lid. I used standard push buttons as the controls and a 9V wall adapter to power the Arduino. The wiring was a little bit messy but it was functional nonetheless.

I then put the finishing touches on the hippos. I realized that I needed more weight on the body in order for the rack and pinion to work so I glued an eraser on top of the rack. As for the new head movement, I found out that if I glued a string to the top of the head and tied it back, the tension would cause the head to move.

In the end, everything came together and I was very pleased with the result. The hippos functioned as expected although they were not great at picking up marbles. Still, they properly recreated the motions of the hippos from the actual games. Check out the video below!

Overall, this was a pretty simple project. I would definitely recommend experimenting with servos. In addition to the 180° servos I used for this project, there are also continuous rotation servos that rotate a full 360°. Servos come in a variety of sizes and can be fitted with a variety of attachments. You can basically handle any type of rotational motion you need using a servo. They are very easy to program as well. For more information on this project, please check out the documentation about it that I wrote for my class on my website. You can also see the code I used to program the hippos on GitHub.

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!

December 27, 2016

Posted in

Toronto Local Pickup Unavailable until January 2nd

Due to a reduced staff at MakeWorks, Toronto Local Pickup will be unavailable until January 2nd.  Take advantage of our low shipping rates and next day GTA delivery via Canada Post Expedited Parcel!
December 10, 2016

Posted in store news

Now stocking over 500 Adafruit items

We are now stocking over 500 Adafruit part numbers!  This gives us the widest selection of Adafruit inventory in Canada.  As always, we also offer pre-order for any items that we do not stock.  

Elmwood Electronics is your Canadian source for Adafruit!

September 16, 2016

Posted in neopixel, projects

NeoPixel Colour Picker

The lighting in my garage was pretty poor, and since we sell lots of NeoPixels, naturally I had a strip lying around!  So I figured NeoPixel LED's would be an efficient and bright way to light the garage!

The lighting in my garage was pretty poor, and since we sell lots of NeoPixels, naturally I had a strip lying around!  So I figured NeoPixel LED's would be an efficient and bright way to light the garage!

Of course I didn't want just an on / off switch, it would be way more fun to be able to pick colours.  So, I grabbed a set of round tactile buttons, and luckily there were red, green, blue, yellow, and gray.  I decided red, green and blue would control the colour, yellow would be "white", and gray would be off.

To control everything I used a Pro Trinket 5V, which is like an Arduino Mini with more pins and USB.  I  used 5 input pins for the switches and one output pin for the NeoPixel Strip.

The buttons are wired to ground, meaning, when you press the button the switch closes and sends a ground (LOW) signal to the Trinket.  I wrote the code so it constantly loops to see what buttons are pressed.  What's nice about this is that I was able to have it see if more than one button is pressed, so you can make more than just Red, Green and Blue!

Programming the Pro Trinket is easy via a microUSB cable.  More details on programming the Pro Trinket can be found in the Adafruit Learning System.

On my first prototype I used a basic solderless breadboard with some hookup wires, but to really finish it off i used an Adafruit Perma-Proto board.  This was a good choice because i could easily mount it to the wall and wire up all the connections.  

Adafruit has a great tutorial on how to use NeoPixels, so I will not get into much detail on how they work.  The important thing to know is that they need a good amount of power if you are using a bunch of them, so I used a hefty 10 amp 5V power supply to run 150 NeoPixels.  Also pay attention to the guide's suggestions regarding capacitors and resistors to avoid damaging your NeoPixels.

You'll want to make sure you install Adafruit's NeoPixel Library and also set your Arduino IDE up for the Pro Trinket.

See below for my Arduino code.  Basically I just took the Adafruit NeoPixel strandtest code and added some logic for the buttons.  Super simple!  



#include <Adafruit_NeoPixel.h>

#define PIN 4
#define HIGH 1
#define LOW 0

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(150, PIN, NEO_GRB + NEO_KHZ800);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel. Avoid connecting
// on a live circuit...if you must, connect GND first.

// constants won't change. They're used here to
// set pin numbers:
const int offPin = 10; // the number of the pushbutton pin
const int whitePin = 13;
const int greenPin = 6;
const int redPin = 8;
const int bluePin = 5;

// variables will change:
int offState = 0; // variable for reading the pushbutton status
int whiteState = 0;
int greenState = 0;
int redState = 0;
int blueState = 0;
int pixelSpeed = 10;

void setup() {
strip.begin();; // Initialize all pixels to 'off'
pinMode(offPin, INPUT_PULLUP);
pinMode(whitePin, INPUT_PULLUP);
pinMode(greenPin, INPUT_PULLUP);
pinMode(bluePin, INPUT_PULLUP);
pinMode(redPin, INPUT_PULLUP);
pinMode(13, OUTPUT);

void loop() {
// Some example procedures showing how to display to the pixels:
whiteState = digitalRead(whitePin);
offState = digitalRead(offPin);
greenState = digitalRead (greenPin);
blueState = digitalRead (bluePin);
redState = digitalRead (redPin);
if (greenState == LOW | redState == LOW | blueState == LOW) {
colorWipe(strip.Color(255 * (1-redState), 255 * (1-greenState), 255 * (1-blueState)), pixelSpeed); // RGB
else if (whiteState == LOW) {
colorWipe(strip.Color(255, 255, 255), pixelSpeed); // WHITE
else if (offState == LOW) {
colorWipe(strip.Color(0, 0, 0), pixelSpeed); // WHITE

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);;