BLE_HTS_Demo
This BLE_HTS_Demo program enables you to collect Temperature and Humidity data reading from sensor and transmit to collector device such as smartphone.
Below documents teach you how to install app that can connect and read data from our DELTA-DFCM-NNN40 development board. There are two versions, Android and iPhone.
/media/uploads/Marcomissyou/ios_app_for_environment_sensor_0518.pdf
/media/uploads/Marcomissyou/android_app_for_environment_sensor.pdf
uvis25.cpp@9:2ff66a3d164a, 2017-07-18 (annotated)
- Committer:
- silviaChen
- Date:
- Tue Jul 18 09:34:06 2017 +0000
- Revision:
- 9:2ff66a3d164a
- Parent:
- 0:ef0f188a6fdd
- Child:
- 10:5220f45c8ec1
update mbed-os so both NNN50 and NQ620 (as well as NQ624 module) platform are supported; Add config in mbed_app.json to fix NQ620 use internal RC issue ; remove the unused shield folder;update BLE_API;Modify SCL/SDA pin
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Marcomissyou | 0:ef0f188a6fdd | 1 | /* Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved. |
Marcomissyou | 0:ef0f188a6fdd | 2 | * |
Marcomissyou | 0:ef0f188a6fdd | 3 | * The information contained herein is property of Nordic Semiconductor ASA. |
Marcomissyou | 0:ef0f188a6fdd | 4 | * Terms and conditions of usage are described in detail in NORDIC |
Marcomissyou | 0:ef0f188a6fdd | 5 | * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. |
Marcomissyou | 0:ef0f188a6fdd | 6 | * |
Marcomissyou | 0:ef0f188a6fdd | 7 | * Licensees are granted free, non-transferable use of the information. NO |
Marcomissyou | 0:ef0f188a6fdd | 8 | * WARRANTY of ANY KIND is provided. This heading must NOT be removed from |
Marcomissyou | 0:ef0f188a6fdd | 9 | * the file. |
Marcomissyou | 0:ef0f188a6fdd | 10 | *df |
Marcomissyou | 0:ef0f188a6fdd | 11 | */ |
Marcomissyou | 0:ef0f188a6fdd | 12 | |
Marcomissyou | 0:ef0f188a6fdd | 13 | #include <stdbool.h> |
Marcomissyou | 0:ef0f188a6fdd | 14 | #include <stdint.h> |
Marcomissyou | 0:ef0f188a6fdd | 15 | |
Marcomissyou | 0:ef0f188a6fdd | 16 | #include <mbed.h> |
Marcomissyou | 0:ef0f188a6fdd | 17 | #include "uvis25.h" |
Marcomissyou | 0:ef0f188a6fdd | 18 | |
silviaChen | 9:2ff66a3d164a | 19 | I2C i2c_uvi(p26, p27); //SDA, SCL |
Marcomissyou | 0:ef0f188a6fdd | 20 | |
Marcomissyou | 0:ef0f188a6fdd | 21 | static const char uvis25_expected_who_am_i = 0xCAU; //!< Expected value to get from WHO_AM_I register. |
Marcomissyou | 0:ef0f188a6fdd | 22 | |
Marcomissyou | 0:ef0f188a6fdd | 23 | bool uvis25_init(void) |
Marcomissyou | 0:ef0f188a6fdd | 24 | { |
Marcomissyou | 0:ef0f188a6fdd | 25 | bool transfer_succeeded = true; |
Marcomissyou | 0:ef0f188a6fdd | 26 | |
Marcomissyou | 0:ef0f188a6fdd | 27 | i2c_uvi.frequency(400000); |
Marcomissyou | 0:ef0f188a6fdd | 28 | uvis25_register_write(0x20 , 0x01); |
Marcomissyou | 0:ef0f188a6fdd | 29 | |
Marcomissyou | 0:ef0f188a6fdd | 30 | // Read and verify product ID |
Marcomissyou | 0:ef0f188a6fdd | 31 | transfer_succeeded &= uvis25_verify_product_id(); |
Marcomissyou | 0:ef0f188a6fdd | 32 | |
Marcomissyou | 0:ef0f188a6fdd | 33 | return transfer_succeeded; |
Marcomissyou | 0:ef0f188a6fdd | 34 | } |
Marcomissyou | 0:ef0f188a6fdd | 35 | |
Marcomissyou | 0:ef0f188a6fdd | 36 | bool uvis25_verify_product_id(void) |
Marcomissyou | 0:ef0f188a6fdd | 37 | { |
Marcomissyou | 0:ef0f188a6fdd | 38 | char who_am_i[1]; |
Marcomissyou | 0:ef0f188a6fdd | 39 | uvis25_register_read(UVIS25_ADDRESS_WHO_AM_I, &who_am_i[0], 1); |
Marcomissyou | 0:ef0f188a6fdd | 40 | if (who_am_i[0] != uvis25_expected_who_am_i) return false; |
Marcomissyou | 0:ef0f188a6fdd | 41 | else return true; |
Marcomissyou | 0:ef0f188a6fdd | 42 | } |
Marcomissyou | 0:ef0f188a6fdd | 43 | |
Marcomissyou | 0:ef0f188a6fdd | 44 | void uvis25_register_write(uint8_t register_address, uint8_t value) |
Marcomissyou | 0:ef0f188a6fdd | 45 | { |
Marcomissyou | 0:ef0f188a6fdd | 46 | char w2_data[2]; |
Marcomissyou | 0:ef0f188a6fdd | 47 | |
Marcomissyou | 0:ef0f188a6fdd | 48 | w2_data[0] = register_address; |
Marcomissyou | 0:ef0f188a6fdd | 49 | w2_data[1] = value; |
Marcomissyou | 0:ef0f188a6fdd | 50 | i2c_uvi.write(UVIS25_WriteADDE, w2_data, 2); |
Marcomissyou | 0:ef0f188a6fdd | 51 | |
Marcomissyou | 0:ef0f188a6fdd | 52 | } |
Marcomissyou | 0:ef0f188a6fdd | 53 | |
Marcomissyou | 0:ef0f188a6fdd | 54 | void uvis25_register_read(char register_address, char *destination, uint8_t number_of_bytes) |
Marcomissyou | 0:ef0f188a6fdd | 55 | { |
Marcomissyou | 0:ef0f188a6fdd | 56 | i2c_uvi.write(UVIS25_WriteADDE, ®ister_address, 1, 1); |
Marcomissyou | 0:ef0f188a6fdd | 57 | i2c_uvi.read(UVIS25_WriteADDE, destination, number_of_bytes); |
Marcomissyou | 0:ef0f188a6fdd | 58 | } |
Marcomissyou | 0:ef0f188a6fdd | 59 | |
Marcomissyou | 0:ef0f188a6fdd | 60 | |
Marcomissyou | 0:ef0f188a6fdd | 61 | uint8_t UVIS25_ReadUVI(void) |
Marcomissyou | 0:ef0f188a6fdd | 62 | { |
Marcomissyou | 0:ef0f188a6fdd | 63 | char UVI_reading; |
Marcomissyou | 0:ef0f188a6fdd | 64 | uvis25_register_read(0x28, &UVI_reading, 1); |
Marcomissyou | 0:ef0f188a6fdd | 65 | return (uint8_t) UVI_reading; |
Marcomissyou | 0:ef0f188a6fdd | 66 | } |