Raspberry piでシリアルサーボ

16
Raspberry Piでシリアルサーボ システム工学郡3年 山本達也

Transcript of Raspberry piでシリアルサーボ

Raspberry Piでシリアルサーボ

システム工学郡3年 山本達也

はじめに

•本当は画像処理をする予定でしたん

• カメラがちゃんと動かなかったので断念

Raspberry Piとは?

• $35で買えるお手軽PC

• CPUはARM11 700MHz

• メモリ 512MB

• SDカードからOS読み込み

• OSはubuntuベースのrasbian

• IO操作ができる

良く言うと超高スペックなマイコン、悪く言うと低スペックなPC

シリアルサーボとは?

•近藤科学が出しているサーボモータに付属するシリアル通信ができるモデルのサーボ。

•基本的にPWMも対応している。

•時代によって、ICS1.0~ICS3.5と規格が変わっていった。

•規格としては一線式UARTになっている。

UARTとは?

• UART (Universal Asynchronous Receiver Transmitter)とはシリアル通信の方式の一つである。ユーアートって読むらしい。

•似ている規格(ほぼ同じ?)としてRS-232CやUSARTやLINなどいろいろありますん。

• スタートビットでデータの送信を開始し、ストップビットで送信を終了する。

Raspberry PiでUART

•方法1• レジスタをたたく

• いろいろめんどい、だが高速

•方法2• WiringPiというライブラリを使用する ←採用

• GPIO,PWM,I2C,SPI,UART,LCDのライブラリがあり、お手軽

WiringPiのインストール

• Raspberry PiにRasbianが乗っていることが前提。Rasbian以外で動くかは知らないです。

•下のコマンドをターミナル上で実行(クローンしてビルド)

$ git clone git://git.drogon.net/wiringPi

$ cd wiringPi

$ ./build

これでおk!

WiringPiの使用方法

• Sample見たらわかるよん。

• GitHubにもそのうちあげますん。

ICS3.5の規格

•通信条件• 通信速度 115200bps(default), 625000bps, 1.25Mbps

• ビット長 8bit

• スタート 1bit

• ストップ 1bit

• フロー制御無し

• パリティ EVEN(偶数)

•送信コマンドのループバック、マルチドロップ接続

• シリアル通信モードへの移行• 電源投入時に信号線を500mS間、Hレベルに保つことで通信が可能になる。

• LレベルにするとPWMモードに移行する。

Raspberry Piで一線式UART

• とりあえず、RxとTxをつないでみた• →動かないのん

• つないでプルアップしてみた• →動かないのん

Raspberry Piで一線式UART

• とりあえず、RxとTxをつないでみた• →動かないのん

• つないでプルアップしてみた• →動かないのん

• ヒカリ大先生に聞いてみた• トランジスタを挟んでプルアップしたらいいっぽい。

接続回路

信号波形

送信信号 受信信号

なんか歪んでる、原因不明

いちおう、送受信は成功している

結果

•通信は成功していた!

•サーボ回った!

•サーボの回転角度は0~16383の14bit値 0は脱力

• ただし、約1~3000と約11000~16383では回転しなかった。• 回転値の計算間違いの可能性あり

• あと、パラメータ書き込み、読み込みコマンドが使用できたらスピード制限、電流制限ができるはず!

まとめ

• ICS3.5はわりと簡単• 送受信のペリフェラル関係が解決すれば簡単

• Raspberry PiでIO操作はわりと簡単

•要はスマートでインテリジェンスだからみんなRaspberry Piをしよう!