极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26213|回复: 15

攀藤 G3 粉尘激光传感器

[复制链接]
发表于 2015-9-4 13:41:04 | 显示全部楼层 |阅读模式
最近买了 攀藤 G3 粉尘激光传感器 ,但是没有任何说明书和参考代码。


想在arduino上面使用,哪位有使用过此传感器的经验?包括他的接线方式,数据读取方式。


谢谢
回复

使用道具 举报

发表于 2015-9-4 14:13:12 | 显示全部楼层
参考我写的 攀藤 G1 的用法吧......

就在本论坛(这两天不知道为啥,我的网站挂了)

另外,你哪里买的,找卖家要啊
回复 支持 反对

使用道具 举报

发表于 2015-9-4 14:18:17 | 显示全部楼层
你的目标是什么?

我刚买一个 G3
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-4 16:09:21 | 显示全部楼层
准备做一下办公室的pm2.5的监控
回复 支持 反对

使用道具 举报

发表于 2015-9-5 07:27:13 | 显示全部楼层
参考这个吧http://www.geek-workshop.com/thread-14547-1-1.html
接线图,淘宝网页上有
回复 支持 反对

使用道具 举报

发表于 2015-9-5 21:52:48 | 显示全部楼层
晚上写了一个程序 lz可以试试


走蓝牙的,蓝牙透传的 RX 接在G3 绿色的 TX 上

然后pc上选择串口即可

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-5 21:59:23 | 显示全部楼层
zoologist 发表于 2015-9-5 21:52
晚上写了一个程序 lz可以试试

非常感谢哈,好像是delphi的,我的是在arduino上面,麻烦有参考的吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-5 22:09:30 | 显示全部楼层
void setup() {
  pinMode(10, OUTPUT);//pin3 set high
  digitalWrite(10, HIGH);
  Serial.begin(9600, SERIAL_8N1);
}

void loop() {
  ProcessSerialData();
}

void ProcessSerialData(){

  while (Serial.available() > 0){
//处理逻辑
  }

}


这是我写的基本代码,但是发现读不进数据。
回复 支持 反对

使用道具 举报

发表于 2015-9-6 10:33:00 | 显示全部楼层
centerqi 发表于 2015-9-5 22:09
void setup() {
  pinMode(10, OUTPUT);//pin3 set high
  digitalWrite(10, HIGH);

你说的读不进来指的是什么意思
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-6 10:46:02 | 显示全部楼层
Serial.available条件不满足。
while (Serial.available() > 0){
//处理逻辑
  }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-6 22:54:47 | 显示全部楼层
今天重新看了一下书册,发现已经可以work了,但是在读取数据包的时候有点问题,第三个字节溢出。

void ProcessSerialData()//读取PMS1003的数据。并根据通信协议转化成有效的值。
{
  unsigned int mData = 0;
  unsigned int i = 0;
  unsigned int mPkt[32] = {0};
  int mCheck = 0;
  int xyz=0;
while (Serial.available() > 0)
  {  
    //Basing on the protocol of Plantower PMS1003
    mData = Serial.read();     
    delay(2);//wait until packet is received
    if(mData == 0x42)//head1 ok
     {
        mPkt[0] =  mData;
        mData = Serial.read();
        if(mData ==0x4d)//head2 ok
        {
          mPkt[1] =  mData;
          mCheck = 66+77;
          for(int i=2;i < 22;i++)//data recv and crc calc
          {
             mPkt[i] = Serial.read();
             delay(2);
             Serial.print(i);
             Serial.print(" ");
             Serial.println(mPkt[i]);
             mCheck += mPkt[i];
          }
          mPkt[22] = Serial.read();
          delay(1);
          mPkt[23] = Serial.read();
          Serial.println();
          Serial.print(mCheck);
          Serial.print("  ");
          Serial.println(mPkt[22]*256+mPkt[23]);
          if(mCheck == mPkt[22]*256+mPkt[23])//crc ok
          {
            
            Serial.flush();
            xyz = mPkt[12]*256+mPkt[13];
            Serial.println("done23"+xyz);
            return;
          }
        }      
     }
   }
}

回复 支持 反对

使用道具 举报

发表于 2015-12-23 08:18:42 | 显示全部楼层
zoologist 发表于 2015-9-4 14:13
参考我写的 攀藤 G1 的用法吧......

就在本论坛(这两天不知道为啥,我的网站挂了)

你好
我刚买了一个G3,用你的软件测试很方便,在此感谢!
我想问一下,测试结果中两个PM2.5,这两个PM2.5是什么意思?
应该看哪个?
回复 支持 反对

使用道具 举报

发表于 2015-12-23 08:39:14 | 显示全部楼层
mlf8888 发表于 2015-12-23 08:18
你好
我刚买了一个G3,用你的软件测试很方便,在此感谢!
我想问一下,测试结果中两个PM2.5,这两个PM2 ...

一个是原始值,一个是使用 CF=1 修正值,不过我也不明白CF=1修正是什么意思

你用原始值好了
回复 支持 反对

使用道具 举报

发表于 2016-1-13 22:30:21 | 显示全部楼层
centerqi 发表于 2015-9-6 22:54
今天重新看了一下书册,发现已经可以work了,但是在读取数据包的时候有点问题,第三个字节溢出。

void P ...

if(mCheck == mPkt[22]*256+mPkt[23])//crc ok

你这个校验不对吧?
mCheck 是前22位的和?

我看微创联合上面写的是前13位?
回复 支持 反对

使用道具 举报

发表于 2016-3-7 22:27:11 | 显示全部楼层
mlf8888 发表于 2015-12-23 08:18
你好
我刚买了一个G3,用你的软件测试很方便,在此感谢!
我想问一下,测试结果中两个PM2.5,这两个PM2 ...

大气环境下是国标(环保部),CF=1是美标(美使馆),一般在国内用大气环境下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 22:23 , Processed in 0.044884 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表