Changes between Version 1 and Version 2 of epics/arduino/simpleRead


Ignore:
Timestamp:
09/25/18 17:00:57 (5 years ago)
Author:
obina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • epics/arduino/simpleRead

    v1 v2  
    11= Arduino と EPICS を使った簡単な例 = 
    2 家庭でも遊べるように、簡単なサンプルをつくる。 
     2[[PageOutline]] 
     3家庭でも遊べるように、簡単なサンプルをつくることが目的。[[br]] 
     4「ArduinoはUSBシリアル経由でデータを垂れ流しにする」「EPICS IOC(Raspberry Pi) 側からコマンドは送らず、Listenするのみ」という構成にする。 
    35 
    46== 準備 == 
     
    1113   * EPICSインストールについては[wiki:epics/raspberrypi 別の記事を参照] 
    1214 * USB ケーブル 
    13  * ブレッドボード、ジャンパー系ブル 
     15 * ブレッドボード、ジャンパーケーブル等 
    1416 * 半固定抵抗と固定抵抗(今回は手元にあった 1kΩのモノを使用) 
    1517 
    1618== 方針 == 
    17 [!RasPi (epics IOC)] --[USB]--[Arduino]--AnalogIN--register [[br]] 
     19[!RasPi (epics IOC)] --(USB)--[Arduino AnalogIN] -- 可変抵抗に5V印加 [[br]] 
    1820 
    19 * アナログ入力を読み込み、シリアル経由でホストに通信。最初はPCを使って動作検証し、その後EPICS化する。 
     21* アナログ入力を読み込み、シリアル経由でホストに通信。最初はPCを使って動作検証し、その後EPICS化する。 
    2022* Arduino Uno の場合、0-5Vを 10bit(0-1024)で読み込むことが可能 
    2123* 5V 電圧+可変抵抗+固定抵抗(破損防止)で 
     
    2426 
    2527 
    26 == PCにてスケッチの検証 == 
     28= 動作確認 = 
     29== PCを使ってスケッチの検証 == 
    2730構成としては 
    2831[PC] --[USB]--[Arduino]--AnalogIN 
     
    4750この状態で可変抵抗を動かすと、カウント値が変わることを確認する。 
    4851 
     52 
     53[[Image(aruduino002.png, 40%)]] 
    4954 
    5055== Raspberry Pi に接続 == 
     
    7378 
    7479 
    75 == EPICS IOC 作成 == 
     80= EPICS IOC 作成 = 
     81== makeBaseApp == 
    7682ここまでくれば、あとはEPICSのIOCを書く。 
    7783単純に Stream Device で読み込むだけで良いので、 
     
    96102}}} 
    97103 
     104== src ディレクトリでの作業 == 
    98105srcディレクトリで、MakefileにstreamDeviceの 
    99106 * SerialPortドライバーを追加 
     
    117124}}} 
    118125 
    119 Dbディレクトリでdatabaseファイルを追加 
     126== Database ディレクトリでの作業 == 
     127Dbディレクトリでdatabaseファイルを追加。スキャンを"I/O Intr"にすることで、シリアル経由でデータが来たときのみレコードをプロセスする。 
    120128{{{ 
    121129vi read1.db 
     
    136144}}} 
    137145 
    138 Dbディレクトリに protocol file を作成 
     146Dbディレクトリに protocol file を作成。数値を"%d"で変換するのみなので単純。エラー時に 
    139147{{{ 
    140 vi simple.proto 
     148pi@raspberrypi:~/epics/app/arduino/simpleReadApp/Db $ vi simple.proto 
    141149 
    142150Terminator = CR LF; 
     
    147155}}} 
    148156 
    149 make すると、とても遅い。セルフコンパイルなので仕方ないのだが.....クロスコンパイル環境を整えねば。 
    150 stream device のサイト http://epics.web.psi.ch/software/streamdevice/ も参照。 
     157make すると、とても遅い。セルフコンパイルなので仕方ない(クロスコンパイル環境を整えたい)[[br]] 
     158stream device のサイト http://epics.web.psi.ch/software/streamdevice/ も参照。[[br]] 
    151159 
     160== startup == 
    152161startupディレクトリで st.cmd コマンド編集 
    153162{{{ 
     
    167176 
    168177エラーが出ていないことを確認すること。[[br]] 
     178 
     179== Client == 
    169180別ターミナルを開いて、 
    170181{{{ 
     
    172183}}} 
    173184とする。 
    174 あるいは、PC上でCSSを実行して、このレコードをモニター・グラフ表示する。 
     185あるいは、PC上でCSSを実行して、このレコードをモニター・グラフ表示する。[[br]] 
    175186 
     187※ 以上の動作が確認できたら、Arduinoスケッチで Delay 1000 としているところを、 100 ms に設定すると 
     188可変抵抗を動かしたときの応答が滑らかになる。Arduinoは高速で動いているのに対して、EPICSを使うことで 
     189camonitor 機能があるため値が変化したときのみデータ通信を行うことが実現できている。 
     190 
     191[[Image(aruduino004b.png, 40%)]][[Image(aruduino005.png, 40%)]]