摘 要:本文介紹了一種基于Arduino紅外控制的智能機械手的設計,該設計主要面向兒童,通過智能機械手的多功能來吸引兒童的注意力。本設計方案中包括機械手,Arduino Uno開發(fā)板,I2C LCD1602顯示屏,驅動手指舵機、紅外接收模塊,紅外遙控器,電源等。通過Arduino的紅外控制功能,借助紅外遙控器向Arduino發(fā)送信號,再利用Arduino對舵機發(fā)送PWM信號,來控制舵機的旋轉角度進而控制智能機械手的手指彎曲程度,做出不同的手勢,完成不同的功能,同時在LCD1602顯示屏上可以顯示當前智能機械手執(zhí)行的功能。
關鍵詞:紅外線;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 概述
現(xiàn)如今大多數(shù)的玩具智能手智能化程度較高,雖然功能強大但也避免不了智能手本身結構易損壞,不易于裝配,銷售價格昂貴等缺點。
本文所介紹的智能機械手是機電一體化的充分體現(xiàn),將機械上對智能手的結構設計和電子設計上利用Arduino芯片的紅外控制功能模塊的完美結合。借助Arduino的紅外控制功能,利用遙控器上的按鍵對智能機械手的功能進行選擇與實現(xiàn),即不易損壞,易于裝配且銷售價格低,便于維修。
2 硬件系統(tǒng)的設計
本文介紹了一種基于arduino紅外控制的智能機械手的設計方案,智能機械手分為機械手和Arduino控制模塊兩大部分
智能機械手分為手掌和五個機械手指,每個機械手指有三個自由度,三個活動關節(jié)。
Arduino控制模塊是利用Arduino對機械手實現(xiàn)多功能控制,包括Arduino Uno核心開發(fā)板,I2C LCD1602液晶顯示屏,驅動手指舵機模塊、紅外接受模塊,紅外遙控器,電源模塊等。
2.1 Arduino Uno核心開發(fā)板
Arduino Uno開發(fā)板是智能手工作的核心,以采用的微處理器是ATmega328[1].并包括14路數(shù)字輸入輸出IO引腳,6個模擬輸入IO,16MHZ陶瓷諧振器,USB接口,電源接口,ICSP接頭,復位按鈕等[2],可以采用ATmega328芯片進行USB到串行數(shù)據(jù)的轉換。
2.2 I2C LCD1602液晶顯示屏
LCD1602是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,其優(yōu)點是控制簡單,性價比高,但由于其引腳占用過多所以通過PCF8574T轉接板與Arduino板相連。通過此種方式,可以大大節(jié)省Arduino的IO口,PCF8574T轉接板除了VCC和GND接口外,僅使用兩個雙向漏極開線路,串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL),通過電阻上拉。本系統(tǒng)中LCD1602顯示屏用于顯示當前智能手所執(zhí)行的功能,在遙控器指令發(fā)出后,顯示屏上顯示當前功能。
2.3 驅動舵機模塊
驅動舵機采用SG90舵機,工作電壓為3.5V到6V,無負載操作速度為0.12/60度(4.8V),0.10/60度(6V),扭矩為16KG.cm(4.8V),其內部包括外殼,直流電機,齒輪和位置測試。
2.4 紅外接收模塊及紅外發(fā)射遙控器
紅外接收頭采用HX1838B,工作電壓為2V到5.5V,工作頻率為38KHZ,接受距離為22m,接受角度為正負45度,主要功能為IC化的一種受光元件,其內部是將光電二極管和集成IC共同組成,一般只接受38KHZ的紅外線,這樣子遙控器可以發(fā)出特定的38KHZ的頻率,從而完成發(fā)射接收,構成通訊。而后通過紅外發(fā)射遙控器的不同按鍵來實現(xiàn)智能手的不同功能。
2.5 電源模塊
電池采用 9V 方形碳性電池?;蛘呖梢酝ㄟ^PC端利用USB傳輸線進行程序燒寫和供電。
3 控制流程及算法的設計
3.1 紅外的發(fā)送與接收
本設計方案設計的紅外通信協(xié)議為NEC協(xié)議,NEC編碼協(xié)議是紅外遙控通信協(xié)議的一種,利用NEC編碼來定義遙控器上每個按鍵的命令碼,在按鍵按下時紅外遙控器會將命令碼以紅外線的形式傳輸給紅外接收頭HX1838B,實現(xiàn)電信號轉換為光信號再轉換為電信號,再將電信號傳輸給Arduino開發(fā)板。利用遙控器上的CH-鍵測試遙控器是否與Arduino板構成通訊,利用遙控器的每一個數(shù)字鍵對應智能機械手的每一個功能,具體功能數(shù)暫定為6個。
3.2 Arduino對舵機的控制
Arduino開發(fā)板在接收電信號后,再依據(jù)程序判斷按鍵來選擇特定的舵機控制程序,通過利用Arduino電路板對舵機發(fā)送PWM信號,然后由電路板上的IC處理信號以計算旋轉方向來驅動舵機內部電機,并通過驅動電機通過齒輪將角度傳遞至擺臂,控制擺臂的旋轉角度來控制智能手手指的彎曲角度。
3.3 LCD1602對功能的顯示
在Arduino對舵機的控制的同時,也對LCD1602輸出信號在顯示屏上顯示當前功能。
主體控制程序如下
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
Servo myservo1//定義五個驅動舵機
Servo myservo2
Servo myservo3
Servo myservo4
Servo myservo5
LiquidCrystal_I2C lcd(0x27,16,1);
const int irReceiverPin =7;//定義紅外數(shù)據(jù)的接受引腳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 紅外控制五指靈巧手的方案,完成了紅外遙控器遠程遙控五指機械手的多功能實現(xiàn),例如:可抓取規(guī)則形物體,正方體,長方體,球體等,也可以實現(xiàn)多種手勢,數(shù)數(shù)字,OK等,在執(zhí)行功能是在顯示屏上可顯示功能名稱,避免混亂。在以后的研究中可以在智能手上添加更多的功能,例如手部安全反饋系統(tǒng),更復雜的手指舞等,值得我進一步研究與學習。
參考文獻:
[1]桂淮濛.基于Arduino的電子產品的設計.2018.09.18.
[2]李紅淵.基于Arduino語音控制的五指靈巧手.
作者簡介:劉景銘(1998-),男,漢族,遼寧鞍山人,沈陽工業(yè)大學在讀本科生,研究方向:控制工程。