Raspberry Pi 3 使用 USB to Serial Port 與 PC 進行通訊測試

 Raspberry Pi 3 在 GPIO 裡面,原本就已提供有 UART 的通訊功能,進行系統設定完成後,即能在作業系統內利用 /dev/ttyS0,來進行 RS-232 的通訊。由於沒有 3D Printer 能自製合適的機殼,拉線出來放在混亂的環境內,一定會讓 MAX3232 模組沒多久就會損毀;所以,特別採買 USB to RS-232 的轉接器來使用看看。

這次測試所使用到的設備如下:

  1. Raspberry Pi 3
  2. 16GB MicroSD (存放作業系統, 此次使用 Raspbian stretch 4.9.47)
  3. Keyboard and Mouse
  4. HDMI to VGA adapter
  5. USB to RS-232 (型號:UTN411, 廠商:登昌恆興業股份有限公司)
  6. RS-232 正常線(公-母) * 1 及 RS-232 NULL MODEM(母-母) * 1
  7. USB 電源供應

文章大綱:

  1. UTN411 線路的連接方式
  2. 安裝 UTN411 的驅動程式?
  3. 抓取系統內的 COM Port 清單
  4. 測試通訊看看

UTN411 線路的連接方式

Raspberry Pi3 —- USB Port (UTN411) — RS-232 NULL MODEM — RS-232 正常線 — PC 的 COM Port

為什麼要這麼麻煩將 RS-232 NULL MODEM 與 RS-232 正常線接在一起?

剛開始測試的時候,想要比較 GPIO 提供的 UART 通訊UTN411 的通訊有何不同?然而 PC 端只提供一個 COM Port。只好 PC 端的 COM Port 接上 RS-232 正常線,當要接通 GPIO 的 UART 時,就直接連線。如果要換到 UTN411 時,就再接和 RS-232 NULL MODEM 相連就行。不然就還得要一直從 PC 的 COM Port 拔插,省了不少麻煩。

 

安裝 UTN411 的驅動程式?

所使用的 USB to RS-232 轉換器,其控制晶片是 FTDI。進入官網能下載得到「可能」需要的驅動程式;為何說是「可能」呢?這是因為官網所提供的驅動程式只有到 Linux 2.6,而現在使用的是 4.9。推測起來應該會內含在 Raspbian 裡面才是。利用指令 lsmod 查看是否已經有載入驅動模組:

果然系統內是有預載。若是沒有預載的話,可以照著 UTN411 官網提供的說明 (REASME.txt),一步步將驅動程式編譯、安裝、載入系統之中。現在只要將 UTN411 接上 Raspberry Pi 3 之後,Raspbian 就會立即幫我們載入相對應的驅動程式,並且掛載到 /dev 裡面。可以看得到 /dev 裡面多了 ttyUSB0 這個設備。

抓取系統內的 COM Port 清單

再來,我們就要利用所開發的程式,抓取看看能不能正常取得這個 COM Port。

中間有段排序功能,還沒有研究出來為何在 Raspbian 裡面會造成當機,只要先行註解掉,不讓系統運作。運作後取得該有的 COM Port 清單,如下圖。

測試通訊看看

直接在 Message 欄位傳送訊息看看,能夠順利用與 PC 進行通訊了。但過程卻也不是那麼順利,將程式修改很多次。其中有個問題還沒有解決:

利用 /dev/ttyS0 進行通訊時,COM Port 的參數是設為 19200, N, 8, 1。每次傳輸的資料都會遺漏,如:從 PC 端傳送 This is a test Message,在 Raspberry Pi 3 內收到的只有 his is a est ssag。每次遺漏的部份都不同。可能是出自於 MAX3232 的晶片問題?還是電壓不足造成的影響?但是把系統允許從 Serial Port 登入的功能開啟,又能很正常的登錄系統、執行指令!?

等有空再來研究看看是哪裡出錯 …. orz

其它會用到的程式碼片段:

 

發表迴響

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