Raspberry Pi 3 利用 RS-232 與 PC 進行通訊測試

 前篇文章 Raspberry Pi 3 使用 RS-232 (COM Port) 記錄了在 Raspberry Pi 3 上使用 RS-232 (COM Port) 的實作經驗。但實作只到如何利用 RS-232 將終端機 (Console) 畫面呈現在 PC 的 Terminal Emulator 中;此篇文章記錄如何透過 RS-232 與外部設備進行資料傳輸 (先做到能和 PC 的 Terminal Emulator 進行資料接收/傳送即可) 。

在進行資料傳輸之前需要先將 Serial Port 的登錄模式關閉。

在 Raspbian 系統內的 Terminal 裡面輸入 sudo raspi-config 進入系統的參數快速設定。

執行之後,就會看到類似下面的畫面:

選擇 Interfacing Options

出現系統上各個介面,此次的目標是 Serial

詢問是否開啟 Serial Port 的登錄功能,預設是開啟 (也就是會指在 <Yes> 的地方),設定成 <No>。

這個設定其實是在異動 /boot/cmdline.txt,將原本的

dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

設定成

dwc_otg.lpm_enable=0 console=tty1 root/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

這裡是詢問是否有 Serial Port 的硬體功能開啟,預設是 <Yes>。這個選項很重要,如果不開啟的話,在作業系統在開機的時候不會將 UART 載至 /dev/ttyS0。

這個設定其實是在異動 /boot/config.txt,將原本的

enable_uart=1

設定成 (如果是選擇 <No> 的話)

enable_uart=0

設定完成後,將設定結果彙整到畫面上,讓使用者知道目前的設定。

是否要馬上重開機?

如果沒有其它設定要一併進行的話,重啟 RPi3 之後,就會立即生效剛才的設定。

接著來就是測試 RS-232 的通訊,以下的程式碼來自 Using the UART 這篇文章

傳送資料範例:

接收資料範例:

那我們再偷懶一些,利用 minicom 這個應用程式來進行資料測試。當然系統內預設是沒有安裝,我們需要先安裝這套應用程式:

sudo apt-get install minicom

安裝完成之後,照著下面畫面的指令輸入,即可開啟 ttyS0 進行資料傳輸。

直接在畫面上輸入字串,它不會的顯示在輸入端;反而是直接顯示在另一端(PC)的畫面上。

在另一端(PC)的畫面上輸入,也會出現在 Raspbian 的畫面內。

【後記】

Configuring The GPIO Serial Port On Raspbian Jessie Including Pi 3 這篇文章提到 /dev/ttyAMA0 給 Bluetooth 是因為要提昇 Bluetooth 的使用效能。但如果不需要使用到 Bluetooth 的話,能將之關閉,並經過調整之後,將原本高效能 (而且也較為穩定) 的 /dev/ttyAMA0 轉回給 UART 使用。

主要是在 /boot/config.txt 內填寫設定值,這個檔案的完整說明放在 /boot/overlays/README。

將 ttyAMA0 與 ttyS0 互換的設定方式

dtoverlay=pi3-miniuart-bt

將 Bluetooth 關閉不用的設定方式

dtoverlay=pi3-disable-bt

甚至將 wifi 關閉的設定方式

dtoverlay=pi3-disable-wifi

發表迴響

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