128 lines
6.7 KiB
Markdown
128 lines
6.7 KiB
Markdown
|
# Setup and procedure
|
||
|
|
||
|
## Setup
|
||
|
|
||
|
1. Plan and design the experiments.
|
||
|
2. Use the radio and the [MakeCode app][makecode-app] for the data collection method.
|
||
|
3. Plan and design data collection documents.
|
||
|
4. Program the @boardname@s.
|
||
|
5. Experiment with different data collection scenarios.
|
||
|
6. Report on the findings and observations in the experiments.
|
||
|
|
||
|
## Code and Data Collection
|
||
|
|
||
|
This project will explore 2 different methods of data collection. The first uses a single @boardname@ with the [Windows 10 MakeCode app][makecode-app] to record the data over a serial connection. The second uses the radio on the @boardname@ in the nose cone to transmit the acceleration values back to another @boardname@ connected to the computer to collect and record data using the Windows 10 MakeCode app.
|
||
|
|
||
|
### Option 1: Windows 10 MakeCode app and a USB connection
|
||
|
|
||
|
The [Windows 10 MakeCode app][makecode-app] allows data to be directly read from the @boardname@ when it is attached using USB cable. Data can be sent from the @boardname@ to the Windows 10 MakeCode app using a serial data connection. The data collected over the serial connection can be graphed and the data can be downloaded. The 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.
|
||
|
|
||
|
### Option 2: Remote collecting unit sending to receiving unit over radio
|
||
|
|
||
|
Two @boardname@s can be used to collect and record data using the radio commands. One @boardname@ can be setup remotely and the other @boardname@ can be used to observe the data. The first @boardname@ can send the data it observes to the second @boardname@ for the observer to record. Setup 2 @boardname@s so they can communicate over the radio they need to be on the same radio group. For additional information see the [Data Collection](/courses/ucp-science/data-collection) lesson.
|
||
|
|
||
|
Use 2 @boardname@s to collect the data on one and send it to another that is connect to the Windows 10 MakeCode app using a USB cable the experiment to collect and record data remotely. This allows the collection of acceleration data at a distance.
|
||
|
|
||
|
## Coding the Radios Method
|
||
|
|
||
|
### Sender @boardname@ Code
|
||
|
|
||
|
The sender @boardname@ uses the ``||basic:on start||`` event to set up the title on the @boardname@ when started and the radio group.
|
||
|
|
||
|
1. Code the first @boardname@ using Windows 10 MakeCode app.
|
||
|
2. Name the project, “Rocket Launch Sender”.
|
||
|
3. The ``||basic:on start||`` event will display the title and function of the @boardname@ in all caps, “ACCEL Z”.
|
||
|
4. Add comments to the ``||basic:on start||`` event: name of the project, creator, and date created.
|
||
|
5. Set up a radio group by giving it a number, or channel, to work on (group `10` is used in this example).
|
||
|
|
||
|
```blocks
|
||
|
// Rocket Acceleration z sender
|
||
|
// by C Lyman
|
||
|
// May 2018
|
||
|
basic.showString("Z ACCEL SENDER")
|
||
|
radio.setGroup(10)
|
||
|
```
|
||
|
|
||
|
Inside the ``||basic:forever||`` loop, the acceleration of ``z`` is recorded and sent as a number over the radio to the receiver @boardname@.
|
||
|
|
||
|
The ``||radio:radio send number||`` block is used to send the acceleration sensed in the ``z`` direction. When the @boardname@ is face up the ``z`` direction is up and down. The ``x`` direction is right and left. The ``y`` direction is forward and backward. The number is sent to all @boardname@s on the same channel or group.
|
||
|
|
||
|
```blocks
|
||
|
// forever loop to read z acceleration
|
||
|
basic.forever(() => {
|
||
|
radio.sendNumber(input.acceleration(Dimension.Z))
|
||
|
})
|
||
|
```
|
||
|
|
||
|
### Reciever @boardname@ Code
|
||
|
|
||
|
This receiver @boardname@ uses the ``||basic:on start||`` event to set up the title on the @boardname@ when started, the radio group.
|
||
|
|
||
|
1. Code the first @boardname@ using Windows 10 MakeCode app for @boardname@s.
|
||
|
2. Name the project, "Rocket Launch Receiver".
|
||
|
3. The ``||basic:on start||`` event will display the title and function of the @boardname@ in all caps, "ACCEL Z RECEIVER".
|
||
|
4. Add comments to the ``||basic:on start||`` event: Name the project, creator, and date created.
|
||
|
5. Set up a radio group by giving it a number or channel to work on. (Group 10 is used in this example.)
|
||
|
6. A ``||serial:serial write line||`` is used to send the text ``"Acceleration"``. This opens up the serial port in the Windows 10 MakeCode app so the purple **Show Data Device** button shows up below the simulator in the MakeCode app. Clicking this button allows the observation and downloading of the collected data.
|
||
|
|
||
|
```blocks
|
||
|
basic.showString("ACCEL Z RECEIVER")
|
||
|
radio.setGroup(10)
|
||
|
serial.writeLine("Acceleration")
|
||
|
```
|
||
|
|
||
|
The ``||radio:on radio received||`` event reads the number value from the sending @boardname@. The number is then stored in the variable ``receivedNumber``. The last line uses the serial write command to send the text ``"z"`` label and the value of ``receivedNumber`` variable back to the Windows 10 MakeCode app. The data is sampled and send from 10 to 20 times per second.
|
||
|
|
||
|
```blocks
|
||
|
// onRadio receive & write z value to serial
|
||
|
radio.onDataPacketReceived(({ receivedNumber }) => {
|
||
|
serial.writeValue("z", receivedNumber)
|
||
|
})
|
||
|
```
|
||
|
|
||
|
## Data Analysis
|
||
|
|
||
|
Sample Graphed data in the Windows MakeCode app:
|
||
|
|
||
|
![Graphed data in data viewer](/static/courses/ucp-science/rocket-acceleration/graphed-data.jpg)
|
||
|
|
||
|
Download the data collected and observed using the purple download button.
|
||
|
Sample data from the downloaded _data.csv_ file:
|
||
|
|
||
|
![Spreadsheet view](/static/courses/ucp-science/rocket-acceleration/spreadsheet-view.jpg)
|
||
|
|
||
|
Try graphing the data in different ways in the spreadsheet.
|
||
|
|
||
|
## Rocket Launch Video
|
||
|
|
||
|
Watch the demostration [rocket launch](https://drive.google.com/open?id=10h-uL7ajoS4_M7vZWW5LqdqSgt7PCj7Q) video.
|
||
|
|
||
|
## Questions
|
||
|
|
||
|
1. Can you observe relationships between the different forces of acceleration?
|
||
|
2. Is there a difference between the ``x``, ``y``, and ``z`` acceleration forces measured by a @boardname@?
|
||
|
3. When is the strength of the signal stronger?
|
||
|
4. What is micro gravity unit of measurement.
|
||
|
5. In a spreadsheet, does graphing few seconds compared to several seconds give a different picture of what is happening?
|
||
|
|
||
|
## Extensions
|
||
|
|
||
|
### Monitoring Freefall
|
||
|
|
||
|
Set up the experiment to collect data when a @boardname@ is drown several feet or meters.
|
||
|
|
||
|
### Develop Other Hypotheses and Experiments
|
||
|
|
||
|
Research what acceleration on a skateboard at a skatepark or other types of movement as in a car. What about a ride at an amusement park?
|
||
|
|
||
|
```package
|
||
|
radio
|
||
|
```
|
||
|
|
||
|
<br/>
|
||
|
|
||
|
| | | |
|
||
|
|-|-|-|
|
||
|
| Adapted from "[Rocket Acceleration z Radios](https://drive.google.com/open?id=1IyhCPdYQevKh3kHNgukSxlgdvZIKuzmIBjLSRnFS36o)" 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/) |
|
||
|
|
||
|
[makecode-app]: https://www.microsoft.com/store/productId/9PJC7SV48LCX
|