Garage Door Monitor and Opener

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Introduction

This system implements a simple garage door opener and environmental monitor. The hardware connects to the internet using Wi-Fi then on to the Pelion Device Management Platform which provides device monitoring and secure firmware updates over the air (FOTA). Pelion Device Management provides a flexible set of REST APIs which we will use to communicate to a web application running on an EC-2 instance in AWS. The web application will serve a web page where we can monitor and control our garage..

This project is intended to work on the DISCO-L475VG-IOT01A from ST Microelectronics It implements a simple actuator to drive a relay to simulate pushing the "open" button on older style garage doors which do not use a rolling code interface.

The system is designed to be mounted over the door so that the on board time of flight sensor can be used to detect if the door is open or closed.

The system also monitors temperature, humidity and barometric pressure.

https://os.mbed.com/media/uploads/JimCarver/garageopener.jpg

Hardware Requirements:

DISCO-L475G-IOT01A https://os.mbed.com/platforms/ST-Discovery-L475E-IOT01A/

Seeed Studio Grove Relay module https://www.seeedstudio.com/Grove-Relay.html

Seeed Studio Grove cable, I used this one: https://www.seeedstudio.com/Grove-4-pin-Male-Jumper-to-Grove-4-pin-Conversion-Cable-5-PCs-per-Pack.html

Connect to the PMOD connector like this:

https://os.mbed.com/media/uploads/JimCarver/opener.jpg

This shows how I installed so that the time of flight sensor can detect when the door is open

https://os.mbed.com/media/uploads/JimCarver/opener1.jpg https://os.mbed.com/media/uploads/JimCarver/opener2.jpg

To use the project:

You will also need a Pelion developers account.

I suggest you first use the Pelion quick state to become familiar with Pelion Device Management. https://os.mbed.com/guides/connect-device-to-pelion/1/?board=ST-Discovery-L475E-IOT01A

Web Interface

For my web interface I am running node-red under Ubuntu in an EC2 instance on AWS. This can run for 12 month within the constraints of their free tier. Here is a tutorial: https://nodered.org/docs/getting-started/aws

You will also need to install several node-red add ons:

sudo npm install -g node-red-dashboard

sudo npm install -g node-red-contrib-mbed-cloud

sudo npm istall -g node-red-contrib-moment

After starting node-red import the contents of GarageFlow.txt from the project, pin the flow into the page.

To enable your web app to access your Pelion account you need an API key.

First you will neet to use your Pelion account to create an API key.

https://os.mbed.com/media/uploads/JimCarver/api_portal.jpg

Now we need to apply that API key to your Node-Red flow.

https://os.mbed.com/media/uploads/JimCarver/api_node-red.jpg

Committer:
JimCarver
Date:
Thu Dec 05 19:03:48 2019 +0000
Revision:
37:ec1124e5ec1f
Parent:
18:a15bfe7aaebd
Bug fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 18:a15bfe7aaebd 1 /*******************************************************************************
screamer 18:a15bfe7aaebd 2 Copyright © 2016, STMicroelectronics International N.V.
screamer 18:a15bfe7aaebd 3 All rights reserved.
screamer 18:a15bfe7aaebd 4
screamer 18:a15bfe7aaebd 5 Redistribution and use in source and binary forms, with or without
screamer 18:a15bfe7aaebd 6 modification, are permitted provided that the following conditions are met:
screamer 18:a15bfe7aaebd 7 * Redistributions of source code must retain the above copyright
screamer 18:a15bfe7aaebd 8 notice, this list of conditions and the following disclaimer.
screamer 18:a15bfe7aaebd 9 * Redistributions in binary form must reproduce the above copyright
screamer 18:a15bfe7aaebd 10 notice, this list of conditions and the following disclaimer in the
screamer 18:a15bfe7aaebd 11 documentation and/or other materials provided with the distribution.
screamer 18:a15bfe7aaebd 12 * Neither the name of STMicroelectronics nor the
screamer 18:a15bfe7aaebd 13 names of its contributors may be used to endorse or promote products
screamer 18:a15bfe7aaebd 14 derived from this software without specific prior written permission.
screamer 18:a15bfe7aaebd 15
screamer 18:a15bfe7aaebd 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
screamer 18:a15bfe7aaebd 17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
screamer 18:a15bfe7aaebd 18 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
screamer 18:a15bfe7aaebd 19 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
screamer 18:a15bfe7aaebd 20 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
screamer 18:a15bfe7aaebd 21 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
screamer 18:a15bfe7aaebd 22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
screamer 18:a15bfe7aaebd 23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
screamer 18:a15bfe7aaebd 24 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
screamer 18:a15bfe7aaebd 25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
screamer 18:a15bfe7aaebd 26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
screamer 18:a15bfe7aaebd 27 *******************************************************************************/
screamer 18:a15bfe7aaebd 28
screamer 18:a15bfe7aaebd 29 /**
screamer 18:a15bfe7aaebd 30 * Device specific defines. To be adapted by implementer for the targeted
screamer 18:a15bfe7aaebd 31 * device.
screamer 18:a15bfe7aaebd 32 */
screamer 18:a15bfe7aaebd 33
screamer 18:a15bfe7aaebd 34 #ifndef _VL53L0X_DEVICE_H_
screamer 18:a15bfe7aaebd 35 #define _VL53L0X_DEVICE_H_
screamer 18:a15bfe7aaebd 36
screamer 18:a15bfe7aaebd 37 #include "VL53L0X_types.h"
screamer 18:a15bfe7aaebd 38
screamer 18:a15bfe7aaebd 39
screamer 18:a15bfe7aaebd 40 /** @defgroup VL53L0X_DevSpecDefines_group VL53L0X cut1.1 Device Specific Defines
screamer 18:a15bfe7aaebd 41 * @brief VL53L0X cut1.1 Device Specific Defines
screamer 18:a15bfe7aaebd 42 * @{
screamer 18:a15bfe7aaebd 43 */
screamer 18:a15bfe7aaebd 44
screamer 18:a15bfe7aaebd 45
screamer 18:a15bfe7aaebd 46 /** @defgroup VL53L0X_DeviceError_group Device Error
screamer 18:a15bfe7aaebd 47 * @brief Device Error code
screamer 18:a15bfe7aaebd 48 *
screamer 18:a15bfe7aaebd 49 * This enum is Device specific it should be updated in the implementation
screamer 18:a15bfe7aaebd 50 * Use @a VL53L0X_GetStatusErrorString() to get the string.
screamer 18:a15bfe7aaebd 51 * It is related to Status Register of the Device.
screamer 18:a15bfe7aaebd 52 * @{
screamer 18:a15bfe7aaebd 53 */
screamer 18:a15bfe7aaebd 54 typedef uint8_t VL53L0X_DeviceError;
screamer 18:a15bfe7aaebd 55
screamer 18:a15bfe7aaebd 56 #define VL53L0X_DEVICEERROR_NONE ((VL53L0X_DeviceError) 0)
screamer 18:a15bfe7aaebd 57 /*!< 0 NoError */
screamer 18:a15bfe7aaebd 58 #define VL53L0X_DEVICEERROR_VCSELCONTINUITYTESTFAILURE ((VL53L0X_DeviceError) 1)
screamer 18:a15bfe7aaebd 59 #define VL53L0X_DEVICEERROR_VCSELWATCHDOGTESTFAILURE ((VL53L0X_DeviceError) 2)
screamer 18:a15bfe7aaebd 60 #define VL53L0X_DEVICEERROR_NOVHVVALUEFOUND ((VL53L0X_DeviceError) 3)
screamer 18:a15bfe7aaebd 61 #define VL53L0X_DEVICEERROR_MSRCNOTARGET ((VL53L0X_DeviceError) 4)
screamer 18:a15bfe7aaebd 62 #define VL53L0X_DEVICEERROR_SNRCHECK ((VL53L0X_DeviceError) 5)
screamer 18:a15bfe7aaebd 63 #define VL53L0X_DEVICEERROR_RANGEPHASECHECK ((VL53L0X_DeviceError) 6)
screamer 18:a15bfe7aaebd 64 #define VL53L0X_DEVICEERROR_SIGMATHRESHOLDCHECK ((VL53L0X_DeviceError) 7)
screamer 18:a15bfe7aaebd 65 #define VL53L0X_DEVICEERROR_TCC ((VL53L0X_DeviceError) 8)
screamer 18:a15bfe7aaebd 66 #define VL53L0X_DEVICEERROR_PHASECONSISTENCY ((VL53L0X_DeviceError) 9)
screamer 18:a15bfe7aaebd 67 #define VL53L0X_DEVICEERROR_MINCLIP ((VL53L0X_DeviceError) 10)
screamer 18:a15bfe7aaebd 68 #define VL53L0X_DEVICEERROR_RANGECOMPLETE ((VL53L0X_DeviceError) 11)
screamer 18:a15bfe7aaebd 69 #define VL53L0X_DEVICEERROR_ALGOUNDERFLOW ((VL53L0X_DeviceError) 12)
screamer 18:a15bfe7aaebd 70 #define VL53L0X_DEVICEERROR_ALGOOVERFLOW ((VL53L0X_DeviceError) 13)
screamer 18:a15bfe7aaebd 71 #define VL53L0X_DEVICEERROR_RANGEIGNORETHRESHOLD ((VL53L0X_DeviceError) 14)
screamer 18:a15bfe7aaebd 72
screamer 18:a15bfe7aaebd 73 /** @} end of VL53L0X_DeviceError_group */
screamer 18:a15bfe7aaebd 74
screamer 18:a15bfe7aaebd 75
screamer 18:a15bfe7aaebd 76 /** @defgroup VL53L0X_CheckEnable_group Check Enable list
screamer 18:a15bfe7aaebd 77 * @brief Check Enable code
screamer 18:a15bfe7aaebd 78 *
screamer 18:a15bfe7aaebd 79 * Define used to specify the LimitCheckId.
screamer 18:a15bfe7aaebd 80 * Use @a VL53L0X_GetLimitCheckInfo() to get the string.
screamer 18:a15bfe7aaebd 81 * @{
screamer 18:a15bfe7aaebd 82 */
screamer 18:a15bfe7aaebd 83
screamer 18:a15bfe7aaebd 84 #define VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE 0
screamer 18:a15bfe7aaebd 85 #define VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE 1
screamer 18:a15bfe7aaebd 86 #define VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP 2
screamer 18:a15bfe7aaebd 87 #define VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD 3
screamer 18:a15bfe7aaebd 88 #define VL53L0X_CHECKENABLE_SIGNAL_RATE_MSRC 4
screamer 18:a15bfe7aaebd 89 #define VL53L0X_CHECKENABLE_SIGNAL_RATE_PRE_RANGE 5
screamer 18:a15bfe7aaebd 90
screamer 18:a15bfe7aaebd 91 #define VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS 6
screamer 18:a15bfe7aaebd 92
screamer 18:a15bfe7aaebd 93 /** @} end of VL53L0X_CheckEnable_group */
screamer 18:a15bfe7aaebd 94
screamer 18:a15bfe7aaebd 95
screamer 18:a15bfe7aaebd 96 /** @defgroup VL53L0X_GpioFunctionality_group Gpio Functionality
screamer 18:a15bfe7aaebd 97 * @brief Defines the different functionalities for the device GPIO(s)
screamer 18:a15bfe7aaebd 98 * @{
screamer 18:a15bfe7aaebd 99 */
screamer 18:a15bfe7aaebd 100 typedef uint8_t VL53L0X_GpioFunctionality;
screamer 18:a15bfe7aaebd 101
screamer 18:a15bfe7aaebd 102 #define VL53L0X_GPIOFUNCTIONALITY_OFF \
screamer 18:a15bfe7aaebd 103 ((VL53L0X_GpioFunctionality) 0) /*!< NO Interrupt */
screamer 18:a15bfe7aaebd 104 #define VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_LOW \
screamer 18:a15bfe7aaebd 105 ((VL53L0X_GpioFunctionality) 1) /*!< Level Low (value < thresh_low) */
screamer 18:a15bfe7aaebd 106 #define VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_HIGH \
screamer 18:a15bfe7aaebd 107 ((VL53L0X_GpioFunctionality) 2) /*!< Level High (value > thresh_high) */
screamer 18:a15bfe7aaebd 108 #define VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_OUT \
screamer 18:a15bfe7aaebd 109 ((VL53L0X_GpioFunctionality) 3)
screamer 18:a15bfe7aaebd 110 /*!< Out Of Window (value < thresh_low OR value > thresh_high) */
screamer 18:a15bfe7aaebd 111 #define VL53L0X_GPIOFUNCTIONALITY_NEW_MEASURE_READY \
screamer 18:a15bfe7aaebd 112 ((VL53L0X_GpioFunctionality) 4) /*!< New Sample Ready */
screamer 18:a15bfe7aaebd 113
screamer 18:a15bfe7aaebd 114 /** @} end of VL53L0X_GpioFunctionality_group */
screamer 18:a15bfe7aaebd 115
screamer 18:a15bfe7aaebd 116
screamer 18:a15bfe7aaebd 117 /* Device register map */
screamer 18:a15bfe7aaebd 118
screamer 18:a15bfe7aaebd 119 /** @defgroup VL53L0X_DefineRegisters_group Define Registers
screamer 18:a15bfe7aaebd 120 * @brief List of all the defined registers
screamer 18:a15bfe7aaebd 121 * @{
screamer 18:a15bfe7aaebd 122 */
screamer 18:a15bfe7aaebd 123 #define VL53L0X_REG_SYSRANGE_START 0x000
screamer 18:a15bfe7aaebd 124 /** mask existing bit in #VL53L0X_REG_SYSRANGE_START*/
screamer 18:a15bfe7aaebd 125 #define VL53L0X_REG_SYSRANGE_MODE_MASK 0x0F
screamer 18:a15bfe7aaebd 126 /** bit 0 in #VL53L0X_REG_SYSRANGE_START write 1 toggle state in
screamer 18:a15bfe7aaebd 127 * continuous mode and arm next shot in single shot mode */
screamer 18:a15bfe7aaebd 128 #define VL53L0X_REG_SYSRANGE_MODE_START_STOP 0x01
screamer 18:a15bfe7aaebd 129 /** bit 1 write 0 in #VL53L0X_REG_SYSRANGE_START set single shot mode */
screamer 18:a15bfe7aaebd 130 #define VL53L0X_REG_SYSRANGE_MODE_SINGLESHOT 0x00
screamer 18:a15bfe7aaebd 131 /** bit 1 write 1 in #VL53L0X_REG_SYSRANGE_START set back-to-back
screamer 18:a15bfe7aaebd 132 * operation mode */
screamer 18:a15bfe7aaebd 133 #define VL53L0X_REG_SYSRANGE_MODE_BACKTOBACK 0x02
screamer 18:a15bfe7aaebd 134 /** bit 2 write 1 in #VL53L0X_REG_SYSRANGE_START set timed operation
screamer 18:a15bfe7aaebd 135 * mode */
screamer 18:a15bfe7aaebd 136 #define VL53L0X_REG_SYSRANGE_MODE_TIMED 0x04
screamer 18:a15bfe7aaebd 137 /** bit 3 write 1 in #VL53L0X_REG_SYSRANGE_START set histogram operation
screamer 18:a15bfe7aaebd 138 * mode */
screamer 18:a15bfe7aaebd 139 #define VL53L0X_REG_SYSRANGE_MODE_HISTOGRAM 0x08
screamer 18:a15bfe7aaebd 140
screamer 18:a15bfe7aaebd 141
screamer 18:a15bfe7aaebd 142 #define VL53L0X_REG_SYSTEM_THRESH_HIGH 0x000C
screamer 18:a15bfe7aaebd 143 #define VL53L0X_REG_SYSTEM_THRESH_LOW 0x000E
screamer 18:a15bfe7aaebd 144
screamer 18:a15bfe7aaebd 145
screamer 18:a15bfe7aaebd 146 #define VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG 0x0001
screamer 18:a15bfe7aaebd 147 #define VL53L0X_REG_SYSTEM_RANGE_CONFIG 0x0009
screamer 18:a15bfe7aaebd 148 #define VL53L0X_REG_SYSTEM_INTERMEASUREMENT_PERIOD 0x0004
screamer 18:a15bfe7aaebd 149
screamer 18:a15bfe7aaebd 150
screamer 18:a15bfe7aaebd 151 #define VL53L0X_REG_SYSTEM_INTERRUPT_CONFIG_GPIO 0x000A
screamer 18:a15bfe7aaebd 152 #define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_DISABLED 0x00
screamer 18:a15bfe7aaebd 153 #define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_LEVEL_LOW 0x01
screamer 18:a15bfe7aaebd 154 #define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_LEVEL_HIGH 0x02
screamer 18:a15bfe7aaebd 155 #define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_OUT_OF_WINDOW 0x03
screamer 18:a15bfe7aaebd 156 #define VL53L0X_REG_SYSTEM_INTERRUPT_GPIO_NEW_SAMPLE_READY 0x04
screamer 18:a15bfe7aaebd 157
screamer 18:a15bfe7aaebd 158 #define VL53L0X_REG_GPIO_HV_MUX_ACTIVE_HIGH 0x0084
screamer 18:a15bfe7aaebd 159
screamer 18:a15bfe7aaebd 160
screamer 18:a15bfe7aaebd 161 #define VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR 0x000B
screamer 18:a15bfe7aaebd 162
screamer 18:a15bfe7aaebd 163 /* Result registers */
screamer 18:a15bfe7aaebd 164 #define VL53L0X_REG_RESULT_INTERRUPT_STATUS 0x0013
screamer 18:a15bfe7aaebd 165 #define VL53L0X_REG_RESULT_RANGE_STATUS 0x0014
screamer 18:a15bfe7aaebd 166
screamer 18:a15bfe7aaebd 167 #define VL53L0X_REG_RESULT_CORE_PAGE 1
screamer 18:a15bfe7aaebd 168 #define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_RTN 0x00BC
screamer 18:a15bfe7aaebd 169 #define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_RTN 0x00C0
screamer 18:a15bfe7aaebd 170 #define VL53L0X_REG_RESULT_CORE_AMBIENT_WINDOW_EVENTS_REF 0x00D0
screamer 18:a15bfe7aaebd 171 #define VL53L0X_REG_RESULT_CORE_RANGING_TOTAL_EVENTS_REF 0x00D4
screamer 18:a15bfe7aaebd 172 #define VL53L0X_REG_RESULT_PEAK_SIGNAL_RATE_REF 0x00B6
screamer 18:a15bfe7aaebd 173
screamer 18:a15bfe7aaebd 174 /* Algo register */
screamer 18:a15bfe7aaebd 175
screamer 18:a15bfe7aaebd 176 #define VL53L0X_REG_ALGO_PART_TO_PART_RANGE_OFFSET_MM 0x0028
screamer 18:a15bfe7aaebd 177
screamer 18:a15bfe7aaebd 178 #define VL53L0X_REG_I2C_SLAVE_DEVICE_ADDRESS 0x008a
screamer 18:a15bfe7aaebd 179
screamer 18:a15bfe7aaebd 180 /* Check Limit registers */
screamer 18:a15bfe7aaebd 181 #define VL53L0X_REG_MSRC_CONFIG_CONTROL 0x0060
screamer 18:a15bfe7aaebd 182
screamer 18:a15bfe7aaebd 183 #define VL53L0X_REG_PRE_RANGE_CONFIG_MIN_SNR 0X0027
screamer 18:a15bfe7aaebd 184 #define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW 0x0056
screamer 18:a15bfe7aaebd 185 #define VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH 0x0057
screamer 18:a15bfe7aaebd 186 #define VL53L0X_REG_PRE_RANGE_MIN_COUNT_RATE_RTN_LIMIT 0x0064
screamer 18:a15bfe7aaebd 187
screamer 18:a15bfe7aaebd 188 #define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_SNR 0X0067
screamer 18:a15bfe7aaebd 189 #define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_LOW 0x0047
screamer 18:a15bfe7aaebd 190 #define VL53L0X_REG_FINAL_RANGE_CONFIG_VALID_PHASE_HIGH 0x0048
screamer 18:a15bfe7aaebd 191 #define VL53L0X_REG_FINAL_RANGE_CONFIG_MIN_COUNT_RATE_RTN_LIMIT 0x0044
screamer 18:a15bfe7aaebd 192
screamer 18:a15bfe7aaebd 193
screamer 18:a15bfe7aaebd 194 #define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_HI 0X0061
screamer 18:a15bfe7aaebd 195 #define VL53L0X_REG_PRE_RANGE_CONFIG_SIGMA_THRESH_LO 0X0062
screamer 18:a15bfe7aaebd 196
screamer 18:a15bfe7aaebd 197 /* PRE RANGE registers */
screamer 18:a15bfe7aaebd 198 #define VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD 0x0050
screamer 18:a15bfe7aaebd 199 #define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x0051
screamer 18:a15bfe7aaebd 200 #define VL53L0X_REG_PRE_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x0052
screamer 18:a15bfe7aaebd 201
screamer 18:a15bfe7aaebd 202 #define VL53L0X_REG_SYSTEM_HISTOGRAM_BIN 0x0081
screamer 18:a15bfe7aaebd 203 #define VL53L0X_REG_HISTOGRAM_CONFIG_INITIAL_PHASE_SELECT 0x0033
screamer 18:a15bfe7aaebd 204 #define VL53L0X_REG_HISTOGRAM_CONFIG_READOUT_CTRL 0x0055
screamer 18:a15bfe7aaebd 205
screamer 18:a15bfe7aaebd 206 #define VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD 0x0070
screamer 18:a15bfe7aaebd 207 #define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_HI 0x0071
screamer 18:a15bfe7aaebd 208 #define VL53L0X_REG_FINAL_RANGE_CONFIG_TIMEOUT_MACROP_LO 0x0072
screamer 18:a15bfe7aaebd 209 #define VL53L0X_REG_CROSSTALK_COMPENSATION_PEAK_RATE_MCPS 0x0020
screamer 18:a15bfe7aaebd 210
screamer 18:a15bfe7aaebd 211 #define VL53L0X_REG_MSRC_CONFIG_TIMEOUT_MACROP 0x0046
screamer 18:a15bfe7aaebd 212
screamer 18:a15bfe7aaebd 213
screamer 18:a15bfe7aaebd 214 #define VL53L0X_REG_SOFT_RESET_GO2_SOFT_RESET_N 0x00bf
screamer 18:a15bfe7aaebd 215 #define VL53L0X_REG_IDENTIFICATION_MODEL_ID 0x00c0
screamer 18:a15bfe7aaebd 216 #define VL53L0X_REG_IDENTIFICATION_REVISION_ID 0x00c2
screamer 18:a15bfe7aaebd 217
screamer 18:a15bfe7aaebd 218 #define VL53L0X_REG_OSC_CALIBRATE_VAL 0x00f8
screamer 18:a15bfe7aaebd 219
screamer 18:a15bfe7aaebd 220
screamer 18:a15bfe7aaebd 221 #define VL53L0X_SIGMA_ESTIMATE_MAX_VALUE 65535
screamer 18:a15bfe7aaebd 222 /* equivalent to a range sigma of 655.35mm */
screamer 18:a15bfe7aaebd 223
screamer 18:a15bfe7aaebd 224 #define VL53L0X_REG_GLOBAL_CONFIG_VCSEL_WIDTH 0x032
screamer 18:a15bfe7aaebd 225 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_0 0x0B0
screamer 18:a15bfe7aaebd 226 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_1 0x0B1
screamer 18:a15bfe7aaebd 227 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_2 0x0B2
screamer 18:a15bfe7aaebd 228 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_3 0x0B3
screamer 18:a15bfe7aaebd 229 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_4 0x0B4
screamer 18:a15bfe7aaebd 230 #define VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_5 0x0B5
screamer 18:a15bfe7aaebd 231
screamer 18:a15bfe7aaebd 232 #define VL53L0X_REG_GLOBAL_CONFIG_REF_EN_START_SELECT 0xB6
screamer 18:a15bfe7aaebd 233 #define VL53L0X_REG_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD 0x4E /* 0x14E */
screamer 18:a15bfe7aaebd 234 #define VL53L0X_REG_DYNAMIC_SPAD_REF_EN_START_OFFSET 0x4F /* 0x14F */
screamer 18:a15bfe7aaebd 235 #define VL53L0X_REG_POWER_MANAGEMENT_GO1_POWER_FORCE 0x80
screamer 18:a15bfe7aaebd 236
screamer 18:a15bfe7aaebd 237 /*
screamer 18:a15bfe7aaebd 238 * Speed of light in um per 1E-10 Seconds
screamer 18:a15bfe7aaebd 239 */
screamer 18:a15bfe7aaebd 240
screamer 18:a15bfe7aaebd 241 #define VL53L0X_SPEED_OF_LIGHT_IN_AIR 2997
screamer 18:a15bfe7aaebd 242
screamer 18:a15bfe7aaebd 243 #define VL53L0X_REG_VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV 0x0089
screamer 18:a15bfe7aaebd 244
screamer 18:a15bfe7aaebd 245 #define VL53L0X_REG_ALGO_PHASECAL_LIM 0x0030 /* 0x130 */
screamer 18:a15bfe7aaebd 246 #define VL53L0X_REG_ALGO_PHASECAL_CONFIG_TIMEOUT 0x0030
screamer 18:a15bfe7aaebd 247
screamer 18:a15bfe7aaebd 248 /** @} VL53L0X_DefineRegisters_group */
screamer 18:a15bfe7aaebd 249
screamer 18:a15bfe7aaebd 250 /** @} VL53L0X_DevSpecDefines_group */
screamer 18:a15bfe7aaebd 251
screamer 18:a15bfe7aaebd 252
screamer 18:a15bfe7aaebd 253 #endif
screamer 18:a15bfe7aaebd 254
screamer 18:a15bfe7aaebd 255 /* _VL53L0X_DEVICE_H_ */
screamer 18:a15bfe7aaebd 256
screamer 18:a15bfe7aaebd 257