Modeling Tectonic Plates

Project-based learning is a core part of the curriculum at Bullis Charter School. In seventh grade social studies, students are posed this driving question: “How can we represent tectonic plate movement in 3D with earthquakes and geologic features?” The project begins with an introductory field trip to the San Andreas fault in which students collect physical evidence of the 1906 earthquake. Next, students work in groups of 2-3 to research plate tectonics and write a short paper. They then build a three-dimensional model of a particular fault, and design mechanisms to demonstrate how tectonic plates move relative to one another. Then they animate that model using the Hummingbird with Scratch or Snap!.

Get more information about this great project in Sharon Thompson’s SXSWEDU presentation!

Differentiation: Tectonic models can vary in complexity to make the project accessible to all academic levels. Programming complexity can also vary from basic movement to adding sensors and variables to calculate movement based on the Richter scale level of the earthquake.


Programming Your Hummingbird with MicroBlocks


To use MicroBlocks with the Hummingbird Bit, you will need a computer – Windows, Mac, Chromebooks, and Linux are all supported. Start by downloading and installing MicroBlocks from this page.

Insert a micro:bit into the Hummingbird Bit. Connect the Bit to power (battery pack or AC power adapter), and connect the micro:bit to the computer with the USB cable.

Next, open MicroBlocks. Click the Connect button at the top of the screen.

Click on the serial port of the Hummingbird Bit. If you see multiple serial ports, it may be helpful to unplug all USB devices except the Bit.

If you haven’t used MicroBlocks before with this micro:bit, you will be asked to install MicroBlocks on the micro:bit. Click Yes. If you are using a Chromebook, this prompt may not appear. Click with two fingers to the left of the Connect button and select install MicroBlocks on board.

Click BBC micro:bit and wait approximately 30 seconds for MicroBlocks to be installed. Your computer may pop up a window that says the micro:bit has been disconnected. Don’t worry, this is normal. If you are on a Chromebook, the app cannot install the file automatically. Follow the instructions in the app to drag the file onto your micro:bit and connect.

Once MicroBlocks has been installed on the micro;bit and your Hummingbird is connected, you will see a green circle by the Connect button.

Next, click the + sign by Libraries and choose Hummingbird.ulib. Then click Okay.


Using MicroBlocks

To try out MicroBlocks, connect a single color LED to LEDS port 1 on the Hummingbird. The colored wire should be connected to ‘+’ and the black to ‘-.’

In MicroBlocks, you can click on blocks to run them, just like you can in Scratch. For example, drag a Hummingbird LED block into the work area and set the % parameter to 100. if you tap on this block, the LED that you connected will light up.

As you write programs, they are automatically downloaded to the micro:bit. As an example, this program makes the LED blink 10 times when button A on the micro:bit is pressed. All the yellow blocks can be found on the Control menu. Run this program once, and then disconnect the USB cord from the micro:bit. You can still press button A to run the program!

Please note that the Hummingbird still needs power, so it will need to be plugged in to the battery pack or power adapter. Also, to change your program, you will need to reconnect the USB cord and click Connect in MicroBlocks.


Hummingbird Blocks

The table below contains brief descriptions of all the Hummingbird blocks in MicroBlocks. You can also use the blocks on the Output and Input menus to write programs that use the LEDs and sensors of the micro:bit in the Hummingbird. Don’t use the blocks on the Pins menu when writing programs for the Hummingbird. The pins are used by the Hummingbird, so these blocks may cause unexpected behavior.

Hummingbird Block Description
Sets a single color LED on LEDS port 1, 2, or 3 to a brightness value from 0% to 100%.
Sets a tri-color LED on TRI-COLOR port 1 or 2 to the color specified by red, green, and blue brightness values. The values range from 0% to 100%.
Sets a position servo on SERVOS port 1, 2, 3, or 4 to an angle from 0° to 180°.
Sets a rotation servo on SERVOS port 1, 2, 3, or 4 to a rotation speed from -100% to 100%.
Reads the value of the sensor on SENSORS port 1, 2, or 3. Readings for the distance sensor are given in cm. All other readings range from 0 to 100 (no units).
Reads the value of the battery in milliVolts. Power to servos may shut off at values below 4200 mV.


Example Program

Since programs written in MicroBlocks are automatically downloaded to the micro:bit, it is an excellent choice for creating mobile robots, robots that can be disconnected from the computer to roam their environment. Try building a rover to use with MicroBlocks!

To create a basic program to move and avoid obstacles, use the distance sensor to detect when the rover is near a wall or another obstacle. If the rover detects an obstacle, it should back up and turn. Otherwise, the rover should drive forward. Basic code for this is shown below. Note that two rotation servos on the rover point in opposite directions. This means that to move the rover forward, the two servos must move in opposite directions.

After you have a basic rover program working, try adding headlights and making your driver steer. Then modify your rover and program to try something new!


Strawbees and Hummingbird

Use this step-by-step guide to build your own Hummingbird creation with Strawbees. This is Strawbeest, our homage to Theo Jansen’s Strandbeests.

Hot glue a Strawbee to the Hummingbird servo motor, and then just start building!





You can also use Strawbees with the gear motor by gluing them to the plastic brick adaptor.






Try making a fun linkage with the Hummingbird and Strawbees!





Pro Tip: You can use just the tip of a Strawbee as a connector. This can help you to keep parts of your creation from colliding. In the video above, a small connector keeps the straw connected to the motor from hitting the stationary straw on the table.


The Wild Finch

In 2017, The Wild Robot by Peter Brown was chosen for the Global Read Aloud. Classrooms around the world enjoyed this engaging story about a robot named Roz who is stranded on an island and learns from the animals how to survive in the wilderness. Fourth graders at Goodnoe Elementary School added a new dimension to the Global Read Aloud by completing a Finch challenge related to the book. For more great books that you can use to make ELA connections, see our Suggested Reading List!

Each group of students chose one of two projects connected to The Wild Robot. The first project was to retell a favorite part of the book using Finch; this project was based on Finch Tales. Students worked together to make props, program the Finch, narrate the story, and videotape the project. The goal of this first project was to have students work together to discuss a story and to make a plan to retell part of the story in an interesting way – by using the Finch.

The second project was to use the setting of The Wild Robot to explain a variety of geographic features that Roz would have to maneuver on the island; this project was linked to the fourth grade social studies curriculum. Students programmed the Finch to make its way through different geographic features while they narrated its path. Students had to come up with a list of geographic features that were part of the story, make the props to show the features, program the Finch, and record a video.

“It was fun to be able to bring the idea of a robot in a book into the classroom by using real robots. The work was challenging but fun! The children persevered because they were invested in their projects.” – Maryann Molishus


Mood Ring Finch

A mood ring is a ring that changes color based on your body temperature. The idea behind the ring, which is explained in this video, is that your body temperature can be used to predict your mood. In this activity, you will use the Finch to predict mood in the same way!

Write a program that sets the color of the Finch’s beak based on temperature. The Finch should also tell you what your mood is for each color. The Finch should have at least three different moods, but you can add as many as you want!

To test the “mood Finch,” place your fingertip or palm over the temperature sensor.


Miniature Golf

In July 2017, Mike Jacobs and Stephanie Sytsema hosted a Hummingbird summer camp at Grandville Christian Elementary School. This project grew out of a weekly Tinker Tuesday program in which high school engineering students facilitate STEM activities with elementary students. Students and parents were hungry for more, so Jacobs and Sytsema created a week-long camp that was offered twice during the summer of 2017. In this camp, students used the Hummingbird to create a miniature golf course, complete with windmills and moving obstacles. On the last day, students’ families were invited to come and play this very challenging course! The proceeds from the first week of camp were used to cover the costs of the Hummingbirds, which are now available for future camps and classes in the elementary school.

Program Outline

  1. Day 1: Students are introduced to the Hummingbird and learn to write programs with the lights and motors.
  2. Day 2: Students learn to use sensors to make decisions in their programs.
  3. Day 3: Students jump into designing their robotic creations for the miniature golf course! Students are required to draw their designs and annotate their drawings before beginning to build.  Teachers emphasize how to troubleshoot and solve problems step-by-step as they are  building and programming.
  4. Day 4: Students work to complete their robots in preparation for the open house on Day 5.
  5. Day 5: After students set up the golf course, family members are invited to come and play. This event is BYOP–Bring Your Own Putter!


Human Body Systems

In 2017, year 3 students in Hong Kong used the Hummingbird to learn about human body systems. This six-week inquiry-based project was designed by Leigh Thomas at Renaissance College using Agency by Design resources from Project Zero of the Harvard Graduate School of Education. The purpose of this project was for students to study a body system in detail and create a representation that illustrated the function and importance of that system. Children needed a deep understanding of the body system that they were investigating in order to be able to extrapolate it and represent it in a meaningful way. Many children made connections to other human body systems as they explored their system and represented it. For example, the skeletal system group used the servo motors to show how the ribcage moved and connected this to the breathing in and out of the lungs and the movement of the diaphragm.

Lesson Procedures:

This project incorporates several Agency by Design resources from Project Zero of the Harvard Graduate School of Education.

  1. Prior to beginning the project, select which human body systems you would like your students to focus on. Possible systems include the following:
    • Circulatory System
    • Skeletal System
    • Respiratory System
    • Muscular System
    • Nervous System
  2. Explain the project to students. Each group will choose one of the human body systems and will construct a robotic diorama to represent that body system.
  3. Divide the students into groups of 3 or 4. Allow each group to choose a body system for their project based on their interest.
  4. Provide students with time to research their chosen body system. This is done in the first two weeks of the project with support from the teachers.
  5. Have each group complete the Parts, Purposes, and Complexities thinking routine about their body system. The students can use this step in the process to think deeply about the parts of their system, the purposes of each part, and how they work together to perform a complex function.
  6. Groups should create a sketch of how they plan to represent their body system using a robotic model.
  7. Groups should complete an initial prototype in 1-2 hours. They then use the Imagine If thinking routine to imagine how they can improve their prototype.
  8. Groups build and program their systems over a period of two weeks. At the beginning of each session, students should reflect on their work from the previous day and plan their next steps. They should document their process, either on paper or in a digital portfolio.
  9. Groups should use the Think, Feel, Care thinking routine regularly throughout the unit to think about one person in their group and reflect on how that person is feeling, what they are thinking, and what they care about. This helps students to think deeply about other children in their group in an empathetic way and alerts you to any subtle social issues that may need to be addressed.
  10. Once the allotted time for building and programming is complete, each group should present their work to the class and/or the larger school community.

Game Controller

Scratch and Snap! enable students to create physical devices with the Hummingbird that interact with programs that also display information on the computer screen. Students can be challenged to create their own video game, complete with controller! One example is shown here, but students will come up with many other creative ideas.

In this game, two Hummingbird sensors are used to control the movement of a cat sprite on the screen. The user moves the cat to try to catch a mouse that appears at random screen locations. Hummingbird Pong, which is included in the Birdbrain Scratch .zip file, is another example of a game in which a Hummingbird sensor is used to control a sprite on the screen.

This game uses a controller that consists of two Hummingbird rotary knobs. One knob controls the vertical movement of the cat sprite, and one controls the horizontal movement.

Math operators can be used to transform the output of a Hummingbird sensor into x– and y-coordinates on the Scratch screen. In the expressions below, the value of the rotary knob on port 1 (0 to 100) determines the x-coordinate of the sprite (-240 to 240). The value of the rotary knob on port 2 (0 to 100) determines the y-coordinate of the sprite (-180 to 180). These expressions are placed within a go to block in Scratch.

At the start of the game, the mouse appears in a random position. The play must use the rotary knobs to move the cat to touch the mouse. When this happens, the player scores a point, and the mouse moves randomly to a new position. If the user scores 20 points within 30 s, he or she wins the game.

This project could be extended to add more features to the controller! For example, LEDs on the controller could flash when the user scores a point. A student could also incorporate another sprite as the “villain.” Collisions with the villain could cause the player to lose points. Vibration motors could even be added to the controller to provide force feedback when a player gains or loses points.


Snap! Sprite Sizer

Hummingbird setup

  1. Connect the distance sensor to sensor port 1.
  2. Plug the Hummingbird into your computer.

Programming steps

  1. We are going to make the value of the distance sensor determine the size of the turtle (arrow) sprite. To change the sprite’s size, go to the “Looks” category and move a “set size to” block to your screen.
  2. Next, attach a distance sensor block to the size block.
  3. This resizing should occur repeatedly, so place a forever loop around the size block.
  4. Run the code by clicking the loop.
    The code works, but the arrow gets smaller when your hand is closer to the sensor. Real objects get larger when they are closer, so it would make more sense if we made the arrow get bigger when the distance sensor detected that the object was closer.
  5. Add a subtraction block that calculates 105 minus the current sensor reading. 5 is the minimum value the distance sensor can produce, so 105 minus the sensor’s value will produce a size of at most 100%.
  6. Run the code again. This time the arrow should get larger when the object is closer.
  7. Now let’s make the size change more noticeably by making the arrow three times larger. Add a multiplication block to do this.
  8. Run the program and the arrow should be much larger when your hand is close.

Angles with Hummingbird

Teacher Note: This is a short introductory activity designed to introduce students to the servo motor. Students construct a large protractor and investigate how to write a program that moves the servo motor to different angles. To save time, you could do this activity as a demonstration or have students use a photocopied image of a protractor. However, having students create the protractor reinforces Common Core math standards for measuring and constructing angles (4.MD.C and 4.G.A).

A servo motor is a motor that moves to a particular angle. The Hummingbird servo motor can rotate to any angle from 0° to 180°. In this activity, you will practice moving the servo motor to different angles.

Start by using a protractor to draw 13 angles from 0° to 180°, as shown in the picture below. Draw an angle every 15° from 0° to 180°. Make sure that 0° is on the left side of the paper.

Attached your motor to a small box to give it a stable base.

Next, use hot glue to attach your angle drawing to the back of the motor. Try to position the origin of the angles directly behind the screw in the center of the white disk.

Next, connect the servo motor to the Hummingbird. The servo motor plug should be placed on one of the four male servo connectors on the Hummingbird board. The black wire should be connected to the ‘-’ pin, the red wire to the ‘+,’ and the yellow wire to the ‘S.’ When using the servo motor, you must also use the AC power adapter (or a battery pack). Otherwise, the Hummingbird board will not have enough power to run the motor.

Set your servo motor to 90°. In Scratch or Snap!, you can use a script like the one shown below.

Glue a popsicle stick to the motor so that it is pointing to 90°.

Try writing scripts to move the motor to different angles. If you write a script with more than one angle, make sure to put a wait block between the HB servo blocks. If you omit the waitblock from the script below, the servo will not have time to move to 90° before the command to move to 30°.

The script below is supposed to move the servo motor repeatedly to two different angles, but there is a problem. Try out this script, and figure out how to correct it.

Write a script that repeatedly moves the motor to five different angles. Try adding some lights or music!