Raspberry Pi 3 使用 RS-232 (COM Port)

網路上已經有許多文章 (中文、英文都能找得到) 教學如何利用 RS-232 介面,登錄到 Raspberry Pi;而本文並非詳細的教學,而是將實作的過程遇到的狀況,做為記錄。

會利用到 RS-232 介面,幾乎是因為 Raspberry Pi 沒有網路可以連線 (無線 / 有線)及也沒有 HDMI 可以輸出到螢幕上。不過,還有另一個狀況是當 Raspberry Pi 要成為控制主機,操控端的設備只有提供 RS-232 介面時,也就必須仰賴 RS-232。

需要使用到的設備:

  1. RS-232 連接線 (正常線,不用跳線)
  2. MAX3232 模組 (網拍上可以買得到已做好的模組, 含 DB9 DCE 接頭)
  3. 杜邦線 (接線 / 跳線 用)
  4. Raspbrry Pi 3 (目前手邊有的版本)
  5. Micro SD (存放作業系統, 此次使用 Raspbian)
  6. USB 電源線 (提供給 Pi 3 使用)

其它額外設備:

  1. HDMI to VGA 轉換器 (轉換畫面到螢幕上)
  2. 滑鼠 Mouse
  3. 鍵盤 Keyboard
  4. 機殼 Raspberry Pi 3 Case

從網拍上輸入關鍵字 MAX3232 就能找到含有DB9 DCE 接頭的模組。MAX3232 是個收發器 (Transceiver) 微控制晶片的產品代號;哪間公司出廠的,就沒有考究;購買的時候也是抱著試用看看的想法,只要買最便宜的就行了。

但便宜貨還真的沒有品質,收到的時候發現防靜電袋有重新封裝的感覺;防靜電袋沒有撕裂口 (雖然不會太難撕開,但就是不太貼心)。模組上的 DB9 DCE 接頭已經鏽蝕,特別是在背面那張圖片,更加的明顯。微控制晶片的載板也是髒汙一堆,就連最主要的 MAX3232 微控制晶片表面也有髒汙,一整個就是不優。

MAX3232 Module Font side

MAX3232 Module Back side

在開始接線之前,必須先要找到 Raspberry Pi 3 的 GPIO 各接腳的定義資料。拜 Google 圖片搜尋的好能力,找到由 element14 所提供的接腳定義說明圖。

購買 MAX3232 模組的網拍主頁上寫著,工作電壓是在 3V – 5V,所以找到以下接腳候選名單:

  1. 正極:Pin1、P17、Pin2、Pin4。
  2. 負極:Pin6、Pin9、Pin14、Pin20、Pin25、Pin30、Pin34、Pin39。
  3. 傳送及接收:Pin8、Pin10。

先從低電源 3.3V 開始接起,試驗後發現,只能使用 5V 才能順利啟用這個模組;原因是什麼並不清楚。再來是負極 (GND, 地線),第一次接的時候數錯腳位,以為針腳是直列編號,所以直接把 Pin17 (3.3V的正極) 當作 Pin9,結果讓 Raspberry Pi 3 無法開機,還好沒有燒掉。

試驗過後的接腳選擇是:

  1. 正極:Pin2。
  2. 負極:Pin6。
  3. 傳送及接收:Pin8、Pin10。

Raspberry Pi 3 Connector

剛開始連接的時候以為 Pin8 (Tx) 需要接到 MAX3232 模組的 Rx;Pin10 (Rx) 需要接到 MAX3232 模組的 Tx。試了好久都沒有反應,最後參考到  Raspberry Pi – RS232 Serial Interface Options (Revisit) 這篇文章的說明,才發現可能是不需要做跳線,直接照著板子上的說明, Tx – Tx, Rx – Rx 連接。

果真是不需要跳線。

Raspberry Pi 3 with RS-232

但是試了好久、也查了很多文章,還是無法利用 Terminal Emulator 看到登錄畫面;有些文章說需要等數秒,如果等不到畫面那就斷電重開機。都還是不行,突然想到 HDMI to VGA 還接著,不知道會不會有影響。移除 HDMI 的線路後,果然就能在 Terminal Emulator 中出現訊息 (沒有畫面時,真的是斷電重開機就會有了)。

原本以為是因為 HDMI to VGA 還接著的關係,才會讓 Terminal Emulator 沒有資料出現,但好奇之下,在接回 HDMI to VGA 後,再 Terminal Emulator 下達 reboot now,結果是螢幕有畫面,Terminal Emulator 也有資料。猜想,可能是接線步驟錯誤,才誤以為需要把 HDMI to VGA 拔掉才能看得到畫面。

在 Terminal Emulator 裡面的參數設定為:

  1. COM Port Number
  2. Baud Rate: 115200
  3. Parity: N
  4. Data bits: 8
  5. Stop bit:1
  6. Flow Control: None。

P.S. 很多文章都提到,Raspbian 是使用 ttyAMA0 給 UART,但來到了 Pi 3 的版本,因為多了 Bluetooth,會把 ttyAMA0 給 Bluetooth 使用;現在已經改成 ttyS0 給 UART 使用。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *