DHT22 传感器的校验和无效

从 DHT22 传感器读取的位如下:

0000000111010001000000001110111111101111

如果我们通过他们给出的公式计算他们的校验和:

DHT22 传感器的校验和无效

参考:https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf

如果您将示例中的每个八位字节都转换为十进制并将其与最后 8 位(校验和)进行比较 - 它们是相等的。

Binary:      Decimal:
00000001     1     //First  8 bits
11010001     209   //Second 8 bits
00000000     0     //Third  8 bits
11101111     239   //Fourth 8 bits
---------------------------------->
Summed:      449
------------ Not equal ----------->
11000001     193   //Check sum

当转换 16 位湿度和 16 位温度时,它们显示基于其他流行 DHT22 库的正确结果,但校验和无效。

exchange456 回答:DHT22 传感器的校验和无效

我误解了他们给出的公式。 最后 8 位是指 4 个八位字节总和的最后 8 位:

Binary:                       Decimal:
00000001                      1     //First  8 bits
11010001                      209   //Second 8 bits
00000000                      0     //Third  8 bits
11101111                      239   //Fourth 8 bits
---------------------------------->
Summed:                       449
449 as Binary:                111000001
449's last 8 bits:            11000001
11000001 as decimal:          193
----------------------------- Equal ----------->
11000001                      193   //Check sum

我希望有同样问题的人来解决这个问题,因为我花了数小时的时间尝试找出导致问题的原因。

在他们的示例中,它们的总和也低于 255,甚至更难捕捉到它,因为您不需要删除一点,因为该值不大于 8 位。

本文链接:https://www.f2er.com/28415.html

大家都在问