Funpack第12期 Wio Terminal传感器数据采集器
Funpack第12期 基于Wio Terminal的数据采集器,连接4中传感器,采集数据并显示在屏幕上。
标签
嵌入式系统
llzx
更新2021-12-31
607

1.简介

      使用Wio Terminal采集4个传感器的数据,实时显示在屏幕上,通过5向按键控制,可以进入传感器数据波形图界面。

      选择的传感器

  •    HC-SR04 超声传感器
  •    光敏传感器
  •    MQ-2气敏传感器
  •    水位传感器

      MQ-2常用于家庭和工厂的气体泄漏监测装置,适宜于液化气、苯、烷、酒精、氢气、烟雾等的探测。故因此,MQ-2可以准确来说是一个多种气体探测器。适合用于家庭安全监测。

      HC-SR04模块高精度,盲区小。 产品应用领域:物体测距,可应用于检测人体靠近。

      以上几款传感器选择适合于智能家居等环境的数据采集。

 

2.原理图

      有三个传感器是通过扩展接口连接到Wio Terminal,其中MQ-2同时读取了数字和模拟信号。

      Wio Terminal本身供电能力比较强,因此是直接从扩展接口供电。

FhO3l7Ou9EIEaU00C5TUM0yFOcJV

 

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:");
}

      上电后初始化界面,读取四个传感器数据,并显示在屏幕上。

Fm9EW2P71gNLmZ813IpwJ6WQr8ib

3.2传感器函数和实物图

      光敏传感器ADC读取函数和实物图。

myGLCD.setCursor(160 + 10, 15 + 30);
myGLCD.println(analogRead(WIO_LIGHT));

Fvp9_8L42apqepy4Rf-Cn8ufWI7X

      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;//波形图数据读取

Foe9LC_uT7XiKEDSzadR7SgDjC3u

      水位传感器ADC读取函数和实物图

myGLCD.print(analogRead(A3), DEC);
myGLCD.setCursor(120, 5);
myGLCD.print(3.3 * analogRead(A3) / 1024);
myGLCD.print("V");//读取电压值并显示在屏幕上

FpBhUvhRgaQCQYRCsZU5JQrzFED7

      超声传感器驱动函数和实物图

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");

Fg_liBPTYLsjS584ddnvuaodqsY8

 

4.心得体会

      Wio Terminal整个开发感受是便捷和完善,相对于单片机平台,大大减少了驱动开发时间,不需要触及太多MCU的硬件资料,更多地专注到产品功能的开发。强大的库文件支持非常多模块。

     最后感谢得捷电子和硬禾苗学堂的支持。

附件下载
程序.zip
团队介绍
产品设计工程师
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号