Skip to content

Update use-as-mkr-shield.md #478

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 18, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ software:

![The Arduino Nicla Sense ME mounted on top of the MKR WiFi 1010](assets/hero.png)

The form factor of the Nicla Sense allows the board to be used as a MKR shield. In this tutorial we will walk you through converting the Nicla Sense Board into a shield to extend some of the functionalities of the MKR boards using the I<sup>2</sup>C communications and explain how this communication functions through an example sketch.
The form factor of the Nicla Sense allows the board to be used as a MKR shield. In this tutorial, we will walk you through converting the Nicla Sense Board into a shield to extend some of the functionalities of the MKR boards, using the I<sup>2</sup>C communications, and explain how this communication functions through an example sketch.

## Goals.

- How to solder the headers on the Nicla Sense ME.
- To establish an I<sup>2</sup>C communication between the MKR WiFi 1010 and the Nicla Sense
- How to solder the headers on the Nicla Sense ME
- How to establish an I<sup>2</sup>C communication between the MKR WiFi 1010 and the Nicla Sense

### Required Hardware and Software

Expand All @@ -41,38 +41,38 @@ The form factor of the Nicla Sense allows the board to be used as a MKR shield.
- [Nicla Sense ME](https://store.arduino.cc/products/nicla-sense-me)
- 1x USB A Cable to Micro USB
- 2x row of Male Headers (1x9 1x8)
- Soldering tool and Stain.
- Both libraries can be downloaded from the library manager
- Soldering tool and Stain.
- Libraries to be downloaded from the Library Manager


***The following sketches can be found inside the Arduino_BHY2 and Arduino_BHY2Host libraries, available at the library manager, you will need to add the changes shown in this tutorial***
***The following sketches can be found inside the Arduino_BHY2 and Arduino_BHY2Host libraries, available in the Library Manager. You will need to add the changes shown in this tutorial***

## Instructions

### 1. The Setup
We will need the latest version of the mbed_portenta core to be able to install the needed drivers of the Nicla Sense ME (minimum v2.5.2). Install the **Arduino_BHY2** and **Arduino_BHY2Host** libraries from the library manager.
You will need the latest version of the mbed_portenta core to be able to install the needed drivers for the Nicla Sense ME (minimum v2.5.2). Install the **Arduino_BHY2** and **Arduino_BHY2Host** libraries from the Library Manager.

To convert the Nicla Sense ME into a Shield, you will have to **solder** 2 rows of **headers** one side has 9 pins and the other 8 pins, the long side of the headers needs to be on the **battery connectors side**.
To convert the Nicla Sense ME into a Shield, you will have to **solder** 2 rows of **headers**: one side has 9 pins and the other 8 pins, the long side of the headers needs to be on the **battery connectors side**.

<iframe width="100%" height="415" src="https://www.youtube.com/embed/3XwwYb5yFLk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Once the headers are soldered and the board plugged on top of the MKR, it will be possible to see the Nicla Sense ME LED and the Reset button, also to confirm the correct position you can see a white silk outline in the GND pin of the Nicla Sense ME, it needs to be aligned with the MKR GND pin. Have a look at the video to figure out the correct orientation of the board.
Once the headers are soldered, you can plug the Nicla on top of the MKR, having the Nicla Sense ME LED and Reset button pointing upwards. Additionally, to further confirm the correct positioning, the white silk outline in the GND pin of the Nicla Sense ME needs to be aligned with the MKR GND pin. Have a look at the video to figure out the correct orientation of the board.


![Assembly of the Nicla Sense ME in top of the MKR WiFi 1010](assets/NiclaSenseME-MKR-Shield.gif)

***This set-up works with the ESLOV cable as well.Also keep in mind female headers or raw cables can be used as well, make sure the connections of the pinout match with the MKR pinout (3V3, GND, SCL and SDA).***
***This set-up works with the ESLOV cable as well. Keep in mind female headers or raw cables can be used as well, but make sure the connections of the pinout match with the MKR pinout (3V3, GND, SCL and SDA).***

### 2. Structure of the Communication
The host (MKR WiFi 1010), will communicate through the **BHY2Host** library with the **Nicla Sense ME** (both devices communicate over I<sup>2</sup>C)
The host (MKR WiFi 1010) will communicate through the **BHY2Host** library with the **Nicla Sense ME** (both devices communicate over I<sup>2</sup>C).

### 3. Host Communication of the MKR WiFi 1010

To make the host communicate with the Nicla Sense ME which is mounted as a shield you can modify one of the existing examples. Open the sketch under **Examples > Arduino_BHY2Host > Accelerometer** and modify the `setup` function.
To make the host communicate with the Nicla Sense ME mounted as a shield, you can modify one of the existing examples. Open the sketch under **Examples > Arduino_BHY2Host > Accelerometer** and modify the `setup` function.

Add the following parameters to `BHY2Host.begin()`: `BHY2Host.begin(false, NICLA_AS_SHIELD);`

The first parameter defines if the data should be passed through the Serial connection. This allows to control the Nicla Sense ME from a PC when connected through a host board. You can use the `arduino-bhy` tool to control the Nicla Sense ME from either the PC command line or from a web page.
The first parameter defines if the data should be passed through the Serial connection. This allows to control the Nicla Sense ME from a PC when connected through a host board. You can use the `arduino-bhy` tool to control the Nicla Sense ME from either the PC command line or from a webpage.

Full sketch:

Expand Down Expand Up @@ -105,7 +105,7 @@ void loop()
}
```

### 4. Program of the Nicla Sense ME
### 4. Program the Nicla Sense ME

Program the Nicla Sense ME with the **App.ino** sketch from the **BHY2** library. You can find it under **Examples > Arduino_BHY2 > App** . Modify it as follows:

Expand All @@ -117,10 +117,10 @@ Navigate to the `setup` function and add two parameters to `BHY2.begin()`
BHY2.begin(NICLA_I2C, NICLA_AS_SHIELD);
```

***You may use `NICLA_I2C`, `NICLA_BLE`, `NICLA_BLE_AND_I2C` as the first parameter, and as the second one `NICLA_VIA_ESLOV` or `NICLA_AS_SHIELD`. Remember to use the corresponding settings on the HOST board.***
***You may use `NICLA_I2C`, `NICLA_BLE`, `NICLA_BLE_AND_I2C` as first parameter, and as second one `NICLA_VIA_ESLOV` or `NICLA_AS_SHIELD`. Remember to use the corresponding settings on the HOST board.***


These settings will internally adjust the communication parameters so it can communicate through the headers.
These settings will internally adjust the communication parameters, so it can communicate through the headers.


***We suggest to unplug the Nicla Sense ME from the host Arduino board while connecting the USB to the computer.***
Expand Down Expand Up @@ -157,15 +157,15 @@ The BHY2 Library encapsulates the I2C communication and therefore reduces the co


## Troubleshooting
Make sure you have the latest version of both libraries Arduino_BHY2 and Arduino_BHY2Host installed.
Make sure you have installed the latest version of both libraries Arduino_BHY2 and Arduino_BHY2Host.


If you don't see any output on the Serial monitor, make sure you have set the correct baud rate. In this example sketch we use 115200.
If you do not see any output on the Serial Monitor, make sure you have set the correct baud rate. In this example sketch we use 115200.


Make sure the pins are soldered on the correct side and the Nicla Sense ME is mounted with the correct orientation on the host board.


### Next Steps

Using the Cloud dashboard to select which sensor you want to use and initialize, so you have all the control from there.
Leverage the Arduino Cloud dashboard to select which sensor you want to use and initialize, so you can remotely control your application.