Orange pi 连接温度传感器

Orange pi 连接温度传感器

阅读门槛:需要了解一些香橙派开发板的基础知识(可以去看看我之前的文章有介绍),linux系统的相关知识,并且会看基本的python代码,我的机子烧录的系统是 Ubuntu22,其它系统的话可以作为参考。

简介

本文主要记录通过 orangePi(香橙派)连接温度传感器,并用Python 脚本最终实现温度监控的过程。主要是其间有不少坑,我也算是提前踩了,希望对你们有用。

前期准备

  1. orangePI zero 3(其它的板子也行)
  2. 面包板
  3. Ds18b20 温度传感器
  4. 小灯珠(可选)

操作流程

1. 线路连接

首先我们需要知道开发板的每个pin针脚代表的意思。可以参考我之前的介绍orangePI的文章。

当知道原理的情况下,连接起来就很简单。

我们需要知道的是温度传感器上有三个引脚,分别对应的:

  1. 红色:电源(我接的是5v电压,由于温度传感器可以支持3.3v - 5.5v电压,所以 3v 电压引脚也是可以的)
  2. 灰色:地线
  3. 绿色:数据传输(理论上只要是gpio的口都可以,我这里连接的是pin12引脚)

连接原理图参考如下:

温度传感器连接图

我这里用了额外的连接线方便用小灯珠调试,实际操作过程中这个额外的连接杜邦线可以不用,按照上面的连接原理形成一个电路闭环即可,实物连接图如下:

connect_pic

线连接好,基本上已经成功一半了。接下来就是代码的编写了。

2. 安装环境依赖

这里我用到了一个依赖包 wiringpi,默认情况下香橙派是自带的,这个步骤就可以跳过。

如果系统没有的话也可以自己安装一下,步骤也很简单(以下步骤需要在root权限下运行)

一、安装依赖包

1
2
root@orangepi:~# sudo apt-get update
root@orangepi:~# sudo apt-get -y install git swig python3-dev python3-setuptools

二、下载 wiringOP-Python 的源码

注意,下面的 git clone–recursive 命令会自动下载 wiringOP 的源码,因为wiringOP-Python 是依赖 wiringOP 的。请确保下载过程没有因为网络问题而报错。

1
2
root@orangepi:~# git clone --recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next root@orangepi:~# cd wiringOP-Python
root@orangepi:~/wiringOP-Python# git submodule update --init --remote

三、编译 wiringOP-Python

1
2
root@orangepi:~# cd wiringOP-Python
root@orangepi:~/wiringOP-Python# python3 generate-bindings.py > bindings.i root@orangepi:~/wiringOP-Python# sudo python3 setup.py install

四、查看安装是否成功

当提示下面的内容,则表示安装成功了!

1
2
3
4
5
6
7
8
9
root@orangepi:~/wiringOP-Python# python3 -c "import wiringpi; help(wiringpi)" Help on module wiringpi:
NAME wiringpi
DESCRIPTION
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.
...

3. 代码编写

创建一个脚本叫:index.py,参考以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# index.py
import wiringpi
from wiringpi import GPIO
import time

PIN = 6 # 这里对应的是物理针脚 12号

def oneWireReset(pin):
wiringpi.pinMode(pin, GPIO.OUTPUT)
wiringpi.digitalWrite(pin, GPIO.HIGH)
wiringpi.digitalWrite(pin, GPIO.LOW)
wiringpi.delayMicroseconds(500)
wiringpi.digitalWrite(pin, GPIO.HIGH)
wiringpi.delayMicroseconds(60)
wiringpi.pinMode(pin, GPIO.INPUT)
if not wiringpi.digitalRead(pin):
ack = 1
else:
ack = 0
wiringpi.delayMicroseconds(500)
return ack

def writeBit(pin, bit):
wiringpi.pinMode(pin, GPIO.OUTPUT)
wiringpi.digitalWrite(pin, GPIO.LOW)
wiringpi.delayMicroseconds(2)
wiringpi.digitalWrite(pin, bit)
wiringpi.delayMicroseconds(80)
wiringpi.digitalWrite(pin, GPIO.HIGH)
wiringpi.delayMicroseconds(1)

def oneWireSendComm(pin, byte):
i = 0
while i < 8:
sta = byte & 0x01
writeBit(pin, sta)
byte >>= 1
i += 1

def readBit(pin):
wiringpi.pinMode(pin, GPIO.OUTPUT)
wiringpi.digitalWrite(pin, GPIO.HIGH)
wiringpi.digitalWrite(pin, GPIO.LOW)
wiringpi.delayMicroseconds(2)
wiringpi.digitalWrite(pin, GPIO.HIGH)

wiringpi.pinMode(pin, GPIO.INPUT)
wiringpi.delayMicroseconds(2)

tmp = wiringpi.digitalRead(pin)
wiringpi.delayMicroseconds(40)
return tmp

def oneWireReceive(pin):
i = 0
k = 0
while i < 8:
j = readBit(pin)
k = (j << 7) | (k >> 1)
i += 1
k = k & 0x00FF
return k

def tempchange(lsb, msb):
if (msb >= 0xF0):
msb = 255 - msb
lsb = 256 - lsb
tem = -(msb*16*16 + lsb)
else:
tem = (msb*16*16 + lsb)
temp = tem*0.0625
print("Current Temprature: %.2f"%(temp))

def main():
wiringpi.wiringPiSetup()
lsb = 0
msb = 0
if oneWireReset(PIN):
oneWireSendComm(PIN, 0xcc)
oneWireSendComm(PIN, 0x44)
if oneWireReset(PIN):
oneWireSendComm(PIN, 0xcc)
oneWireSendComm(PIN, 0xbe)
lsb = oneWireReceive(PIN)
msb = oneWireReceive(PIN)
tempchange(lsb, msb)

if __name__ == '__main__':
while True: # 创建一个循环,两秒钟输出一次温度信息
main()
time.sleep(2)

4. 结果展示

运行脚本:python index.py, 就会有当前实时温度信息展示

Oct-09-2024 17-44-50

小结

随着对开发板的日渐熟悉,我越来越坚定软件硬件都是服务于人类的。每个人都可以通过自己DIY来让自己的生活更上一层楼。而这需要的成本是非常低的。

我的快乐很简单,就是自己动手创造一个自己喜欢的生活方式,构建一个自己想要的世界。拜拜👋

作者

dev

发布于

2024-10-09

更新于

2024-11-08

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×