Chip-dat/InvenSense-dat/InvenSense-dat.md
... ...
@@ -7,7 +7,18 @@
7 7
8 8
- [[ICS-43434-dat]]
9 9
10
-## 9axis
10
+
11
+ICM-20602 == The ICM-20602 is a 6-axis MotionTracking device that combines a 3-axis gyroscope, 3-axis accelerometer, in a small 3 × 3 × 0.75 mm (16-pin LGA) package.
12
+
13
+
14
+ICM-20689 == The ICM-20689 is a 6-axis MotionTracking device that combines a 3-axis gyroscope, 3-axis accelerometer, in a small 4 × 4 × 0.9 mm (24-pin QFN) package.
15
+
16
+
17
+
18
+## 9 - axis
19
+
20
+MPU-9250 == Nine-Axis (Gyro + Accelerometer + Compass) MEMS MotionTracking™ Device
21
+
11 22
12 23
- [[9-axis-IMU-dat]] == [[MPU9255-dat]]
13 24
Chip-dat/ST-dat/ST-sensor-dat/ST-sensor-dat.md
... ...
@@ -0,0 +1,11 @@
1
+
2
+# ST-sensor-dat.md
3
+
4
+
5
+- L3GD20: 3-axis digital output gyroscope
6
+
7
+- LSM6DSO: 6-axis inertial sensor (3D accelerometer + 3D gyroscope)
8
+
9
+- LSM303D == e-Compass: 3D accelerometer, 3D magnetometer, ultra compact, high performance, I2C, SPI interfaces
10
+
11
+- [[VL53L0x-dat]]
... ...
\ No newline at end of file
Chip-dat/ST-dat/ST-sensor-dat/VL53L0X-dat.md
... ...
@@ -1,7 +0,0 @@
1
-
2
-# VL53L0X-dat
3
-
4
-- [pdf datasheet](https://w2.electrodragon.com/Board/SMO/SMO1099-dat/VL53L0X.pdf)
5
-- https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html
6
-
7
-- [code repo](https://github.com/Edragon/Arduino/tree/master/Sketchbook/04_sensor)
Chip-dat/ST-dat/ST-sensor-dat/VL53L0X-dat/VL53L0X-dat.md
... ...
@@ -0,0 +1,7 @@
1
+
2
+# VL53L0X-dat
3
+
4
+- [pdf datasheet](https://w2.electrodragon.com/Board/SMO/SMO1099-dat/VL53L0X.pdf)
5
+- https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html
6
+
7
+- [code repo](https://github.com/Edragon/Arduino/tree/master/Sketchbook/04_sensor)
Chip-dat/ST-dat/ST-sensor-dat/VL53L0X-dat/VL53L0X.ino
... ...
@@ -0,0 +1,148 @@
1
+//the original code by Ted Meyers
2
+//posted here: https://groups.google.com/d/msg/diyrovers/lc7NUZYuJOg/ICPrYNJGBgAJ
3
+
4
+#include <Wire.h>
5
+
6
+#define VL53L0X_REG_IDENTIFICATION_MODEL_ID 0xc0
7
+#define VL53L0X_REG_IDENTIFICATION_REVISION_ID 0xc2
8
+#define VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD 0x50
9
+#define VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD 0x70
10
+#define VL53L0X_REG_SYSRANGE_START 0x00
11
+#define VL53L0X_REG_RESULT_INTERRUPT_STATUS 0x13
12
+#define VL53L0X_REG_RESULT_RANGE_STATUS 0x14
13
+#define address 0x29
14
+
15
+byte gbuf[16];
16
+
17
+void setup() {
18
+ // put your setup code here, to run once:
19
+ Wire.begin(); // join i2c bus (address optional for master)
20
+ Serial.begin(9600); // start serial for output
21
+ Serial.println("VLX53LOX test started.");
22
+}
23
+
24
+void loop() {
25
+ Serial.println("----- START TEST ----");
26
+ test();
27
+ Serial.println("----- END TEST ----");
28
+ Serial.println("");
29
+ delay(1000);
30
+}
31
+
32
+void test() {
33
+ byte val1 = read_byte_data_at(VL53L0X_REG_IDENTIFICATION_REVISION_ID);
34
+ Serial.print("Revision ID: "); Serial.println(val1);
35
+
36
+ val1 = read_byte_data_at(VL53L0X_REG_IDENTIFICATION_MODEL_ID);
37
+ Serial.print("Device ID: "); Serial.println(val1);
38
+
39
+ val1 = read_byte_data_at(VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD);
40
+ Serial.print("PRE_RANGE_CONFIG_VCSEL_PERIOD="); Serial.println(val1);
41
+ Serial.print(" decode: "); Serial.println(VL53L0X_decode_vcsel_period(val1));
42
+
43
+ val1 = read_byte_data_at(VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD);
44
+ Serial.print("FINAL_RANGE_CONFIG_VCSEL_PERIOD="); Serial.println(val1);
45
+ Serial.print(" decode: "); Serial.println(VL53L0X_decode_vcsel_period(val1));
46
+
47
+ write_byte_data_at(VL53L0X_REG_SYSRANGE_START, 0x01);
48
+
49
+ byte val = 0;
50
+ int cnt = 0;
51
+ while (cnt < 100) { // 1 second waiting time max
52
+ delay(10);
53
+ val = read_byte_data_at(VL53L0X_REG_RESULT_RANGE_STATUS);
54
+ if (val & 0x01) break;
55
+ cnt++;
56
+ }
57
+ if (val & 0x01) Serial.println("ready"); else Serial.println("not ready");
58
+
59
+ read_block_data_at(0x14, 12);
60
+ uint16_t acnt = makeuint16(gbuf[7], gbuf[6]);
61
+ uint16_t scnt = makeuint16(gbuf[9], gbuf[8]);
62
+ uint16_t dist = makeuint16(gbuf[11], gbuf[10]);
63
+ byte DeviceRangeStatusInternal = ((gbuf[0] & 0x78) >> 3);
64
+
65
+ Serial.print("ambient count: "); Serial.println(acnt);
66
+ Serial.print("signal count: "); Serial.println(scnt);
67
+ Serial.print("distance "); Serial.println(dist);
68
+ Serial.print("status: "); Serial.println(DeviceRangeStatusInternal);
69
+}
70
+
71
+uint16_t bswap(byte b[]) {
72
+ // Big Endian unsigned short to little endian unsigned short
73
+ uint16_t val = ((b[0] << 8) & b[1]);
74
+ return val;
75
+}
76
+
77
+uint16_t makeuint16(int lsb, int msb) {
78
+ return ((msb & 0xFF) << 8) | (lsb & 0xFF);
79
+}
80
+
81
+void write_byte_data(byte data) {
82
+ Wire.beginTransmission(address);
83
+ Wire.write(data);
84
+ Wire.endTransmission();
85
+}
86
+
87
+void write_byte_data_at(byte reg, byte data) {
88
+ // write data word at address and register
89
+ Wire.beginTransmission(address);
90
+ Wire.write(reg);
91
+ Wire.write(data);
92
+ Wire.endTransmission();
93
+}
94
+
95
+void write_word_data_at(byte reg, uint16_t data) {
96
+ // write data word at address and register
97
+ byte b0 = (data &0xFF);
98
+ byte b1 = ((data >> 8) && 0xFF);
99
+
100
+ Wire.beginTransmission(address);
101
+ Wire.write(reg);
102
+ Wire.write(b0);
103
+ Wire.write(b1);
104
+ Wire.endTransmission();
105
+}
106
+
107
+byte read_byte_data() {
108
+ Wire.requestFrom(address, 1);
109
+ while (Wire.available() < 1) delay(1);
110
+ byte b = Wire.read();
111
+ return b;
112
+}
113
+
114
+byte read_byte_data_at(byte reg) {
115
+ //write_byte_data((byte)0x00);
116
+ write_byte_data(reg);
117
+ Wire.requestFrom(address, 1);
118
+ while (Wire.available() < 1) delay(1);
119
+ byte b = Wire.read();
120
+ return b;
121
+}
122
+
123
+uint16_t read_word_data_at(byte reg) {
124
+ write_byte_data(reg);
125
+ Wire.requestFrom(address, 2);
126
+ while (Wire.available() < 2) delay(1);
127
+ gbuf[0] = Wire.read();
128
+ gbuf[1] = Wire.read();
129
+ return bswap(gbuf);
130
+}
131
+
132
+void read_block_data_at(byte reg, int sz) {
133
+ int i = 0;
134
+ write_byte_data(reg);
135
+ Wire.requestFrom(address, sz);
136
+ for (i=0; i<sz; i++) {
137
+ while (Wire.available() < 1) delay(1);
138
+ gbuf[i] = Wire.read();
139
+ }
140
+}
141
+
142
+
143
+uint16_t VL53L0X_decode_vcsel_period(short vcsel_period_reg) {
144
+ // Converts the encoded VCSEL period register value into the real
145
+ // period in PLL clocks
146
+ uint16_t vcsel_period_pclks = (vcsel_period_reg + 1) << 1;
147
+ return vcsel_period_pclks;
148
+}
Chip-dat/ST-dat/ST-sensor-dat/VL53L0X-dat/VL53L0X.pdf
... ...
Binary files /dev/null and b/Chip-dat/ST-dat/ST-sensor-dat/VL53L0X-dat/VL53L0X.pdf differ
Chip-dat/ST-dat/ST-sensor-dat/VL53L0X.ino
... ...
@@ -1,148 +0,0 @@
1
-//the original code by Ted Meyers
2
-//posted here: https://groups.google.com/d/msg/diyrovers/lc7NUZYuJOg/ICPrYNJGBgAJ
3
-
4
-#include <Wire.h>
5
-
6
-#define VL53L0X_REG_IDENTIFICATION_MODEL_ID 0xc0
7
-#define VL53L0X_REG_IDENTIFICATION_REVISION_ID 0xc2
8
-#define VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD 0x50
9
-#define VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD 0x70
10
-#define VL53L0X_REG_SYSRANGE_START 0x00
11
-#define VL53L0X_REG_RESULT_INTERRUPT_STATUS 0x13
12
-#define VL53L0X_REG_RESULT_RANGE_STATUS 0x14
13
-#define address 0x29
14
-
15
-byte gbuf[16];
16
-
17
-void setup() {
18
- // put your setup code here, to run once:
19
- Wire.begin(); // join i2c bus (address optional for master)
20
- Serial.begin(9600); // start serial for output
21
- Serial.println("VLX53LOX test started.");
22
-}
23
-
24
-void loop() {
25
- Serial.println("----- START TEST ----");
26
- test();
27
- Serial.println("----- END TEST ----");
28
- Serial.println("");
29
- delay(1000);
30
-}
31
-
32
-void test() {
33
- byte val1 = read_byte_data_at(VL53L0X_REG_IDENTIFICATION_REVISION_ID);
34
- Serial.print("Revision ID: "); Serial.println(val1);
35
-
36
- val1 = read_byte_data_at(VL53L0X_REG_IDENTIFICATION_MODEL_ID);
37
- Serial.print("Device ID: "); Serial.println(val1);
38
-
39
- val1 = read_byte_data_at(VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD);
40
- Serial.print("PRE_RANGE_CONFIG_VCSEL_PERIOD="); Serial.println(val1);
41
- Serial.print(" decode: "); Serial.println(VL53L0X_decode_vcsel_period(val1));
42
-
43
- val1 = read_byte_data_at(VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD);
44
- Serial.print("FINAL_RANGE_CONFIG_VCSEL_PERIOD="); Serial.println(val1);
45
- Serial.print(" decode: "); Serial.println(VL53L0X_decode_vcsel_period(val1));
46
-
47
- write_byte_data_at(VL53L0X_REG_SYSRANGE_START, 0x01);
48
-
49
- byte val = 0;
50
- int cnt = 0;
51
- while (cnt < 100) { // 1 second waiting time max
52
- delay(10);
53
- val = read_byte_data_at(VL53L0X_REG_RESULT_RANGE_STATUS);
54
- if (val & 0x01) break;
55
- cnt++;
56
- }
57
- if (val & 0x01) Serial.println("ready"); else Serial.println("not ready");
58
-
59
- read_block_data_at(0x14, 12);
60
- uint16_t acnt = makeuint16(gbuf[7], gbuf[6]);
61
- uint16_t scnt = makeuint16(gbuf[9], gbuf[8]);
62
- uint16_t dist = makeuint16(gbuf[11], gbuf[10]);
63
- byte DeviceRangeStatusInternal = ((gbuf[0] & 0x78) >> 3);
64
-
65
- Serial.print("ambient count: "); Serial.println(acnt);
66
- Serial.print("signal count: "); Serial.println(scnt);
67
- Serial.print("distance "); Serial.println(dist);
68
- Serial.print("status: "); Serial.println(DeviceRangeStatusInternal);
69
-}
70
-
71
-uint16_t bswap(byte b[]) {
72
- // Big Endian unsigned short to little endian unsigned short
73
- uint16_t val = ((b[0] << 8) & b[1]);
74
- return val;
75
-}
76
-
77
-uint16_t makeuint16(int lsb, int msb) {
78
- return ((msb & 0xFF) << 8) | (lsb & 0xFF);
79
-}
80
-
81
-void write_byte_data(byte data) {
82
- Wire.beginTransmission(address);
83
- Wire.write(data);
84
- Wire.endTransmission();
85
-}
86
-
87
-void write_byte_data_at(byte reg, byte data) {
88
- // write data word at address and register
89
- Wire.beginTransmission(address);
90
- Wire.write(reg);
91
- Wire.write(data);
92
- Wire.endTransmission();
93
-}
94
-
95
-void write_word_data_at(byte reg, uint16_t data) {
96
- // write data word at address and register
97
- byte b0 = (data &0xFF);
98
- byte b1 = ((data >> 8) && 0xFF);
99
-
100
- Wire.beginTransmission(address);
101
- Wire.write(reg);
102
- Wire.write(b0);
103
- Wire.write(b1);
104
- Wire.endTransmission();
105
-}
106
-
107
-byte read_byte_data() {
108
- Wire.requestFrom(address, 1);
109
- while (Wire.available() < 1) delay(1);
110
- byte b = Wire.read();
111
- return b;
112
-}
113
-
114
-byte read_byte_data_at(byte reg) {
115
- //write_byte_data((byte)0x00);
116
- write_byte_data(reg);
117
- Wire.requestFrom(address, 1);
118
- while (Wire.available() < 1) delay(1);
119
- byte b = Wire.read();
120
- return b;
121
-}
122
-
123
-uint16_t read_word_data_at(byte reg) {
124
- write_byte_data(reg);
125
- Wire.requestFrom(address, 2);
126
- while (Wire.available() < 2) delay(1);
127
- gbuf[0] = Wire.read();
128
- gbuf[1] = Wire.read();
129
- return bswap(gbuf);
130
-}
131
-
132
-void read_block_data_at(byte reg, int sz) {
133
- int i = 0;
134
- write_byte_data(reg);
135
- Wire.requestFrom(address, sz);
136
- for (i=0; i<sz; i++) {
137
- while (Wire.available() < 1) delay(1);
138
- gbuf[i] = Wire.read();
139
- }
140
-}
141
-
142
-
143
-uint16_t VL53L0X_decode_vcsel_period(short vcsel_period_reg) {
144
- // Converts the encoded VCSEL period register value into the real
145
- // period in PLL clocks
146
- uint16_t vcsel_period_pclks = (vcsel_period_reg + 1) << 1;
147
- return vcsel_period_pclks;
148
-}
Chip-dat/ST-dat/ST-sensor-dat/VL53L0X.pdf
... ...
Binary files a/Chip-dat/ST-dat/ST-sensor-dat/VL53L0X.pdf and /dev/null differ
Chip-dat/ST-dat/st-dat.md
... ...
@@ -28,6 +28,10 @@ Morse Micro Wi-Fi HaLow == https://www.morsemicro.com/products/
28 28
29 29
30 30
31
+
32
+
33
+
34
+
31 35
## ref
32 36
33 37
- [[chip-dat]]
... ...
\ No newline at end of file
Chip-dat/amsys-sensor-dat/amsys-sensor-dat.md
... ...
@@ -0,0 +1,9 @@
1
+
2
+# amsys-sensor-dat
3
+
4
+MS5611 – high resolution barometric sensor 10 – 1200 mbar
5
+
6
+
7
+## ref
8
+
9
+- [[chip-dat]]
... ...
\ No newline at end of file
Chip-dat/bosch-dat/bosch-dat.md
... ...
@@ -5,6 +5,8 @@
5 5
6 6
- [[BME280-dat]] - [[BMP580-dat]] - [[BMP680-dat]]
7 7
8
+
9
+
8 10
- [[BNO055-dat]]
9 11
10 12
Smart sensor combining accelerometer, gyroscope, magnetometer and orientation software
... ...
@@ -14,6 +16,17 @@ Integrated MCU + flash. Integrated sensor fusion.
14 16
https://www.bosch-sensortec.com/products/smart-sensor-systems/bno055/
15 17
16 18
19
+BMI055 == 6-axis inertial sensor
20
+
21
+The BMI055 is a very small, 6 axis inertial sensor, consisting of: A digital, triaxial 12bit acceleration sensor and a digital, triaxial 16bit, ±2000°/s gyroscope. The BMI055 allows very low-noise measurement of angular rates and accelerations in 3 perpendicular axes and thus senses tilt, motion, shock and vibration in mobile phones, handhelds, computer peripherals, man-machine interfaces, remote and game controllers.
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
17 30
## BME688
18 31
19 32
![](2025-07-13-01-22-49.png)
Chip-dat/isentek-dat/isentek-dat.md
... ...
@@ -0,0 +1,11 @@
1
+
2
+# isentek-dat
3
+
4
+IST8310 == 3D Magnetometer
5
+
6
+iSentek IST8310 is a 3-axis digital magnetometer with a 3.0 x 3.0 x 1.0 mm3 , 16-pin LGA package. It is an integrated chip with 3-axis magnetic sensors, digital control logic, built-in temperature compensation circuit, and self-test function. IST8310 provides an I 2C digital output with fast mode up to 400 kHz.
7
+
8
+
9
+## ref
10
+
11
+- [[sensor-motion-dat]]
... ...
\ No newline at end of file
Network-dat/RC-dat/RC-system-dat/ArduPilot-dat/ArduPilot-dat.md
... ...
@@ -93,4 +93,6 @@ Note 8: These systems have integrated HD video transmission from Ethernet or HDM
93 93
94 94
## ref
95 95
96
+- [[pixhawk-dat]]
97
+
96 98
- [[ardupilot-dat]] - [[FPV]]
... ...
\ No newline at end of file
Network-dat/RC-dat/RC-system-dat/ArduPilot-dat/pixhawk-dat/pixhawk-dat.md
... ...
@@ -0,0 +1,22 @@
1
+
2
+# pixhawk-dat
3
+
4
+- [[ST-sensor-dat]]
5
+
6
+- LS303D
7
+
8
+- MPU9250 - [[InvenSense-dat]]
9
+
10
+- MS5611 - [[amsys-sensor-dat]]
11
+
12
+- ICM-20602
13
+
14
+- ICM-20689
15
+
16
+- BMI055 - [[bosch-dat]]
17
+
18
+- MS5611
19
+
20
+- IST8310
21
+
22
+
Tech-dat/Sensor-dat/sensor-motion-dat/3-axis-gyroscope-dat/3-axis-gyroscope-dat.md
... ...
@@ -5,7 +5,7 @@
5 5
6 6
- [[InvenSense-dat]]
7 7
8
-
8
+- [[st-sensor-dat]]
9 9
10 10
## ref
11 11
Tech-dat/Sensor-dat/sensor-motion-dat/sensor-motion-dat.md
... ...
@@ -1,8 +1,18 @@
1 1
2 2
# motion-sensor-dat
3 3
4
+- [[3-axis-gyroscope-dat]] - [[3-axis-Accelerometer-dat]] - [[3-Axis-Magnetic-dat]]
5
+
6
+- [[6-axis-dat]]
7
+
8
+
9
+
10
+
11
+## chips
12
+
13
+- [[isentek-dat]] - [[st-sensor-dat]] - [[bosch-dat]] - [[InvenSense-dat]] - [[amsys-sensor-dat]]
14
+
4 15
5
-## motion sensor
6 16
7 17
8 18
## Sensor Comparison Table
... ...
@@ -63,7 +73,9 @@ most simple motion sensor
63 73
- [[ultrasonic-sensor-dat]]
64 74
65 75
66
-## Motion sensor types [[sensor-TOF-dat]]
76
+## Motion sensor types
77
+
78
+[[sensor-TOF-dat]]
67 79
68 80
- [[accelerometer-dat]] - [[gyroscope-dat]] - [[magnetometer-dat]] - [[PIR-sensor-dat]] - [[radar-sensor]] - [[TOF-sensor-dat]] - [[LiDAR-sensor-dat]] - [[compass-sensor-dat]]
69 81
Tech-dat/tech-dat.md
... ...
@@ -127,7 +127,7 @@
127 127
128 128
### Sensors and actuator
129 129
130
-- [[sensor-dat]] - [[current-sensor-dat]] - [[current-transformer-dat]]
130
+- [[sensor-dat]] - [[sensor-motion-dat]] - [[sensor-current-dat]] - [[current-transformer-dat]]
131 131
132 132
- [[acturator-dat]] - [[motor-dat]] - [[motion-control-system-dat]] - [[dc-gear-motor-dat]] - [[mosfet-dat]] - [[pump-dat]]
133 133
... ...
@@ -148,7 +148,7 @@
148 148
149 149
- [[serial-dat]] - [[serial-wireless-dat]]
150 150
151
-- [[memory-dat]] - [[signal-dat]] - [[analog-dat]] - [[digital-dat]]
151
+- [[memory-dat]] - [[signal-dat]] - [[analog-dat]] - [[digital-dat]] - [[data-storage-dat]]
152 152
153 153
- [[PWM-dat]] - [[I2C-dat]] - [[SPI-dat]] - [[UART-dat]] - [[CAN-dat]] - [[RS485-dat]] - [[RS232-dat]]
154 154