电子说
步骤1:连接
EzTemp使用串行端口在您的Raspberry Pi上进行通信。
确定Raspberry Pi上的串行引脚。然后将:
RPi GND连接到EzTemp GND。
RPi Tx到EzTemp Rx。
RPi Rx到EzTemp Tx。
RPi 3.3V至EzTemp 3.3V。
请注意,Tx引脚必须连接到Rx引脚,反之亦然。
现在您可以使用EzTemp!
[您可以在Tindie上获得EzTemp]
步骤2:禁用串行控制台
默认情况下,Raspberry Pi使用串行端口作为外壳程序。正如MarcR在评论中所指出的(感谢提示),我们需要禁用串行控制台才能使用EzTemp。
方法1:raspi-config脚本
最简单的方法通过运行raspi-config脚本来禁用串行控制台。打开外壳并键入:
sudo raspi-config
它将显示一个菜单,只需转到 8 Advanced Options》 A7 Serial ,然后选择 否 。
现在重新启动Pi并转到下一步。
方法2:自动脚本
我们可以使用 rpi-serial-console 脚本禁用和启用串行控制台。要安装它,请打开外壳并键入:
sudo wget https://raw.githubusercontent.com/lurch/rpi-serial-console/master/rpi-serial-console -O /usr/bin/rpi-serial-console && sudo chmod +x /usr/bin/rpi-serial-console
要显示当前是否启用了串行控制台,只需运行:
rpi-serial-console status
To禁用串行控制台,只需运行:
sudo rpi-serial-console disable
要启用串行控制台,只需运行:
sudo rpi-serial-console enable
在启用或禁用串行控制台后,您可以
方法3:手动
然后用您喜欢的编辑器打开此文件:
sudo nano /boot/cmdline.txt
它的内容应该是这样的:
dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
删除对ttyAMA0的任何引用,得到这样的内容:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
保存更改,然后打开inittab:
sudo nano /etc/inittab
在文件末尾,注释掉以下行:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
重新启动Pi并转到下一步。
[您可以在Tindie上获得EzTemp]
步骤3:下载示例脚本
在Raspberry Pi上,您必须下载此脚本。您可以打开外壳并输入以下内容:
wget https://raw.githubusercontent.com/CAIMANICS/EzTempRH-for-Raspberry-Pi/master/software/EzTempRH.py
现在运行脚本输入:
python EzTempRH.py
就是这样!您正在运行EzTemp。
EzTemp&RH build 2
Temperature: 24.0C
Humidity: 48.0%
External: 1018 / 2048 counts
Version: 2
让我们看看如何在程序中使用它。
[您可以在Tindie上获得EzTemp]
第4步:修补程序
在这里,我们将分析脚本的各个部分,以便您可以理解它,并针对项目进行修改
首先,我们需要打开串行端口。该脚本使用PySerial模块执行此操作。
import serial
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(s[1]) 《《 8) + ord(s[2])
每次从EzTemp收到2字节的值时,都可以使用上面的句子。
最后一行此块的代码只是在屏幕上打印结果:
print ‘EzTemp&RH build ’ + 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精度查询温度或任何其他参数时,数据将以2个字节的整数形式接收,占该值的十分之一。也就是说,如果温度为21.5ºC,则EzTemp会收到值215,并且用户脚本必须除以10才能获得实际温度。
如果不需要,所有值都具有整数精度命令。小数点。使用这些命令简化了读取和处理返回数据的过程。检查数据表中完整的命令列表。
全部0条评论
快来发表一下你的评论吧 !