21
IchigoJam交流会 in 大阪日本橋 西村備山(@lipoyang) SerialScreen マイコンのための仮想ディスプレイ

SerialScreen

Embed Size (px)

Citation preview

IchigoJam交流会 in 大阪日本橋

西村備山(@lipoyang)

SerialScreen マイコンのための仮想ディスプレイ

自己紹介

西村備山 (@lipoyang)

■奈良県在住&勤務

■組込み系技術者

■ミニ四駆ラジコン

■仏教徒 (中観派)

SerialScreen 概要

PC/タブレットをマイコンの表示器に

シリアル通信

液晶はもめごとの種

ソフト屋 … 解像度とUIデザイン

ハード屋 … メモリ容量・CPUパワー

メカ屋 … 筐体設計・部品配置

量産 … BOM上位にくる部品単価

液晶選定は各方面に重大な影響

画面はPCやタブレットで!

誰もが表示デバイスを持ってる

Web技術なぁ…

標準的な技術が存在

HTML5, Flash, Silverlight... (知らんけど)

ハード/ソフトとも要求が高い

有線 or 無線のネットワークI/F

TCP/IP, HTTPをしゃべる

シリアル通信ベースで!

ローエンドのマイコンにもある口

=UART (シリアル通信)

PCやタブレットとの接続

USBシリアル変換 (FTDI)

Bluetooth (SPP, BLE)

SerialScreen

描画API

シリアル通信

SerialScreen

プロトコル

SerialScreen ライブラリ

ユーザー プログラム

SerialScreen アプリ

デモ Arduino+地磁気センサ

TODO 写真

SerialScreenプロトコル

描画API

シリアル通信

SerialScreen

プロトコル

SerialScreen ライブラリ

ユーザー プログラム

SerialScreen アプリ

SerialScreenプロトコル

STX ETX Com Parameter

アスキー形式の電文

0x02 0x03 1byte 可変長

数値は16進表記

シリアル通信

ハンドシェイクは無し

Data 8bit, Non-Parity, Stop 1bit

Baud Rate: 9600/19200/38400/57600/115200

フロー制御無し 信号線はRxD/TxDのみ

SerialScreen API

drawLine 直線を描く

drawRectangle 長方形を描く

fillRectangle 長方形を塗る

drawPolygon 多角形を描く

fillPolygon 多角形を塗る

drawCircle 円を描く

fillCircle 円を塗る

drawPie 扇形を描く

fillPie 扇形を塗る

setScreen 画面サイズ設定

clearScreen 画面消去

setColor 色/線幅 設定

setFont 文字サイズ設定

drawString 文字列を描く

loadImage 画像読み込み

drawImage 画像を描く

redraw 画面の再描画

SerialScreenライブラリ

描画API

シリアル通信

SerialScreen

プロトコル

SerialScreen ライブラリ

ユーザー プログラム

SerialScreen アプリ

SerialScreenライブラリ

C++による実装 SerialScreen

- m_serialPort

- m_command[ ]

+ open( port, baud )

+ close( )

+ isOpen( )

+ setScreen(w, h)

+ cleanScreen( color )

+ setColor( color, width )

+ drawLine(x1, y1, x2, y2)

+ drawRectangle(x, y, w, h)

+ fillRectangle(x, y, w, h)

+ drawPolygon(num, *points )

+ fillPolygon(num, *points )

+ drawCircle(x, y, w, h)

+ fillCircle(x, y, w, h)

+ drawPie(x, y, w, h, start, weep)

+ fillPie(x, y, w, h, start, sweep)

+ setFont(size)

+ drawString(x, y, s)

+ drawImage(x, y, index)

+ loadImage(index, path)

+ redraw()

SerialScreenライブラリ

SerialPortクラス→マイコンごとに実装

SerialPort

- ( ハードウェア依存)

+ open( port, baud )

+ close( )

+ isOpen( )

+ write( *buff, len )

+ read( *buff, len )

+ getError( )

SerialScreenアプリ

描画API

シリアル通信

SerialScreen

プロトコル

SerialScreen ライブラリ

ユーザー プログラム

SerialScreen アプリ

SerialScreenアプリ

C#による実装 (for Windows)

課題① アプリの多OS対応

Android with FTDriver / SPP

iOS …シリアルの口は?

Mac

Linux

現状:Windowsアプリのみ

課題② ウィジェット対応

ボタン

チェックボックス

テキストボックス

ラジオボタン etc.

インタラクティブなUIの実現

課題③ ファイル入出力対応

ログ出力

設定の保存/読み込み

PCを外部ストレージとして利用

パラメータ調整等の効率化にも!

乞うご期待

描画API

シリアル通信

SerialScreen

プロトコル

SerialScreen ライブラリ

ユーザー プログラム

SerialScreen アプリ

GitHub: SerialScreen で検索