ハードウェア I/O 1 day1 15:00 ~ KEK, High Energy Accelerator Research Organization 帯名 崇 (takashi.obina@kek.jp) 2018/11/01 ~ 02 EPICS入門セミナー@KEK つくばキャンパス(3号館1階会議室)

Slides:



Advertisements
Similar presentations
Faculty of Computer and Information Sciences, Hosei University Resource Administration Team CIS RAT 1 Linux リテラシ 2006 第 3 回 エディタ、シェル.
Advertisements

RitsPen 2.0 起動方法 CentOS を 例にして. CentOS を起動した状態 RitsPen がインストールしておく.デスクトップに ritspen というフォルダがあるはず.
P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title 年 2 月改訂.
論理回路 第 4 回 TkGate 実習 - 組み合わせ論理回路 38 号館 4 階 N-411 内線 5459
ネットワークからみるPCC 寺内康之.
BBT大学 Ruby on Rails開発環境セットアップマニュアル
実習1:コマンドシェルの使い方.
初年次セミナー 第8回 データの入力.
UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
知能機械工学科 担当:長谷川晶一 TA:新・後藤・ナンバ
Macユーザーの方:データ転送 ターミナル使用.
IT講習会 MicrosoftWord(2007ver.)編 (Wed) Edited by KON
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
コンピュータリテラシー 第3回授業の復習 基本的なUNIXコマンド
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
コンピュータ上でICトレーナーを動かそう!!
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
数値計算及び実習 第7回 プログラミングの基礎(5).
FPGAを用いたMG3用 インターフェース回路の解説
Fire Tom Wada IE dept. Univ. of the Ryukyus
情報システム構築 -グループ分けとCVSの初期設定-
実習1:コマンドシェルの使い方.
PIC制御による赤外線障害物 自動回避走行車
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
情報学部 プログラミング体験教室 (初級編)
スクリプト言語を用いたPHITSの連続実行
マイクロソフト Access を使ってみよう 第1回
2005年11月2日(木) 計算機工学論A 修士1年 No, 堀江準.
KiCadで IoT電子工作を はじめよう 補足資料
マイクロソフト Access を使ってみよう 第4回
   電気回路について学習する。        (センサを使用した電気回路) 〇 めあて トランジスタを使った、電気回路を つくろう。
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
Integration between GitLab and Fuego
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
第1回.リレーショナルデータベースを使ってみよう
情報処理概論Ⅰ 2007 第4回 2018/11/30 情報処理概論Ⅰ 第4回.
PCPU物理設計 ~マクロレベルの配置配線~
VBA ( Visual BASIC for Application) を使えるようにする方法
中間レポート進捗状況 情報学科  番 望月大幹.
コマンドプロンプトの起動と終了 最初に覚えるコマンド ディレクトリ構造とパス 各種コマンドの練習 Cコンパイルとプログラムの実行
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
実践ロボットプログラミング LEGO Mindstorms EV3 で目指せロボコン!
マイクロソフト Access を使ってみよう 第2回
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
UNIX演習 情報ネットワーク特論.
情報処理 タイマの基礎 R8C タイマの基礎.
ブレッド・ボードを用いた回路の作成 気温データ・ロガー編.
フィジカル・コンピューティング Arduino入門.
2009年8月17日,新潟大学 「情報」と「ものづくり」 の実践教育2 佐藤亮一,下保敏和.
NFC Dynamic Tag “ST25DV“のご紹介
B演習(言語処理系演習)第2回 田浦.
Fire Tom Wada IE dept. Univ. of the Ryukyus
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
  MESHプログラミング (Ver /09/14)  MESHという小型コンピュータセットを使って、IoT(モノのインターネット)は何か考えながら、いろいろなものを作っていきましょう。 MESHのしくみや使い方を詳しく知りたい人は読んでね。 内容: 0. MESHの前に、IoTって何?
プログラミング入門 電卓を作ろう・パートI!!.
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
Cluster EG Face To Face meeting
RaQ3/4パッチ強化セミナー CobaltResQ 小田 誠.
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
ニューラルネットワークの仕組み (Raspberry PI 演習で学ぶ) AI DATA VASSEL 資料
ブレッド・ボードを用いた回路の作成 気温データ・ロガー編.
信号伝搬時間の電源電圧依存性の制御 による超伝導単一磁束量子回路の 動作余裕度の改善
EPICS 入門 KEK, High Energy Accelerator Research Organization 帯名 崇
2009年8月18日,新潟大学 「情報」と「ものづくり」 の実践教育3 下保敏和,佐藤亮一.
キネクトとは 第1回.
Presentation transcript:

ハードウェア I/O 1 day1 15:00 ~ KEK, High Energy Accelerator Research Organization 帯名 崇 (takashi.obina@kek.jp) 2018/11/01 ~ 02 EPICS入門セミナー@KEK つくばキャンパス(3号館1階会議室)

このセッションでのおはなし 実習で使うモノの確認 EPICSを使わずに動作確認 EPICSでLED制御 GUIを作成して遠隔制御 最後に Raspberry Pi + EPICS という環境で、ハードウェアを制御する。今回は最も簡単な例として、GPIO(General Purpose Input/output)を使ってLED を点灯させる。 実習で使うモノの確認 Raspberry Pi, ブレッドボード、LED、抵抗他 壊さないための注意 EPICSを使わずに動作確認 EPICSでLED制御 GUIを作成して遠隔制御 最後に お手元の手引書に実習の詳細は記載してあります 2018/11/01 Hardware I/O 1 T. Obina

Raspberry Pi とは何か Homepage: https://www.raspberrypi.org/ Wikipediaの記載↓ 2018/11/01 Hardware I/O 1 T. Obina

お手元にあるのは Raspberry Pi 3 model B+ 主な外部インターフェース 2018年3月に発売開始。Ethernetが1Gbpsになった。 RSコンポーネンツから購入可能。 今回は使用しませんが、無線LANも搭載 Pi2 に比べると消費電力も大きいのでACアダプタ推奨(2.5A) 主な外部インターフェース USB × 4 Ethernet GPIO HDMI microUSB : ほぼ電源用 ※今回の実習では使いませんが、キーボード、マウス、USBをつなげば端末として使用可能です。GUI(デスクトップ画面)が必要な人は VNC 経由で接続してください 2018/11/01 Hardware I/O 1 T. Obina

GPIO https://github.com/splitbrain/rpibplusleaf https://pinout.xyz https://elinux.org/RPi_Low-level_peripherals このLeafは各自に配布しています。 穴をあけるとピンに嵌めることができて便利です。 2018/11/01 Hardware I/O 1 T. Obina

pinoutコマンド 各自、実行して確認してください 2018/11/01 Hardware I/O 1 T. Obina

LEDを光らせるには ダイオードを光らせるには「順方向電圧」が必要です 最大電流も(本当は)スペックシートで確認してください スペックシートを読みましょう (今回のLEDでは 1.8 – 2.6 V) Vf と記載してあることが多い 最大電流も(本当は)スペックシートで確認してください 今回のLEDでは Max 50 mA, Typical 20 mAですが、試してみると適当な明るさで光らせるためには 10 mA も流せば十分なようです。 電流を制限するための抵抗を取り付けます 抵抗無しだと、LEDかRasPiのどちらかが壊れます 何Ω必要? 2018/11/01 Hardware I/O 1 T. Obina

GPIOピンはどこまで流せる? 電源ピンと異なり、GPIOピンは電流をたくさん流せません GPIO : 各ピン 16 mA まで、合計 50 mA まで 3.3 V 電源系:最大 50 mA 5.0 V 電源系:300 mA 程度までは流せる 2018/11/01 Hardware I/O 1 T. Obina

ブレッドボード ブレッドボードとは、はんだを使わずに回路を試作できる、とても便利なモノです。両端は電源線として使い、横方向5個がつながっています。中央は切れているので、例えばICを置くのに便利(次ページ)。 両端は縦方向につながっている →電源ラインとして使うのが便利 中央は切れている 2018/11/01 Hardware I/O 1 T. Obina

例えばICを置くときは中央に 2018/11/01 Hardware I/O 1 T. Obina

配線してみましょう 今回は、GPIO17番のピンを使います 2018/11/01 Hardware I/O 1 T. Obina

EPICSを使わずに確認 動作確認のため、まずはEPICSを使わずに本当に点灯するかどうかを確認します。以下のコマンドを入力してください。 ※この段階で点灯しないならば、何かが間違っています。 $ gpio -g mode 17 out  <-- GPIO #17 を出力モードに設定 $ gpio -g write 17 1   <-- 電圧HIGH 出力 $ gpio -g write 17 0   <-- 電圧LOW 出力 2018/11/01 Hardware I/O 1 T. Obina

EPICSを使わずに確認(その2)sysfs :紹介のみ 0. 作業前の状態を確認 $ ls /sys/class/gpio/ export gpiochip0 gpiochip128 unexport 1. gpio ピンを使う宣言をおこなう $ echo 17 > /sys/class/gpio/export $ ls /sys/class/gpio/ export gpio17 gpiochip0 gpiochip128 unexport $ ls /sys/class/gpio/gpio17/ active_low device direction edge power subsystem uevent value 2018/11/01 Hardware I/O 1 T. Obina

EPICSを使わずに確認(その2) sysfs :紹介のみ 2. 方向の確認 $ cat /sys/class/gpio/gpio17/direction in となっているので、out に書き直す $ echo out > /sys/class/gpio/gpio17/direction out 3. 値を設定して ON/OFF $ cat /sys/class/gpio/gpio17/value $ echo 1 > /sys/class/gpio/gpio17/value 1 2018/11/01 Hardware I/O 1 T. Obina

EPICSを使わずに確認(その2) sysfs :紹介のみ 4. 最後に、消灯してから $ echo 0 > /sys/class/gpio/gpio17/value 使用終了宣言をおこなう $ echo 17 > /sys/class/gpio/unexport $ ls /sys/class/gpio/ export gpiochip0 gpiochip128 unexport 2018/11/01 Hardware I/O 1 T. Obina

EPICSを使わずに確認(その3)python :紹介のみ gpiozero モジュールを使用する例。 (ほかにもpythonモジュールは存在する) $ python Python 2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from gpiozero import LED >>> from time import sleep >>> led = LED(17) >>> led.on() >>> led.off() 2018/11/01 Hardware I/O 1 T. Obina

EPICS Application 作成 最終的に出来上がるディレクトリ構成は以下の通り . |--epics | |-- app | | | | |-- gpio1 | |-- configure | | |-- Makefile | | |-- RELEASE | | | |-- gpio1App | | |-- Db | | | |-- Makefile | | | `-- test.db | | `-- src | | |-- gpio1Main.cpp | | `-- Makefile | |-- iocBoot | | |-- iocgpio1 | | |-- Makefile | `-- st.cmd | |-- example |-- stream 2018/11/01 Hardware I/O 1 T. Obina

makeBaseApp.pl makeBaseApp.pl テンプレートとして “ioc” を使う $ mkdir -p epics/app/gpio1 $ cd epics/app/gpio1/ $ makeBaseApp.pl -t ioc gpio1 $ makeBaseApp.pl -i -t ioc gpio1 Using target architecture linux-arm (only one available) The following applications are available: gpio1 What application should the IOC(s) boot? The default uses the IOC's name, even if not listed above. Application name? <---- Enter を入れるのみ 2018/11/01 Hardware I/O 1 T. Obina

configure/RELEASE編集 ファイルを編集して、以下のコメントを外す #SNCSEQ=/opt/epics/R315.6/modules/soft/seq/2.2.4 #ASYN=/opt/epics/R315.6/modules/soft/asyn/4-31 #STREAM=/opt/epics/R315.6/modules/soft/stream/2-7-7 #STREAM=/opt/epics/R315.6/modules/soft/stream/2-7-7_I2C RPIGPIO=/opt/epics/R315.6/modules/soft/gpio/20160308 #RPII2C=/opt/epics/R315.6/modules/soft/i2c/20170603 2018/11/01 Hardware I/O 1 T. Obina

databaseファイル作成 <TOP>/gpio1App/Dbディレクトリに移動し、データベースを作成 record(bo, "$(head):GPIO17:OUT") { field(DTYP, "devgpio") field(OUT, "@17 H") field(ZNAM, "OFF") field(ONAM, "ON") } 2018/11/01 Hardware I/O 1 T. Obina

srcディレクトリで Makefile 編集 <TOP>/gpio1App/srcディレクトリに移動し、Makefie編集 その後、<TOP>ディレクトリに戻って make かける。 エラーが出ていないことを確認 ... gpio1_DBD += devgpio.dbd gpio_registerRecordDeviceDriver pdbbase gpio1_LIBS += devgpio 2018/11/01 Hardware I/O 1 T. Obina

startup script 編集 <TOP>/iocBoot/iocgpio1ディレクトリに移動し、st.cmd 編集 実行フラグをつけてから、iocを起動する エラーが出ないことを確認。 #!../../bin/linux-arm/gpio1 .... dbLoadDatabase "dbd/gpio1.dbd" dbLoadRecords("db/test.db", "head="ET_kektaro") <--追加 GpioConstConfigure("RASPI B+") <--- 追加 cd "${TOP}/iocBoot/${IOC}" iocInit $ chmod +x st.cmd $ ./st.cmd 2018/11/01 Hardware I/O 1 T. Obina

コマンドラインから制御 dblコマンドでデータベース確認 dbpfで値を設定→LEDを確認 epics> dbl ET_kektaro:GPIO17:OUT epics> dbpf ET_kektaro:GPIO17:OUT 1 DBR_STRING: "ON" epics> dbpf ET_kektaro:GPIO17:OUT 0 DBR_STRING: "OFF" 2018/11/01 Hardware I/O 1 T. Obina

コマンドラインから制御 別の端末を開く caget, caput で値設定、確認 $ caget ET_kektaro:GPIO17:OUT ET_kektaro:GPIO17:OUT OFF $ caput ET_kektaro:GPIO17:OUT 1 Old : ET_kektaro:GPIO17:OUT OFF New : ET_kektaro:GPIO17:OUT ON ET_kektaro:GPIO17:OUT ON $ caput ET_kektaro:GPIO17:OUT OFF Old : ET_kektaro:GPIO17:OUT ON New : ET_kektaro:GPIO17:OUT OFF 2018/11/01 Hardware I/O 1 T. Obina

GUIから制御 CSSでGUIを作成 2018/11/01 Hardware I/O 1 T. Obina

時間がある人へ 他の人のLED をモニター(or 制御!) bo レコードに 0/1 以外の数値を入れてみる。例えば 0.3 とか 7 等 bo レコードの HIGH フィールドを設定してパルス出力(モーメンタリー出力)に変更してみる→変更したあとは make必要 ioc を終了する際にCTRL-Cで停止すると次に起動したときに警告表示が出る(動作に問題はない)。これの原因は? exitコマンドを使ってiocを終了すれば警告表示は出ない。 devgpio のソースコード/opt/epics/R315.6/modules/soft/gpio/20160308 を眺めてみる 複数のLEDを同時に設定したい:ビット列のデータを同時に設定する(mbbo またはlongout) : デバイスサポートはbi/bo のみなので、DB Link で実現するのがとりあえずは簡単。 2018/11/01 Hardware I/O 1 T. Obina