树莓派4B——接入Onenet云平台及使用DHT11传感器读取数据并使用MQTT协议(物模型)上传至Onenet云平台

准备工作

安装好镜像的树莓派4B;DHT11;杜邦线

一、注册Onenet平台账号

Onenet网站:https://open.iot.10086.cn/ 或https://open.iot.10086.cn/passport/login/

这里不过多赘述了!

二、创建产品

1、点击开发者中心

2、点击产品开发

3、创建产品(这里可以改成自定义方案)

c240599f091c4a4991953b44b8fad63d.png

这里看自己的情况选择;

4、添加物模型

8ce3611bf16d43339e28c49164fbc1d0.png

c200989f9d7a4d96b8d928ab11f8acef.png

75f822c345594fe4af308a801ee1ed91.png

①下载SDK的压缩包

②解释说明SDK文件夹里的文件

5、添加设备

db8d57b3a6cb4457b784c3c5c97ea751.png

567699cc3bac4def89d61bf4e7b262a5.png

28d29e563f8d4beca0db0a1856d1755c.png

95569ee3602440ba97af7d92f6bc7ded.png这三个信息接下来在树莓派4B上安装SDK有用!

三、使用SDK连接onenet

1、将下载好的SDK压缩包使用winSCP上传或用U盘拷贝

2、在Linux系统中解压

3、安装一些必要的库,如wiringPi库、cmak。

WiringPi库安装指令(也可以看我的另一篇博客来安装WiringPi):

git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
./build

cmake安装:打开终端输入以下指令:

sudo apt-get install cmake

4、修改SDK文件夹的代码及txt文件

(1)找到main.c

2bf1a8adf6c94f13aeb77aaab75c332e.png

(2)填写信息

3f4d57ba35b84c07b02361166ba2892b.png

(3)修改CMakeLists.txt文件夹信息

7c2b5a0340ca4b2e9228615ef1948dca.png

995bf6c6d61149deb16995b45f6ceba9.png

注:①这是添加自己写的.c文件的路径,最好是和上面的两个.c文件放在一个文件夹里 

        ②这是添加要用的库,如等一下要用WiringPi库就添加:

target_link_libraries(${CMAKE_PROJECT_NAME} wiringPi)

四、数据的上传(这里以湿度上传为例)

1、打开tm_user.c文件并找到以下格式的函数

cf23fc8dfedf491292a7a8d76cc95110.png

2、将这段函数引用到main.c中(这里先演示上传一个定值“66”)

79259abf08c845b8b3c90a229ebba58a.png

3.进入mqtts_onejson_soc_v1.0.1终端

8212e4dbd0c64e6589255721eb393884.png

进行make编译,输入以下指令:

mkdir build              # 创建build文件夹
cd build                 # 进入build文件夹
cmake ..                 # 以../目录下的CMakeLists.txt生成makefile
make                     # 编译
./mqtts_onejson_soc      #执行,以MQTT协议为例

52db501cd9594589ba4f7584f4f3bbbf.png

这就连接成功并上传了一个定值!证明连接成功了!

28bdd9f112bf4e26a010911987ec3c09.png

下图是修改代码实时上传温湿度的代码后显示的效果!

步骤如下:

一、把自己编写的.c文件和.h文件移到上面提到的/home/pi/mqtts_onejson_soc_v1.0.1/examples/things_model文件中,注意把CMakeLists.txt文件修改好。

二、在main.c中引用关于温湿度传感器的变量。

三、按照上面的步骤执行make编译!

这是我的代码有需要自取!

链接:https://pan.baidu.com/s/1yQjKCjK8QIxm9ZZattYNKQ?pwd=40c1 
提取码:40c1

大家也可以自行查看onenet平台的介绍文档:https://open.iot.10086.cn/doc/v5/fuse/detail/916

因作者水平有限,若有不正确的请指正 !!!

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个基于ESP32的温湿度采集系统,我会为您提供一些指导和建议。 1. 硬件准备 您需要准备以下硬件: - ESP32开发板 - DHT11温湿度传感器 - 面包板 - 杜邦线 2. 硬件连接 将DHT11传感器的VCC引脚接到ESP32的3.3V引脚,将DHT11传感器的GND引脚接到ESP32的GND引脚,将DHT11传感器的DATA引脚接到ESP32的GPIO引脚。 3. 软件准备 您需要安装Arduino IDE,并在Arduino IDE中安装ESP32开发板库和PubSubClient库。 4. 编写代码 请参考以下代码: ``` #include <WiFi.h> #include <PubSubClient.h> #include <Adafruit_Sensor.h> #include <DHT.h> #define WIFI_SSID "your_wifi_ssid" #define WIFI_PASSWORD "your_wifi_password" #define MQTT_SERVER "your_mqtt_server" #define MQTT_PORT 1883 #define MQTT_USERNAME "your_mqtt_username" #define MQTT_PASSWORD "your_mqtt_password" #define MQTT_TOPIC "your_mqtt_topic" #define DHTPIN 18 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); void setup() { Serial.begin(115200); delay(1000); dht.begin(); connectWiFi(); connectMQTT(); } void loop() { float temperature = dht.readTemperature(); float humidity = dht.readHumidity(); if (isnan(temperature) || isnan(humidity)) { Serial.println("Failed to read data from DHT sensor"); return; } Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" °C"); Serial.print("Humidity: "); Serial.print(humidity); Serial.println(" %"); char payload[50]; sprintf(payload, "{\"temperature\":%.2f,\"humidity\":%.2f}", temperature, humidity); mqttClient.publish(MQTT_TOPIC, payload); delay(5000); } void connectWiFi() { Serial.print("Connecting to WiFi..."); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println("Connected to WiFi"); } void connectMQTT() { mqttClient.setServer(MQTT_SERVER, MQTT_PORT); while (!mqttClient.connected()) { Serial.print("Connecting to MQTT server..."); if (mqttClient.connect("ESP32Client", MQTT_USERNAME, MQTT_PASSWORD)) { Serial.println("Connected to MQTT server"); } else { Serial.print("Failed to connect to MQTT server, rc="); Serial.print(mqttClient.state()); Serial.println(" retrying in 5 seconds"); delay(5000); } } } ``` 5. 上传代码 将代码上传到ESP32开发板。 6. 测试 打开串口监视器,将波特率设置为115200,可以看到ESP32连接WiFi和MQTT服务器,并且定期上传温湿度数据。 以上是基于ESP32的温湿度采集系统的设计和制作过程。如果您有任何疑问,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值