前言
之前用的都是华为云,最近有个朋友需要将树莓派采集的 dht11、BH1750 数据上传到阿里云,所以边学边做吧。
阿里云设置
创建产品和设备
参考阿里官方教程
创建产品和对应设备并获取设备证书_物联网应用开发-阿里云帮助中心 (aliyun.com)
1.2 定义产品物模型
参考阿里官方教程
物联网应用开发如何为产品定义物模型_物联网应用开发-阿里云帮助中心 (aliyun.com)
树莓派设置
镜像烧录(开启 SSH、设置 wifi 名称和密码)
阿里云有教程,但是没说连接 wifi 和 ssh 的问题
-
建议先参考微雪的教程(点击跳转),烧录系统(同时开启 SSH 和 WiFi)
-
然后参考阿里云的教程更新源
注意:记得按照教程,开启 SSH 并配置 wifi,待会有用
使用树莓派(以下方案任选,只要能控制树莓派就行)
-
最简单的方案:给树莓派外接键盘、鼠标、显示器;把树莓派当成一台电脑使用
-
用 VScode 的 remote ssh
VSCODE 远程开发树莓派_vscode ssh orangepi-CSDN 博客
连接后,直接将文件拖进 VScode 中树莓派的文件夹即可
-
其它(mobaxterm、putty 等等)
传感器及代码
温湿度传感器
参考阿里教程
将树莓派设备接入物联网平台实现数据上报_物联网应用开发-阿里云帮助中心 (aliyun.com)
如何通过温湿度传感器搜集环境数据_物联网应用开发-阿里云帮助中心 (aliyun.com)
前提条件
已完成本文上述工作
硬件连接
-
准备 DHT11 传感器设备。
-
将传感器接入到树莓派的主板。
传感器拥有四个引脚,从左往右依次是 VCC 供电、数据、空、GND 负极。由于数据脚需要上拉电平支持,所以我们需要使用一个额外的 10 KΩ 电阻连接 VCC 与数据管脚,具体连接如下图。
注意:有些 dht11 只有三个引脚,这和四个引脚的 dht11 没有区别!因为四引脚的 dht11,有个脚是 NC(没有用,不用接) ,三个引脚的图片如下:
安装依赖程序
传感器的数据传递功能需要安装依赖程序开启。
- 在 bash 执行以下命令,完成程序安装。
cd /home/pi/Desktop
sudo apt update
sudo apt install git
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python3 setup.py install
cd /
sudo python3 -m pip install --force-reinstall paho-mqtt -i https://mirrors.aliyun.com/pypi/simple/
#备注(只是解释一下):
#cd /home/pi/Desktop进入目录/home/pi/Desktop,这是进入树莓派的桌面;
#pi指的是用户名,要看你自己的用户名
#sudo apt update是更新系统
#sudo apt install git安装git
#git clone https://github.com/adafruit/Adafruit_Python_DHT.git从国外仓库下载代码,下载好一次就行了
#cd Adafruit_Python_DHT进入目录,这个目录就是刚才从国外下载的仓库代码
#sudo python3 setup.py install执行仓库里的setup.py程序
#cd /回到顶层目录
- 继续 bash 执行以下命令,测试传感器是否已经工作正常。
python3
import Adafruit_DHT
humidity, temperature = Adafruit_DHT.read_retry(11, 4)
humidity,temperature
如果传感器连接并且工作正常,会返回正确的温度与湿度数据。
程序解读(run.py)
完整程序(直接放到树莓派即可使用):code_xianyu.zip
- 导入库(run.py)
#!/usr/bin/python3
import aliLink,mqttd,rpi
import time,json
import Adafruit_DHT
- 三元素(iot 后台获取)(run.py)
ProductKey = '***'
DeviceName = 'raspberrypi4-******'
DeviceSecret = "assef***"
- topic (iot 后台获取)(run.py)
POST = '/sys/***/raspberrypi4-***/thing/event/property/post' # 上报消息到云
POST_REPLY = '/sys/***/raspberrypi4-***/thing/event/property/post_reply'
SET = '/sys/***/raspberrypi4-***/thing/service/property/set' # 订阅云端指令
- 消息回调(云端下发消息的回调函数)(run.py)
def on_message(client, userdata, msg):
# print(msg.payload)
Msg = json.loads(msg.payload)
switch = Msg['params']['PowerLed']
rpi.powerLed(switch)
print(msg.payload) # 开关值
- 连接回调(与阿里云建立链接后的回调函数)(run.py)
def on_connect(client, userdata, flags, rc):
pass
- 链接信息(run.py)
Server, ClientId, userNmae, Password = aliLink.linkiot(DeviceName, ProductKey, DeviceSecret)
- mqtt 链接(run.py)
mqtt = mqttd.MQTT(Server, ClientId, userNmae, Password)
mqtt.subscribe(SET) # 订阅服务器下发消息topic
mqtt.begin(on_message, on_connect)
- 信息获取上报,每 10 秒钟上报一次系统参数(run.py)
while True:
time.sleep(10)
# 获取传感器信息
humidity, temperature = Adafruit_DHT.read_retry(11, 4)
# 构建与云端模型一致的消息结构
updateMsn = {
'temperature': temperature,
'humidity': humidity
}
JsonUpdataMsn = aliLink.Alink(updateMsn)
print(JsonUpdataMsn)
mqtt.push(POST, JsonUpdataMsn) # 定时向阿里云IOT推送我们构建好的Alink协议数据
运行程序
在 bash 执行以下命令。
cd /home/pi/Desktop/code/
python3 run.py
-
数据结果如图所示。
-
在 IoT 平台查询上报的数据。
前往设备详情页,单击物模型数据 > 运行状态,查看新增的机房温度和湿度数据。
接入后的效果图如下所示。
光照传感器
基本设置
-
连接硬件
请按照下图连接
-
开启 IIC
在 bash 执行((会出现一个界面,需要手动选择)选择******
Interfacing Options
高级设置将****I2C
设置为****Enable
**然后重启系统)sudo raspi-config
-
重启后对 IIC 进行测试,在 bash 执行
sudo i2cdetect -y 1
-
应该得到下图所示
-
安装依赖
在 bash 执行(PS:注意看是否看装成功)
sudo apt-get install python-smbus pip install smbus
-
上传代码
将代码文件,上传到树莓派
程序解读
(记得去阿里云,新增物模型-光照强度, 参考前面的新建温湿度物模型)
和之前的温湿度代码差不多,新增了 BH1750 函数(已封装),可以直接读取光照强度并上传,执行
cd code_xiyan#进入代码文件夹,路径要自己确认一下
python run.py
程序部分大同小异,就不细讲了
结果如下:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于