picのお供にraspberry pi - 電子工作の実験室 picと接続できるdisplay...
TRANSCRIPT
PICのお供にRaspberry pi
巷で噂のRaspberry pi
XYステージの操作パネル
”USBシリアルでパソコンに接続し、JavaFXで表示する”という構想だったが・・・
”パソコンのキーボードやマウスで操作するのは、煩わしい。”
”タッチスイッチで操作できるようにしたい。”
”PICと接続できるDisplay Adapterがあれば・・・”
代替策
”Raspberry piをDisplay Adapterとして使う”
<メリット>
I2c,UART,SPIが使える。
Ethernetでパソコンともつながる。
JavaFXが使える。(後で問題発覚)
ギガバイトのログが取れる。
<デメリット>
ビデオ出力がHDMIまたはコンポジット。
(古い液晶ディスプレイが使えない)
お試しセット
スマートフォン用電源
(5V1A)
HDMI-VGA変換器
Raspberry pi
SDカード(8G クラス4)
簡単に動いた
Raspbianのイメージ・ファイルをSDカードに書き込み、電源ON ==>Raspbianが動いた
ここから先が大変だった
bcm2835ライブラリ(C言語で書かれている)を入手した。
OpenSSHとsambaをインストールした。
CygwinでX-windowを立ち上げ、Raspbianをパソコンから操作できるようにした。
Netbeansでリモート開発環境を整えた。
(Raspberry piでIDEを動かすのは無理だった)
JDK 8(EA)をインストールした。
Javaからbcm2835ライブラリを呼び出すインターフェース・プログラムを書いた。(単にJNA経由で呼び出すのでは駄目だった)
Raspberry piのJavaFXはリモート表示できないのでSwingで書き直した。
インターフェース・プログラム(bcmlib_for_java)をGITHUBに登録した。
I2CでPIC16F1938と接続
PIC16F1938を使ったタッチスイッチの試作実験
Javaプログラムimport dkl.bcm2835;
● public class I2c_2 {
●
● public static void main(String[] args) {
● byte[] receive_buff = new byte[32];
●
● Swing_test swing_test = new Swing_test();
● bcm2835.bi_init(args[0]);
● bcm2835.i2c_begin();
● bcm2835.i2c_setSlaveAddress( (byte)0x30 );
● bcm2835.i2c_set_baudrate( 100000 );
● bcm2835.ope_sync();
● for( short loop = 0;loop<10000;loop++)
● {
● ret = bcm2835.i2c_read( receive_buff, 16 );
● if( ret == 0 )
● {
●
posi = 0;
● for( byte i=0;i<8;i++)
● {
● short val;
● val = receive_buff[posi++];
● if( val < 0 )val+=256;
● val += receive_buff[posi++]*256;
● swing_test.Update(i, val);
● }
● }
● bcm2835.bi_delay(100);
● bcm2835.ope_sync();
● }
● bcm2835.i2c_end();
● bcm2835.bi_close();
● }
● }
●
X-windowCygwinでX-windowを立ち上げ、Raspbianをリモート表示する。
試験データ
ALL OFF CH3 CH7 ON