68 lines
3.1 KiB
Plaintext
68 lines
3.1 KiB
Plaintext
Title: Environmental Sensing
|
|
|
|
Description:
|
|
|
|
This sample is a simple environmental sensing service for the Arduino 101 board.
|
|
|
|
The ARC application collects temperature, humidity and pressure data from
|
|
a set of sensors connected to the Arduino 101 and sends it to the x86 core
|
|
through IPM. The colected sensor data is also displayed by the ARC core on
|
|
a Grove LCD.
|
|
|
|
The x86 application exposes the received sensor data as a simple Bluetooth
|
|
Environmental Sensing Service.
|
|
|
|
---------------------------------------------------------------------------------------------------
|
|
|
|
Sensor wiring:
|
|
|
|
The sample uses the HDC1008 sensor for temperature and humidity measurement, and
|
|
the BMP280 sensor for pressure measurement. This section describes how to wire
|
|
these sensors to the Arduino 101 board.
|
|
|
|
Both sensors operate at 3.3V and use I2C to comunicate with the Arduino. On the
|
|
Arduino 101, the I2C data pin (SDA) is exposed as pin A4 (on the ANALOG IN header)
|
|
and the I2C clock pin (SCL) as pin A5 (also on the ANALOG IN header). Since the
|
|
Arduino 101 doesn't have internal pull-up resitors, these need to be added externally
|
|
when connecting SCL and SDA to the sensors.
|
|
|
|
In addition to connecting the ground (GND), 3.3V power (VDD and VDDIO) and I2C
|
|
pins, both HDC1008 and BMP280 require some extra wiring.
|
|
|
|
For HDC1008, connect the address pins (A0 and A1) to GND (this sets the device
|
|
address to the default used by the app). Also connect the RDY pin of the sensor
|
|
to the A1 pin (on ANALOG IN header) of the Arduino board. This is needed as the
|
|
app configures data-ready interrupt on that pin (GPIO pin 3).
|
|
|
|
For BMP280, connect the SDO pin to GND and the CSB pin to VDDIO, since the sensor
|
|
needs to be setup to use I2C, and not SPI.
|
|
|
|
---------------------------------------------------------------------------------------------------
|
|
|
|
Internal sensor:
|
|
|
|
If you do not want to use any external sensors, you can use the Arduino 101's internal
|
|
BMI160 sensor to do just temperature readings. To do this, you need to modify the
|
|
channel_info array from the ARC application to contain only BMI160's temperature channel,
|
|
and also remove the humidity and pressure characteristic from the x86 application.
|
|
|
|
If you choose this approach and you also want to use the Grove LCD, then you also need
|
|
to modify the ARC application to only display temperature on the LCD, as humidity and
|
|
pressure values will not be available.
|
|
|
|
---------------------------------------------------------------------------------------------------
|
|
|
|
Grove LCD:
|
|
|
|
Using the Grove LCD is optional and it can be disabled by removing the Grove configuration
|
|
options from the arc/proj.conf file.
|
|
|
|
The Grove LCD communcicates with the ARC core though the I2C bus. When connecting the Grove
|
|
LCD to the Arduino 101, either directly (similar to sensor wiring) or through a Grove Base
|
|
Shield, you need to make sure that the I2C SDA and SCL lines have pull-up resistors connected
|
|
between GND and the 3.3V power source.
|
|
|
|
Take note that even though SDA and SCL are connected to a 3.3V power source, the Grove LCD
|
|
VDD line needs to be connected to the 5V power line, otherwise characters will not be displayed
|
|
on the LCD (3.3V is enough to power just the backlight).
|