Funpack第12期Wio Terminal的LCD显示传感器数据
Funpack12期,任务一,Arduino IDE LCD显示热释电红外线传感器,MQ烟雾传感器,温度传感器的数据
标签
Arduino
Funpack
wio terminal
涵尘者
更新2021-12-29
武汉工程大学邮电与信息工程学院
694

Wio Terminal介绍

Wio Terminal 是基于SAMD51的微控制器,具有 Realtek RTL8720DN 支持的无线连接,与Arduino和MicroPython兼容。它的运行速度为 120MHz (最高可达200MHz), 4MB 外部闪存和 192KB RAM。它同时支持蓝牙和Wi-Fi,为物联网项目提供了骨架。Wio Terminal自身配有LCD屏幕, 板载IMU(LIS3DHTR),麦克风,蜂鸣器,microSD卡槽,光传感器和红外发射器(IR 940nm)。 最重要的是它还有两个用于Grove生态系统 的多功能Grove端口和40个Raspberry pi兼容的GPIO引脚,用于支持更多附加组件。

  • MCU, LCD, WIFI, BT, IMU, 麦克风, 蜂鸣器, microSD Card, 光传感器, 五向开关, 光传感器和红外发射器 (IR 940nm), 加密验证
  • 软件支持:Arduino、MicroPython、ArduPy、AT Firmware

Wio Terminal还有大量应用与案例,对于我们的使用提供了极大的帮助。

 

 

 

项目功能介绍

本次利用背部Raspberry pi兼容的GPIO引脚,通过杜邦线连3个传感器:热释电红外线传感器,MQ烟雾传感器,温度传感器。并将数据以折线图的形式展现在屏幕上。

FgtMKkdufnBZlhDbPaC1i5EzDyT3

热释电红外线传感器

Fn088-1qQ_Q2btkOlg76gPO9VSYz

MQ烟雾传感器

FlsaNoQjFPead5eYrkzKxVgqtXOz

温度传感器

 

 

代码分析

这里使用Arduino IDE进行,在Wio Terminal入门教程中有着较为详细的介绍。

其中使用了seeed的折线图

#include"seeed_line_chart.h"//折线图头文件
TFT_eSPI tft;

 

折线图的设置

void setup()
{
  tft.begin();    //初始化
  tft.setRotation(3);   //选择一个角落为原点(能填0~3)
  spr.createSprite(TFT_HEIGHT,TFT_WIDTH);   //定折线图的长和宽
  pinMode(A7,INPUT);
  Serial.begin(9600);
}

void loop()
{
//刷新屏幕
  spr.fillSprite(TFT_WHITE);
  if (data_1.size() == max_size) {  //变量数目超过同屏最大值
    data_1.pop(); //删除第一个数据
  }
  if (data_2.size() == max_size) {
    data_2.pop(); //删除第一个数据
  }
  if (data_3.size() == max_size) {
    data_3.pop(); //删除第一个数据
  }

 

LCD显示设置

//标题设置
    //标题1
    auto header_1 =text(50, 0)//标题位置
    .value("tem")  //标题内容
    .align(center)      //标题水平???
    .valign(vcenter)    //标题垂直???
    .width(6) //标题宽度
    .thickness(3);  //字体的粗细
    header_1.height(header_1.font_height() * 2); //标题的高度是字体高度的两倍
    header_1.draw(); 

    //标题2
    auto header_2 =text(200, 0)//标题位置
    .value("smoke")  //标题内容
    .align(center)      //标题水平???
    .valign(vcenter)    //标题垂直???
    .width(6) //标题宽度
    .thickness(3);  //字体的粗细
    header_2.height(header_2.font_height() * 2); //标题的高度是字体高度的两倍
    header_2.draw(); 

    //标题3
    auto header_3 =text(200, 150)//标题位置
    .value("infra-red")  //标题内容
    .align(center)      //标题水平???
    .valign(vcenter)    //标题垂直???
    .width(6) //标题宽度
    .thickness(3);  //字体的粗细
    header_3.height(header_3.font_height() * 2); //标题的高度是字体高度的两倍
    header_3.draw(); 
  
//设置折线图
  //图1
  auto content_1 = line_chart(0, 0);//折线图原点位置
    content_1
      .height(TFT_WIDTH/2) //折线图的实际高度
      .width(TFT_HEIGHT/2-10) //折线图的实际宽度
      .based_on(0.0)  //不知道???
      .show_circle(false)   //在每个点绘制圆环时,默认设置为启用。
      .value(data_1)  //将数据传递到折线图
      .color(TFT_PURPLE)  //折线图线条的颜色
      .draw();

  //图2
  auto content_2= line_chart(TFT_HEIGHT/2-10, 0);//折线图原点位置
    content_2
      .height(TFT_WIDTH/2) //折线图的实际高度
      .width(TFT_HEIGHT/2-10) //折线图的实际宽度
      .based_on(0.0)  //不知道???
      .show_circle(false)   //在每个点绘制圆环时,默认设置为启用。
      .value(data_2)  //将数据传递到折线图
      .color(TFT_PURPLE)  //折线图线条的颜色
      .draw();

  //图3
  auto content_3= line_chart(0,TFT_HEIGHT/2-50);//折线图原点位置
    content_3
      .height(TFT_WIDTH/2) //折线图的实际高度
      .width(TFT_HEIGHT/2-10) //折线图的实际宽度
      .based_on(0.0)  //不知道???
      .show_circle(false)   //在每个点绘制圆环时,默认设置为启用。
      .value(data_3)  //将数据传递到折线图
      .color(TFT_PURPLE)  //折线图线条的颜色
      .draw();

Arduino永远的神!!!!!!!

至于详细的分析,注释都写德很清楚了。

 

 

 

功能展示

Fv1KPpWKYmq8wP3grH-8H_SDKBt5

这里我们可以看到目前的传感器数据:温度,烟雾,红外。

可以看到10C左右的室温,挺暖和的。

MQ的读数0.08以下,正常,这里没有人吸烟

热释电红外线传感器这里可以看到一个下降,手刚刚略过传感器,正常。

 

 

 

心得体会

这是第12期了从半路上来就一直坚持了下来,12月因为有事所以选择了项目一,Arduino永远的神,简单高效。

这应该是最后一期了,希望后面会有更多的类似活动。

硬禾学堂&得捷电子yyds!!!

附件下载
wio_debug.7z
代码
团队介绍
被学长(我)压榨的苦逼学弟(他)
团队成员
蒭藁增二
随便填 至少他是这么说的
涵尘者
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号