Support
Blues.io
Notehub.io
Shop
Support
Blues.io
Notehub.io
Shop
×
HomeBuild
Hookup Guide
Quickstart
Tutorials
Sensor TutorialIntroductionSet up HardwareCreate a Notehub ProjectWrite FirmwareView Data in Notehub
Route Tutorial
Notecard Guides
Asset Tracking
Serial-Over-I2C Protocol
Updating ESP32 Host Firmware
Configuring ESP32 Attention Pin
Understanding Environment Variables
Routing Guides
Twilio Route
MQTT Route
Azure Function Route
ThingWorx Route
Get started with
Arduino/WiringC/C++CircuitPythonPython
and
Feather
and
Notecarrier-ALNotecarrier-AF

Sensor Tutorial

Introduction

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 CircuitPython running on a Feather wired up to Notecarrier-AL hardware. If you would like to use a different language, board, or Notecarrier, modify the dropdowns at the top of this guide.

note

The images in this guide use the Notecarrier-AL for reference, but this tutorial applies to the Notecarrier-AA and Notecarrier-AE. The Notecarrier-AE does not include pre-soldered female headers at its edge connector, so you'll need to add those headers before continuing.

If you get stuck at any point during this tutorial, the full source for each example is available in the note-tutorials GitHub repo.

Set up Hardware

First, you’ll need to get all of your hardware connected. Follow the instructions below to connect your Feather, BME680 sensor, and Notecard mounted on a Notecarrier-AL.

In order to complete this guide, you’ll need the following:

  • Notecard mounted to Notecarrier-AL.
  • Any CircuitPython-capable Microcontroller (MCU) with Feather headers. We’ll be using the Adafruit Feather M4 Express, but any MCU with a CircuitPython bootloader and binary will do. If using a different device, be sure to follow the instructions for burning the bootloader and flashing the CircuitPython binary to your device.

  • A text editor or IDE that works well with CircuitPython, like Mu or Visual Studio Code.

  • Micro USB to USB-A cable.

  • Your sensor of choice. We’ll be using the Adafruit BME680, but you’re welcome to use any sensor and adapt the code in this guide to read from your sensor instead.

NOTE: For this tutorial, you’ll be powering the Notecard through the MicroUSB connection of your Feather. Some Feather-compatible devices cannot handle 2 Amp pulses from the Notecard when connected to GSM, so if you experience resets or other power-related issues, we suggest powering your separately through the USB or LiPo connector on the Notecarrier.

If you need additional help finding the correct I2C, Power, GND, and Serial pins on your Arduino, consult the Arduino documentation for your board of choice. The Arduino Nano 33, for instance, has the pin designations silk-screened on the bottom of the board, which makes it hard to find a pin while plugged into a breadboard.

So we consulted the pinout diagram here to make sure everytring was wired correctly.

Connect the sensor to your Feather

First, let’s connect the BME680 sensor to your Feather.

  1. Connect VIN from the BME680 Breakout to a 3-5V pin (for example 3V3) on your Feather.

  2. Connect GND from the BME680 Breakout to a GND pin on your Feather.

  3. Connect the SCK pin to the I2C SCL pin on your Feather.

  4. Connect the SDI pin to the I2C SDA pin on your Feather.

Connect the MCU to your Notecard

Now, let’s connect your Notecard using a Serial connection.

  1. Connect V+ from the Notecarrier-AL to the USB pin on your Feather.

  2. Connect GND from the Notecarrier-AL to a GND pin on your Feather.

  3. Connect TX from the Notecarrier-AL to the RX pin on your Feather.

  4. Connect RX from the Notecarrier-AL to the TX pin on your Feather.

Create a Notehub Project

Now that your hardware is all connected, let’s create a new Notehub project to receive sensor readings from your Notecard.

  1. Navigate to notehub.io and log-in, or create a new account.

  2. 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 "org.coca-cola.soda.vending-machine.v2".

  1. Take note of your ProductUID. This identifier is used by Notehub to associate your Notecard to your project.

Write Firmware

Now you’re ready to write some firmware. When communicating with the Notecard, you can manually send requests using the Serial write function and passing-in JSON objects, or use the note-python library. The code snippets below show both, so feel free to use the approach that works for you.

Configure your Notecard

    Read from the sensor

    Now that you’ve configured your MCU to communicate with the Notecard, let’s grab sensor readings from the BME680. First, you’ll want to grab a few libraries to use to interact with the device.

    1. Navigate to the CircuitPython site and download the library bundle for the version of CircuitPython you’re using.

    2. Unzip the archive.

    3. Find the adafuit_bme680.mpy file and adafruit_bus_device folders and copy both to the lib directory of your CIRCUITPY mount. If the lib directory doesn’t exist, you can create it.

    4. Now you’re reading to take readings from the BME680. Start by adding an import for the library to the top of your code.py file

    import adafruit_bme680
    1. Configure the I2C connection to your device and create a new instance of the sensor.
    i2c = busio.I2C(board.SCL, board.SDA)
    bmeSensor = adafruit_bme680.Adafruit_BME680_I2C(i2c)
    
    1. Now lets take a reading. Add a while True block to your code.py if there’s not one already. Then take a temperature and humidity reading and print each to the console before sleeping for 15 seconds and repeating the process.
    while True:
      temp = bmeSensor.temperature
      humidity = bmeSensor.humidity
      print("\nTemperature: %0.1f C" % temp)
      print("Humidity: %0.1f %%" % humidity)
     
      time.sleep(15)
    1. Save code.py and reopen the Serial monitor. Every 15 seconds, you’ll see new readings.

    Send Sensor Readings to the Notecard

    Now that we’re getting sensor readings, let’s send these to our Notecard.

      View Data in Notehub

      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.

      1. Return to notehub.io and open your project. You should see your notecard in the Devices view.

      2. Now, click on the Events left menu item. Once your sensor Notes start syncing, they’ll show up here.

      Congratulations!

      You’ve successfully connected your Feather and external sensor to your Notecard!

      note

      During this tutorial, you set your Notecard into continuous mode, which maintains an active cellular 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}
      Can we improve this page? Send us feedbackRate this page
      • ★
        ★
      • ★
        ★
      • ★
        ★
      • ★
        ★
      • ★
        ★
      © 2021 Blues Inc.Terms & ConditionsPrivacy
      blues.ioTwitterLinkedInGitHubHackster.io
      Disconnected
      Disconnected
      Having trouble connecting?

      Try changing your Micro USB cable as some cables do not support transferring data. If that does not solve your problem, contact us at support@blues.com and we will get you set up with another tool to communicate with the Notecard.

      Connect a NotecardClick 'Connect' and select a USB-connected Notecard to start issuing requests from the browser.