基于树莓派RP2040实现PM2.5数据采集
本次参加活动是使用RP2040芯片,制作一个PM2.5数据采集器
标签
嵌入式系统
liuliuliu
更新2023-07-04
河南科技学院
1182

项目介绍

      本次参加活动使用的芯片是 RP2040,双核 Arm Cortex-M0 + @ 133MHz,有30 个 GPIO 引脚,2 个 UART、2 个 SPI 控制器和 2 个 I2C 控制器,16 个 PWM 通道等。芯片内置 264KB SRAM,需要外置闪存芯片,我使用的是W25Q64 8MB闪存芯片。

      根据树莓派Pico中文站的相关文档描述(具体视频里有描述),不难画出相关原理图。本次使用 Pico 串口0和串口1,对PM2.5数据采集并打印出来。首先是绘制原理图如下:

使用了Typ-c的USB口,支持正反插入。

Fk080Z5j01_DyaSXDxYjkDlXvcrU

绘制的时候注意网格的大小,一定不要一直改网格大小,以及线是否连接上了引脚,否则可能PCB里没有连线,放大原理图引脚就看到没连上。

如下所示PCB的绘制,一定要注意孤铜的地方,是否连接上,和走线和焊盘是否连接上,绘制完成后好好检查下。

FpgDXQ7L-UWLdgrkHFleiY2SHQ0R

      使用串口1(使用代码里的2号串口)与PM2.5模块的串口相连接,每隔1秒采集一包数据,并解析后打印PM2.5的数据。代码以及打印的数据如下

#include <HardwareSerial.h>
int led = 25;
char data[31]={0};
char serialData = 0;
char hex = 0;
char flag = 0;
int pm=0;
void setup() {
  // put your setup code here, to run once:
  pinMode(led, OUTPUT);
  Serial1.begin(115200);

  Serial2.setRX(5);
  Serial2.setTX(4);
  Serial1.setFIFOSize(128);
  Serial2.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
  // digitalWrite(led, HIGH);
  // delay(500);
  // digitalWrite(led, LOW);
  // delay(500);
   if(Serial2.available() > 0)//串口接收到数据
  {
  Serial2.readBytes(data, 31);
  flag=1;
  // Serial1.println(data[6], DEC);
  // Serial1.println("Input String:");
  }
  if(flag==1)
  {
    flag=0;
    pm=(data[6]<<8)+ data[7];

    // Serial1.write(data,10);
    Serial1.print("PM2.5: ");
    Serial1.print(pm);
    Serial1.print(" ug/m3");
    pm=0;
    delay(1000);
  }
  else{

    Serial1.print("NO-PM2.5\n");
  }

}

FnvlgjMbY4n7MKzCLIUNwK8dH5kz

通过如下的代码对采集到的数据进行处理,得到PM2.5的数据。

 Serial2.readBytes(data, 31);
 pm=(data[6]<<8)+ data[7];

      对于设计中遇到到的问题是,我使用的Arduino框架开发(视频中有配置说明),有些库下载速度很慢,甚至下载了一半提示错误,就只能退出,解决办法是找一个好的网络环境。或者使用离线安装的方法。

离线安装包
https://github.com/earlephilhower/arduino-pico/releases/tag/3.3.0

硬件实物展示:

采集到数据如下

FmQXnpxQ8-JoHAz0m--U8Mq2_LJe

实物图片如下Fuoc1pocezgZY_HDu7AuQ7vsm2Gk

传感器和rp2040的连接如下

FlNb04Unx5TyjfadpDrJT7kVnk3G

 

总结      

1、素材搜集树莓派Pico硬件设计页面 的第12页有关于硬件设计的手册,对照手册的一些介绍不难绘制出原理图。软件开发是在搜集到的PM-T7数据手册里,可以找到需要解析的数据格式,直接进行采集转换即可。

2、优势和局限:rp2040 的高性能双核MCU,可以更加快快程序运行速度,同时拥有可编程 I/O 状态机,而且价格便宜支持超频。只是芯片焊接难度稍大,Arduino 的库也有点小问题。随着时间的推移相信RP2040生态肯定会越来越完善。

3、未来可能会把芯片运用到一些控制类的项目里。

软硬件
电路图
附件下载
rp2040.rar
RP2040.zip
团队介绍
个人
团队成员
liuliuliu
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号