内容介绍
内容介绍
1.简介
使用Wio Terminal采集4个传感器的数据,实时显示在屏幕上,通过5向按键控制,可以进入传感器数据波形图界面。
选择的传感器
- HC-SR04 超声传感器
- 光敏传感器
- MQ-2气敏传感器
- 水位传感器
MQ-2常用于家庭和工厂的气体泄漏监测装置,适宜于液化气、苯、烷、酒精、氢气、烟雾等的探测。故因此,MQ-2可以准确来说是一个多种气体探测器。适合用于家庭安全监测。
HC-SR04模块高精度,盲区小。 产品应用领域:物体测距,可应用于检测人体靠近。
以上几款传感器选择适合于智能家居等环境的数据采集。
2.原理图
有三个传感器是通过扩展接口连接到Wio Terminal,其中MQ-2同时读取了数字和模拟信号。
Wio Terminal本身供电能力比较强,因此是直接从扩展接口供电。
3.程序和实物演示
3.1初始化程序
上电后配置IO分配和初始化。
和屏幕界面初始化。LCD绘制初始的图案和界面。
void io_init()
{ pinMode(WIO_5S_UP, INPUT_PULLUP);
pinMode(WIO_5S_DOWN, INPUT_PULLUP);
pinMode(WIO_5S_LEFT, INPUT_PULLUP);
pinMode(WIO_5S_RIGHT, INPUT_PULLUP);
pinMode(WIO_5S_PRESS, INPUT_PULLUP);
pinMode(WIO_LIGHT, INPUT);
pinMode(A2, INPUT);//MQ-2
pinMode(A3, INPUT);//water level
pinMode(D4, INPUT);//echo
pinMode(D0, OUTPUT);//echo trig
pinMode(D5, INPUT);//MQ-2
}
void lcd_init()
{ myGLCD.init();
digitalWrite(LCD_BACKLIGHT, HIGH);
myGLCD.setRotation(3);
myGLCD.fillScreen(TFT_BLACK);//背景白色
myGLCD.fillRoundRect(3, 3, 157, 117, 8, TFT_LIGHTGREY);
myGLCD.fillRoundRect(6, 6, button_W, button_H, 10, TFT_GREEN);
myGLCD.fillRoundRect(12 + 151, 6, button_W, button_H, 10, TFT_YELLOW);
myGLCD.fillRoundRect(6, 111 + 12, button_W, button_H, 10, TFT_RED);
myGLCD.fillRoundRect(12 + 151, 111 + 12, button_W, button_H, 10, TFT_BLUE);
myGLCD.setTextSize(2);
myGLCD.setTextColor(TFT_BLACK); // Background is not defined so it is transparent
myGLCD.setTextFont(0); // Select font 0 which is the Adafruit font
myGLCD.setCursor(10, 15); myGLCD.print("MQ-2:");
myGLCD.setCursor(160 + 10, 15); myGLCD.print("Brightness:");
myGLCD.setCursor(10, 120 + 15); myGLCD.print("Distance:");
myGLCD.setCursor(160 + 10, 120 + 15); myGLCD.print("water level:");
}
上电后初始化界面,读取四个传感器数据,并显示在屏幕上。
3.2传感器函数和实物图
光敏传感器ADC读取函数和实物图。
myGLCD.setCursor(160 + 10, 15 + 30);
myGLCD.println(analogRead(WIO_LIGHT));
MQ-2气敏传感器ADC读取函数和实物图
if (digitalRead(D5) == HIGH) {//气敏传感器数字信号读取
myGLCD.setCursor(10, 15 + 30); myGLCD.print("Safe");
}
else
{ myGLCD.setCursor(10, 15 + 30); myGLCD.print("Warning!!!");
}
a1 = a2;
a2 = 230 - (analogRead(A2)) * 204.8 / 1024;//波形图数据读取
水位传感器ADC读取函数和实物图
myGLCD.print(analogRead(A3), DEC);
myGLCD.setCursor(120, 5);
myGLCD.print(3.3 * analogRead(A3) / 1024);
myGLCD.print("V");//读取电压值并显示在屏幕上
超声传感器驱动函数和实物图
digitalWrite(D0, LOW);//echo
delayMicroseconds(20);
digitalWrite(D0, HIGH);
delayMicroseconds(20);
digitalWrite(D0, LOW); //发一个20US的高脉冲去触发Trig
distance = pulseIn(D4, HIGH);
distance = distance * 340 / 2 / 10000;
if (selection3 == 1) {
selection3 = 0; a2 = 230 - distance / 2;
}
a1 = a2;
a2 = 230 - distance / 2;
myGLCD.setTextSize(2); myGLCD.fillRect(35, 5, 150, 20, TFT_WHITE);
myGLCD.setCursor(35, 5);
myGLCD.print(distance);
myGLCD.print("cm");
4.心得体会
Wio Terminal整个开发感受是便捷和完善,相对于单片机平台,大大减少了驱动开发时间,不需要触及太多MCU的硬件资料,更多地专注到产品功能的开发。强大的库文件支持非常多模块。
最后感谢得捷电子和硬禾苗学堂的支持。
附件下载
程序.zip
团队介绍
产品设计工程师
评论
0 / 100
查看更多
猜你喜欢
Funpack第12期Wio Terminal的LCD显示传感器数据Funpack12期,任务一,Arduino IDE
LCD显示热释电红外线传感器,MQ烟雾传感器,温度传感器的数据
涵尘者
670
Funpack第12期之Wio Terminal传感器数据采集LCD屏幕显示Funpack第12期活动项目,使用Wio Terminal的扩展接口完成了任务一:利用扩展接口,自由选择连接三到五个传感器,并将采集的数据显示在LCD屏幕上,并解释数据的含义。
eelover
822
Funpack第12期-Wio Terminal-传感器测试看看封面就够了,内容也没什么好看的,如果非要点的话,也可以。
qewtry
806