Rate this page
- ★★
- ★★
- ★★
- ★★
- ★★
Can we improve this page? Send us feedbackRate this page
- ★★
- ★★
- ★★
- ★★
- ★★
Using a Notecarrier-AF? The AF is no longer available for purchase, but we still support it. You can complete the Notecarrier-F version of this tutorial with that board.
Don't see your favorite hardware here? Rest assured the Notecard works with virtually every MCU and SBC available. If you can't figure out how to complete this tutorial let us know in our forum and we can help you out.
This tutorial should take approximately 40-50 minutes to complete.
In this tutorial, you'll learn how to take sensor readings from a Device and send readings to your Notecard and the Blues Wireless Notehub. You'll use C/C++ (Arduino/Wiring) running on a Blues Wireless Swan wired up to Notecarrier-F hardware. If you would like to use a different language, board, or Notecarrier, modify the dropdowns at the top of this guide.
The tutorial uses mock sensor readings for simplicity, but feel free to hook up a physical sensor of your choice and use that instead.
If you get stuck at any point during this tutorial, the full source for each example is available on GitHub:
First, you’ll need to get all of your hardware connected. Follow the instructions below to connect your Blues Wireless Swan and Notecard mounted on a Notecarrier-F.
In order to complete this guide, you’ll need the following:
Plug your Swan into the Feather headers on the Notecarrier-F.
Attach the Swan to your computer with a Micro USB to USB-A cable, using the Micro USB port on the Swan.
Now that your hardware is all connected, let’s create a new Notehub project to receive sensor readings from your Notecard.
Navigate to notehub.io and log-in, or create a new account.
Using the New Project card, give your project a name and ProductUID.
NOTE: The ProductUID must be globally unique, so we recommend a namespaced name like
"com.your-company.your-name:your_product"
.
Take note of your ProductUID. This identifier is used by Notehub to associate your Notecard to your project.
For this portion of the guide, we'll be using the Arduino IDE, so be sure to install version 2.0+ if you haven't already.
Once installed, we'll need to add support for your Blues Wireless Swan Board.
Great job, now you're ready to write some firmware!
When communicating with the Notecard over I2C, you'll want to use the note-arduino library. The code snippets below provide everything you need to talk to the Notecard over I2C in Arduino.
The Notecarrier-F provides only an I2C connection between a Feather MCU host and the Notecard; it does not facilitate Serial communication between devices.
Install the Notecard Arduino Library
To use the note-arduino library, you'll need to add it to the Arduino IDE.
Click on Tools > Manage Libraries...
Search for "Blues" in the input box and click the "Install" button next to the "Blues Wireless Notecard" result.
Create a new sketch and select the Sketch > Include Library > Contributed Libraries > Blues Wireless Notecard menu option, to add the following include to your sketch:
#include <Notecard.h>
Set Up Your Notecard
Now, configure a Serial interface. Serial
will be used to log information
to the Serial terminal of the Arduino IDE.
#define usbSerial Serial
Next, add a definition for your ProductUID using the value you specified when creating your Notehub project.
#define productUID "com.your-company.your-name:your_product"
Above the setup()
and loop()
functions, declare a global object to
represent the Notecard.
Notecard notecard;
In the setup()
function, initialize the usbSerial
object and tell the
Notecard library to use this serial object for sending debug output.
delay(2500); usbSerial.begin(115200);
Initialize an instance of the Notecard class and initialize an I2C
connection to the Notecard using the notecard.begin()
function. Then, use setDebugOutputStream()
to link the debug output to
usbSerial
with the following code:
notecard.begin(); notecard.setDebugOutputStream(usbSerial);
Now, we'll configure the Notecard. Using the hub.set
request, we
associate this Notecard with the ProductUID of your project and set the Notecard
to operate in continuous
mode, which indicates that the device should
immediately make a connection to Notehub and keep it active.
J *req = notecard.newRequest("hub.set"); JAddStringToObject(req, "product", productUID); JAddStringToObject(req, "mode", "continuous"); notecard.sendRequest(req);
The lines above build-up a JSON object by adding two string values for product
and mode, and then fires the request off to the Notecard with the
sendRequest()
function.
Enter bootloader mode on your Swan by pressing and holding the BOOT button, pressing RESET, then releasing both buttons. Then, click the Upload button (right arrow icon) to flash firmware to your device.
If you're using an STLink-V3Mini debugger you can use these instructions for uploading code to your Swan.
Open the Arduino Serial Monitor. If everything has been connected and
configured properly, you'll see a few debug messages, including the JSON object
you sent, as well as the response from the Notecard {}
.
Now that you've configured your Arduino to communicate with the Notecard, let's grab some pseudo sensor readings.
If you have your own sensor, feel free to hook it up and use your own values instead of this tutorial's mocked ones.
To generate mock sensor readings you'll use the NotecardPseudoSensor library. To add the library to Arduino IDE start by clicking on Tools > Manage Libraries...
Search for “NotecardPseudoSensor” in the input box and click the Install button next to the “Blues Wireless Notecard Pseudo Sensor” result.
Add the following include to the top of your sketch:
#include <NotecardPseudoSensor.h>
Next, include the following namespace
under your includes.
using namespace blues;
After that, create an instance of NotecardPseudoSensor
with the line of code
below. Place this directly under your existing Notecard notecard
statement.
NotecardPseudoSensor sensor(notecard);
Finally, place the following code in your loop
function, which generates mock
temperature and humidity readings, prints them to the console, and then waits 15
seconds before exiting the loop.
float temperature = sensor.temp(); float humidity = sensor.humidity(); usbSerial.print("Temperature = "); usbSerial.print(temperature); usbSerial.println(" *C"); usbSerial.print("Humidity = "); usbSerial.print(humidity); usbSerial.println(" %"); delay(15000);
Upload this code to your Blues Wireless Swan. Open the Serial Monitor and you'll see temperature and humidity readings every 15 seconds.
Now that we're getting sensor readings, let's send these to our Notecard.
To send a sensor reading to the Notecard, we'll need to construct a new JSON
request to the note.add
API that includes a new Notefile name (sensors.qo
),
sets the sync
field to true to instruct the Notecard to sync to Notehub
immediately, and finally, sets the body
to the sensor temperature and
humidity. Add the following in loop
right after the usbSerial
commands to
print out readings.
J *req = notecard.newRequest("note.add"); if (req != NULL) { JAddStringToObject(req, "file", "sensors.qo"); JAddBoolToObject(req, "sync", true); J *body = JAddObjectToObject(req, "body"); if (body) { JAddNumberToObject(body, "temp", temperature); JAddNumberToObject(body, "humidity", humidity); } notecard.sendRequest(req); }
Enter bootloader mode again and upload this code to your device. After reboot,
the Serial monitor will update to display the response from the note.add
request (the total number of Notes in the notefile) each time you add a new reading.
Once you start capturing readings, your Notecard will initiate a connection to Notehub and will start transferring Notes. Depending on signal strength and coverage in your area, it may take a few minutes for your Notecard to connect to Notehub and transfer data.
Return to notehub.io and open your project. You should see your notecard in the Devices view.
Now, click on the Events left menu item. Once your sensor Notes start syncing, they’ll show up here.
You’ve successfully connected your Blues Wireless Swan and sensor to your Notecard!
Now you're ready to connect this Notecard project to a cloud application! Take a look at our routing tutorials, which cover a number of popular cloud applications and data visualization tools.
During this tutorial, you set your Notecard into continuous
mode, which
maintains an active network connection and enables faster syncs with Notehub.
It doesn't have much impact on data usage, but it will draw more power. If
you're connected to battery power, or want to transition your project to battery
power, then you can put your Notecard into periodic
mode with the following
request using the in-browser terminal or directly in your firmware.
{
"req": "hub.set",
"mode": "periodic",
"outbound": 60,
"inbound": 120
}