Raspberry Piでシリアル通信する方法(通信設定・通信確認)


Raspberry Pi 4 と Raspberry Pi Zero W をシリアル(UART)で通信させた時に、少しだけ手こずったのでメモしておきます。


1. sudo raspi-config でシリアル通信を有効化

まずは以下コマンドを実施します。

$ sudo raspi-config

次に “3 Interface Options” を選択してEnter


次に “P6 Serial Port 〜” を選択してEnter


次に、”Would you like a login shell to be accessible over serial?” では <いいえ> を選択してEnter。

(ここで<はい>とするとShellコンソールとして使用できるとの事)


次に、”Would you like the serial port hardware to be enabled?” では <はい> を選択してEnter


次に以下のように表示されるので、 <了解> で Enter


<Finish> でコンソールに戻り、設定が変わっていればrebootを求められるのでrebootする。


2. miniUARTではなく普通のUARTが使えるようにする

Raspberry Pi には機能制限版のminiUARTと通常のUARTが存在し、デフォルトではminiUARTがピンに割り当てられている模様。

// ttyS0 : miniUART(機能制限版UART)
// ttyAMA0 : 普通のUART

$ ls /dev -l
...
...
serial0 -> ttyS0
serial1 -> ttyAMA0
...
...
...
// serial0がGPIOピンに割り付けられる。
// その為、上記状態では ttyS0(miniUART) が使用される。

なので、 /boot/config.txt を編集して、通常のUART(ttyAMA0)が使えるようにする。

$ sudo nano /boot/config.txt

# ... 最下部に追加

dtoverlay=miniuart-bt
core_freq=250

保存・reboot後、再度 “ls /dev -l” を実施し、serial0 -> ttyAMA0 となっていることを確認する。

ちなみにminiUARTも特に問題なく使えるが、以下の機能が使用できない。

  • 破損検出
  • フレーミングエラー検出
  • パリティビット
  • 受信タイムアウト割り込み
  • DCD、DSR、DTR、またはRI信号

  • 3. 配線する

    6pinのGND, 8pinのTx, 10pinのRx を使用します。(ピン割当はRaspberry Pi 4 とzero w で同じ)

    今回はRaspberry Pi 同士で通信するので、TxとRxはクロスさせます。(TxはRxに、RxはTxに接続)


    4. minicomで通信確認

    通信確認にはminicomを使用します。

    $ sudo apt install minicom
    
    // -bでボーレート指定
    // -Dで通信ポート指定
    $ minicom -b 115200 -o -D /dev/ttyAMA0
    
    
    minicom へようこそ 2.7.1
    
    オプション: I18n 
    コンパイルされた日時は:  Aug 13 2017, 15:25:34.
    ポート /dev/ttyAMA0, 19:41:12
    
    
    
    // この画面でキーを押下すると送信されます。
    // また受信データもこの画面に表示されます。
    //
    // Ctrl+Aキー押下後、Qキー押下で終了
    // Ctrl+Aキー押下後、Oキー押下で通信設定
    // Ctrl+Aキー押下後、Zキー押下で各種操作
    

    コメント

    このブログの人気の投稿

    v4l2-ctlで行うUSBカメラ設定方法まとめ

    Raspberry Pi Picoのステップ実行できる開発環境づくり