查看OpeniKair的源代码
←
OpeniKair
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== Overview == [[文件:Ikair-01.jpg | 600px]] [[文件:Ikair-base-board-1.jpg]] 基座: * 一片 TI CC3000 (WiFi) * STM8S105K6 * TI CC2531 (Zigbee) 每个可拆卸部件,内部都有一颗 STM8S105K6,模拟 i2c slave device 所有的部件通过一个 4 pin 的快拆口连接,从圆外往圆心数,其定义为: * 5V * SCL (测试点常常标为 15) <=== STM8S105K6_PIN12 (I2C_SCL) * SDA (测试点常常标为 14) <=== STM8S105K6_PIN11 (I2C_SDA) * GND 所有部件的 STM8S105K6 的 PIN11 (I2C_SDA) 都连到统一的 SDA; PIN12 (I2C_SCL) 都连到统一的 SCL * 底座的 i2c address 是 0x08 (8, decode: 0x10) * 顶盖带触摸的 i2c address 是 0x10 (16, decode: 0x20) * HCHO 甲醛传感器之 i2c address 是 0x28 (40, decode: 0x50) * PM2.5 部件的 i2c address 是 0x30 (48, decode: 0x60) * SHT2x 温湿度传感器的 i2c address 是 0x40 (64, decode: 0x80) * BH1750 光照度传感器之 i2c address 是 0x5C (92, decode: 0xB8) <br><br> == STM8S105K6 == [https://www.st.com/resource/en/datasheet/stm8s105k6.pdf STM8S105K6 Datasheet] [[文件:STM8S105K-QFP32-pinmap.jpg]] <br><br> == Hacking == === Dust Sensor === * i2c address is '''0x30''' * Type is PPD42NS, a STM8S105K6 MCU emulating a i2c slave device <source lang=bash> l`▒▒▒Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 AD 3E E0 45 45 61 01 5F 00 00 00 Reading i2c device... bytes: 34 A1 A4 25 46 46 E6 08 C5 00 00 00 Reading i2c device... bytes: 34 FC C6 52 46 46 E8 0C 50 00 00 00 Reading i2c device... bytes: 34 C1 2F B9 46 46 20 0C 93 00 00 00 Reading i2c device... bytes: 34 0A 05 82 46 46 4D 09 C4 00 00 00 Reading i2c device... bytes: 34 C7 3A BF 46 46 80 09 6F 00 00 00 Reading i2c device... bytes: 34 8D 97 ED 46 46 4C 07 F7 00 00 00 Reading i2c device... bytes: 34 74 B9 38 46 46 94 08 C9 00 00 00 Reading i2c device... bytes: 34 0F 09 7F 46 46 54 07 8B 00 00 00 Reading i2c device... bytes: 34 19 EC 4F 46 46 D5 10 12 00 00 00 Reading i2c device... bytes: 34 CC 0C A2 46 46 00 13 3C 00 00 00 Reading i2c device... bytes: 34 D9 44 DD 46 46 9E 0D 25 00 00 00 Reading i2c device... bytes: 34 15 0F 83 46 46 F5 0A B3 00 00 00 Reading i2c device... bytes: 34 8C 84 FA 46 46 A4 08 54 00 00 00 ...... </source> <source lang=bash> concentration = 1292.44 pcs/L, 365.76 pcs/0.01cf, LowPulsOccu = 211526, Ratio = 0.71 concentration = 2019.79 pcs/L, 571.60 pcs/0.01cf, LowPulsOccu = 331231, Ratio = 1.10 concentration = 830.56 pcs/L, 235.05 pcs/0.01cf, LowPulsOccu = 135637, Ratio = 0.45 concentration = 2811.53 pcs/L, 795.66 pcs/0.01cf, LowPulsOccu = 461557, Ratio = 1.54 concentration = 1997.89 pcs/L, 565.40 pcs/0.01cf, LowPulsOccu = 327624, Ratio = 1.09 concentration = 1817.27 pcs/L, 514.29 pcs/0.01cf, LowPulsOccu = 297887, Ratio = 0.99 concentration = 13836.23 pcs/L, 3915.65 pcs/0.01cf, LowPulsOccu = 2139899, Ratio = 7.13 concentration = 3388.41 pcs/L, 958.92 pcs/0.01cf, LowPulsOccu = 556358, Ratio = 1.85 concentration = 4074.18 pcs/L, 1152.99 pcs/0.01cf, LowPulsOccu = 668694, Ratio = 2.23 concentration = 2964.61 pcs/L, 838.99 pcs/0.01cf, LowPulsOccu = 486733, Ratio = 1.62 concentration = 6126.22 pcs/L, 1733.72 pcs/0.01cf, LowPulsOccu = 100705, Ratio = 3.34 concentration = 4440.79 pcs/L, 1256.74 pcs/0.01cf, LowPulsOccu = 728527, Ratio = 2.43 </source> Another PM2.5: <source lang=bash> Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 Reading i2c device... bytes: 34 ED B0 0E 45 43 ED 00 00 00 00 00 Reading i2c device... bytes: 34 93 F0 D0 46 4F 93 00 00 00 00 00 Reading i2c device... bytes: 34 9F F0 DC 46 4F 9F 00 00 00 00 00 Reading i2c device... bytes: 34 63 D4 D8 46 4F 63 00 00 00 00 00 Reading i2c device... bytes: 34 54 08 C4 45 42 54 00 00 00 00 00 Reading i2c device... bytes: 34 54 08 C4 45 42 54 00 00 00 00 00 Reading i2c device... bytes: 34 54 08 C4 45 42 54 00 00 00 00 00 Reading i2c device... bytes: 34 5E 20 9F 45 43 5E 00 00 00 00 00 Reading i2c device... bytes: 34 5E 20 9F 45 43 5E 00 00 00 00 00 Reading i2c device... bytes: 34 5E 20 9F 45 43 5E 00 00 00 00 00 Reading i2c device... bytes: 34 32 10 B3 45 43 32 00 00 00 00 00 Reading i2c device... bytes: 34 D4 20 16 45 40 D4 00 00 00 00 00 Reading i2c device... bytes: 34 D4 20 16 45 40 D4 00 00 00 00 00 </source> Another PM2.5: <source lang=bash> Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 34 00 00 00 00 34 00 00 00 00 00 Reading i2c device... bytes: 34 86 06 06 44 44 E3 00 2D 00 00 00 Reading i2c device... bytes: 34 86 06 06 44 44 E3 00 2D 00 00 00 Reading i2c device... bytes: 34 86 06 06 44 44 E3 00 2D 00 00 00 Reading i2c device... bytes: 34 86 06 06 44 44 E3 00 2D 00 00 00 Reading i2c device... bytes: 34 60 D8 48 44 44 30 00 55 00 00 00 Reading i2c device... bytes: 34 DE F2 39 45 45 2A 01 35 00 00 00 Reading i2c device... bytes: 34 DE F2 39 45 45 2A 01 35 00 00 00 Reading i2c device... bytes: 34 58 92 2F 45 45 94 01 14 00 00 00 Reading i2c device... bytes: 34 DB 02 BC 45 45 8A 01 15 00 00 00 Reading i2c device... bytes: 34 DB 02 BC 45 45 8A 01 15 00 00 00 Reading i2c device... bytes: 34 15 70 7B 46 46 27 01 E1 00 00 00 Reading i2c device... bytes: 34 3E 3E 08 46 46 16 02 FC 00 00 00 Reading i2c device... bytes: 34 3E 3E 08 46 46 16 02 FC 00 00 00 Reading i2c device... bytes: 34 9A F3 EE 46 46 56 02 36 00 00 00 Reading i2c device... bytes: 34 1D 63 7D 46 46 4C 02 38 00 00 00 Reading i2c device... bytes: 34 1D 63 7D 46 46 4C 02 38 00 00 00 </source> <br> === Temp & Humi === * Type is SHT21/SHT2x * i2c address is 0x40 <br> === HCHO Sensor === * Type is Dart 2-FE5 , a STM8S105K6 MCU emulating a i2c slave device * i2c address is 0x28 Read the sensor data every 5s: <source lang=bash> Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 Reading i2c device... bytes: 33 8F B1 D5 3E 37 FF 01 99 00 00 00 Reading i2c device... bytes: 33 02 27 7A 3E 37 C0 01 98 00 00 00 Reading i2c device... bytes: 33 02 27 7A 3E 37 C0 01 98 00 00 00 Reading i2c device... bytes: 33 95 9E CB 3E 37 81 01 97 00 00 00 Reading i2c device... bytes: 33 24 14 5A 3E 37 42 01 96 00 00 00 Reading i2c device... bytes: 33 BA 8A CC 3E 37 03 01 95 00 00 00 Reading i2c device... bytes: 33 BA 8A CC 3E 37 03 01 95 00 00 00 bytes: 33 BE DA FA 3E 39 D8 01 90 00 00 00 Reading i2c device... bytes: 33 BE DA FA 3E 39 D8 01 90 00 00 00 Reading i2c device... bytes: 33 BE DA FA 3E 39 D8 01 90 00 00 00 Reading i2c device... bytes: 33 21 50 49 3E 39 99 01 8F 00 00 00 Reading i2c device... bytes: 33 21 50 49 3E 39 99 01 8F 00 00 00 Reading i2c device... bytes: 33 50 C7 D6 3E 39 5A 01 8E 00 00 00 Reading i2c device... bytes: 33 50 C7 D6 3E 39 5A 01 8E 00 00 00 </source> <br> === Light Sensor === * Type is BH1750 * i2c address is 0x5C * '''BH1750:''' ** ADDR-> LOW (Pull down), i2c address is 0x23 ** ADDR-> HIGH (Pull up), i2c address is 0x5C <br><br> === Base Station === * i2c address is 0x08 <source lang=bash> aReading i2c device... bytes: 12 73 01 01 00 00 43 00 00 00 00 00 Reading i2c device... bytes: 13 09 FF E0 C1 C4 F6 FF 9C 00 00 00 Reading i2c device... bytes: 16 6A F9 79 42 47 20 02 11 00 00 00 Reading i2c device... bytes: 14 08 FF E0 C1 C4 F7 FF 9C 00 00 00 Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 Reading i2c device... bytes: 13 91 FF 68 C1 C4 6E FF 9C 00 00 00 Reading i2c device... bytes: 16 D2 E0 95 42 47 C2 02 08 00 00 00 Reading i2c device... bytes: 14 90 FF 68 C1 C4 6F FF 9C 00 00 00 Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 Reading i2c device... bytes: 13 8D CC 14 C1 C4 47 FF 9C 00 00 00 Reading i2c device... bytes: 16 84 9D 15 42 45 74 02 30 00 00 00 Reading i2c device... bytes: 14 82 CC 14 C1 C4 48 FF 9C 00 00 00 Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 Reading i2c device... bytes: 13 96 8F 86 C2 C7 CC FF 9C 00 00 00 Reading i2c device... bytes: 16 87 93 1A 42 45 11 02 22 00 00 00 Reading i2c device... bytes: 14 97 8F 86 C2 C7 CD FF 9C 00 00 00 Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 Reading i2c device... bytes: 13 4A CD EE C2 C7 9A FF 9C 00 00 00 Reading i2c device... bytes: 16 8D 9D E6 42 47 43 02 0B 00 00 00 Reading i2c device... bytes: 14 4B CD EE C2 C7 9B FF 9C 00 00 00 Reading i2c device... bytes: 00 00 00 00 00 00 00 00 00 00 00 00 </source> <br> === Head === Touch the head, then send i2c data (No other device): * Write 0x00 (no ack) * Write 0x28 (no ack) 0x44 (no ack) * Write 0x28 (no ack) 0x44 (no ack) [[文件:Touch-iKair-head-then-send-data.png]] <br> Send i2c data (with pm2.5 sensor): 0x00 0x12 0x1E 0x03 0x02 0x00 0x00 0x1A [[文件:Touch-iKair-head-then-send-data2.png]] 第一个字节 0x00 是目标传感部件环灯广播地址,改为 0x60 就只点亮 PM2.5 的环灯 (i2c addr = 0x30), 0x50 就只点亮甲醛传感部件上的环灯 (i2c addr = 0x28) <br><br> == TODO == * <s>重启后 push 的第一条 light 数据为 -1</s> * <s>上传数据间隔不固定。需改为用固定的时间间隔上传数据(比如 1 min),2 s 监测一下热点传感器(比如温度、湿度或者光照),有大的变化就上传数据</s> * 动态开启/关闭 MQTT <br> == Reference == * [[SHT2x]] Digital Humidity & Temperature Sensor * [[PPD42NS]] Dust Sensor * [[BH1750]] Light Sensor * [[Arduino]] * [[ESP8266]] * [[Noduino]] <br><br> <br><br> <br><br> <br><br> <br><br>
返回到
OpeniKair
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面