2017年4月19日 星期三

Makeblock電子模組手冊:Me 巡線模組

簡介

Me 巡線模組專為巡線機器人設計。它包含兩個感測器,每個感測器有一個紅外線發射 LED 和一個紅外線感應光電電晶體,機器人能夠沿著白色背景上的黑色線條移動,或是黑色背景上的白色線條移動,具有檢測速度快,電路簡單等優點。本模組介面是藍色色標,說明是雙數位口控制,需要連接到主機板上帶有藍色標識介面。

技術規格

  • 作業電壓:5V DC
  • 工作溫度:0 ~ 70℃
  • 檢測範圍:1 ~ 2 cm
  • 檢測角度:120° 範圍內
  • 控制方式:雙數位口控制
  • 模組尺寸:51 x 24 x 22 mm (長 x 寬 x 高)

特點

  • 模組的白色區域是與金屬梁接觸的參考區域
  • 具有兩隻 LED 指示燈用於巡線回饋
  • 具有反接保護,電源反接不會損壞 IC
  • 注意本模組容易受自然光的影響,對環境光變化較大的場所有一定的局限性
  • 支援 Arduino IDE 程式設計, 並且提供運行庫來簡化程式設計
  • 支援 mBlock 圖形化程式設計,適合全年齡用戶
  • 使用 RJ25 介面連線方便
  • 模組化安裝,相容樂高系列
  • 配有 S1、S2、VCC、GND 接頭支援絕大多數 Arduino 系列主控板

引腳定義

Me 巡線模組有四個針腳的接頭,每個針腳的功能如下表:

序號引腳功能
1GND接地
2VCC接電源
3S1感測器1資料輸出
4S2感測器2資料輸出

連接模式

以 RJ25 連接

由於 Me 巡線模組介面是藍色色標,當使用 RJ25 介面時,需要連接到主控板上帶有藍色色標的介面。以 Makeblock Orion 為例,可以連接到3,4,5,6號介面,如圖:

以杜邦線連接

當使用杜邦線連接到 Arduino Uno 主機板時,模組 S1 與 S2 引腳需要連接到 DIGITAL(數位)口,如下圖所示:

原理解析

Me 巡線模組是根據反射式光電感測器原理開發的機器人配件。利用紅外線在不同顏色的物體表面具有不同的反射強度的特點,在小車行駛過程中不斷地向地面發射紅外線,當紅外線遇到白色紙質地板時發生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車的接收管收不到紅外線;通過是否收到反射回來的紅外光為依據來確定黑線的位置和小車的行走路線(巡線感測器照到黑線時輸出為 0,照到白線時輸出為 1)。

編程指南

mBlock 程式設計

有關 mBot 巡線車的編程策略,可參考這裡

Arduino程式設計

如果使用 Arduino 程式設計,需要使用資源庫 Makeblock-Library-master 來控制巡線模組。

本程式通過 Arduino 程式設計每 200 毫秒(ms)不斷讀取感測器的值,從串口監視器可以看出兩個感測器是否在黑線之外。

Me 巡線模組指令列表:

函數功能
MeLineFollower(uint8_t port)定義連接埠
uint8_t readSensors()讀取感測器狀態

程式範例

#include "MeOrion.h" /* 本範例以Me Orion作主控板 */
#include <Wire.h>
#include <SoftwareSerial.h>

MeLineFollower lineFollower(PORT_6); /* 本範例中以連接埠6連接Me 巡線模組 */

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorState = lineFollower.readSensors(); /* 取得當時Me 巡線模組的回傅值 */

  switch(sensorState) {
    case S1_IN_S2_IN:
      Serial.println(“Sensor 1 and 2 are inside of black line”);
      break;
    case S1_IN_S2_OUT:
      Serial.println(“Sensor 2 is outside of black line”);
      break;
    case S1_OUT_S2_IN:
      Serial.println(“Sensor 1 is outside of black line”);
      break;
    case S1_OUT_S2_OUT:
      Serial.println(“Sensor 1 and 2 are outside of black line”);
      break;
    default:
      break;
  }
  delay(200);
}

沒有留言:

張貼留言