LoginSignup
9
4

More than 1 year has passed since last update.

Elixir/Nerves UARTでシリアルコンソール接続

Last updated at Posted at 2022-08-24

はじめに

NervesJP #28 夏休みにNervesでこんなんやってみましたLT回!!でのLTを目標に取り組んだ活動をまとめます。技術力はありません。ただ楽しんでいます。

組み込み開発の基本中の基本(多分)のUARTシリアルコンソール接続をまだやったことがなかったので、挑戦しました。

Nervesマシンに接続する方法は複数ありますが、僕は基本的に今までずっとUSBもしくはWiFiでホストマシンからRaspberry Pi Zero Wに接続して通信するパターンのみでやってきました。

USBでの接続は一見簡単で便利そうなのですが、トラブルも起こりがちです。
例えば、USBケーブルが充電専用の場合はデータ通信ができないのですが、見た目で区別するのが困難です。
また、ブート時に問題がある場合に何も見ることができません。

ベテランのNervesアルケミストや組込エンジニアの話を聞いていると、どうもUARTシリアルコンソール接続がよく使用されるらしいです。
ネットワークやブートプロセスのデバグ、および高度な開発ワークフローに役立つそうです。

USB-to-TTLシリアルケーブルを入手する

バラ線がRaspberry PiのUARTピンにつながり、USBコネクタが開発ホストマシンにつながります。

おそらく初めての場合は開発ホストマシンにケーブルを使用するためのドライバーをインストールする必要があります。

以下の記事の序盤に詳しく説明されています。

Nervesが各ターゲットに対してどのような機能をサポートしているか確認

各ターゲットでデフォルトの機能が異なります。
言い換えると、Raspberry Pi Zero W (rpi0)とRaspberry Pi 3 (rpi3)とでは初期設定が異なります。

nerves_system_<ターゲット名>プロジェクトのドキュメントを参照してください。
例えば、ターゲットがRaspberry Pi Zero(rpi0)の場合、https://hexdocs.pm/nerves_system_rpi0 にアクセスしてみてください。

そしてそのNerveシステムがIExターミナル機能をどのようにサポートしているかを調べます。

本記事を書いている時点で、nerves_system_rpi0 (Raspberry Pi Zero用のNervesシステム)のドキュメントには、(初期設定で)ttyAMA0という名称のUARTポートがIExターミナルに使用できると書かれています。

ちなみにこれはnerves_system_rpi0のソースコードのここで設定されています。

ソフトウエア(Linux)の/dev/ttyAMA0というデバイスファイルは、ハードウエア(Raspberry Pi Zero)上ではUART0という名称になっており、それがGPIOの8番ピンと10番ピンに対応するそうです。

Image credit: https://pinout.xyz

ターゲットによっては初期設定がHDMIディスプレイをUSBキーボードを使用する前提となっています。
そのようなターゲット上でUARTシリアルコンソールをメインで使用したい場合は、初期設定を上書きすることができます。
Nerves公式ドキュメントをご覧ください。

配線

Raspberry Pi USB-to-TTL Serial Cable
TX0 (pin 8 / GPIO 14) RX
RX0 (pin 10 / GPIO 15) TX
GND GND

4本バラ線が出ていると思いますが、ここでの目的はシリアルデータ通信であるため、電力線は必要ありません。

端末エミュレータをインストール

USB-to-TTLシリアル ケーブルは、テキスト出力を標準のシリアルUSBポートに変換します。
シリアルコンソールをサポートするオープンソースの端末エミュレータプログラムがいくつかあります。
他にもおすすめのものがありましたら、お便りください。

端末エミュレータを実行

picocom /dev/tty.usb* -b 115200

usb*は自動的にホストマシン上のUSBポート名に展開されます。

iex(1)>プロンプトが表示されると思います。そうでない場合は、Enterを数回押してみてください。

さいごに

せっかく新しいことを学んだので、世界の初心者Nervesアルケミストたちと共有したく思い、ついでにautoracexでモクモクとNerves公式ドキュメントのアップデートに取り組みました。

日本語版 | 英語版

@MickeyOohさんが立ち上げ中のログにログを表示させる方法についてまとめてくださってます。

Elixirを楽しみましょう!

Elixirコミュニティに初めて接する方は下記がオススメです

Elixirコミュニティ の歩き方 -国内オンライン編-

https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian

image.png

日本には28箇所のElixirコミュニティがあります

image.png

日程からイベントを探すならElixirイベントカレンダー:calendar:

image.png

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4