UARTのGPIOピン
UARTの送信ピン及び受信ピンは、それぞれ、GPIOヘッダーの8番ピン(TXD)、10番ピン(RXD)に割り当てられています。(SoCのGPIO14番ピン及び15番ピン)
UART0をシリアル通信で使用する方法
1.Linuxのシリアルコンソールを無効化します。
Raspbianをインストールした時点では、プライマリUART(/dev/serial0)がLinuxのシリアルコンソールとして使用されています。シリアル通信で使用するため、Linuxのシリアルコンソールとして使用されないように変更します。
Raspbianをインストールした時点では、プライマリUART(/dev/serial0)がLinuxのシリアルコンソールとして使用されています。シリアル通信で使用するため、Linuxのシリアルコンソールとして使用されないように変更します。
【修正前】 pi@raspberrypi:~ $ cat /boot/cmdline.txt dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=0af269bc-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
/boot/cmdline.txtを以下のとおり編集します。
Linuxシリアルコンソールに関する項目(console=serial0,115200)を削除し、その他はそのまま残します。
Linuxシリアルコンソールに関する項目(console=serial0,115200)を削除し、その他はそのまま残します。
pi@raspberrypi:~ $ sudo vi /boot/cmdline.txt console=serial0,115200 ← この項目を削除する。
【修正後】 pi@raspberrypi:~ $ cat /boot/cmdline.txt dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=0af269bc-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
2.シリアル通信にUART0を使用するように変更します。
以下のような方法があります。
以下のような方法があります。
- Bluetoothを無効化する方法
Bluetoothを使用しない場合は、Bluetoothを無効化します。これにより、UART0がGPIOヘッダーの8番ピン(TXD)、10番ピン(RXD)に割り当てられ、シリアル通信で使用することがきます。/boot/config.txtファイルを以下のとおり編集します。 pi@raspberrypi:~ $ sudo vi /boot/config.txt ・・・ dtoverlay=pi3-disable-bt ← この行を追記する。 ・・・
プライマリUART(/dev/serial0)としてUART0(/dev/ttyAMA0)が割り当てられ、セカンダリUART(/dev/searal1)として、miniUART(/dev/ttyS0)が割り当てらます。pi@raspberrypi:~ $ ls -l /dev ・・・ lrwxrwxrwx 1 root root 7 Mar 14 10:17 serial0 -> ttyAMA0 ・・・ lrwxrwxrwx 1 root root 5 Mar 14 10:17 serial1 -> ttyS0 ・・・ crw--w---- 1 root tty 204, 64 Mar 14 10:17 ttyAMA0 ・・・ crw-rw---- 1 root dialout 4, 64 Mar 14 10:17 ttyS0 ・・・
次に、UARTで通信を行うBluetoothモデムを初期化するサービスを無効化します。pi@raspberrypi:~ $ sudo systemctl disable hciuart Removed /etc/systemd/system/multi-user.target.wants/hciuart.service.
最後に、再起動を行います。 - Bluetoothとの通信にminiUARTを使用する方法
シリアル通信を行うとともに、Bluetoothを使用する場合は、Bluetootモジュールとの通信にminiUARTを使用するように変更します。これにより、UART0をシリアル通信で使用することができます。
/boot/config.txtファイルを以下のとおり編集します。 pi@raspberrypi:~ $ sudo vi /boot/config.txt ・・・ dtoverlay=pi3-miniuart-bt ← この行を追記する。 ・・・
プライマリUART(/dev/serial0)としてUART0(/dev/ttyAMA0)が割り当てられ、セカンダリUART(/dev/searal1)として、miniUART(/dev/ttyS0)が割り当てらます。
pi@raspberrypi:~ $ ls -l /dev ・・・ lrwxrwxrwx 1 root root 7 Mar 14 10:17 serial0 -> ttyAMA0 ・・・ lrwxrwxrwx 1 root root 5 Mar 14 10:17 serial1 -> ttyS0 ・・・ crw--w---- 1 root tty 204, 64 Mar 14 10:17 ttyAMA0 ・・・ crw-rw---- 1 root dialout 4, 64 Mar 14 10:17 ttyS0 ・・・
次に、GPUのコアクロックを固定し、シリアル通信のボーレートが変化しないようにします。
/boot/config.txtファイルを以下のとおり編集します。 pi@raspberrypi:~ $ sudo vi /boot/config.txt ・・・ core_freq=250 ← この行を追加する。
3.以上で、GPIOを使用してシリアル通信を行うことができます。
CU でターミナル
にラズベリーパイと USB シリアルケーブルとを接続します。USB シリアルケーブルの黒(GND)をラズパイの6番ピン、白(UART TXD(14))を8番ピン、緑(UART RXD(15))を10番ピンにそれぞれ接続します。赤は結線の必要がないので宙ぶらりんのままです:
次に Ubuntu 側の準備です。実は特別にデバイスドライバを準備することもなく、そのまま認識されます。が、ただ認識しただけでは通信はできないため、そのための準備が必要です。
まず、今回のシリアル通信には cu コマンドを使います。なので、まずは cu をインストールします:
次に Ubuntu 側の準備です。実は特別にデバイスドライバを準備することもなく、そのまま認識されます。が、ただ認識しただけでは通信はできないため、そのための準備が必要です。
まず、今回のシリアル通信には cu コマンドを使います。なので、まずは cu をインストールします:
$ sudo apt-get install cu
次にシリアルポートの確認と設定を行います。Ubuntu の USB ポートに USB シリアルケーブルを接続し、次のコマンドを入力して、ちゃんと認識できているかどうかを確認します:
$ ls -l /dev/serial/by-id/
USB シリアルケーブルが正しく認識できていると /dev/ttyUSB0 といった感じで最後に 0(ゼロ)が付いたデバイスとして認識されます。今回は /dev/ttyUSB0 として認識されていると仮定して以下の説明を続けます:
/dev/ttyUSB0 の権限を変更します:
$ sudo chmod 666 /dev/ttyUSB0
ここまでの手順で準備が完了しました。最後に cu コマンドで目的のデバイスに接続します。その際にボーレートを 115200 bps に指定して接続します:
$ sudo cu -s 115200 -l /dev/ttyUSB0
成功するとこんな感じでラズパイのログインプロンプトが現れ、ログインできます:
モニタがないとか、無線LAN がないとか、無線 LAN の環境が普段と違う時(の無線 LAN の設定を変えたい時)でもラズパイを使えて、とても便利な接続方法です。アナログ最強!
0 件のコメント:
コメントを投稿