android things raspberry pi3 UART 送受信を試す

android things で UART送受信を試した作業メモです。

USB-シリアル ケーブル


amazon等でも購入できます。

https://www.amazon.co.jp/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=USB+to+UART+TTLシリアルケーブル

接続


接続ピンは公式を参照。
https://developer.android.com/things/hardware/raspberrypi.html

こんな感じです。赤い線は繋ぎません。

 

android things側の設定


rpiに挿しているandroid things が焼かれているmicro sdカードを抜いてPCに挿して、

ターミナル等でsdカードの名前を確認する。

Macの場合は

$ diskutil list

で確認すると。

こんな感じで表示されるので sdカード(ここではdisk3)の最初のIDENTIFIER(ここではs1)をマウントします。

$ sudo mount -t msdos /dev/disk3s1 /Volumes/pisdcard  #pisdcardはmkdirしておけばOK

公式によるとUARTにはBluetooth ModeとApplication Modeがあるそうです。

bluetooth mode


デフォルトではBluetooth modeになっていますので、PCにUSBシリアルを繋いでrpi3を起動するとすぐ試せます。

teraterm等でシリアルポート接続を下記の通り設定してreturnしてみるとプロンプトが返って来ます。

Baud Rate: 115200
Data Bits: 8
Parity: None
Stop Bits: 1

Application Mode


アプリ開発のデバッグで使うのはこちらが多いかと思いますので、application modeにしてアプリでUART送受信を試してみます。

まずは、先ほどのようにsdカードをマウントして、

$ cd /Volumes/pisdcard/
で、cmdline.txtというファイルを開き、

console=serial0,115200 の部分を console=tty0 にする。

次に、config.txtというファイルを開き
dtoverlay=pi3-disable-bt を追加して

enabled_uart=1
core_freq=400
の2行を削除する

rpiに挿し直して電源ON
起動したら adb connect してrpiに接続。

 

アプリ


今回はサンプルアプリとして、https://github.com/androidthings/sample-uartloopback を使います。

cloneしてandroid studioで開けばすぐにbuildできるので、そのままアプリを run。

teratermで文字を打ってみるとちゃんとエコーバックしてくるのが確認できます。
が、そのままだとターミナルに打った文字が表示されているだけで少し分かり難いので、
送信部分に1文字足してみます。

みたいな感じで文字を付け加えて送信してみると、
打った文字の後ろに ‘/’ が付いて表示されるのでアプリからの送信をteratermで受信出来ている事が確認できます。

これでアプリに対してコマンドを送れるようになったので、コマンドパーサーを作っておけば色々なアプリで使い回せそうです。