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


Ignore:
Timestamp:
09/25/18 17:00:57 (7 years ago)
Author:
Takashi 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%)]]