centerqi 发表于 2015-9-4 13:41:04

攀藤 G3 粉尘激光传感器

最近买了 攀藤 G3 粉尘激光传感器 ,但是没有任何说明书和参考代码。


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


谢谢

zoologist 发表于 2015-9-4 14:13:12

参考我写的 攀藤 G1 的用法吧......

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

另外,你哪里买的,找卖家要啊

zoologist 发表于 2015-9-4 14:18:17

你的目标是什么?

我刚买一个 G3

centerqi 发表于 2015-9-4 16:09:21

准备做一下办公室的pm2.5的监控

mc.six 发表于 2015-9-5 07:27:13

参考这个吧http://www.geek-workshop.com/thread-14547-1-1.html
接线图,淘宝网页上有

zoologist 发表于 2015-9-5 21:52:48

晚上写了一个程序 lz可以试试


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

然后pc上选择串口即可

centerqi 发表于 2015-9-5 21:59:23

zoologist 发表于 2015-9-5 21:52 static/image/common/back.gif
晚上写了一个程序 lz可以试试




非常感谢哈,好像是delphi的,我的是在arduino上面,麻烦有参考的吗?

centerqi 发表于 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){
//处理逻辑
}

}


这是我写的基本代码,但是发现读不进数据。

zoologist 发表于 2015-9-6 10:33:00

centerqi 发表于 2015-9-5 22:09 static/image/common/back.gif
void setup() {
pinMode(10, OUTPUT);//pin3 set high
digitalWrite(10, HIGH);


你说的读不进来指的是什么意思

centerqi 发表于 2015-9-6 10:46:02

Serial.available条件不满足。
while (Serial.available() > 0){
//处理逻辑
}

centerqi 发表于 2015-9-6 22:54:47

今天重新看了一下书册,发现已经可以work了,但是在读取数据包的时候有点问题,第三个字节溢出。

void ProcessSerialData()//读取PMS1003的数据。并根据通信协议转化成有效的值。
{
unsigned int mData = 0;
unsigned int i = 0;
unsigned int mPkt = {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 =mData;
      mData = Serial.read();
      if(mData ==0x4d)//head2 ok
      {
          mPkt =mData;
          mCheck = 66+77;
          for(int i=2;i < 22;i++)//data recv and crc calc
          {
             mPkt = Serial.read();
             delay(2);
             Serial.print(i);
             Serial.print(" ");
             Serial.println(mPkt);
             mCheck += mPkt;
          }
          mPkt = Serial.read();
          delay(1);
          mPkt = Serial.read();
          Serial.println();
          Serial.print(mCheck);
          Serial.print("");
          Serial.println(mPkt*256+mPkt);
          if(mCheck == mPkt*256+mPkt)//crc ok
          {
            
            Serial.flush();
            xyz = mPkt*256+mPkt;
            Serial.println("done23"+xyz);
            return;
          }
      }      
   }
   }
}

mlf8888 发表于 2015-12-23 08:18:42

zoologist 发表于 2015-9-4 14:13 static/image/common/back.gif
参考我写的 攀藤 G1 的用法吧......

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


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

zoologist 发表于 2015-12-23 08:39:14

mlf8888 发表于 2015-12-23 08:18 static/image/common/back.gif
你好
我刚买了一个G3,用你的软件测试很方便,在此感谢!
我想问一下,测试结果中两个PM2.5,这两个PM2 ...

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

你用原始值好了

lovezypj 发表于 2016-1-13 22:30:21

centerqi 发表于 2015-9-6 22:54 static/image/common/back.gif
今天重新看了一下书册,发现已经可以work了,但是在读取数据包的时候有点问题,第三个字节溢出。

void P ...

if(mCheck == mPkt*256+mPkt)//crc ok

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

我看微创联合上面写的是前13位?

dingshidong 发表于 2016-3-7 22:27:11

mlf8888 发表于 2015-12-23 08:18 static/image/common/back.gif
你好
我刚买了一个G3,用你的软件测试很方便,在此感谢!
我想问一下,测试结果中两个PM2.5,这两个PM2 ...

大气环境下是国标(环保部),CF=1是美标(美使馆),一般在国内用大气环境下。
页: [1] 2
查看完整版本: 攀藤 G3 粉尘激光传感器