1. 程式人生 > 其它 >用Arduino玩GM65二維碼掃描模組

用Arduino玩GM65二維碼掃描模組

目錄

用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;
}

燒進去之後就可以開始測試了

測試的二維碼如下圖

掃碼後成功接收到資訊,並通過串列埠上位機打印出來

測試結果如下圖

測試很成功,可以快樂地玩轉這個模組啦~~

作者:dragonet-Z 出處:http://www.cnblogs.com/dragonet-Z/ 本文版權歸作者和部落格園共有,歡迎轉載,但必須在文章明顯位置給出原文連結,並保留此段宣告,否則保留追究法律責任的權利。