arduino是较为简单的单片机,易上手。所以利用arduino开始探索之旅吧。

目录

一.材料清单

一).模块介绍

1).HC-SR501

2).HC-SR04

二).实物展示

1).工作流程

2).连线

二.代码

1.代码展示

2.代码的理解

三.写在后面


一.材料清单

1.uno/nano都可以,只是nano更小巧。

2.HC-SR04,就是市面上的超声波模块(可用可不用)。

3.HC-SR501,重点的人体检测模块!!!!!!!!!!

4.0.96寸OLED,就是为了看数方便。

5.无源蜂鸣器,就是检测到人报警

我用的uno,因为我手里只有uno了,芯片价格飞涨,单片机也水涨船高。

一).模块介绍

1).HC-SR501

我上网查阅了相关资料,找到一个pdf文件:https://docs.particle.io/assets/

这个介绍的比较详细,我就简单说一下,里面是两个传感器,就是加强版。检测到人体时输出一个高电平,波会受各种因素影响,通过调节距离,延时,以达到好的效果。但是有个缺点,就是光线太强会不灵敏,所以给你提供了两个焊接光敏电阻的地方,建议不要焊,挺不方便的。所以增加了HC-SR04。

2).HC-SR04

超声波传感器,通过高电平触发,当检测到物体时,会反馈一个高电平,这时将高电平的波的延时时间就可以得出距离,有个公式X=(高电平的时间x340)/2;因为波是一个往返的时间。

我买的是自带晶振的,因为我觉得自带晶振时间能准,不然只能靠板子模拟,偏差会较大

二).实物展示

视频由于没上传到B站等平台,不能上传。


1).工作流程

首先人体检测模块启动,当将测到动物体时,OLED显示体温、超声波模块启动,开始计算距离,显示在OLED上,当动物体距离超声波模块50cm时,蜂鸣器启动,开始报警,警示有人来了。


2).连线

所有的电源接线就不重复了,都是5V,GND。

超声波模块 :  Trig是触发口,Echo是接收口。随便接线,但建议都接在PWM口上。

Trig--D9   Echo--D8

人体检测模块:中间的是数据反馈口,打开菲涅尔透镜就能看到。

out--D7

蜂鸣器模块:  I/O口--D5


二.代码

1.代码展示

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
#include <Adafruit_SSD1306.h>
#include <splash.h>#define respons 7  //人体检测模块的数据反馈口
#define Buzzer  5  //蜂鸣器
#define LED     3  //LED,我没加入到实物中
int inputPin = 8;  //超声模块接收口
int outputPin = 9; //超声模块输出口
int val ;
Adafruit_SSD1306 display(128, 64, &Wire, 13); //定义OLEDvoid setup()
{Serial.begin(9600);  //串口打开,没啥用pinMode(inputPin, INPUT);  pinMode(outputPin, OUTPUT);  //定义串口工作状态display.begin(SSD1306_SWITCHCAPVCC,0X3c);  //定义OLED地址analogWrite(5,0);   //初始给蜂鸣器置零,不然吵死了}
void loop()
{for (int i;; i++)  //使循环一直进行{int distance; //定义距离val = analogRead(respons);   //读取人体检测模块反馈的数值display.setTextColor(WHITE);display.clearDisplay();display.display();display.setTextSize(4);display.setCursor(0,8);display.print(val);display.println("~");display.display();    //OLED显示读取的数值delay(1000);if (val != 0)  //如果检测到动物体,我写的不准,因为有空气温度光线的影响{digitalWrite(outputPin, LOW); //先置为高电平delayMicroseconds(2);    //函数是延时微秒级别的digitalWrite(outputPin, HIGH);//超声波开始工作delayMicroseconds(10);  //因为必须大于10us的高电平才会开始工作digitalWrite(outputPin, LOW);//置低,因为要等待反馈回来的高电平distance = pulseIn(inputPin, HIGH);  //检测高电平的时延distance = distance / 58;  //计算距离,不要问为什么不按公式写,我用示波器测过display.setTextColor(WHITE);display.clearDisplay();display.display();display.setTextSize(4);display.setCursor(0,8);display.print(distance);display.println("cm");display.display();  //  OLED显示距离delay(500);}int remainder; //定义余量,计算是否是人体,因为人比动物距离模块近remainder = distance / 100;switch (remainder) //大于100为1,小于100为0{case 0:  digitalWrite(3, HIGH);analogWrite(5, 200);delay(3000);analogWrite(5,0);break;case 1:  break;}}
}

2.代码的理解

其实代码很简单,就是通过读取串口的PWM波,来反馈一些数据,当然了一些函数的精准使用才是关键,比如说delayMicroseconds,延时微秒。还有pulseIn,这个函数有三种写法。

pulseln:1)pulseIn();  检测脉冲宽度

2)pulseIn(pin,value);某引脚的状态时间

3)pulseIn(pin,value,timeout);某引脚状态的超出时间

三.写在后面

其实,我想通过蓝牙模块交互实现两块板子的互通,但是还在学习中。

后续会有改进版的,在此基础上进行增加其功能。


正在学习51单片机,寄存器好难啊,以后会增加51单片机的小玩儿意。

arduino实战 2——利用arduino做一个人体传感器相关推荐

  1. arduino实战 1——利用arduino做一个简易开门装置

    目录 前言 二.步骤 1.代码部分 2.自己制作一个简易的app 3.连线 4.一些小事情 总结 前言 网上简易宿舍开门装置吸引了我,于是我试着做了一个,材料也不多,基于arduino的一个蓝牙,nf ...

  2. python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?

    原标题:技术图文:如何利用 Python 做一个简单的定时器类? 背景 今天在B站上看有关 Python 最火的一个教学视频 -- "零基础入门学习 Python",这也是我们 P ...

  3. 利用pgzero做一个接球的小游戏

    利用pgzero做一个接球的小游戏 说明 pgzero为python的一个用于游戏制作的库,它基于pygame模块 可用如下命令去安装 pip install pygame pip install p ...

  4. 利用Python做一个简单的对战小游戏

    利用Python做一个简单的文字对战小游戏 一.游戏介绍 1.大体介绍:文字版的对战小游戏,可以利用Python随机生成两个角色,角色带有各自的血量和攻击值两个指标.两人在对战时同时攻击对方,同时造成 ...

  5. 利用Python做一个漂亮小姐姐词云跳舞视频

    最近不少小伙伴在学 Python,想找个好玩的练手项目. 那今天分享一个,简单,适合新手的 Python 小项目. 以下是具体项目: 本文将以哔哩哔哩–乘风破浪视频为例,you-get下载视频. 同时 ...

  6. 利用stm32做一个升级版的电子多功能密码锁

    `自己利用空闲时间制作的电子密码锁,有PCB.原理图,PCB印制电路板.此设计用外部存储器,支持修改密码,本来想添加指纹识别模块,但是12864的数据口被使用了,gpio口不够用.在实际中我发现128 ...

  7. 实战 | 如何利用 Scrapy 编写一个完整的爬虫!

    大家好,我是安果! 提到爬虫框架,这里不得不提 Scrapy,它是一款非常强大的分布式异步爬虫框架,更加适用于企业级的爬虫! 项目地址: https://github.com/scrapy/scrap ...

  8. 利用正则做一个会员注册管理系统

    今天学习了利用正则来做一个会员注册管理系统,该系统的主要难点在于: 1.利用正则来判断账号以及密码是否合法 2.字典的增删查改 3.while循环,break,嵌套if判断语句 正则我是在 [正则网页 ...

  9. 实战|利用机器学习解决一个多分类任务

    ↑ "小詹学Python"一个值得星标的公众号 本文约3000字,阅读大概需要10分钟 对于机器学习而言,如果你已经大致了解了相关算法的原理.理论推导,你也不是大家口中刚入门的小白 ...

最新文章

  1. Eclipse中dropins干什么用的文件夹啊?
  2. python的turtle怎么设置rgb颜色_Python : turtle色彩控制实例详解
  3. 请解释Spring Bean 的生命周期?
  4. 底部分页栏_2020年执业药师考试教材各科目增加页数!最多203页
  5. android123 zhihuibeijing 新闻中心-新闻 页签 ViewPagerIndicator实现
  6. 3.Booleans and Conditionals
  7. LeetCode 2104. 子数组范围和(单调栈)
  8. 这些深度学习术语,你了解多少?(上)
  9. 支持60+数据传输链路,华为云DRS链路商用大盘点
  10. ubuntu 16.04 安装和卸载postman
  11. Linux系统下安装中文输入法
  12. IPS与IDS部署场景
  13. linux link 硬链接,Linux系统中的硬链接(hard link)与软链接(symbolic link)
  14. 构建系统发育树(进化树)的相关知识,以及各种进化树适用的情况。
  15. 手机怎么打开谷歌官网页服务器地址,google手机地图打不开了的解决方法
  16. 2014蓝桥杯C++A组——史丰收速算
  17. GitHub iOS开源项目
  18. 令你极度舒适的Swift集合类高阶函数
  19. python 利用requests库抓取网站图片
  20. 配置tomcat使用https方式连接,同时也可以使用http方式连接

热门文章

  1. usim卡如何换nano卡_5G 超级 SIM 卡发布,小内存手机有福了
  2. 某大厂三面通过,最后却只给了我一个所谓的口头“offer”····
  3. XilinxFPGA: Vivado ISE
  4. js中常用的数学方法(全)
  5. 嵌入式系统移植三部曲 李炎朔
  6. 【大学物理实验】冷却法测金属比热容
  7. 电信网通全国DNS 列表
  8. pyHook pyHook3 区别_礼来拓咨依奇珠单抗和诺华可善挺司库奇尤单抗苏金单抗的区别...
  9. 22考研笔记-英1-语法长难句分析-简单句
  10. 华为机试真题实战应用【赛题代码篇】-购买水果最便宜的方案(附Java和C++代码实现)