Raspberry Pi 读取攀藤G3 PM2.5

前言

最近刚刚入手一个树莓派2B(:smirk:好吧,2代B型),把之前买FFU时一起买入的用来测试PM2.5激光传感器攀藤G3接入了进去,下面是具体步骤:

接线

先得搞定接入管脚,接错了烧了的话就不好了:
下图是攀藤传感器手册上的管脚定义:

下面是树莓派2代GPIO管脚定义图的一部分

接入管脚基本上如下:

  • PIN1 接到 VCC(2/4)
  • PIN2 接到 GND(6/9/14)
  • PIN3 接到 GPIO口,我接到了11上面,这个口用了设置传感器是否工作,如果要它一直工作的话不用接,但是考虑要让它长时间工作的话,最好还是接一下,
  • PIN5 接到 RXD(10)

串口准备

接下来把树莓派开起来,此处省略刷树莓派过程。
还有一个工作,默认情况下树莓派把串口作为调试口,因此要把这部分功能关掉,注意,我用的是Raspbian Jessie,其他版本的Raspbian可能会不同,自行google之,以上方法也是google到的,已经测试成功。

  1. 修改/boot/cmdline.txt,去掉console=ttyAMA0,115200,往上的blog里面看到的是需要去掉console=ttyAMA0,115200 kgdboc=ttyAMA0,115200,应该是不同的Raspbian版本
  2. 这一步与Raspbian版本也有关系,我的系统采用了service的模式,因此不需要修改文件,只需要关掉服务即可:
  1. sudo systemctl stop serial-getty@ttyAMA0.service
  2. sudo systemctl disable serial-getty@ttyAMA0.service
  1. 重启树莓派

编码

这里我就直接把贴Python代码了,在网上找的一小段串口通讯小程序上改的,读了之后写到sqlite中,比较简陋,大家凑合看吧:

  1. #encoding=utf-8
  2. import serial
  3. import time
  4. from struct import *
  5. import sqlite3
  6. # 打开串口
  7. print "Opening Serial Port...",
  8. ser = serial.Serial("/dev/ttyAMA0", 9600)
  9. print "Done"
  10. def main():
  11. cnt = 0
  12. conn = sqlite3.connect('pm25.db')
  13. c = conn.cursor()
  14. while True:
  15. # 获得接收缓冲区字符
  16. count = ser.inWaiting()
  17. if count >= 24:
  18. # 读取内容并回显
  19. recv = ser.read(count)
  20. cnt = cnt + 1
  21. print "[%d]Recieve Data" % cnt,
  22. print len(recv), "Bytes:",
  23. tmp = recv[4:16]
  24. datas = unpack('>hhhhhh', tmp)
  25. print datas
  26. sql_str = """insert into pm_log ('pm1','pm2_5','pm10') values (%d,%d,%d)""" % (datas[0], datas[1],datas[2])
  27. c.execute(sql_str)
  28. conn.commit()
  29. #ser.write(recv)
  30. # 清空接收缓冲区
  31. ser.flushInput()
  32. # 必要的软件延时
  33. time.sleep(0.1)
  34. c.close()
  35. conn.close()
  36. if __name__ == '__main__':
  37. try:
  38. main()
  39. except KeyboardInterrupt:
  40. if ser != None:
  41. ser.close()

以下是运行效果:

树莓派工作时的靓照(注:G3旁边的是温湿度仪,等调试好了发博汇报):

上面还留了一个哏,要控制G3休眠与工作:

  1. import RPi.GPIO as GPIO
  2. import time
  3. pin = 17 # 11管脚对于的BCM管脚号码
  4. GPIO.setmode(GPIO.BCM)
  5. GPIO.setup(pin, GPIO.OUT) #写
  6. GPIO.output(pin, GPIO.HIGH) #工作
  7. GPIO.output(pin, GPIO.LOW) #休息

尾声

后面要把家里的环境参数用树莓派发布出来,可以网页/手机等方式查看,另外,记录下变化曲线,来检查FFU工作情况
未完待续……

发表评论

电子邮件地址不会被公开。 必填项已用*标注