基于Arduino红外控制的智能机械手的设计

2019-06-11 08:26刘景铭
科技风 2019年12期
关键词:红外线

摘 要:本文介绍了一种基于Arduino红外控制的智能机械手的设计,该设计主要面向儿童,通过智能机械手的多功能来吸引儿童的注意力。本设计方案中包括机械手,Arduino Uno开发板,I2C LCD1602显示屏,驱动手指舵机、红外接收模块,红外遥控器,电源等。通过Arduino的红外控制功能,借助红外遥控器向Arduino发送信号,再利用Arduino对舵机发送PWM信号,来控制舵机的旋转角度进而控制智能机械手的手指弯曲程度,做出不同的手势,完成不同的功能,同时在LCD1602显示屏上可以显示当前智能机械手执行的功能。

关键词:红外线;Arduino控制;智能机械手

Abstract:This paper introduces the design of an intelligent manipulator based on Arduino infrared control.The design is mainly aimed at children.It attracts children's attention through the multi-function of the intelligent manipulator.This design includes manipulator,Arduino Uno core development board,I2C LCD1602 LCD display,driving finger steering module,infrared receiving module,infrared remote controller,power module and so on.Through the infrared control function of Arduino,the infrared remote controller sends signals to Arduino,and then uses Arduino circuit board to send PWM signals to the actuator to control the rotation angle of the actuator,and then to control the bending degree of the fingers of the intelligent manipulator,so as to make different gestures and implement different functions.At the same time,the current functions of the intelligent manipulator can be displayed on the LCD1602 display screen.

Key words:infrared light;Arduino control;The intelligent manipulator

1 概述

现如今大多数的玩具智能手智能化程度较高,虽然功能强大但也避免不了智能手本身结构易损坏,不易于装配,销售价格昂贵等缺点。

本文所介绍的智能机械手是机电一体化的充分体现,将机械上对智能手的结构设计和电子设计上利用Arduino芯片的红外控制功能模块的完美结合。借助Arduino的红外控制功能,利用遥控器上的按键对智能机械手的功能进行选择与实现,即不易损坏,易于装配且销售价格低,便于维修。

2 硬件系统的设计

本文介绍了一种基于arduino红外控制的智能机械手的设计方案,智能机械手分为机械手和Arduino控制模块两大部分

智能机械手分为手掌和五个机械手指,每个机械手指有三个自由度,三个活动关节。

Arduino控制模块是利用Arduino对机械手实现多功能控制,包括Arduino Uno核心开发板,I2C LCD1602液晶显示屏,驱动手指舵机模块、红外接受模块,红外遥控器,电源模块等。

2.1 Arduino Uno核心开发板

Arduino Uno开发板是智能手工作的核心,以采用的微处理器是ATmega328[1].并包括14路数字输入输出IO引脚,6个模拟输入IO,16MHZ陶瓷谐振器,USB接口,电源接口,ICSP接头,复位按钮等[2],可以采用ATmega328芯片进行USB到串行数据的转换。

2.2 I2C LCD1602液晶显示屏

LCD1602是一种专门用来显示字母、数字、符号等的点阵型液晶模块,其优点是控制简单,性价比高,但由于其引脚占用过多所以通过PCF8574T转接板与Arduino板相连。通过此种方式,可以大大節省Arduino的IO口,PCF8574T转接板除了VCC和GND接口外,仅使用两个双向漏极开线路,串行数据线(SDA)和串行时钟线(SCL),通过电阻上拉。本系统中LCD1602显示屏用于显示当前智能手所执行的功能,在遥控器指令发出后,显示屏上显示当前功能。

2.3 驱动舵机模块

驱动舵机采用SG90舵机,工作电压为3.5V到6V,无负载操作速度为0.12/60度(4.8V),0.10/60度(6V),扭矩为16KG.cm(4.8V),其内部包括外壳,直流电机,齿轮和位置测试。

2.4 红外接收模块及红外发射遥控器

红外接收头采用HX1838B,工作电压为2V到5.5V,工作频率为38KHZ,接受距离为22m,接受角度为正负45度,主要功能为IC化的一种受光元件,其内部是将光电二极管和集成IC共同组成,一般只接受38KHZ的红外线,这样子遥控器可以发出特定的38KHZ的频率,从而完成发射接收,构成通讯。而后通过红外发射遥控器的不同按键来实现智能手的不同功能。

2.5 电源模块

电池采用 9V 方形碳性电池。或者可以通过PC端利用USB传输线进行程序烧写和供电。

3 控制流程及算法的设计

3.1 红外的发送与接收

本设计方案设计的红外通信协议为NEC协议,NEC编码协议是红外遥控通信协议的一种,利用NEC编码来定义遥控器上每个按键的命令码,在按键按下时红外遥控器会将命令码以红外线的形式传输给红外接收头HX1838B,实现电信号转换为光信号再转换为电信号,再将电信号传输给Arduino开发板。利用遥控器上的CH-键测试遥控器是否与Arduino板构成通讯,利用遥控器的每一个数字键对应智能机械手的每一个功能,具体功能数暂定为6个。

3.2 Arduino对舵机的控制

Arduino开发板在接收电信号后,再依据程序判断按键来选择特定的舵机控制程序,通过利用Arduino电路板对舵机发送PWM信号,然后由电路板上的IC处理信号以计算旋转方向来驱动舵机内部电机,并通过驱动电机通过齿轮将角度传递至摆臂,控制摆臂的旋转角度来控制智能手手指的弯曲角度。

3.3 LCD1602对功能的显示

在Arduino对舵机的控制的同时,也对LCD1602输出信号在显示屏上显示当前功能。

主体控制程序如下

#include//引入红外通讯库文件

#include //引入舵机库文件

#include//引入功能1到6的库文件

#include

#include

#include

#include

#include

#include //引入LCD显示屏库文件

#include

Servo myservo1//定义五个驱动舵机

Servo myservo2

Servo myservo3

Servo myservo4

Servo myservo5

LiquidCrystal_I2C lcd(0x27,16,1);

const int irReceiverPin =7;//定义红外数据的接受引脚7

IRrecv irrecv(irReceiverPin);

decode_results results;

void setup()

{pinMode(ledPin,OUTPUT);

Serial.begin(9600);//定义波特率

irrecv.enableIRIn();

myservo1.attach(8);//定义舵机的输出接口

myservo2.attach(9);

myservo3.attach(10);

myservo4.attach(11);

myservo5.attach(12);

myservo1.write(0);//回到0角度

myservo2.write(0);

myservo3.write(0);

myservo4.write(0);

myservo5.write(0);

delay(1000);

lcd.init();

lcd.backlight();//打开LCD尾灯

}

void loop()

{if(irrecv.decode(&results))

{ Serial.print("irCode:");

Serial.print(results.value,HEX);

Serial.print(",bits:");

Serial.println(results.bits);

irrecv.resume();

}

delay(600);

if(results.value == 0xFF30CF)//如果接收的编码为0xFF30CF

{Functon1()}

else if(results.value == 0xFF18E7)

{Functon2()}

else if(results.value == 0xFF7A85)

{Functon3()}

else if(results.value == 0XFF10EF)

{Functon4()}

else if(results.value == 0xFF38C7)

{Functon5()}

else if(results.value == 0xFF5AA5)

{Functon6()}

}

}

4 結论

一种基于 Arduino 红外控制五指灵巧手的方案,完成了红外遥控器远程遥控五指机械手的多功能实现,例如:可抓取规则形物体,正方体,长方体,球体等,也可以实现多种手势,数数字,OK等,在执行功能是在显示屏上可显示功能名称,避免混乱。在以后的研究中可以在智能手上添加更多的功能,例如手部安全反馈系统,更复杂的手指舞等,值得我进一步研究与学习。

参考文献:

[1]桂淮濛.基于Arduino的电子产品的设计.2018.09.18.

[2]李红渊.基于Arduino语音控制的五指灵巧手.

作者简介:刘景铭(1998-),男,汉族,辽宁鞍山人,沈阳工业大学在读本科生,研究方向:控制工程。

猜你喜欢
红外线
科学生活为何离不开奇妙的红外线
红外线应用在体检人群的效果探讨
物品寻找器
自动感应红外线电烤炉
红外线的成像原理
解读“看不见的光”
微机—单片机红外线通信
红外线技术在现代航空上的应用