Setup and procedure


  1. Plan and design the experiments.
  2. Connect the wires to the microbit with connections at pin 0 and the ground pin (GND). Pin 0 will detect any electrical current flowing between it and the ground. The human body is always sending out electrical current from the nervous system to the muscles.
  3. Coil the stripped ends of the copper wires and tape them to the skin in different areas of the body with the painters tape.
  4. Plan and design data collection documents.
  5. Program the micro:bits.
  6. Experiment with different data collections scenarios (this experiment could try several different areas of the body. It could also monitor the body sitting or during movements or exercise to observe any differences).
  7. Report on the findings and observations in the experiments.

Micro:bit connected to body wires

Code and data collection

This project will use to microbits to collect and record data using MakeCode as described in the Data Collection lesson.

Option 2 — MakeCode and a USB connection

MakeCode allows data to be directly read from the microbit when it is attached using USB cable. Data can be sent from the microbit to the browser using serial data connection over WebUSB. The data collected over the serial connection can be graphed and the data can be downloaded. A limit of only about the last 20 seconds of data can be downloaded as a "data.csv" file. This allows the collection of data in real time. This file can be opened in a spreadsheet for further analysis. Many different kinds of experiments can be performed using this data logging technique.

on Start event

  1. Code the first micro:bit using MakeCode for micro:bit.
  2. Name the project, “Body Electricity Sender”.
  3. The ||basic:on start|| event will display the title and function of the micro:bit in all caps, "BODY ELECTRICAL".
  4. Set up a variable ekg or bodyElectricity and initialize its starting value to 0.

forever event

  1. Set the ekg or bodyElectricity variable to get its value from the “analog read pin (0)”. This detects and electrical current that is sent through the body between the 2 taped wires connected to the body and the microbit. This is an analog reading that gets converted to a digital number between 0 - 1024.
  2. The next line uses a ||basic:serial write value|| ("EKG" and the value stored in the ekg variable) to send the value back to MakeCode through the USB connection to the computer and micro:bit.
// Body Electricity
let ekg = 0

// forever loop reading data on pin(0)
basic.forever(() => {
    ekg = pins.analogReadPin(AnalogPin.P0)
    serial.writeValue("EKG", ekg)


Here’s a sample of some of the graphed data:

Sample of data graphed in the data view

Download the data collected and observed using the purple Download button. The same data from the "data.csv" file might look like this in a spreadsheet:

View of EKG data in spreadsheet

Do some more meaurements:

  1. Try graphic the data in different ways in the spreadsheet.
  2. Try collecting data for another area on the body.

Option 3 — Remote radio collecting to receiving radio displaying

Two micro:bits can be used to collect and record data using the radio commands. One micro:bit can be setup remotely and the other micro:bit can be used to observe the data. The first micro:bit can send the data it observes to the second micro:bit for the observer to record. To set up 2 micro:bits so they can communicate over the radio they need to be on the same radio group. For additional information look at the Data Collection lesson.

By using 2 micro:bit to collect the data on one and send it to the second micro:bit which is connected to MakeCode using a USB cable, the experiment can collect and record data remotely. This would allow the collection of body electrical data while a person is exercising or moving.

micro:bit radio sending code

This sender micro:bit uses the ||basic:on start|| event to set up the title on the micro:bit when started, the radio group, and the bodyElectricity variable so it can collect and store the data received from the pin 0.

The ||basic:forever|| event read the electricity on pin 0 and stores it in the variable bodyElectricity. It’s then sent over the radio to the receiver micro:bit.

// Body Electricity Project
let bodyElectricty = 0

// forever loop that collects body electricity and send it over the radio
basic.forever(() => {
    bodyElectricty = pins.analogReadPin(AnalogPin.P0)

micro:bit radio receiving code

This receiver micro:bit uses the “on start” event to set up the title on the micro:bit when started, the radio group, and the bodyElectricity variable to collect and store the data received.

The ||radio:on received number|| event reads the number value sent from the sending micro:bit. The number is then stored in the bodyElectricity variable. the electricity on pin 0 and stores it in the variable bodyElectricity. The last line uses the serial write command to send the text "Body Electricity" label and the value of bodyElectricity variable back to MakeCode. The data is sampled and send from 10 to 20 times per second.

// Body Electricity Receiver
basic.showString("BODY ELEC")
let bodyElectricty = 0

// Radio Receiver event
radio.onReceivedNumber(function (receivedNumber) {
    bodyElectricty = receivedNumber
    serial.writeValue("Body Electricty", bodyElectricty)


  1. Can you observe relationships with a heart rate? With breathing?
  2. Is there a difference when connected to muscle and skin with limited muscles underneath?
  3. When is the strength of the signal stronger?
  4. What is the relationship between the analog reading and the digital output?
  5. In a spreadsheet, does graphing few seconds compared to several seconds give a different picture of what is happening?


Monitoring Exercise

Set up the experiment to collect data while someone is exercising.

Develop other hypotheses and experiments

Research what about EKG and other body electrical signals.

Adapted from “Body Electrical & Waves“ by C Lyman CC BY-NC-SA