资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
由项目实例从零开始学arduino系列(一)项目:利用arduino自制pm2.5检测仪目的:通过自制pm2.5检测仪过程掌握arduino控制板接口电路,1602液晶显示屏连接arduino控制板显示技术,相关arduino编程语言,灰尘传感器连接arduino控制板方法。知识点:1602液晶显示,灰尘传感器接法,基础的arduino编程语言。白话文式讲解一、 硬件连接(图在详细讲解处)(一)粉尘传感器连接nano板 SHARP GP2Y1010AU0F型灰尘/粉尘传感器的红色线为6号线,向左依次为5,4,3,2,1号线。粉尘传感器6号线接Arduino nano板的5V端。粉尘传感器5号线接Arduino nano板的A0端。粉尘传感器4号线接Arduino nano板的GND端。粉尘传感器3号线接Arduino nano板的D2端。粉尘传感器2号线接Arduino nano板的GND端。粉尘传感器1号线接150欧姆电阻和220uF的电解电容正极,150欧姆电阻的另一端接Arduino nano板的5V端。220uF的电解电容负极接Arduino nano板的GND端。(二)1602液晶屏连接nano板 1602液晶屏上标有数字针脚,一般是16针。我们用到了12个针脚。液晶屏第16针连接Arduino nano板的GND端。液晶屏第15针连接Arduino nano板的5V端。液晶屏第14针连接Arduino nano板的D6端。液晶屏第13针连接Arduino nano板的D7端。液晶屏第12针连接Arduino nano板的D8端。液晶屏第11针连接Arduino nano板的D9端。液晶屏第1针连接Arduino nano板的GND端。液晶屏第2针连接Arduino nano板的5V端。液晶屏第3针先接1k电阻,电阻另一端连接Arduino nano板的D6端。液晶屏第4针连接Arduino nano板的D12端。液晶屏第5针连接Arduino nano板的D11端。液晶屏第6针连接Arduino nano板的D10端。二、软件代码#include /lcd显示的应用库LiquidCrystal lcd(12, 11, 10, 9, 8, 7, 6); /lcd显示与nono连接的端口/12:rs,11:rw,10,enable,9:d9,8:d8,7:d7,6:D6/液晶屏 LCD1602_RS端 连接 nano的D12端;/液晶屏LCD1602_RW端 连接nano的D11端;/液晶屏LCD1602_EN端 连接 nano的D10端;/传感器定义int dustPin = 0; /夏普灰尘传感器黑色线,传感器输出到nano的A0端float dustVal = 0; /灰尘传感器输出到nano的电压值,与灰尘浓度成函数关系,int ledPower = 2; /夏普灰尘传感器绿色线,nano的D2输出作为夏普灰尘传感器激光头电源,激光头发/射激光遇到灰尘散射,散射越厉害,灰尘传感器向外输出电压越高int delayTime = 280;int delayTime2 = 40;float offTime = 9680;void setup (void) lcd.begin(16, 2); /初始化lcd,16列,两行 lcd.print(hello,cp);/开机字符 / Serial.begin(9600); /串口初始化,电脑可以和nano交互 pinMode(ledPower, OUTPUT); / A0 give 传感器5号 pinMode(dustPin, INPUT); / Digital pin 2 give 传感器3号void loop (void) lcd.home();/每次刷新字符都回到原始零位 digitalWrite(ledPower, LOW); delayMicroseconds(delayTime); dustVal = analogRead(dustPin);/读取灰尘传感器的模拟电压输出到nano的A0端 delayMicroseconds(delayTime2); digitalWrite(ledPower, HIGH); delayMicroseconds(offTime); delay(1000); / Serial.println(dustVal);/电脑作为显示设备看输出的电压,数值越高灰尘越多 dustVal = dustVal * (5.0 / 1023); /电压换算 , Arduino A0-A5口为ADC引脚,其分辨率为10位,也就是 /1024级,输出数值为0-1023,默认以输入电压5V作为基准电压。 dustVal = 0.17 * dustVal - 0.1;/电压值转换为灰尘浓度线性函数关系 dustVal=dustVal*1000;/mg和ug的换算 Serial.println(dustVal);/串口通信写 lcd.print(PM2.5: ); lcd.setCursor(0, 1);/换行 lcd.print(dustVal); lcd.setCursor(7, 1);/换行 lcd.print(ug/m3);详细讲解一、控制板知识准备(有基础的可以略过) 本项目中可以选择经济实惠的入门级别arduino nano板(淘宝价约15元),或者arduino uno板(淘宝价约25元),没必要用配置最高的2560板(淘宝价约45元),两者接线类似,具有互换性,比如arduino nano接线的模拟A0口,如果换到arduino uno板上也是模拟A0口。出于便于推广的考虑,我们采用了成本最低的nano板子。Arduino Nano的技术参数:1. 12个数字输入/输出端口D2-D13。2. 8个模拟输入端口A0-A7。3. 1对TTL电平串口收发端口RX/TX。4. 6个PWM端口,D3, D5, D6, D9, D10, D11。5. 采用Atmel Atmega328P-AU单片机。6. 支持USB下载及供电。7. 支持外接3.3V-12V直流电源供电。8. 支持锂电池及9V电池供电。9. 支持ISP下载。二、灰尘传感器知识准备 对于激光式灰尘传感器,基本原理是传感器让空气自由流过(一些空气测试仪内部有小风扇起到空气流通的作用,在这里我们用来回走动的方式代替小风扇),定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。灰尘传感器市面上较为普及的是高精度的攀藤 G5 PMS5003传感器(淘宝价约88元)和较为便宜的夏普SHARP GP2Y1010AU0F型灰尘/粉尘传感器(淘宝价约25元),出于普及的考虑我们选用了SHARP GP2Y1010AU0F型灰尘/粉尘传感器。灰尘传感器接线 Arduino 接线 1 Vled 5V (先接150欧姆电阻,再接5v,买传感器时有配套) 2 LED-GND GND(接地) 3 LED Digital pin2 (Arduino板子上数字D2端)黄色4 S-GND GND(接地)黑色 5 Vo Analog pin 0(Arduino板子上模拟A0端)红色6 Vcc 5V粉尘浓度dustdensity = 0.17 * voltage - 0.1;/大概的线性函数关系。在图上可看到粉尘浓度超过0.5mg/m3的时候,传感器输出的电压受到限制,不会无限增高,也就超出了传感器的有效测量范围。这也就是我们常说的爆表:pm2.5超过500ug/m3(1mg=1000ug)。到这里,其实我们已经可以测试空气中的粉尘浓度了,只不过要和电脑连线,通过arduino软件的串口监视器功能得到电压数据,来检测空气质量,因为用电脑的显示器作为输出,所以移动性和便携性较差。但此时的硬件成本最低,算是空气检测仪的最小系统。使用简化版本的软件代码如下:/ 定义使用nano的A0端,连接 灰尘传感器5号线int dustPin=0; float dustVal=0; / 定义使用nano的Digital pin 2端,连接 灰尘传感器3号线int ledPower=2; int delayTime=280;int delayTime2=40;float offTime=9680;void setup()Serial.begin(9600);pinMode(ledPower,OUTPUT); pinMode(dustPin, INPUT); void loop()/ ledPower is any digital pin on the arduino connected to Pin 3 on the sensordigitalWrite(ledPower,LOW);delayMicroseconds(delayTime);dustVal=analogRead(dustPin);delayMicroseconds(delayTime2);digitalWrite(ledPower,HIGH);delayMicroseconds(offTime);delay(1000);if (dustVal36.455)Serial.println(float(dustVal/1024)-0.0356)*120000*0.035);测试得到的数据和空气质量对照:3000 + = 很差1050-3000 = 差300-1050 = 一般150-300 = 好75-150 = 很好0-75 = 非常好为了能让空气检测仪脱离电脑连线独立工作,我们还要再加上一个LCD1602液晶屏。三、1602 LCD液晶屏知识准备1602 LCD液晶屏(焊好排线的1602屏淘宝价约7.5元,没焊排线的约4.9元),有8线接法和4线接法,为了节约端口,我们采用了四线接法。1602液晶的16针接地,背光源负极1602液晶的1针接地1602液晶的15针正极,背光源正极1602液晶的2针正极1602液晶的14针Arduino板的 D 6端1602液晶的3针液晶偏压信号,接1k电阻后再接正极1602液晶的13针Arduino板的 D 71602液晶的4针Arduino板的 D12,rs1602液晶的12针Arduino板的 D 81602液晶的5针Arduino板的 D11,rw1602液晶的11针Arduino板的 D 916
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号