pxt-calliope/docs/courses/ucp-science/gravity/setup-procedure.md
Peli de Halleux 2b504d863d
Radiodocsupdate (#1430)
* a few updates

* more updates

* reorder radio blocks

* more shuffling of new radio apis

* fixing hot or ocold

* more doc fixes

* more updates

* fixing docs issues

* more doc fixes

* restore docs errors

* missing packate

* renamed argument of callback

* mssing radio

* more odcs fixes

* lock turtle

* ignore docs for now
2018-10-15 15:32:09 -07:00

118 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Setup and procedure
## Setup
1. Plan and design the experiments.
2. Plan and design data collection documents.
3. Program the @boardname@s.
4. Experiment with different data collections scenarios.
## Code
This project will use to @boardname@s to collect and record data using the Windows 10 MakeCode app as described in [Data Collection - Option 3](/courses/ucp-science/data-collection/setup-procedure).
### Sender @boardname@ code
1. Code the first @boardname@ using MakeCode for Microbits.
2. Name the project, “Gravity Sender”.
3. The ``||basic:on start||`` event will display the title and function of the @boardname@ in all caps, `"GRAVITY SENDER"`.
5. Set up a radio group using the “radio set group”. Both @boardname@s need the same radio group.
```blocks
basic.showString("GRAVITY SENDER")
radio.setGroup(99)
```
#### Send the data
6. The ``||basic:forever||`` event will constantly monitor the “strength” of the acceleration and send the value to any other @boardname@s that might be receiving radio signals in the same radio group.
7. Open the pull down menu in the acceleration block and and change the ``x`` value to the ``strength`` value. This maximizes the x, y, and z dimensions of the acceleration into 1 value.
8. Add a ``||led:toggle||`` block to indicate that data is being sent.
```blocks
basic.showString("GRAVITY SENDER")
radio.setGroup(99)
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.Strength))
led.toggle(0, 0)
})
```
### Receiver @boardname@ code
1. Using the [Windows 10 MakeCode app](https://www.microsoft.com/store/productId/9PJC7SV48LCX) setup and code the second @boardname@.
2. This @boardname@ will remain connected to the computer through the USB cable and the Windows 10 MakeCode app to monitor the data being received.
3. Name the project, “Gravity Receiver”.
4. The ``||basic:on start||`` event will display the title and function of the @boardname@ in all caps, `"GRAVITY RECEIVER"`.
6. Set up a radio group using the ``||radio:radio set group||``. Both @boardname@s need the same radio group.
```blocks
basic.showString("GRAVITY RECEIVER")
radio.setGroup(99)
```
#### Code the receive event
7. The ``||radio:on received number||`` event will constantly monitor radio signals from the radio group.
8. When a value is received from the group it is stored in the ``gravity`` variable.
9. The ``||serial:serial write Value||`` sends 2 pieces of data back to the MakeCode app through the USB cable. First it sends a label `"gravity"` and then the value received as gravity from the acceleration method from the first @boardname@.
10. Add a ``||led:toggle||`` to indicate that it's receiving data. Change ``x`` to `1` so that another LED blinks.
```blocks
basic.showString("GRAVITY RECEIVER")
radio.setGroup(99)
radio.onReceivedNumber(function (receivedNumber) {
serial.writeValue("gravity", receivedNumber)
led.toggle(1, 0)
})
```
## Monitoring the data
1. With the @boardname@ code downloaded from the MakeCode app to the @boardname@ and the USB cable connected it will start receiving data from the first @boardname@.
2. Under the simulator in the app a purple outlined button shows up “Show data Device”.
3. By clicking on the **Show data Device** button a window opens up to the right showing values and graph of the gravity data being received (the dips in the graph are 3 tosses of the @boardname@ in the air).
4. The **Download** button in the red highlighted box allows the downloading of about the last 20 seconds of recorded data as a CSV file.
![Toss sensor data](/static/courses/ucp-science/gravity/toss.png)
When the data recorded is downloaded as a CSV spreadsheet file. It is named ``data.csv`` (it will usually open in a spreadsheet but sometimes doesnt and it can be hard to find. A search of the ``C:\`` drive might be necessary to find it).
![Toss sensor data](/static/courses/ucp-science/gravity/export.png)
Additional analysis and graphing can be done in a spreadsheet.
## Data Collection
There are several ways to collect data from an experiment. The simplest is having the data display on the LED screen and manually record the data on a paper. Data can also be collected using the Windows 10 MakeCode app. The third way is using 2 @boardname@s with one observing the data and then radioing the results to a second @boardname@ can allow the remote collection of data.
For additional information on data collection, see the [Data Collection](/courses/ucp-science/data-collection) lesson.
## Extensions
### Sound Wave Sensor
Sound causes vibrations which can be detected with the Microbit accelerator. Connect 2 @boardname@s using radio signals (see [Data Collection - Option 3](/courses/ucp-science/data-collection/setup-procedure)). The “Gravity Sender” @boardname@ can be placed on or near a speaker. It will send a signal to the “Gravity Receiver” @boardname@ which can be connected to the Windows 10 MakeCode app. When the “Gravity Receiver” @boardname@ receives a gravity number it is sent to the monitoring data collection using the method ``serial.writeValue("gravity", gravity)``. The sound can be observed in the **Show data Device**.
![Sound vibrations](/static/courses/ucp-science/gravity/soundvibrations.png)
### Earthquake Detector
Earthquakes cause vibrations which can be detected with the Microbit accelerator. By placing the "Gravity Sender" @boardname@ on a flat surface and having it “feel” minor changes in acceleration it can detect earthquakes or other vibrations in the earth. Connect 2 @boardname@s using radio signals (see [Data Collection - Option 3](/courses/ucp-science/data-collection/setup-procedure)). The “Gravity Sender” @boardname@ can be placed on or near a speaker. It will send a signal to the “Gravity Receiver” @boardname@ which can be connected to the Windows 10 MakeCode app. When the “Gravity Receiver” @boardname@ receives a gravity number it is sent to the monitoring data collection using the method ``serial.writeValue("gravity", gravity)``. The movement of the object connected to the Earth can be observed in the **Show data Device**. Using a conditional statement that detects changes in the received gravity could be implemented to play “music” sound as an alarm when changes in movement are detected.
![Earthquake vibrations](/static/courses/ucp-science/gravity/earthquake.png)
### Skate Park Data or Pinewood Derby.
Use the @boardname@s to record data from a skater at a skate park or acceleration down a ramp like a Pinewood Derby car.
<br/>
| | | |
|-|-|-|
| Adapted from "[Gravity, Motion, and Waves](https://drive.google.com/open?id=1Z8S-W3n1jX6drC8ALj8Wh1Rjc0CyP0Afs3acnIjDYes)" by [C Lyman](http://utahcoding.org) | | [![CC BY-NC-SA](https://licensebuttons.net/l/by-nc-sa/4.0/80x15.png)](https://creativecommons.org/licenses/by-nc-sa/4.0/) |
```package
radio
```