micro:bit Dog Door Opener

​Do your pets trap themselves in rooms? Do you wish you could make your home more accessible for your furry* friends?? Now you can, hooray!!

This project uses a micro:bit microcontroller to pull open a door when a (pet-friendly) switch is pushed. We’ll need a micro:bit (probably helpful), a high-torque motor, and some mechanical parts and pieces to mount the motor and connect the motor to the door.

Read Time: ~15 min

Build time: ~30-45 min

Cost: ~$60

*This project can be used as a low-cast way to improve home, workplace, or other physical space accessibility for humans, too! Yay!!

 

Materials

  • ​micro:​bit 
  • microUSB cable (3ft or more)
  • ​Binary Bots Planet Totem Spider Kit​
    • If this is your first robotics project, I’d highly recommended to use this kit and follow the tutorial as-is. If you’ve done a few projects before, feel free to make adjustments and modifications. Here are two things to keep in mind:
      • This project requires a high torque motor to pull open our door. The motor control system and high torque mini DC motor from this kit were super helpful in building this project.
      • The assorted boards, nuts, and bolts were also handy, but could be replaced with similar mechanical parts from another robotics kit or directly from a manufacturer.
  • 2 lengths of 24 gauge stranded wire, 3 – 4ft (1 – 1.3m)
  • Fishing line, 4′ (1.3m)
  • Aluminum, 2″x3″ rectangle (5 – 7cm)
  • 8 small nails
  • 6 push pins
  • Wall sticky putty

Tools

  • ​Driver kit
    • Note: the Binary Bots kit does come with an M3 driver (and it’s magnetic, wooo!!!) and a tiny screwdriver.
  • Hammer
  • Wire Strippers
  • Hot Glue Dispenser (not pictured)
  • Scissors
  • Measuring Tape
  • Pencil

Prep and Aluminum Latch Cover

​1. Measure and record the width of your door (the inside part).

2. At a 45 deg angle, measure the distance from the door latch to the wall perpendicular to the door hinges.

Note: your particular room setup is likely different than mine. The key thing to keep in mind is that torque is the lowest when it is applied perpendicular. In other words, try to attach the motor as close to perpendicular as possible. A 45 deg angle is likely the smallest angle you’ll want, larger angles will be easier for the motor to pull open the door.

3. Cut a 2″x3″ piece of aluminum (e.g. from a recycled can).

 

Build it: Door Connection Mechanism!

Materials

To build this part, you’ll need the following pieces from the Binary Bots Kit:

  • 3 100x30cm boards
  • 2 2-hole 90deg brackets
  • 4 6mm M3 bolts
  • 4 lock nuts
  • 2 8mm M3 bolts
  • 2 M3 nuts

Procedure

1. Grab one of the boards. From the left edge, measure and mark the width of the door.

2. Grab a second board. Connect the second board to the first perpendicularly to each other, so that the second board is just to the right of the door width line.

To do this, use both brackets, 4 6mm M3 bolts, and 4 lock nuts.

3. Grab the third board and connect it to the second in a straight line using the longer (8mm) M3 bolts and rectangular M3 nuts.

Set aside and move on to the next part, woo!

Build it: Pet-Friendly Switch!

​Materials

To build this part, you’ll need the following pieces from the Binary Bots Kit:

  • 2 100x30cm boards
  • 4 6mm M3 bolts
  • 4 M3 nuts
  • 2 8mm nylon standoffs

You’ll also need:

  • 2 3-4ft (1-1.3m) of stranded 24 gauge wire
    • Remove about 1in (2.5cm) of the insulation from both ends​
  • 3 push pins

Procedure

1. Grab one of your boards and attach the nylon standoffs to the left side using two (2) M3 nuts.

2. Grab the second board and use two (2) M3 bolts to secure the second board to the first via the nylon standoffs.

3. Grab one of the M3 bolts and push it through a hole on the far right end of the top board. Wrap one end of the wire around the base of the bolt. 

4. Use an M3 nut to secure the bolt in place.

5. Repeat steps 3 and 4 for the bottom board, making sure that the second bolt is directly below the first.

When you close the switch (aka push the boards together), the top and bottom bolts should press together and make full contact.

Build it: Motor Mount!

Materials

​To build this part, you’ll need the following pieces from the Binary Bots Kit:

  • 1 100×100 cm board
  • 1 Tiny Motor with 2 tiny screws (so cute and yet so powerful!)
  • 1 Motor Mount (“web launcher”)
  • 1 reel set (“web reel”)
  • 6 6mm M3 bolts
  • 6 M3 nuts

You’ll also need:

  • 6 small nails
  • 1 pushpin​
  • 4ft (1.3m) of fishing line (or equally strong line)

Procedure


1. Insert and secure the motor into the motor mount with the two tiny screws (highly recommended to use a larger screwdriver if you have one..)

2. Grab the 100x100cm board and use the 6 M3 bolts and nuts to attach the motor on the left side in (roughly) the middle.

3. Grab the reel and fishing line. Thread one end of the fishing line through the middle of the reel, then wrap around the teeth. Secure with a dab of hot glue.

4. Push the two reel pieces together (pinching the thread between the two pieces), and insert into the motor drive shaft so that the web part faces outward. Secure with a dab of hot glue on the outside.

Connect it: Electronics!

Materials

  • micro:bit
  • microUSB cable
  • Binary Bots motor driver board
  • 3 AAA batteries

Procedure

1. Grab the Motor Mount setup you just put together, and plug in the motor to the motor driver board.

Connect the red motor wire to the left header pin labeled “Motor1”. Connect the black motor wire to the right header pin labeled “Motor1”.

2. Connect the pet-friendly switch! Connect one of the switch wires to the micro:bit P0 pin, and the other to the micro:bit GND pin (doesn’t matter which switch wire goes where).

3. Insert the micro:bit into the motor driver board so that the pushbuttons are facing outwards (away from the motor driver).

4. Insert the batteries into the motor driver board. Locate the power switch and move to “off”.

Code it: Motor Control!

Navigate to the Make Code website: www.MakeCode.org and select the micro:bit option, then “New Project”. It is recommended to rename your project to help you identify what it is doing, like “DogDoorOpener”.

Some background info: 

When Pin P0 is triggered (via the switch closing), we want to turn the motor so that it pulls open the door by spooling (aka reeling in) the fishing line. We also want to unspool the fishing line so we can shut the door again. It is also helpful to have a manual way to spool and unspool the motor, as well as to cut power to the motor.. just in case!

Since we are dealing with a DC motor, when we give power to one of the motor leads and ground the other, the motor will rotate in one direction. When we switch power to the motor leads, the motor will rotate in the other direction. Cutting power to both motor leads turns off the motor.

Let’s get started!

First Code Function: Motor Triggered by Doggo Switch

1. Pull out a “when pin is pressed” (input blocks) and make sure it is set to pin P0.

2. Inside the pin P0 block, use the digital write blocks to turn on micro:bit pin P13 (set to 1) and turn off micro:bit pin P14. This turns the motor on in one direction. 

The digital write blocks are found under Advanced –> Pins. Select the appropriate pins by clicking on the down arrow.

3. Add a pause for about 7s (7000 ms), then turn the motor off by setting P13 and P14 to 0.

Note: 7 seconds worked well for my setup and my doggo’s needs, but definitely check that this is enough (slash not too much) time to adequately open your door for your needs.

4. Unspool the motor (aka rotate it in the reverse direction) by using a digital write block to turn on P14 and turn off P13. Be sure to unspool the same amount of time as you spool.

5. Optional: use the LEDs to include a countdown/count-up timer to let you know when the motor will be turned on. Also recommended to add a pause between when the switch is pressed as well as when before the motor unspools.

Second Code Function: Manual Open

1. To make a manual switch, drag out a “On Button A pressed” (input blocks).

2.  Inside this block, use the digital write blocks to turn on micro:bit pin P13 (set to 1), and turn off micro:bit pin P14 (set to 0).

3. Add a pause block for ~3s (3000 ms).

4. Turn off the motor! (by setting the digital write blocks to 0)

5. Optional: Show an icon before you turn the motor on so you know which way the motor will be turning.

For mine, I chose a rectangle outline so indicate “open door”, choose something that makes sense to you and your brain.

Third Code Function: Manual Close

1. To make a manual switch, drag out a “On Button B pressed” (input blocks).

2.  Inside this block, use the digital write blocks to turn on micro:bit pin P13 (set to 0), and turn off micro:bit pin P14 (set to 1). 

3. Add a pause block for ~3s (3000 ms). 

4. Turn off the motor! (by setting both digital write blocks to 0)

5. Optional: Show an icon before you turn the motor on so you know which way the motor will be turning.

Fourth Code Function: Turn Off Motor

1. Pull out a “On Button A+B pressed” block.

2. Use two digital write blocks to set both P13 and P14 to 0.

Install it!

1. Use some of the wall sticky putty to wrap the aluminum around the door latch.

Bend the aluminum around the latch so that the door is able to fully close, but prevents it from sticking.

2. Using your hot glue dispenser, glue the short end of the door mechanism piece to the door width, just below the latch. Glue the longer piece to the door to provide extra stability.

3. Attach the motor mount and the motor controller board to the wall. Use the push pins temporarily to hold the pieces in place, then use 6 nails to secure the motor controller, and 2 to secure the motor controller board.

4. Use the wall sticky putty to attach the switch in a place that is convenient for whoever will be triggering the door to open. Since my dog is fairly large, I installed it about 1.5ft (0.5m) up from the floor so that doggo could press the switch with his nose.

I preferred to sticky putty so I could adjust the switch and remove things as necessary, but if you want to make this permanent you can use nails or hot glue.

5. Use the pushpins to secure the switch wires to the wall and prevent them from getting disconnected.

6. Attach the fishing line between the motor reel and the door mechanism. Close the door fully, then wrap the fishing line around the door mechanism a few times so that it is taught, then secure with hot glue.

Test & Deploy! And make your home more accessible, hooray!

​Huzzah!! Ready for the testing phase! Power up the micro:bit (via the microUSB cable) and turn on the motor controller board.

Trigger the switch and check that the motor pulls open the door enough for your furry friend to escape! And also that the motor unspools so you can close the door again.

Very likely something will need to be adjusted/fixed, so check all of the buttons, make sure the system is secure to the wall and does not block anything.

Once you’ve tested your Doggo Door Opener, show it to your pet! … And maybe train them, ha. I did this by using treats on top of the switch, so that my dog accidentally triggered the switch, then he saw that door opened. It took a few tries (I also ended up giving it a command of “get the switch”), but eventually he figured it out! And now I can leave my lovely but oh-so-anxious dog home alone without worrying he will trap himself (on purpose? I have no idea).

Hooray for using tech to make our own lives and the lives of others easier and better!

Let me know if you have any questions, run into any issues, or have other ideas for this project, I’d lovelovelove to see what you make so please share your creations!

Happy making, friends!

Mini Robotic Table

What’s better than a table with wheels? A table that you can drive around! This tutorial will teach you how to build your very own Mini Robotic Table, a project that was conceived and designed by one of my students (she was 10 when we started).

We built this table because, in the words of my student:

“I wanted to build something and I thought of a table and I thought of robotics and I smooshed them together. I like woodworking and I like robotics and I wanted to do something with the both of them.

We started w/ a full size table but that took a lot of time and money so we decided to make a tiny version, which is a prototype to the big one.”

We sized this mini table for American Girl Doll height (an American Girl doll is 18″ tall so we made the table to be 9″ tall), but you can adjust and modify depending on your needs. The most important thing to keep in mind is table weight, as a larger table requires larger motors and more battery power.

Difficulty level: Intermediate

Estimated build time: a few days to a week

Cost: ~ $75 – $100

Adult supervision required (lots of sharp and powerful tools involved)

 

Supplies

Materials

  • Wood
    • Table top: 8″ x 16″ (width x length)
    • Legs: 1.5″ x 1.5″ x 8″ (width x length x height)
    • Table Shelf: 8″ x 14″
  • Brackets (8)
  • Screws (28)
    • For brackets: 1.25″ screws
  • Axle, metal
    • We used the metal rod from an old (aka broken) french press
  • 4xAA Battery case and (4) AA batteries
  • Continuous rotation servos (2)
  • Small screws to hold wheels onto servo (2)
  • Radio controller and receiver
  • Servo Wheels (2)
  • Caster Wheels (3)
    • we used the same wheels as for the servo motors, but attached them to an axle instead of a servo.

Tools

  • Hot glue dispenser and glue sticks
  • Power Drill
  • Drill Bits
  • Screwdriver Bits
  • Saw
    • Or get pieces cut at your local hardware store
  • Sandpaper
  • Glue
  • Electrical Tape or heat shrink tube
  • Safety glasses
  • Dust mask
  • Scissors
  • Measuring tape
  • Level
  • Clamps
  • Optional:
    • Duct Tape
    • Velcro
    • Zip Ties

Tips, Tricks, & Extra Information (Please read before building!)

Before you build anything, read the full project instructions first!

Helpful info to have before you start this project:

1. Be prepared for drying time

2. How to use power tools and know safety rules.

Safety rules: put hair up, eye protection, roll up sleeves, no loose clothes, no jewelry that could get in the way, always have a second person in the room especially an adult if you are younger, dust mask.

3. Be prepared w/ the materials and tools you’ll need.

4. Document in a notebook as you work for reference later.

5. Find a radio controller that comes with a receiver. It is easier to put together the electronics if you get a controller and receiver together because it will take a lot more time to figure out which receiver will work with a particular controller, so get a controller that comes w/ the right receiver.

RC controllers can be very expensive, and other ones are super cheap and don’t work well. Read the entire description for the controller and receiver that you are interested in. The way we figured it out was by finding three options: one that was expensive, one that was in the middle, and one that was cheaper. We used our budget to help figure out the best option, and ended up selecting the option that was in the middle.

Build the Table!

Gather your woodworking tools, wood pieces, and brackets (see Supplies section for sizes). Remember to measure two or three times before drilling, gluing, and/or cutting 🙂

Step 1: Determine placement of legs and brackets and mark all bracket holes with a pencil. 

We used 2 brackets for each leg and 4 screws for each bracket, except for two brackets that overlap in between the legs.

It is helpful to use a tape measure to get placement as accurate as possible.

Step 2: Attach legs to the tabletop with brackets and screws.

A. Drill small holes in the tabletop and table legs to avoid cracking the wood. (See photo)

B. Attach two brackets to each leg.

C. Attach legs with brackets to table.

Step 3: Add the table shelf!

We cut ours to fit between the legs and attached with wood glue.

Tip: Add an object under the shelf while it is drying so the shelf does not move.

 

Step 4: Sand the table where needed.

Step 5: Measure the height of the wheels and include in the total table height.

Connect the Electronics!

1. Set up the radio controller and receiver.

Bind the receiver to the controller as shown in the instructions that come with the controller that you chose.

2. Connect the battery case to the radio receiver.

Connect the battery pack to the pins that say “B/VCC” (black wire goes on the outside of the receiver).

For this table size and weight, four AA batteries are enough to power the receiver and the two continuous servo motors. If you build a bigger table, you’ll need larger motors and more battery power.

3. Do a quick test to figure out which receiver input plugs work best for driving your table with the controller.

For the test, do the following:

If you are using the same radio controller and receiver, we recommend using receiver channels 2 and 3.

A. Connect one motor to the first channel on the receiver. Align the servo wires with the receiver channel as shown in the photo above.Then move the controls on the controller, observe when and how the motor moves, and record your findings.

B. Move the motor to the next receiver channel and repeat Step 2A. Do for all channels on the receiver.

C. Decide which channels work best to drive your robotic table!

Build the Drive Train and Attach Wheels!

The drive train is how we connect the motor and wheels to the table.

Step 1: Attach the wheels to the servos.

We attached the wheels with screws, but we had to find screws that fit and held the wheels on tight. We also had to drill out a bit of the wheel where the hole is so the screws could fit through. You may need to do a bit of testing to find the proper screws.

Step 2: Figure out placement of the servos and wheels. Use tape to hold in place while you test.

Use a level to make sure that when you attach the wheels the table is not all wonky. Measure how tall the servo with wheels are going to be before you attach them and before you drill into the wood. If you do not measure them, the table might be too tall and disproportionate.

Step 3: Attach the front castor* wheels to the table using the metal axle.

A. Measure and mark the location of the axle so that the castor wheels are even with the back wheels.

B. Drill holes into the front table legs and push the axle through, adding wheels as you go.

C. Secure the castor wheels in place by adding hot glue or grommets** on either side of the wheels, leaving about a 1/2″ (1cm) gap so that the wheels can rotate freely.

*The front wheels are called “castor” wheels because they are not connected to the motor.

** A grommet is circular rubber stopper, sort of like a rubber band, that prevents the wheels from sliding off.

Step 4: Secure the servo motors with epoxy or another strong adhesive.

Note: We recommend doing this step after testing the whole table as the servo motors will be stuck once the epoxy dries.

Test, Drive, & Decorate!

Power up the radio receiver and controller and test out your robo table! It might take a few practice trials to get a feel for driving the table.

Once you’re sure the table is working, add some hot glue (or epoxy) to hold wires in place and prevent the electronics from getting disconnected.

Decorate your table with markers, paint, stickers, fabric… whatever your creativity compels you to do!

If you want to see optional upgrades, check the next slide. Otherwise….

You’re done! Enjoy driving your robo table, maybe to give your pets a lil’ exercise or to deliver you or a friend food when you are watching a movie. Share your ideas and creations with us, we’d love to see!

Optional Upgrades

Battery holder!

We made a battery holder using wood, felt, ribbon, and wood glue. We measured the battery box and cut small pieces of wood to make a box without a top. We used the felt to cushion the battery box and keep it in place, and the ribbon to more easily pull the battery box out.

Wire Tubing

We purchased some wood-colored cord cover and cut it to fit the sides of the table legs to conceal the servo wires.

Brakes!

Design your own braking system, or stay tuned for separate tutorial on how we tackle this!

How to use a Breadboard!

Used by hobbyists and professional engineers alike, breadboards allow us to quickly build all sorts of circuits!

Breadboards got their name because in a time long ago, engineers used to use wooden cutting boards! They would hammer in nails and wrap wires to make connections. Not only was it tedious, but the cooks got frustrated that their breadboards kept getting stolen and used for definitely-non-food-purposes, so eventually someone invented the plastic breadboard to keep kitchen utensils safe. Hooray!

Similar to wires, plastic breadboards use conductive metal and insulating plastic to create paths where electricity can flow (the metal parts), and breaks where it cannot flow (the plastic parts).

If we were to look underneath a breadboard and peel off the backing, we would see something like this:

What do you notice?

The middle of the breadboard is different than the outsides. On outside of the breadboard, on both the left and the right sides, there are two long strips of metal. These are called “Power Rails”, or “Power Buses”, and one of the strips by itself is called a “Power Bus.”

Flipping the breadboard back over, the top, where we make our circuit connections, looks like this:

Looking at our Power Buses, there are colored lines next to them. While these are just guidelines (ahhhh sorry for the terrible pun, lol), the colored lines are super helpful for keeping track of how we connect our battery or power supply to the breadboard. Typically blue means negative, or ground (“gnd”), and red means positive.

The middle gap of the breadboard is called the trench. This separates the two identical middle halves of the breadboard. The trench is sized so that components with more than 3 pins can fit across.

The rows of the breadboard are marked with numbers, in this case numbers 1 – 30. The columns are marked with letters A, B, C, D, and E. Each row has a set of 5 holes that are connected by the piece of metal we saw on the bottom, as well as metal pins on the inside that hold wires and component pins in place. Some of the hole groups that are electrically connected are shown on the photo above with red rectangles.

Now let’s make some circuits! We’ll need four (male-to-male) jumper wires and the following parts:

Next, we’ll connect the battery to the power rails. If your battery case does not plug directly into the breadboard, grab two jumper wires for this.

The battery case that you are using might change how you connect your battery to the circuit, and that’s okay! The important part is that you connect the positive side of teh battery to one power bus, and the negative side of the battery to the other. Be sure that both sides of the battery are in different power buses (if you feel the battery getting warm it may indicate that it is short-circuited, this would be the place to double check).

Next, let’s connect our light! Grab your remaining jumper wires and your LED.

Insert the LED legs so that both legs are in two different rows (reminder: rows are marked with numbers). Connect the positive side of the battery to the longer LED leg. Connect the negative side of the battery to the shorter LED leg.

Voila! If the LED is connected to the battery in a circuit, it will light up!

Try moving your LED to a different part of the breadboard. Observe what happens!

Does wire color matter? Try two different colored wires and see what happens!

Finally, let’s end our exploration by tracing the path of the electricity.

Electric current is defined to flow from positive to negative. That means our electric current, which is made up of moving charges, flows out of the positive side of the battery, through the wire and into the breadboard power bus. It flows through the power bus, then up and out the red wire to the breadboard row where it can travel up the LED where it does work (and loses some energy) to make the LED turn on.

Then the (less energetic) electric current flows out of the LED through the shorter leg, into the breadboard row where it flows into the black wire. It then flows out of the black wire and into the second power bus, through the power bus and back to the negative side of the battery.

Our circuit is a circle! The moving charges that leave their home must also come back, but they come back more tired and into the back-door (which is to say, the negative side!).

Other helpful terms:

  • Current: The amount of charge flowing past a point in our circuit.
    • Current units are given in Amperes/Amps, or A
  • Voltage: The potential energy, or pushing force, across a component in our circuit. A higher voltage means more pushing force.
    • Voltage units are given in Volts, or V.
  • Resistance: How much a particular component resists the flow of electricity.
    • Resistance units are given in Ohms, or O
  • Capacitance: How much current a battery can provide over time.
    • Capacitance units are given in Amp-hours, or Ah.

There are two ways to connect components:

1. In series: connect components in line with one another, or head-to-tail.

2. In parallel: connect components in loops, or head-to-head.

Going Further!

You are now ready to tackle more circuits! Try adding more lights, or using different components. What happens when you add different kinds of components together? How many ways can you combine multiple components ?What sorts of projects could you use these circuits for? Share your creations with us, we always love to see and share!

And of course, please let us know if you have any questions, we are here to help!

Other useful tutorials:

Happy making!

micro:bit magic wand (Beginner)

 

While it is a bit tricky for us non-magical humans to levitate objects with our minds, words, or wands, we can use technology to do (basically) the same things!

This project uses two micro:bits, a few small electronic parts, and some everyday objects from around the house to create our very own magical wand.

I went for the Wingardium Leviosa spell, but you can most certainly adapt this project to cast other spells 🙂

Difficulty: Beginner+ (a lil’ bit of experience w/ coding and circuits is helpful)

Read Time: 10 min

Build Time: ~ 2 hrs

Cost: ~ $35

Materials

  • Wand!
    • You can purchase custom wands or make your own! Find a suitable stick and add some flair (or leave it bare!), or get creative and make one out of things you can find around the house!
  • Feather (for floating!)
  • Glove (for hiding the micro:bit wand controller)
  • Aluminum can
  • Small piece of cardboard (~ 2″ x 2″/5cm x 5cm)

What are we doing??

One of my favorite scenes from the first Harry Potter book was when, after all of the other students are struggling, Hermoine makes a feather float with the spell Wingardium Leviosa. This simple spell captures the essence of why we love magic: that literally at the flick of our wrist and a few choice words, we can instantly make surprising (and impressive) things happen.

Although we don’t have exactly that kind of magic, we do have technology that sometimes seems miraculous. So that sort of counts!

By now you’ve probably guessed: To mimic my fav scene, I wanted to levitate a feather. For that, we can use the power of wind! For this beginner-friendly tutorial, I chose to use a small 5V DC motor with fan blades made from an aluminum can. You can imitate my design or, better yet, create your own!

This tutorial will show you how to do the following:

1. Write a simple block-based code for a micro:bit wand controller

2. Build a circuit to control a small, 5V DC motor

3. Write a simple block-based code for a magical receiver that is triggered with a radio signal (aka bluetooth)

4. Build a setup to make our tech really look like magic!

 

Code it: Wand Controller!

Let’s start with our magic wand!

Since this is a beginner-friendly project, we are using block-based coding on the Make Code website. If you have more experience w/ coding you can also program the micro:bit using micropython or C++ in your fav coding environment (e.g. Idle, Visual Studio Code, etc.).

Alright, let’s get blockin’!

Step 1: In the On Start block, set the Radio Group number. 

Pick a number you love and will remember, since we’ll also need this for the receiver.

Step 2: Decide how you want your wand to trigger action.

The micro:bit has an accelerometer which measures changes in acceleration in our three spatial dimensions: up/down, left/right, and forwards/backwards.

Quick solution: Use the “on shake” block! (Code 1, above photo)

More complex, gesture-based solution: Explore how the accelerometer works and observe the output as you make gestures (open the Arduino IDE Serial Monitor to see the output, if you need help with this check out this tutorial). Use your observations to set triggers. (Code 2 in the above photo)

The example in Code 2 is my attempt at a Wingardium Leviosa gesture: swish-and-flick! (down and left) Use it as-is or as a starting point for your own fav magical gesture!

Helpful Tips:

(1) Since microcontrollers process information super quickly, the pause block gives us time to finish the first part of the gesture before the micro:bit checks for the second part.

(2) I added axes labels on the micro:bit so I could more easily figure out how to get the right motion for Wingardium Leviosa spell — definitely recommend this!

Step 3: Use the gesture to send a radio number.

The “radio send number” block is found in the “radio” block set. Any (rational, real, non-infinite) number will work!

Step 4: Download and save the code onto the micro:bit!

The micro:bit power lights will flash as this is happening, when they are done flashing the code is finished uploading.

Build it: Magical Receiver!

Grab your second micro:bit, your breadboard, and all the fun electronic parts and pieces!

Step 1: Insert your MOSFET transistor into the breadboard.

Recommended to have the black part of the transistor facing you so that pin references in these instructions are accurate 🙂

Step 2: Grab one of your pin-ended alligator clips and connect it from micro:bit pin P0 to an open row in the breadboard.

Step 3: Connect your resistor between the micro:bit P0 wire and the MOSFET Gate pin (leftmost pin).

Step 4: Connect a pin-ended alligator clip between micro:bit GND pin and the MOSFET source pin (rightmost pin).

Step 5: Using your two remaining pin-ended alligator clips, connect the motor leads to two open rows in the breadboard.

Step 6: Connect your jumper wire from one of the motor wires to the MOSFET drain pin (middle pin).

Step 7: Connect your diode across the motor terminals so that the negative side (w/ the stripe) connects to the remaining motor wire (yellow wire in photo).

Step 8: Connect the negative (black) battery lead to the MOSFET source pin (same row as micro:bit GND).

Step 9: Connect the positive (red) battery lead to the remaining motor wire (yellow wire).

Code it: Magical Receiver!

Step 1: Set Radio Group to be the same as for the Wand Controller.

Step 2: Pull out a “on radio received” block and set it to “receivedNumber”.

Step 3: Drag a repeat block into the “on radio received” block and switch it to repeat 2 – 3 times.

Step 4: (Optional but recommended) Show an icon on the micro:bit to let you know if it received the string.

This is super duper helpful for debugging.

Step 5: Turn on Digital Pin 0! (aka “digital write pin P0” to 1)

This block is found under the “Pins” block under the Advanced tab.

Step 6: Pause for a few seconds.

I chose 4 seconds, you can keep this or adjust as desired.

Step 7: Turn off Digital Pin 0 (“digital write pin P0” to 0) and the micro:bit display.

Step 8 (Optional but recommended): Add a back-up trigger using micro:bit button A for testing and debugging purposes 🙂

Voila! Download the code onto your Magical Receiver micro:bit and we’re ready for the magical prop!

Let’s make wind!

Let’s make a wind generator!! AKA a fan 🙂 Turn on a hot glue gun and grab your scissors, permanent marker, aluminum can, and some cardboard.

Step 1: Carefully cut out a rectangle of aluminum from an empty can and a small circle of cardboard about 1/2″ (1 cm) in diameter.

 

Step 2: Print out the paper fan template above at 50% to scale. Cut out one of the fan blades and trace it five (5) times onto the aluminum foil.

Step 3: Carefully cut out the aluminum fan blades and glue onto the cardboard circle at equal intervals.

Step 4: Glue the motor mount onto a piece of cardboard (I also added “legs’ made of wooden dowels to make it easier to connect the alligator clips).

Other options:

  • Use the motor drive shaft to spin objects or make some gears/levers to move things in different directions
  • If you connect micro:bit to speakers, it can also play sounds!
  • Start with something simple and play around to find something that makes you feel magical.

Test all the things!

And now, for our favorite part: testing!! Power up your micro:bits (and connect the battery) and move your wand controller (or use the quick button trigger) to test that our magical receiver moves the motor.

When you are done testing, coat the magical receiver connections in hot glue to hold them in place. If you want an ultra-permanent solution, use epoxy (waterproof is a nice bonus feature). Be careful to avoid getting glue (and especially epoxy) on your micro:bits so that you can still use them for future projects!

Note: When you first power everything up, the motor may start spinning without a signal. Trigger the wand controller and it should stop, then behave as expected.

Not working as expected?

Debugging is an almost inevitable part of building things, so congratulations! You are officially a maker! Here are some debugging tips:

1. Power is the most common issue for makers of all experience levels. Double check that the battery is properly connected and both the micro:bit power lights are on (those little yellow lights by the microUSB port).

2. Motor not moving? Be sure none of the wires or other objects are in the way.

3. Motor pulling the feather towards it rather than away? Swap the orientation of the motor leads. This will cause the motor to spin in the opposite direction and thus the air will be pushed in the opposite direction.

Make all the magic!

We’re basically wizards now! Use gloves to hide and hold the micro:bit wand controller and battery pack. Hide your magical receiver in a fantastical container to really impress all the people. I snagged a hollow book stack, cut a hole in the top, and glued my motor with the fan inside.

That’s it! Practice your spell and impress your friends with your new-found powers.

Questions, comments, creations? Leave a comment! Happy making, you magical beings!

(Quick & Easy) Micro:Bit Magic 8 Ball Costume

90s kids unite! And build this super fun, easy, and interactive costume!

Ask a (yes/no) question, shake the Micro:Bit, and it displays a fortune (obviously accurate) to your deepest most pressing questions, like what is life, how do we solve climate change, and why are pineapples so difficult to cut open. Except you’ll do a better job with phrasing your questions as yes/no 🙂

Anyway….

Here we go!

Read Time: 7 min.

Build Time: < 30 min.

Project Cost: $15 – $20

Materials

  • Micro:Bit 
  • 2xAAA Battery Case
  • 2 AAA Batteries (plus some extras if you plan to wear the costume for more than 3 hours)

… Seriously, that’s it!

Oh, and to make it all aesthetically pleasing and on point:

  • Cardboard (like a 4″ x 4″ square)
  • Blue Paint

Step 1: Program the Micro:Bit!

Step 1: Go to www.MakeCode.org and open a new Micro:Bit project.

Step 2: Write a program to display randomly generated messages of your choosing!

Need more info? Here’s a more detailed overview 🙂

Go to Variables and create a unique variable for each message you want to send (e.g. msg1msg2, …msg42, etc).

Go to Inputs and drag out the On shake block. In On shake, add “set item to” from Variables, then go to the Math blocks and connect the “pick random 0 to..Change the random number range (i.e. the 2nd number) to reflect the total number of messages you are showing (e.g. if you have 5 messages, the random number range is 0 to 4 because there are 5 possible numbers: 0, 1, 2, 3, 4).

Almost done! Add an “If – Then” from Loops. In the first if, set the condition to: item = 0, then display the first message (“show string” block w/ the variable name for your first message (e.g. msg1)). Recommended to repeat the message at least once ’cause scrolling letters can be hard to read! Repeat the if statement condition for each random number and message, and viola, c’est fini! You can test the code in the simulation on the left side of the screen by clicking the Play button and then Shake (:

When you’re ready, download the code, plug in your Micro:Bit, and then drag the (.hex) file onto the Micro:Bit drive. The code is loaded when the power lights are done flashing!

Step 2: Optional Triangle Cover

Step 1: Make a cardboard triangle & paint it blue!

For most accurate imitation, go for an equilateral triangle (geometry for the win, woot woot!).

Step 2: Cut a 1 in. x 1 in. (2.5 cm x 2.5 cm) hole in the center for Micro:Bit LEDs.

Step 3: Attach Micro:Bit on back of triangle w/ glue or tape.

If using hot glue, avoid the battery and USB connector.

Step 4: Wear it & Share it, pretty bby!

Attach the Micro:Bit (& cardboard combo) to yourself or your clothes! You can use velcro, tape, or hot glue (although probably avoid using this one on your actual skin..) Or make straps w/ string, twine, fabric, etc!

Put on your favorite black outfit & you’re done! Quick & awesome & comfy Halloween costume for the winnnn 😀

Feel free to ask any questions in the comments section. If you build this or a variation, please share your creations, I’d love to see what you make!!

Make a Minecraft Gesture Controller!

Move your body to play Minecraft! What!! Yes. Check the video for a demo 🙂

This tutorial will show you how to make your very own gesture game controller for Minecraft (or your other fav. computer game). Move your hand(s) to walk/run/jump, look around, and attack* all the things!

Let’s get started! Grab yourself a Circuit Playground Expresssnag my program code, and get shakin’ to play Minecraft in (srsly) the most fun way ever! 😀

Read time: 20 min

Build Time: ~ 2 hours

Cost: ~$30

*It is a biiiiit tricky to attack moving things (like monsters), so be careful in survival mode! Or use this to challenge your skills 🙂

Materials

Tools

  • Sewing Needle
  • Scissors
  • and a lil’ patience.. 🙂

 

Build the Glove Controller!

You can make the gesture controller without the glove, but the glove controller makes it easier to play, keeps the CPX in the same orientation (very important), and means you can use your fingers as added controls!

1. Cut rectangles of conductive fabric for the finger pads (~ 0.5 in. x 1 in.).

2. Use regular thread to sew the conductive fabric pads onto each of the glove fingers.

Suggested to use a highlighter or other pen to avoid sewing the two sides of the glove together (learn from my mistakes bbies).

3. Attach CPX to the glove with velcro squares.

4. Use an alligator clip or insulated wire to connect the CPX ground (“GND”) to the thumb pad.

5. Stitch conductive thread from the CPX capacitive touch pads (A1, A2, A3 & A4) to each of the four fingers.

6. If you have a multimeter, check continuity between the CPX pins and the conductive thread pads.

Plan out your controller!

 

First! What do we need to do to control Minecraft (or another awesome game)?

This is a super helpful & fun lesson in Design Thinking, but you can skip this if you want to just use my controls. You can always come back here later if you want to make changes later 😀

1. Determine (crucial) game controls.

Note: Start simple! Figure out the most important controls for the game and start there. You can always add more later.

Here are the controls that I wanted to use while playing Minecraft.. in creative mode 🙂 (you can use the same ones or customize your own controller!):

Movement:

  • Walk forward: W key
  • Run: Ctrl + W
  • Jump: Space bar
  • Look Left & Right: Mouse rotate
  • Walk backward: S key

Actions:

  • Attack: Mouse Left Click
  • Place Block/Push/Open: Mouse Right Click
  • Inventory: E key
  • Escape: ESC key

2. Decide how you want to use gestures and/or the finger pads to trigger these controls. Recommended to sketch out your plan.

Here is my design thought process:

I’ve always wanted to feel like I was actually *in* a game, so I went the “cheap VR” route and used gestures to control basic movements. For walking, I went the “let’s move my arms like I’m walking” route, which easily transitioned into running and jumping by increasing the speed of motion.

To make it easy to place a block or exchange items, I decided to use an “awkward handshake” motion.

Turning was a bit of a challenge, but my goal was to be able to look around by moving my hands in the direction I wanted to look.

Attack became the pointer finger pad, inventory the middle finger pad (which I ended up removing), Escape the ring finger pad, and the pinky finger pad to let me to walk backwards.

Again, you can keep these same controls or design your own 😀

Let’s get programming: Set up the CPX!

1. If you’re using Windows, download the Adafruit Windows Drivers here.

2. Download & save the latest CPX Circuit Python UF2 file.

3. Plug in the CPX with a USB cable (make sure it has data transfer capabilities).

4. Double-click the reset button on the CPX.

The LEDs should turn green. If they are red, it means something is wrong with data transfer to the CPX — check the USB cable, try another USB port on your computer, or try the trusty “unplug and plug back in” method.

5. On your computer, you will see a new disk drive called “CPLAYBOOT”.

6. Drag the CPX Circuit Python UF2 file onto the disk drive.

7. The “CPLAYBOOT” drive will disappear and be replaced with “CIRCUITPY”.

 

Add all the libraries!

Libraries let us access all sorts of special functions for the CPX without having to do a ton of programming.. hooray for open-source! This install will download most of the standard Circuit Python libraries* so peruse them at your leisure to learn about more cool things you can do!

1. Download and save the Adafruit Circuit Python Library Bundle Release from here.

2. Unzip the folder, open the first folder, and copy the “lib” folder onto the “CIRCUITPY” drive.

*It is unlikely that you’ll run out of space since the CPX comes with at least 2MB of Flash storage. But, if you do end up needing more space, you can revisit the libraries and remove the ones you don’t need. If you mess ’em up, just copy and paste the lib folder again.

 

Writing the Controller Code

The CPX has an on-board compiler, which means you can program it in (pretty much) any language you want! I opted for MicroPython, a version of Python for microcontrollers, ’cause Python is awesome.

Read this step if you want to understand how the program works (definitely suggested) or if you want to modify the code.

Here’s the GitHub repository that has the full code.Download it, drag it to your CPX, and rename the file “Code.py” (here’s the raw code if you want to just copy & paste).

1. To do the things I mentioned in the last step in MicroPython, we need the following libraries:

  • LIS3DH accelerometer

    • This allows us to use motion to trigger various things.
  • Human Interface Device (“HID”) keyboard

    • This library allows us to control the keyboard!
  • HID mouse

    • This library means we can control the mouse!
  • CPX capacitive touch
    • This library lets us use the capacitive touch feature on the CPX, hooray!
  • A couple of other libraries to make our lives easier: timebusio, and board.

2. Configure and initialize the libraries.

Assign variables for the keyboard, mouse, and accelerometer objects. Select a range for the accelerometer.

3. Write short functions for each of the controls.

The motion controls can be tricky. Do some initial testing with the accelerometer by printing the values in a serial monitor (in the source code, go to the __main__ function and uncomment the two debugging lines). This will help you to determine thresholds for walking, running and jumping, looking left and right, and placing objects.

The touch pad triggers are much easier as you are only looking for a capacitive trigger (True/False).

Remember to release all of the keyboard and mouse keys at the end of each function!

Debugging: Seeing what’s up the CPX program

If you’re familiar with Arduino, you’re probably familiar with the Serial Monitor. The CPX has the same feature with a slightly different access point depending on what program you are using.

If you are using Mu it’s super easy: the serial console is built in and will automatically detect your board, yay!.

If you are using Idle or another program, follow these steps:

1. Download PuTTY* here.

2. Go to Windows Device Manager and check the serial port number for the CPX (e.g. COM18) — see Photo below.

If there are multiple serial ports listed, unplug the CPX and plug it back in to see which one disappears then reappears.

3. Open PuTTY and select “Serial”.

4. Enter the serial port number (e.g. COM18) under “Serial line” and the baud rate of 115200 under “Speed”.

5. Click Connect! 

*PuTTY is a free and open-source SSH and telnet connection program.

 

Test & Improve

Load the program onto the CPX by dragging and dropping the python file onto the CIRCUITPY drive, then rename the file as “Code.py”

Like pretty much every project, this one will likely be a little wonky when you first get it running. If the touch pads are acting strange, reset the CPX (this recalibrates the capacitive input pins).

Test 1:

– Open up the serial monitor with PuTTY and run the program (CTRL + D)

– Test each of the movement controls (you’ll see the mouse moving on the screen and make sure the program doesn’t crash as well as the touch pads (which should display relevant text on the serial monitor).

Test 2:

Deploy in Minecraft creative mode! Test the movement and action controls to see if anything breaks or doesn’t work as expected (plz keep in mind that this is a prototype)

Update the program based on your testing. Remember, it’s OK if it’s not perfect, there’s always time to make it better!

 

Have all the fun!!

You’re ready to run through Minecraft!! Just be wary of monsters, it might be a bit tricky to protect yourself..

Supplementing your gesture controller with a keyboard is a good idea if you want play for reals 🙂

Please like and/or leave a comment if you enjoyed the tutorial! And of course, let me know if you have any comments or questions!
Happy Building!

<3, jenfoxbot

Intro to the (Headless) Raspberry Pi!

Finally! Use your Raspberry Pi without spending what feels like forever connecting external peripherals and dealing w/ a cable monstrosity: Configure your Pi to be headless! (not the scary kind tho) This is particularly helpful for folks teaching workshops with the Raspberry Pi, since it can be cumbersome (and expensive) to provide monitors, keyboards, and mice for every student.

I’m assuming that y’all know a bit about the Pi, so this tutorial will not cover what the Pi is or it’s awesome capabilities (I’m lookin’ at you, GPIO pins!). To learn more about what the Pi can do, check out some of my other tutorials (see the last section in this tutorial) or leave a comment.

What is covered in this tutorial: Enabling and using SSH, a general overview of the Linux terminal window, and how to connect to the Pi’s GUI (Graphical User Interface, aka the Desktop view) via SSH.

Read Time: 15 min

Build Time: ~20 min

Cost: Free! (assuming you already have an RPi and Ethernet cable)

Materials

Computer with Ethernet port & SD Card slot

– Raspberry Pi 3

– SD Card (8GB or larger)

– MicroUSB to USB power cord

– Ethernet Cable

– RecommendedRaspberry Pi Case & GPIO cable

Software

For this project, you’ll need the following (free!) software programs:

 

Configure the SD Card

1. Download your favorite flavor of Raspbian! You can get the most recent version here.

2. Insert your SD card and open Etcher.

3. Select the Raspbian zip file, the driver for your SD card, and click “format”.

4. Enable SSH access

Open the file contents for the SD card. Add a new text file titled “SSH”. If the computer adds a file extension (e.g. “.txt”), delete it and ignore any warnings.

5. Eject the SD card and insert it into your Pi.

 

Let’s Get Connected!

1. Plug in the Ethernet cable between the Raspberry Pi & your computer.

2. Plug in the USB power cable.

Check that the red power light turns on and that the Ethernet port lights (yellow & green) are on and/or blinking.

3. Connect the RPi to the World Wide Web (aka the Internet).

Go to Settings -> Network & Internet -> Change Adapter Options (aka Network Connections).

Click on the Ethernet connection, hold down “CTRL”, and then click on your WiFi connection.* Right-click in the window and select “Bridge Connections” — this will bridge the connection between the Ethernet port to your WiFi port.

*If you select the WiFi connection first, it will bridge the connection from the WiFi to the Ethernet, which would allow you to log into the Pi but not connect to the Internet.

4. Open PuTTY and log in to the Pi using the “raspberrypi.local” IP address.

Default username: pi

Default password: raspberry

5. Change the default password by typing passwd and following the prompts.

 

Navigating the Linux Terminal Window (Shell)

The terminal window is the control panel for the system.

It typically shows a command prompt, which gives us information but is not part of the commands to the system. Most commonly the command prompt displays the user’s login name and the current working directory (represented by a twiddle: ~ ).

Inputting Commands

Commands are written after the prompt and inputted by pressing the Enter key.

Commands can be issued as-is or followed by one or more options. Options usually have a dash in front of them, like the following:

ls -a

You can view the options for a specific command by typing the command name followed by “–help” (will cover this more later).

 

 

 

 

 

 

 

 

Linux Hot Keys!

There are a handful of special key combinations that make navigating the terminal window easier and faster. Here are a some of the most common ones:

  • Ctrl+A – Move cursor to beginning of command line
  • Ctrl+E – Move cursor to end of command line
  • Ctrl+C – End running program
  • Ctrl+D – Logout of current session
  • Ctrl+R – Search command history
  • Ctrl+Z – Suspend a program

 

  • Left and Right arrow keys – Move cursor one place to the left or right on command line
  • Up and Down arrow keys – Browse command history
  • Shift+PageUp and Shift+PageDown – Browse terminal buffer (to see text that is off screen)
  • Tab – Command or filename completion
  • Tab Tab – Shows file or command completion options

Practice using these every time you are in the terminal window and you’ll quickly become a Linux wizard!

Getting Help in the Terminal

1. Manual and Information Pages

The manual pages are an exhaustive resource for all of the available commands in the Linux terminal window. To read the manual pages on a particular command, type the following:

man command

This will pull up the manual pages for the particular command that you are searching. Here’s the manual pages for the apropos command:

In the manual, the first line contains the name of the command you are reading about and the ID of the section that contains the manual page.

After the first line is a synopsis, which is a short description of the command that includes technical notation of all the options and/or arguments. Options are a way of executing the command, and an argument is what you execute it on. Optional arguments are put between square brackets.

After the synopsis is a longer description of the command, followed by a more in-depth overview of the available options, information about combining options, other related commands, and other information pertaining to the command.

Some commands have multiple man pages, like the “passwd” command. To see all pages about a command, use the “-a” option:

man -a passwd

The info pages contain more recent information and can be easier to use. Here’s what the menu of the info pages looks like:

To view the info pages on a command (replacing “command” with the actual name of the command you want to research, like “apropos”), type the following:

info command

To navigate the info pages, use the arrow keys to browse through text, the Enter key to read about a particular keyword, “P” and “N” keys to go to the previous or next subject, and the space bar to move one page further. Use “Q” to quit.

2. whatis and apropos commands

The whatis command gives brief information about a command and lists the first section in the man pages that contains a relevant page (in parenthesis after the command name).

If you’re entirely unsure where to start, the apropos command is a good way to search for keywords. For example, if you want to know how to start a browser, you can type apropos browser, which will pull up a list of all browser-related programs, including web browsers, file and FTP browsers, etc.

Here’s the apropos search results for “text”, which displays commands and programs that contain the phrase “text”:

 

3. Using the –help option

Most commands also have the option –help, which gives a short explanation of the command and a list of available options. When in doubt, this is a great way to get some quick and useful information on using a particular command and its possible extensions.

To use the –help option, type –help after a particular command, like the following example (also shown in the photo above):

apropos --help

The output looks like this:

 

Enough of the Terminal Window! Where’s the friggin’ Desktop??

Alright alright.. Remote Desktop Connection is an easy way to use the desktop view, also known as “Graphical User Interface,” or GUI for short.

1. Install Remote Desktop Connection on your Pi:

sudo apt-get install xrdp

2. Install Remote Desktop Connection on your PC (is already installed on Windows OS).

3. Open Remote Desktop Connection and log in using the “raspberrypi.local” IP (or find your Pi’s IP using command ifconfig). Ignore warning (click “yes”).

4. Log in with the Pi’s username and password.

If you haven’t changed your password yet, do so now. (Yes, I know I already told ya to do so but it is worth repeating since someone could actually hack into your Pi if you don’t change the default password.)

Now you can use the Pi’s GUI and do almost* everything via your PC!

*Sadly, we can’t play Minecraft in this mode as it uses too much data to be transferred via SSH. Using a VNC viewer is one option around this if you really want to play Minecraft remotely.

What is SSH, anyway?

SSH stands for “Secure SHell” — it is a “cryptographic network protocol for operating network services securely over an unsecured network.” – Wikipedia

… Uh, what?

In other words, SSH is a secure way to connect between one computer and another, even if the network through which you are connected is not secure.

For example, if you are on a shared network and you use SSH to remotely log into another computer, other folks on the shared network can’t see what you’re doing through the remote connection (although Snowden did release documents that showed the NSA can sometimes decrypt SSH).

Common uses of SSH include remote log in, like if you want to connect to a computer that lives a mile underground without having to, you know, actually go down there. (I used to work for a super cool dark matter experiment called DRIFT and this is how we would access the computers that controlled the detector because the computers lived in a mine about 3 miles underground.. too far to travel to update software!).

Here’s the full Wikipedia page on SSH — it’s super cool so check it out!

More to Explore!

Go forth and explore! Practice using the terminal window until you get comfortable and familiar with the basic commands.

Program the GPIO pins to do cool stuff! Need some ideas? Check out these tutorials:

1. Making a Soil Moisture Sensor

2. Building an Irrigation Controller (can be paried w/ Soil Moisture Sensor)

3. Bark Back: Install an IoT Pet Monitor

4. Expand on your Smart Home & add a Motion Triggered Music Player

Need parts?

Take apart old & broken electronics! Electronic toys are a great place to get motors and speakers. If you want better motors, take apart power tools.

Ask friends or find a repair shop for extra parts and wire, save power cables from old electronics and use them as power supplies or harvest them for wires and/or connectors, save old headphones and use them for audio projects.

Best piece of advice: think before you toss 🙂



			

Build an (easy) Floor Piano!

The household floor piano is a dream no more! The Makey Makey microcontroller makes it super easy (and affordable) to build your very own “foot-strument” out of common household materials.

Grab a Makey Makey kit, some cardboard, and your musician shoes and let’s get building!

  • Difficulty Level: Easy
  • Estimated Build Time: 60 minutes
  • Cost: $50 (for Makey Makey kit)

 

 

Materials & Tools

Materials

  • Makey Makey Kit
    • 16 Breadboard Jumper Wires
    • 4 Alligator Clips
  • Cardboard
  • Aluminum Foil
  • Plastic Trash Bag (stretchy is best)
  • Duct Tape

Tools

  • Scissors
  • Hot Glue Gun
  • Measuring Tape or Ruler

 

Build the Piano!

1. Build the piano base.

Cut a cardboard base for your keyboard, then divide it into 8 equally sized rectangles — these are the dimensions for your piano keys!

2. Make the piano keys!

Cut out 8 cardboard rectangles using the base dimensions and paint them white.

3. Build the key triggers for the piano.

Cut 16 cardboard rectangles of equal size or smaller than the cardboard piano keys.

Repeat the following for each pair of key triggers:

  • Cover both cardboard rectangles in aluminum foil.

  • Use copper tape to connect one wire to the aluminum foil on each of the key triggers, then cover the connection in duct tape to secure.

  • Cover one of the rectangles with a piece of the plastic trash bag so that the aluminum foil is completely covered. Secure with duct tape.
  • Sandwich the two key triggers together so that the trash bag is a barrier between the aluminum foil.

 

Connect to the Makey Makey!

1. Connect the wires to the Makey Makey – one of the wires goes to ground and the other goes to a keypad (doesn’t matter which wire).

2. Test that the Makey Makey is triggered when you put pressure on the cardboard.

3. Tape the key triggers to the bottom of the white cardboard piano keys. Secure them to the piano base with velcro or glue.

4. Connect one of the wires from each of the key trigger to the six header pins on the back of the Makey Makey board and to two of the arrow keys on the front.

5. Connect the other key trigger wires to the Makey Makey ground.

Recommended to connect the ground wires in two groups of 4, then use one alligator clip per each group of 4.

Write the Scratch Program!

We have 8 inputs, which means we can play an entire octave on our floor piano! (Yes, that was intentional).

Your job: Write a Scratch program that plays 8 successive keys starting at middle C (or wherever you prefer your piano octave to start) using the “play note” function. Or you can copy mine in the photo above 🙂

Aside from the program, just be mindful of what piano key is connected to what Makey Makey pin. It’s easy to get 8 wires a bit mixed up — consider labeling them to save yourself some time (& hair..).

Install & Play!

Consider coating the electrical connections in hot glue. Plug the Makey Makey into your computer, place your floor piano on, well, the floor, and have at it!

Enjoy making beautiful music by stomping on your custom creation.

Micro:Bit Puppet “Text Message” System

Intro

Nearly all of our wireless communication is done using radio waves*, including phone calls, text messages, and WiFi. With its built-in radio transmitters and receivers, the Micro:Bit microcontroller makes it super easy to build all sorts of projects with radio communication.

This particular project is a simple & quick way to send text messages between two Micro:Bit** microcontrollers – the sender writes a (short) message that is transmitted via radio to the receiving Micro:Bit, which shakes a lil’ puppet using a servo motor, and then displays the message on the Micro:Bit LED screen. Each Micro:Bit can be both a sender and receiver.

It’s sort of like a two-person Twitter.. if the tweet notified you via dancing cardboard robot puppet!

*Radio waves are long-wavelength light waves. Check out the electromagnetic spectrum here!

**A huge THANK YOU to Adafruit for donating the Micro:Bit microcontrollers used in this project for educational purposes! yayy thank you for supporting this educational endeavor!! 😀

Materials & Tools

Electronics

Puppet (or other Message Alert System) Materials

Tools

  • Hot Glue Gun
  • Scissors and/or utility knife (e.g. exacto knife)
  • Pencil
  • Ruler or other straightedge

Build the Incoming Message Alert Puppet!

Step 1: Build a cardboard puppet like the one shown in the photo or create your own! Use the paper fasteners to make joints.

Step 2: Build a mounting system to attach the puppet to the servo with skewers and cardboard.

I used a magnet to attach the puppet to the servo mounting system because magnets are awesome, but you can also use glue, tape, velcro, or a variety of other adhesives!

Step 3: Build a stand for the puppet.

  • On an approx. 6 in. x 12 in. cardboard sheet, measure, mark, and cut a hole for the servo body so that the arms of the servo rest against the front of the cardboard sheet.
  • Cut two triangles out of cardboard and glue them on the back of the stand so that the stand, well, stands upright!
  • Cut a hole for the Micro:Bit wires to thread through and add two pushpins on the front to hold the Micro:Bit.

 

 

 

 

 

 

 

Code the Two Micro:Bits!

To start, choose one Micro:Bit to be the sender and the other Micro:Bit to be the receiver. Once both are working as expected, add in the code for both roles.

Use the Make Code Micro:Bit website to program each Micro:Bit. As this is intended as a beginner project, the whole system can be built using the block-based programming language, although adaptations are encouraged and appreciated!

If there is more than one pair of Micro:Bits in the room (i.e. in a classroom setting), remember to set different radio group numbers for each pair.

The sender sends a (short) text based on user inputs over radio, like the example above. Pretty simple!

The receiver moves the servo when an incoming text is received, then scrolls the message text on the LED screen, like in the example below.

Press the reset button to stop sending/receiving the incoming message.

 

Connect the Servo!

Connect the servo red wire to the Micro:Bit 3V power pin, the servo black wire to Micro:Bit ground pin, and the servo white (or yellow) wire to the Micro:Bit input pin P0.

Send all the Messages!

Program both Micro:Bits to be both a sender and a receiver so you can communicate back and forth. Then switch power from the laptop to the battery pack and test out your wireless communication system! When the sender sends a message, the puppet will notify you to check the LED screen so that you can see the incoming message.

How far of a range can you get? Test it out!

There are tons of other extensions to this introductory project, here are some possibilities:

  • Add more message options by adding more inputs or changing how those inputs are read;
  • Instead of a table-top alert system, build a wearable alert system;
  • Send voice messages and/or other sounds.

Happy building!

Anti-Facial Recognition Wearable No. 1

Every time we leave our homes, we are photographed and videotaped in public and private spaces. Facial recognition software identifies our unique facial features and can be used to tag us in photos that are taken with or without our consent. This tutorial is about exerting our right to control our personal privacy. It is our choice and our right to decide if we want to be identified by cameras that photograph us in public and private spaces.

There are many approaches to anti-facial recognition makeup/wearables. This is my first approach based on some background research, chatting with fashion-minded friends, and my own personal artistic and electronic interests.

The purpose of this project is to make it more normal (& fun!) to wear privacy enhancing fashion so that if/when it is needed, folks who are using it for legitimate protection are not targets.

Follow along or use this as inspiration for your own anti-facial recognition wearables! If you design your own, pleasepleaseplease share it in the comments so other folks can learn from and be inspired by you!

Difficulty: Easy

Build Time: 1 – 2 hours (+2 hours for glove controller)

Cost: < $15

Quick Overview of Facial Recognition Software

Computer Vision, or “CV” for short, is a software method that breaks down images into a series of black and white pixels, and then attempts to extract meaning from patterns in the pixels. Since human faces have the same characteristics (two eyes, nose, mouth, & chin), these characteristics can be broken down into patterns that a software program can look for.

For example, pupillary distance, or the distance between the pupils of each eye, varies from about 54 to 68 mm for adults – a CV program would look for black pixels separated by that distance range and log those as one layer. There are tons of patterns that a CV program can search for and locate, then go back and analyze the layers together to ensure they match up. All of these values are stored as variables that can be used for comparison with other images.

The more images a CV program analyzes, the better it gets. By comparing CV-found patterns to patterns in existing photos tagged on social media, CV programs may also tag an individual regardless of where that photo was obtained. CV programs are incredibly accurate, can select a face from multiple angles and backgrounds, and can identify a person’s emotions.

Check out CV Dazzle to learn more about anti-facial recognition makeup and other styles!

 

Materials & Tools

Materials

Optional glove controller:

Tools

  • Liquid Latex
  • Scissors
  • Wire Strippers
  • Soldering Iron (recommended for glove controller)
  • Hot glue gun (or other fabric-safe glue)

 

Step 1: Attaching the Flowers

Use the flowers to cover up distinguishing facial features. Eyes, eyebrows, and nose bridge are three primary regions of the face that are used by facial recognition software to identify and tag a face.

1. Cut flower stems off (unless you want ’em on for aesthetic purposes).

2. Pour a small amount of liquid latex into a container.

3. Figure out where you want to put the flower, then dab the base of the flower into the liquid latex. Let it dry for a few seconds, until it feels sticky and less liquid.

Be sparring with this stuff, it can be kinda painful to peel off, especially after 30 flowers.

4. Attach the flower to your skin. BUT FOR REAL THOUGH avoid your hair!! It is a huuuge pain (literally) to get out.

5. Repeat 2 & 3 until your face is adequately covered.

You can check your progress using a Snapchat or Instagram filter: If the filter can’t find your face or looks wonky (like sunglasses on your forehead instead of your eyes) then you’re all set!

 

Step 2: Adding LEDs!

To add freestanding LEDs, grab a coin cell, and push the two LED legs over the coin cell battery sides (longer LED leg on the positive battery side). Dip one side in the liquid latex, let dry for a few seconds, and then smoosh onto your skin just like with the flowers (again, avoiding precious and sensitive hair).

If you’re using the glove controller (see next step), run the LED wires up your arm to behind your ear, holding them in place with rubber bands or hair bands. Arrange how you want the LEDs to point, then pin the wires in place with bobby pins. That should be sufficient to hold them, if not add some liquid latex to the ends of the LEDs.

The LED + coin cell combo should last ~ 12 hrs.

 

Step 3 (Optional): Make a Glove Controller

This is a good option if you want to save battery life or to be able to turn on/off the LEDs. The thumb is the battery case, with conductive thread on the top as the positive connection. The fingers are the positive connections for the LEDs.

This takes ~ 2 – 3 hours to build.

1. Attach wires to the LED(s).

Measure out two (2) wires per LED to span from your head, down your neck, and to your wrist. Add 3″ to this measurement to allow for movement. Cut wires and strip both ends.

Mark the positive side of the LED with a pen, then twist one end of each wire around the LED leads. Solder the LED leads to the wire. Use a red wire, or mark the positive wire with a pen.

If available, use heat shrink tube to make a poke-less connection. Or just coat it in epoxy or hot glue or some other liquid adhesive.

Repeat for each LED you want to add to the glove.

2. Using conductive thread, make the negative side of the circuit: a negative connection for the coin cell and a “ground bar” for the LEDs.

Put on the glove, and mark where the center of the battery will go. Sew about 10 layers of conductive thread over your mark — this is the ground connection for the coin cell battery.

With the thread still attached, sew down to the base of the glove and stitch back and forth until there are a few layers of conductive thread in a line — this is the negative connection for the LED connections.

3. Make a coin cell battery case on the thumb of the glove.

Cut out 1 square of regular fabric, and 1 square of conductive fabric.

Cut a small hole in the regular fabric and then stitch the conductive fabric square over the hole (with regular thread). Run over this a few times since the conductive fabric tends to fray.

Using normal thread, sew 3 of the 4 sides of the regular fabric over the negative connection for the battery, so that it makes a lil’ pouch for the coin cell. (You might want to sew down the 4th side a bit to hold in the battery, or use a safety pin).

4. Attach the positive side of one LED to a glove finger and make a conductive pad.

Sew the positive LED wire onto the glove (regular thread)

Still using regular thread, sew a square of conductive fabric over the stripped end of the wire.

5. Attach the negative side of the LED to the glove ground pad.

Wrap the stripped end of the wire to the conductive thread ground pad and/or use conductive thread to secure it.

6. Repeat 4 & 5 for all LEDs.. or until you run out of fingers.

7. Epoxy or use fabric glue to adhere all of the connections.

 

Step 5: Test & Deploy!

Test your privacy enhancing getup by opening Snapchat or another filter app and check that it can’t identify that there is a face in the image. At the very least, if it does identify a face, be sure that the filter it adds is hilariously broken.

If you want to get real serious, you can download the OpenCV library and test it against your wearable — this is my long-term goal, but for now I’m happy with sticking flowers and LEDs on my face for V1.0.

Stay tuned for more of these anti-facial recognition wearables and please share your awesome creations!