【树莓派IOT入门】模拟搭建一个气象站_树莓派气象台

  • remote_server中的IP部分指的是云服务器的公网IP
  • remote_directory指的是云服务器上放置源代码的目录。

4. 树莓派边缘服务器搭建

4.1 树莓派系统安装

  • 在树莓官网下载 Raspberry Pi Imager 。地址为:Raspberry Pi OS – Raspberry Pi
  • 我在树莓派上安装的系统是ubuntu带桌面,其他linux的系统也是可以的。
  • 树莓派安装OS的文章网上有很多,如果遇到问题可自行查找。

4.2 连接BME280到树莓派并进行调试

4.2.1 BME280 硬件接口介绍

这里接口定义只需简单了解下即可。如果想了解BME280详细资料,可自行上网查找。

4.2.2 BME280 硬件连接到树莓派

连接 BME280 到树莓派的 GPIO 引脚。BME280 通常使用 I2C 连接,包括电源(VCC)、地(GND)、数据线 SDA(Serial Data)、时钟线 SCL(Serial Clock)。确保正确连接。

  • VCC -> 3.3V(树莓派上的 3.3V 电源)
  • GND -> GND(树莓派上的地)
  • SDA -> SDA(树莓派上的 GPIO2)
  • SCL -> SCL(树莓派上的 GPIO3)

连接完如上图。这一步大胆按照说明去做就行。

4.2.3 在树莓派上查看BME280环境传感器的I2C地址

我们在树莓派上使用I2C命令来查看BME280的地址

在命令行执行命令: i2cdetect -y 1

记住这个值 0x77

修改 /你的代码路径/my_iot/common/constants/constants.go 文件,将BME280I2CAddress设置为你得到的值

4.2.4 测试BME280

以下命令在开发机执行

  • cd /你本地的源代码路径/my_iot/raspi/deploy
  • sh ./deploy.sh

以下命令在树莓派(边缘服务器)上执行

  • cd /树莓派上的上传代码目录/raspi/device
  • go test -run Test_Bme280

当看到如下输出

说明bme280已可以正常工作。至此,树莓派+BME280已可以正常运行。下面我们来进行云端的配置。

5. 云端服务器搭建

5.1 设备上行消息到服务器整体流程

IOT设备一般的数据上行方式如上图所示。

  1. 设备通过各自的topic将消息使用mqtt协议上传到server(这里使用的是emqx)

  2. emqx 将数据转发到kafka队列中进行业务数据持久化

  3. 业务端通过消费kafka队列中的消息,完成具体的业务逻辑。

5.2 中间件启动

以下操作在本地开发机上执行

  • cd /你本地的源代码路径/my_iot/iot_server/deploy
  • sh ./deploy.sh

以下操作在云服务器上执行

  • cd /你的云服务器上传目录/iot_server
  • sudo docker-compose up -d

在启动前请检查 iot_server 目录下的 .env 文件中的 INTERNAL_IP 内网地址。要确保这个内网地址设置正确。

5.2.1 kafka 创建用于接受emq消息的topic

在云服务器端执行

sudo docker exec -it kafka /opt/bitnami/kafka/bin/kafka-topics.sh --create --topic device-upload --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

5.3 emqx 消息转发设置

5.3.1 log in emqx

登录      EMQX Dashboard   替换你自己的云服务器IP。

首次登录用户名/密码:admin/public

5.3.2 设置连接器

kafka连接器只有emq企业版才有,这就是我们选择企业版的原因。

做如下设置:

kafka:9092 也可以改为{你的云服务器内网IP}:9092。这里可以直接使用kafka是因为所有中间件在docker-compose文件中被设置到了一个网络里。如果你没有使用docker-compose启动中间件,这里就需要改成你的内网IP。

最后,在连接器列表中看到

即配置连接器成功。

5.3.3 emq消息转发kafka规则设置

入口

新增规则

SELECT

topic,payload,clientid

FROM

“device/upload/#”

在此页面中,点击页面右边的添加动作按钮

做如下配置

至此,完成emq消息转发给kafka进行持久化配置。

6. 启动项目

6.1 启动SME280传感器

进入树莓派服务器

先换一下源,执行: go env -w GOPROXY=https://goproxy.cn,direct

  • cd 你的树莓派代码目录/raspi/deploy
  • sh ./build_job.sh
  • sh ./start_job.sh bme280 {}

JOB进程启动后,可以根据启动后指定的log目录,进去看一下是否有错误信息。

6.2 启动云服务端消费程序

登录你云服务器

先换一下源,执行: go env -w GOPROXY=https://goproxy.cn,direct

  • cd /你的云服务器代码上传目录/iot_server/deploy
  • sh ./build_job.sh
  • sh ./start_job.sh device_upload_consumer {}

JOB进程启动后,可以根据启动后指定的log目录,进去看一下是否有错误信息。

6.3 启动应用服务接口

登录你云服务器

  • cd /你的云服务器代码上传目录/iot_server/deploy
  • sh ./service_start web_socket

6.4 查看站点气象数据

Api 请求地址:

curl --location ‘http://{你的云服务器域名或公网IP:}8901/api/device/info?device_code=bme280’ \

–header ‘Site-Id: weather_station_1’

请求参数说明

  • Site-Id (header 传递) 气象站点ID
  • device_code (query 传递) 设备编码

请求header中传递的Site-Id,来自于项目配置文件中的site-info。如果多站点配置,只需要修改不通站点的site-info就可以。

返回数据:

// 返回数据中的 timestamp , 为消息在边缘服务器最初被生产出来的时间。
{
    "code": 0,
    "data": "{\"humidity\":19.166992,\"pressure\":101042.2,\"temperature\":24.76,\"timestamp\":1704887724}"
}


6.5 远程访问边缘服务器

由于边缘服务器是没有独立IP的,因此我们不可以直接访问。

常用的解决方法是:

  1. 边缘服务器进行反向SSH连接到某个云服务器。我们先SSH登录这个有独立IP的云服务器,然后再SSH登录到边缘服务器即可。同样道理,当反向SSH通道建立成功后,我们也可以先把代码上传到云服务器上,然后从云服务器上部署代码到边缘服务器,再登录边缘服务器启动程序。

  2. 使用vpn解决

PS

至此,一个BME280环境传感器从产生数据到最后在终端展现的完整流程就结束了。

本篇文章作为入门篇只介绍了单一站点(weather_station_1),单一设备(BME280环境传感器)的数据上行流程,相较于正式项目,还有一些需要补充的内容。

由于个人精力有限,后续有精力会继续完成。

未完成的部分

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

[外链图片转存中…(img-La7GPTpF-1715628346818)]

[外链图片转存中…(img-zAEDXtM5-1715628346819)]

[外链图片转存中…(img-Anpl4Vvn-1715628346819)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值