世纪电源网社区logo
社区
Datasheet
标题
返回顶部
讨论

DIY红外线非接触式温度计!

[复制链接]
查看: 837 |回复: 1
1
世纪电源网雪花
  • 积分:26590
  • |
  • 主题:719
  • |
  • 帖子:1982
积分:26590
超级版主
  • 2020-2-21 10:36:12
自从疫情爆发以来,额温Q成了稀缺物品,部分企业正在逐渐复工,可谓一Q是难求!各大平台电商也是货源紧缺

但既然是红外线的温度计,就一定有传感器,还是淘宝,果然,找到了这个台湾燃太的TN901红外测温模块150元。OK,那就DIY一个红外体温计吧!


焊上引线


拿泡棉把PCB包住防止外露的元件短路


用两个零件给夹着
固定住
红外测温模块的安装就差不多了

准备好必要的arduino UNO、扩展板和oled

还有金属零件
一顿锁螺丝
一顿拆啊装装啊拆
(都是探索者的东西,就不一一广告啦)


大功告成!


来个三视图:正面

背面

OLED显示屏。现在显示的是室温。

红外温度探头和距离传感器
暴露了凌乱的走线

最关键的程序在这里

#include <TN901.h> //TN901的库
TN901 tn;                 //创建TN901的对象


#include <Arduino.h>
#include <Wire.h>
#include <MicroLCD.h> //OLED的库
LCD_SSD1306 lcd; /* for SSD1306 OLED module */
static const PROGMEM uint8_t tick[16 * 16 / 8] =
{0x00,0x80,0xC0,0xE0,0xC0,0x80,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0x78,0x30,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00}; //显示勾
static const PROGMEM uint8_t cross[16 * 16 / 8] =
{0x00,0x0C,0x1C,0x3C,0x78,0xF0,0xE0,0xC0,0xE0,0xF0,0x78,0x3C,0x1C,0x0C,0x00,0x00,0x00,0x30,0x38,0x3C,0x1E,0x0F,0x07,0x03,0x07,0x0F,0x1E,0x3C,0x38,0x30,0x00,0x00}; //显示叉


#include "LedControl.h" //8*8点阵的库
LedControl lc=LedControl(12,11,13,1);


#include <MsTimer2.h> //定时器的库


void setup()
{
    pinMode(A0,INPUT); //设置距离传感器的端口
    tn.Init(8,2,7);  //tn901初始化
    lcd.begin(); //oled启动
    lcd.setFont(FONT_SIZE_LARGE); //设置字体尺寸
    lcd.setCursor(0, 3);
    lc.shutdown(0,false); //8*8点阵启动
    lc.setIntensity(0,8);
    lc.clearDisplay(0);
    MsTimer2::set(100, flash); // 500ms period //定时器设置,主要让8*8点阵产生呼吸灯效果
    MsTimer2::start();
    ShowHeart();//8*8点阵上显示个心形
}


void loop()
{
  static int temp;  
  int t;
  boolean mode=false; //true - BODY; false - ROOM
  tn.Read(); //读取TN901的温度
  mode=!digitalRead(A0);  //检测距离传感器是否接近人体
  if(mode)  //如果接近人体
  {
       t=tn.OT+180; //tn.OT读取人体温度
       if(temp<t)temp=t;
  }
  else temp=tn.ET-400; //tn.ET,读取环境温度
   LCD_Value(temp,mode); //oled上显示人体温度或环境温度
   delay(200); //延时,以便TN901刷新
}


void LCD_Value(int temp,boolean mode)
{
  lcd.setCursor(30, 3);
  lcd.print((float)temp/100);
  lcd.print(" C");
  if(mode) lcd.draw( tick, 54, 48, 16, 16);
  else     lcd.draw(cross, 54, 48, 16, 16);
}


void flash()
{
  static int i=0;
  static boolean d=true;
  if(d)i++;
  else i--;
  if(i==15 || i==0) d=!d;
  lc.setIntensity(0,i);
}


void ShowHeart()
{
  lc.setRow(0,0,B00110000);
  lc.setRow(0,1,B01111000);
  lc.setRow(0,2,B01111100);
  lc.setRow(0,3,B00111110);
  lc.setRow(0,4,B00111110);
  lc.setRow(0,5,B01111100);
  lc.setRow(0,6,B01111000);
  lc.setRow(0,7,B00110000);
}




好了
谁发个烧
让我来测一测吧




【以上DIY为转帖,出自网络,如侵删】


那么处于疫情中的你有什么好的DIY想法吗



收藏收藏1
adobepdf
  • 积分:24008
  • |
  • 主题:66
  • |
  • 帖子:388
积分:24008
LV10
总工程师
最新回复
  • 2020-2-21 11:17:48
  • 倒数1
 
有点意思,学习了
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号