查看: 2514|回复: 2

Arduino/Genuino101DIY空气质量检测仪(PM2.5篇)

[复制链接]

该用户从未签到

发表于 2017-4-13 16:27 | 显示全部楼层 |阅读模式
本帖最后由 Leonardo 于 2017-5-15 11:53 编辑

    现在空气污染严重,衡量空气质量的一个重要指标是PM2.5,那么PM2.5究竟有什么特别之处呢?PM2.5定义是环境空气中空气动力学当量直径小于等于 2.5 微米的颗粒物,他能较长时间悬浮于空气中,其在空气中含量浓度越高就代表空气污染越严重,最致命的是PM2.5不会被呼吸道拦截,可以直接进入肺泡被人体吸收,所以PM2.5的浓度直接关系到了人类的生存健康!检测PM2.5的浓度显得更为重要。
844d0a55-b5fe-414a-b94c-3f60d8d37afc.png
这一节教程我们DIY一款空气质量检测仪,首先我们准备下面几样必要的工具和零件:
第一:Genuino101
第二:OLED模块
第三:3D打印机
第四:PM2.5传感器
抓1.png
3D打印机我们用来制作空气质量检测仪的外壳,PM2.5传感器我们选择了SDS021激光粉尘传感器,此传感器能检测PM2.5和PM10,通过串口通信输出数据,在接线图中我们可以看到引出线的功能 TB29il7XV5N.eBjSZFvXXbvMFXa_!!367875082.jpg
抓2.png
我们首先将传感器连接到101对应的引脚,串口需要交叉连接。PM2.5的通信协议是16进制数据,不能直接使用,使用我们已经打包好了库文件可直接输出数据。
SDS021sensor库文件下载地址:
https://github.com/vyuke/SDS021sensor

将这个库文件下载到电脑
导入libraries文件夹中
现在我们需要实现将PM2.5的值显示到OLED模块中
OLED显示屏通过iic通讯
我们需要把OLED模块的scl-sda引脚和101的scl-sda相连接
然后将OLED模块的-,+与101的GND,VCC相连接
R引脚为reset复位引脚
将R脚拉高即可
D引脚为地址选择角
在默认状态中可以悬空
屏幕快照 2017-05-15 上午11.51.50.png
最后我们将101与电脑连接
打开IDE
驱动OLED我们需要用到U8g2库
u8g2是一个用于嵌入式设备的单色图形库
在菜单栏中找到“项目”-“加载库”-“管理库”
等待索引下载完成
我们搜索u8g2 屏幕快照 2017-05-15 上午11.52.25.png
点击安装
库文件准备好后
我们将在OLED模块上显示空气质量参数的程序上传到101中

OLED显示空气质量数据代码:
[C++] 纯文本查看 复制代码
#include <Arduino.h>
#include <Wire.h>

//#define LCD_I2C
#define OLED_I2C

#ifdef LCD_I2C
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#endif

#ifdef OLED_I2C
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ 8);
#endif

int i;
int a[10] = {};
boolean stringComplete = false;

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600);
  delay(100);
  ///////////////////////////////////
#ifdef OLED_I2C
  u8g2.begin();
  u8g2.clearBuffer();
  //////////////////////////print_intel_logo
//   const unsigned char intel_logo[] = {
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x03, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x80, 0x03, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x80, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x00, 0x80, 0x03, 0x00, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x80, 0x03, 0x00, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x80, 0x03, 0x00, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x80, 0x03, 0x00, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x80, 0x03, 0x00, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x02, 0x0E, 0xFE, 0x1F, 0xF8, 0x03, 0xFE, 0x80, 0x03, 0x00, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x03, 0x0E, 0xFC, 0x3F, 0xF8, 0x83, 0xFF, 0x81, 0x03, 0x80, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x80, 0x01, 0x0E, 0xFC, 0x3F, 0xF8, 0xC3, 0xE7, 0x83, 0x03, 0x80, 0x07, 0x00, 0x00,
//     0x00, 0x00, 0x80, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xC0, 0x81, 0x83, 0x03, 0x80, 0x03, 0x00, 0x00,
//     0x00, 0x00, 0xC0, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xE0, 0x81, 0x87, 0x03, 0xC0, 0x03, 0x00, 0x00,
//     0x00, 0x00, 0xC0, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xE0, 0x00, 0x87, 0x03, 0xC0, 0x03, 0x00, 0x00,
//     0x00, 0x00, 0x60, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xE0, 0x00, 0x87, 0x03, 0xE0, 0x03, 0x00, 0x00,
//     0x00, 0x00, 0x60, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xF0, 0xFF, 0x8F, 0x03, 0xE0, 0x01, 0x00, 0x00,
//     0x00, 0x00, 0x60, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xF0, 0xFF, 0x8F, 0x03, 0xF0, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xF0, 0x00, 0x80, 0x03, 0xF8, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xF0, 0x00, 0x80, 0x03, 0x7C, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xE0, 0x00, 0x80, 0x03, 0x3E, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0E, 0x1C, 0x78, 0x78, 0xE0, 0x01, 0x80, 0x83, 0x1F, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0E, 0x1C, 0x78, 0x70, 0xC0, 0x01, 0x81, 0x83, 0x0F, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0E, 0x1C, 0x78, 0xF0, 0xC3, 0xCF, 0x87, 0x83, 0x07, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0C, 0x1C, 0x78, 0xE0, 0x83, 0xFF, 0x03, 0x83, 0x01, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x30, 0x00, 0x0C, 0x1E, 0x78, 0xE0, 0x07, 0xFF, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

//   };
//   //u8g2.drawXBMP(0, 0, 128, 64, intel_logo);
//   u8g2.sendBuffer();
//   delay(3000);
//   u8g2.clearBuffer();
  //u8g2.clearBuffer();
  ////////////////////////print_mostfun_logo//与intel_logo同时加入setup后101无响应
  //
  //  const unsigned char mostfun_logo[] = {
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0xC4, 0x1F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xFE, 0xF8, 0x1F, 0x1E, 0xE0, 0xC1, 0xE3, 0x07,
  //    0x64, 0x30, 0x82, 0x01, 0x06, 0x0C, 0x08, 0x0C, 0x10, 0xF8, 0x1F, 0x1E, 0xE0, 0xC1, 0xF3, 0x1F,
  //    0x34, 0x20, 0x01, 0x01, 0x01, 0x18, 0x04, 0x08, 0x10, 0xC0, 0x1B, 0x1E, 0xE0, 0xC1, 0xFF, 0x1F,
  //    0x1C, 0xE0, 0x00, 0x82, 0x01, 0x10, 0x04, 0x10, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x0F, 0x3E,
  //    0x0C, 0x60, 0x00, 0x82, 0x00, 0x20, 0x04, 0x00, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x07, 0x3C,
  //    0x04, 0x40, 0x00, 0x82, 0x00, 0x20, 0x04, 0x00, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x07, 0x3C,
  //    0x04, 0x40, 0x00, 0x42, 0x00, 0x60, 0x08, 0x00, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x42, 0x00, 0x60, 0x18, 0x00, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x42, 0x00, 0x60, 0xE0, 0x07, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x42, 0x00, 0x60, 0x00, 0x0E, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x42, 0x00, 0x60, 0x00, 0x18, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x42, 0x00, 0x20, 0x00, 0x10, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x82, 0x00, 0x20, 0x02, 0x10, 0x10, 0xC0, 0x03, 0x1E, 0xE0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x82, 0x00, 0x30, 0x04, 0x10, 0x10, 0xC0, 0x03, 0x3C, 0xF0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x02, 0x01, 0x10, 0x04, 0x10, 0x10, 0xC0, 0x03, 0x7C, 0xF0, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x02, 0x03, 0x08, 0x08, 0x10, 0x10, 0xC0, 0x03, 0xFC, 0xDF, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x02, 0x06, 0x06, 0x18, 0x0C, 0x10, 0xC0, 0x03, 0xF8, 0xC7, 0xC1, 0x03, 0x3C,
  //    0x04, 0x40, 0x00, 0x02, 0xF8, 0x01, 0xE0, 0x03, 0xE0, 0xC0, 0x03, 0xF0, 0xE3, 0xC1, 0x03, 0x3C,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  //    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
  //
  //  };
  //  u8g2.drawXBMP(0, 0, 128, 64, mostfun_logo);
  //  u8g2.sendBuffer();
  //  delay(5000);
  //  u8g2.clearBuffer();
  ////////////////////////
  //////////////////////////
  u8g2.drawFrame(0, 0, 128, 64);
  u8g2.drawVLine(64, 0, 34);
  u8g2.drawHLine(0, 17, 128);
  u8g2.drawHLine(0, 34, 128);
  u8g2.setFont(u8g2_font_ncenB14_tr);
  ///////////////////////
  u8g2.drawStr(3, 16, "PM2.5");
  u8g2.drawStr(69, 16, "PM10");
  u8g2.drawStr(33, 55, "ug/m^3");
  u8g2.sendBuffer();
#endif

  //////////////////////////////////
#ifdef LCD_I2C
  lcd.init();
  lcd.backlight();
  lcd.setCursor(5, 0);
  lcd.print("Boot...");
  lcd.setCursor(0, 1);
  for (int i = 0; i < 16; i++)
  {
    lcd.write(0xff);
    delay(80);
  }
  lcd.init();
  lcd.setCursor(0, 0);
  lcd.print("Air PM2.5 index");
  lcd.setCursor(10, 1);
  lcd.print("ug/m^3");

  //  lcd.setCursor(0, 1);
  //  lcd.print("PM10.0=");
  //  lcd.setCursor(7, 1);
  //  lcd.print("ug/m^3");
#endif
  ///////////////////////////////////
}

void loop() {
  while (Serial1.available() >= 10)
  {
    if (Serial1.read() == 0xAA)
    { a[0] = 0xAA;
      for (i = 1; i <= 9; i++)
      {
        a[i] = Serial1.read();
      }
      ///////////
      float pm25val = (a[3] * 256 + a[2]) / 10.0;
      float pm10val = (a[5] * 256 + a[4]) / 10.0;
      /////////////sourcevalue
      for (int c = 0; c <= 9; c++)
      {
        Serial.print(a[c], HEX);
        Serial.print(' ');
      }
      ///////////////pm2.5
      Serial.print(" PM2.5 =");
      Serial.print(pm25val);
      Serial.print("ug/m3");
      ///////////////pm10
      Serial.print(" PM10 =");
      Serial.print(pm10val);
      Serial.print("ug/m3");
      Serial.println("");
      //Serial.print(a[0],HEX);
      //Serial.println(a[1],HEX);

      ///////////////lcePrint
#ifdef LCD_I2C
      lcd.setCursor(0, 1);
      lcd.print(pm25val);
#endif

      ///////////////OLEDprint_data
#ifdef OLED_I2C
      //u8g2.clearBuffer();
      //////////////////////////
//      u8g2.drawFrame(0, 0, 128, 64);
//      u8g2.drawVLine(64, 0, 34);
//      u8g2.drawHLine(0, 17, 128);
//      u8g2.drawHLine(0, 34, 128);
//      u8g2.setFont(u8g2_font_ncenB14_tr);
//      ///////////////////////
//      u8g2.drawStr(3, 16, "PM2.5");
//      u8g2.drawStr(69, 16, "PM10");
//      u8g2.drawStr(33, 55, "ug/m^3");
//      u8g2.sendBuffer();
      /////////////////////////////
      u8g2.setFont(u8g2_font_ncenB14_tr);
      
      u8g2.setCursor(8, 33);
      u8g2.print("     ");
      u8g2.setCursor(8, 33);
      u8g2.print(pm25val, 1);
      u8g2.sendBuffer();
      u8g2.setCursor(71, 33);
      u8g2.print("     ");
       u8g2.setCursor(71, 33);
      u8g2.print(pm10val, 1);
      u8g2.sendBuffer();
      //delay(5000);
      u8g2.setFont(u8g2_font_ncenB14_tr);
      ///////////////////////


#endif
    }
  }

}



获取代码后上传到101中,我们可以看到空气质量数据显示到了OLED模块中
屏幕快照 2017-05-15 上午11.53.21.png
打赏作者鼓励一下!

该用户从未签到

发表于 2017-10-8 21:05 | 显示全部楼层
の                      GFXXXΩ

该用户从未签到

发表于 2018-3-6 21:42 | 显示全部楼层
大大,请问arduino uno的板子没有serial1文件,要怎么修改sds021的库文件呀?
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

热门推荐

体验OneNET,登录就送好礼
体验OneNET,登录就送好礼
OneNET--中国移动物联网开发平台,解决协议适配、海量连接、数据存储、设备管理等物
初学arduino求助
初学arduino求助
大佬们,我想问一下,我现在想做一个程序:按下开关持续时间t,延迟7.77t后点亮led0.
Arduino模拟USB鼠标
Arduino模拟USB鼠标
[md]### 模拟鼠标控制 下面将使用摇杆模块和Arduino Leonardo模拟USB鼠标。 [/md] [s
ATK-esp8266WiFi模块
ATK-esp8266WiFi模块
我的esp8266模块以前烧进去过一次,半年没玩了。重新烧就提示错误了[/backcolor] 这是
Arduino MEGA 与UNO 通过nRF24L模块通讯
Arduino MEGA 与UNO 通过n
之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
快速回复 返回顶部 返回列表