Adruino:传感器及步进电机

一、传感器*

1、温湿度传感器

DHT11它采用专用的数字采集技术和温湿度传感器技术,包括一个电阻式感湿元件NTC测温元件 ,并与一个高性能的8位单片机连接。DATA端采用串行接口(单线双向)与微控制器进行同步和通信。

DHT11的供电电压为3~5.5V。传感器上电后,要等待1s以越过不稳定状态,在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF的电容,用于去耦滤波。

温湿度传感器模块接口:

• VCC ---电源引脚

• GND ---电源引脚

• DATA ---数字引脚

dht11类库函数

函数 解释
DHT11.read(pin) 获取返回状态码 pin:与DATA端连接的引脚。 返回:0:OK -1:Error -2:Timeout
DHT11.humidity 湿度值
DHT11.temperature 温度值

2、空间运动传感器

3、温度传感器

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。测温范围 -55℃~+125℃,固有测温误差1℃。

DS18B20采用单总线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

单总线(One-Wire)采用单根信号线,实现数据的双向传输,具有节省I/O资源、结构简单、便于扩展和维护等特点。

二、电机

1、步进电机

步进电机是将电脉冲转化为角位移 的执行元件。当步进电机驱动器接收到一个脉冲信号时,它就驱动步进电机按设定的方向转动一个固定的角度(即步距角) 。可以通过控制脉冲个数 来控制角位移量 ,从而达到准确定位的目的,同时也可以通过控制脉冲频率 来控制电机转动的速度和加速度,从而达到调速的目的。

工作模式

它的工作模式分为单四拍双四拍四相八拍三种工作模式。

单四拍

正转绕组的通电顺序: A→B→C→D→A→... 。

反转绕组的通电顺序: D→C→B→A→D→... 。

双四拍

正转绕组的通电顺序: AB→BC →CD→DA→AB。

反转绕组的通电顺序: DA→CD →BC→AB→DA。

四相八拍

正转绕组的通电顺序: A→AB→B→BC→C→CD→D→DA→A。

反转绕组的通电顺序: A→DA→D→CD→C→BC→B→AB→A。

2、直流电机

直流电机将直流电能转换成机械能(直流电动机)的旋转电机。

直流电机的调速方式:(1)改变电机两端的电压 (2)改变磁通量 (3)串联调节电阻。电压越大,转速越快,改变电压是调速常用办法,使用脉冲宽度调制PWM方法,输入不同占空量的方波,改变直流电机电枢两端的电压,即可改变直流电机转速,实现调速功能,可以实现无级调速。

直流电机的换向方法:通过改变输入电压极性实现,即反转电源输入端的正负极连接方向。

3、舵机

三、超声波测距*

HC-SR04是一种应用广泛的超声波测距模块,通过I/O接口给Trig端发测试信号,最少10us的高电平 信号,模块会自动发送8个40kHz声波,并自动检测是否有声波返回。若有信号返回则通过Echo端输出高电平。(两次高电平的间隔时间*声音的速度)/2=距离。

HC-SR04类库函数

函数 解释
SR04 sr04(echo,trig) 类实例化。
sr04.Distance() 读取测量距离,单位cm。

案例:

cpp 复制代码
#include "SR04.h"		//添加库函数
#define TRIG_PIN 6		//定义引脚
#define ECHO_PIN 7		//定义引脚
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);	//构造函数
long a;
void setup() {
   Serial.begin(9600);		//定义串口波特率
   Serial.println("Example written by Coloz From Arduin.CN");
   delay(1000);
}
void loop() {
   a=sr04.Distance(); 		//读取障碍物和SR04的距离
   Serial.print(a);      		//送串口监视器显示
   Serial.println("cm");
   delay(1000);
}

四、蜂鸣器

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作 发声器件。

有源蜂鸣器 内部有振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,一旦供电,蜂鸣器就会发出声音。

无源蜂鸣器 内部不带震荡源,需要加方波信号PWM能够发声。频率不同,震荡出来的音调也不同。

cpp 复制代码
int buzzer = 8;			//设置控制蜂鸣器的数字引脚 
void setup() { 
      pinMode(buzzer,OUTPUT); 	//设置数字引脚为输出模式
} 
void loop() { 
   unsigned char i, j;    		//定义变量 
    for(i=0; i<80; i++)  {    		//输出一个频率的声音 
       digitalWrite(buzzer,HIGH);  	//发声 
       delay(1);                       	//延时1ms 
       digitalWrite(buzzer,LOW);  	//不发声 
       delay(1);      
    }                 	//延时1 ms 
    for(j=0; j<100; j++) {         	//输出另一个频率的声音 
       digitalWrite(buzzer,HIGH);  	//发声 
       delay(2);                     		//延时2ms 
       digitalWrite(buzzer,LOW); 	//不发声 
       delay(2); 
    }                  		//延时2ms 
} 

五、SD卡读写模块

SD卡支持两种总线方式:SD方式SPI方式 。其中SD方式采用6 线制,使用CLK、CMD、DAT0~DAT3 进行数据通信(PC等设备使用)。而SPI方式采用4 线制,使用CS、CLK、DataIn和DataOut 进行数据通信。SD方式的数据传输速度比SPI方式要快,但采用单片机对SD卡进行读写时一般都采用SPI模式。
Arduino的I/O接口输出5V 高电平,SD卡的工作电压是3.3V故需要通过电平转换才可与Arduino连接,可以使用SD读写模块与Arduino连接。

|-------|----------|----------|----------|
| 引脚编号 | SPI模式 |||
| 引脚编号 | 名称 | 类型 | 描述 |
| 1 | CS | I | 片选 |
| 2 | DI | I | 数据输入 |
| 3 | VSS1 | S | 电源地 |
| 4 | VDD | S | 电源 |
| 5 | SCLK | I | 时钟 |
| 6 | VSS2 | S | 电源地 |
| 7 | DO | O或PP | 数据输出 |
| 8 | X | | |
| 9 | X | | |

SD卡类库函数

(1)name()

功能:返回文件名。

语法格式:file.name()。

参数说明:file:File类的一个实例 ( SD.open()的返回值)。

返回值:文件名。

(2)available()

功能:检查文件的字节数,available()继承了流实用类。

语法格式: file.available()。

参数说明:file:File类的一个实例 ( SD.open()的返回值)。

返回值:文件的字节数,int类型。

(3)close()

功能:关闭文件。

语法格式:file.close()。

参数说明:file:File类的一个实例 ( SD.open()的返回值)。

返回值:无。

(4)flush()

功能:确保写到文件里的字节存储到SD卡上。当文件关闭时,自动完成。

语法格式:file.flush()。

参数说明:file:File类的一个实例 ( SD.open()的返回值)。

返回值:无。

(5)peek()

功能:从文件中读取下一个字节,连续调用该函数将返回同一个值。peek()继承了流实用类。

语法格式:file.peek()。

参数说明:file:File类的一个实例 ( SD.open()的返回值)。

返回值:下一个字节或字符,若无则返回-1。

(6)position()

功能:获取文件的当前位置(将要读写的下一个字节的位置)。

语法格式:file.position()。

参数说明:file:File类的一个实例 ( SD.open()的返回值)。

返回值:文件位置,unsigned long类型。

(7)print()

功能:输出数据到以写方式打开的文件。按ASCII形式输出数字(例如:123按'1', '2', '3'输出)。

语法格式:file.print(data) 和file.print(data, BASE)。

参数说明:file:File类的一个实例 ( SD.open()的返回值)。 data:输出数据,char、 byte、 int、 long、或 string类型。 BASE (可选参数):输出数据的进制:BIN是二进制;DEC是十进制;OCT 是八进制;HEX是十六进制。

返回值:byte:输出的字节数,读取该数据是可选操作

六、无线射频识别RFID模块

射频识别技术通过无线电信号识别特定的目标并读写相关数据,常用的有低频30kHz~300kHz,高频3MHz~30MHz,超高频3GHz~30GHz等微波技术。RFID读写器有移动式和固定式两种。

一套完整的RFID系统由阅读器(Reader)电子标签(TAG) 也就是所谓的应答器(Transponder)及应用软件三个部分组成。

RFID的类库函数

函数 解释
RFID rfid(SS,RST) 类实例化对象。
rfid.isCard() 寻卡。
rfid.readCardSerial() 读取卡的串口信息,返回卡的4个字节和一个字节校验码序列号到字符数组serNum。
rfid.Init() 初始化。
rfid.auth(authMode,BlockAddr,SectorKay,serNum) 验证卡片密码。 unsigned char auth:密钥验证模式 unsigned char* SectorKey:扇区密码
rfid.read(blockAddr,recvData) 读数据块。 unsigned char blockAddr:块地址 unsigned char* recvData:读出的数据块
rfid.write(blockAddr,writeData) 写数据快。 unsigned char blockAddr:块地址 unsigned char* writeData:写入16字节数据到块
rfid.selectTag(serNum) 选择卡片并读取卡的存储器容量。 unsigned char* serNum:卡的序列号。
rfid.Halt() 命令卡片进入休眠状态。

七、继电器

继电器(英文名称:relay)是电控制器件,是一种能把小信号(输入信号)转换成高电压大功率控制信号(输出信号)的一种"自动开关" 。继电器能控制多个对象和回路,能控制远距离对象,故继电器在自动控制及远程控制领域有较广泛的应用。例如控制电灯、电冰箱、洗衣机、车库门等。按继电器的工作原理或结构特征分类,继电器可分为:电磁继电器、固体继电器、舌簧继电器和时间继电器等。按继电器的外形尺寸可分为:微型继电器、超小型微型继电器和小型继电器等。

相关推荐
cjy_Somnr12 分钟前
keil5报错显示stm32的SWDIO未连接不能烧录
stm32·单片机·嵌入式硬件
Lay_鑫辰1 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
无垠的广袤3 小时前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网
雲烟5 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
泽虞5 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
田甲5 小时前
【STM32】 数码管驱动
stm32·单片机·嵌入式硬件
up向上up6 小时前
基于51单片机垃圾箱自动分类加料机快递物流分拣器系统设计
单片机·嵌入式硬件·51单片机
纳祥科技15 小时前
Switch快充方案,内置GaN,集成了多个独立芯片
单片机
单片机日志16 小时前
【单片机毕业设计】【mcugc-mcu826】基于单片机的智能风扇系统设计
stm32·单片机·嵌入式硬件·毕业设计·智能家居·课程设计·电子信息
松涛和鸣17 小时前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法