用Arduino玩GM65二維碼掃描模塊
最近在做Capstone,內容是我們之前實驗室參加過的工程訓練的物流搬運小車,所以現在來復盤一下我使用Arduino驅動各種模塊和傳感器,今天測試的就是GM65二維碼掃描模塊,淘寶上一百來塊就能買到
主控:Arduino Mega 2560
硬件:GM65掃碼模塊、串口通訊模塊
IDE:Arduino官方IDE
今天測試GM65所需要的東西如下三個
在購買GM65模塊之后賣家通常都是發這個文件作為資料,我感覺這個資料確實很好
下載地址:GM65條碼識別模塊用戶手冊
要讓Arduino成功驅動GM65,需要將GM65設置為串口輸出和命令觸發,要是覺得掃碼后反饋的聲音大,也可以調整為靜音
設置串口輸出的二維碼如下圖
串口通訊的默認波特率是9600,如果有需要改的話也可以自己去改
設置命令觸發的二維碼如下圖
命令觸發,就是在串口接收到某些指令后才能觸發模塊的工作,非常適合我們的使用
實驗接線如下
Serial1————串口模塊
Serial3————GM65模塊
查看資料得知,命令觸發模式下,Arduino需要發送9個十六進制數給GM65,,GM65接收后發送7個十六進制數回來,然后開始掃描
代碼很簡單,直接放上來
Test_Scaner.ino
String qr_code = "";
void setup() {
// put your setup code here, to run once:
Serial1.begin(9600);
Scaner_Init();
}
void loop() {
// put your main code here, to run repeatedly:
qr_code = Scan_QR();
Serial1.println(qr_code);
while (1);
}
Scaner.ino
//喚醒指令
unsigned char Wakecmd[9] = {0x7E, 0x00, 0x08, 0x01, 0x00, 0x02, 0x01, 0xAB, 0xCD};
void Scaner_Init()
{
Serial3.begin(9600);
}
String Scan_QR()
{
unsigned long starttime;
String str = "";
Serial3.write(Wakecmd, 9);
//等待回收信號結束
while (Serial3.read() != 0x31);
starttime = millis();
while (true)
{
//掃碼模塊掃出來是會加換行符的
str = Serial3.readStringUntil('/r');
if ((str.length() >= 7) || (millis() - starttime > 5000))
break;
}
return str;
}
燒進去之后就可以開始測試了
測試的二維碼如下圖
掃碼后成功接收到信息,並通過串口上位機打印出來
測試結果如下圖
測試很成功,可以快樂地玩轉這個模塊啦~~