步骤1:连接
EzTemp在用您的串行端口RaspberryPi通信。
确定RaspberryPi串行引脚。
RPiGND连接到EzTempGND。
RPiTx到EzTempRx。
RPiRx到EzTempTx。
RPi3.3V至EzTemp3.3V。
请注意,Tx必须连接引脚Rx引脚,反之亦然。
现在可以用了EzTemp!
[您可以在Tindie上获得EzTemp]
步骤2:禁止串行控制台
默认情况下,RaspberryPi使用串行端口作为外壳程序。MarcR我们需要禁止串行控制台使用评论中指出的(感谢提示)EzTemp。
方法1:raspi-config脚本
通过操作最简单的方法raspi-config脚本禁用串行控制台。打开外壳并输入:
sudoraspi-config
它将显示一个菜单,只需转到8AdvancedOptions》A7Serial,然后选择否。
现在重新开始Pi并转到下一步。
方法2:自动脚本
我们可以用rpi-serial-console脚本禁用和启用串行控制台。要安装它,请打开外壳并键入:
sudowgethttps://raw.githubusercontent.com/lurch/rpi-serial-console/master/rpi-serial-console-O/usr/bin/rpi-serial-console&&sudochmod x/usr/bin/rpi-serial-console
只需操作即可显示串行控制台是否已启用:
rpi-serial-consolestatus
To只需运行禁用串行控制台:
sudorpi-serial-consoledisable
只需运行即可启用串行控制台:
sudorpi-serial-consoleenable
串行控制台启用或禁用后,您可以
方法3:手动
然后用你喜欢的编辑器打开文件:
sudonano/boot/cmdline.txt
其内容应如下:
dwc_otg.lpm_enable=0console=tty1console=ttyAMA0,115200root=/dev/mmcblk0p2rootfstype=ext4elevator=deadlinerootwait
删除对ttyAMA任何引用0,都可以得到这样的内容:
dwc_otg.lpm_enable=0console=tty1root=/dev/mmcblk0p2rootfstype=ext4elevator=deadlinerootwait
保存更改,然后打开inittab:
sudonano/etc/inittab
文件末尾注释如下:
T0:23:respawn:/sbin/getty-LttyAMA0115200vt100
重新启动Pi并转到下一步。
[您可以在Tindie上获得EzTemp]
步骤3:下载示例脚本
在RaspberryPi您必须下载此脚本。您可以打开外壳并输入以下内容:
wgethttps://raw.githubusercontent.com/CAIMANICS/EzTempRH-for-Raspberry-Pi/master/software/EzTempRH.py
现运行脚本输入:
pythonEzTempRH.py
就是这样!你在运行!EzTemp。
EzTemp&RHbuild2
Temperature:24.0C
Humidity:48.0%
External:1018/2048counts
Version:2
让我们看看如何在程序中使用它。
[您可以在Tindie上获得EzTemp]
第四步:修理程序
在这里,我们将分析脚本的各个部分,以便您能够理解并修改项目
首先,我们需要打开串行端口。使用脚本PySerial该操作由模块执行。
importserial
ser=serial.Serial(‘/dev/ttyAMA0’,9600,timeout=1)
现在,让我们在传感器中查询构建值。这是一个静态值,用于标识EzTemp的版本。
首先,我们需要方向EzTemp发送命令‘v’:
ser.write(“v”)
构建值是2字节值,所以要期待EzTemp提供4字节(1字节回声) 2字节构建 1字节验证和)响应。现在,读取响应:
s=ser.read(4)
虽然构建标志符是2字节的值,但数据是单独接收的。为了重建它,我们必须向左移动最高有效字节8位,然后添加最低有效字节。这样,我们就可以正确地恢复2字节的字段:
version=(ord(s1 ord(s[2])
每次从EzTemp收到2字节值时,可使用上述句子。
这一块的最后一行代码只在屏幕上打印结果:
print‘EzTemp&RHbuild’ str(version)
脚本的其余部分来自EzTemp以温度值为例:
ser.write(“d”)
s=ser.read(4)
temperature=(ord(s[1])《《8) ord(s[2])
print‘Temperature:’ str(1.0*temperature/10) ‘C’
在这种情况下,我们使用命令d”以摄氏0.1度精度查询温度。正如你所看到的,捕获响应非常相似。区别在于如何处理返回值。
当我们以0.1当精度查询温度或任何其他参数时,数据将以两个字节的整数形式接收,占该值的十分之一。也就是说,如果温度是21.5oC,则EzTemp接收值为215,用户脚本必须除以10才能获得实际温度。
如果没有,所有值都有整数精度命令。小数点。使用这些命令简化了读取和处理返回数据的过程。检查数据表中的完整命令列表。