[ 産業用ラズパイ ]と言われる< RevPi >を今日も使っていく。
前回までにIOモジュールの接続&設定しました。
今回は『IOモジュールの出力設定と入力取得』に挑戦した備忘録を紹介する。
DIO(デジタル入出力)モジュールを使った場合に特化して紹介する。
分かりやすく、一から説明するように心がけます。
電気回路の作成(ハードウェア)
準備するモノ
■ブレッドボード ■スイッチ ■抵抗 ※1kΩがあったのでソレを使う ■LED ■配線(ジャンプワイヤー)
オンラインで購入する場合は、『秋月通商』とかがオススメである。
自分は、『ハンズマン』で購入した記憶がある。
近くのホームセンターの電気コーナーで購入する事も可能であろう。
電気回路図の作成
電気は専門ではないので不安を感じながら接続します。
HARTING社で公開されているデータシートでは、回路例が紹介されている。
参考にさせてもらった事で回路図を完成させることが出来ました。。
出力はLチカ(LEDチカチカ)の回路を作ってみた。
入力はスイッチのON/OFFがみえるようにしてみた。
回路作成
【美しくない】とか言われそうですが…実際に作った時の写真です。
余談ではありますが、
【DIOモジュールの配線の接続方法】です。
オレンジ部分のボタンをマイナスドライバーで押します。
押した状態で配線を奥まで差し込みます。
奥まで差し込めたら、オレンジ部分のボタンを離します。
配線を引っ張って、抜けないことを確認しましょう。
プログラムの作成(ソフトウェア)
Pythonを使って、DIの取得(入力取得)とDOの設定(出力設定)を行います。
サンプルを紹介します。
処理内容
処理の内容としては、下記の内容を実施する。
■1秒ごとに処理を行う。 (10回の繰り返し) ■処理内容として、入力はスイッチの状態の取得 ■処理内容として、出力はON/OFF切替(ON→OFF→ON→...)
Python起動
デフォルトでインストールされている『Thonny Python IDE』で開発していきます。
[ Menu ] → [ Programing ] → [ Thonny Python IDE ]
Thonny Python が起動したら、[New]をクリックして、新規ファイルを作成する。
サンプルコード
先ほど作ったファイルに
下記に記載するコードを記載してください。
※写し間違いがあったら、ゴメンナサイ
import revpimodio2 import time revpi = revpimodio2.RevPiModIO(autorefresh = True) for cnt in range(0,10): print(f'count:{cnt+1}') #Input val = revpi.io.I_1.value print(f'input:{val}') #Output tmp = revpi.io.O_1.value if(tmp == 0): print('change D01 1') revpi.io.O_1.value = 1 else: print('change D01 0') revpi.io.O_1.value = 0 time.sleep(1) print('Finish')
実行結果
Shellウィンドウには、下記のように表示されました。
スイッチを押している時は、[True]
スイッチを話している時は、[False] でした。
出力は、「ON:1 / OFF:0」でした。
ONの時にLEDが点灯
OFFの時にLEDは消灯 しました。
実際の回路は下記のようになりました。
※初めて動画をアップしましたが、重いですね。。。
まとめ
今回は『DIOモジュールの入出力の制御方法』についての備忘録でした。
RevPiを使う人は、使用する機会は多いのではないのでしょうか?
今回使用したパッケージ[revpimodio2]は標準でインストールされているような気がします。
色々していてこのパッケージをインストールした記憶がないんですw
自分が使う機会は少ないと思いますが、
他にもCodeSysというソフトウェアPLCをインストールして制御する方法もあるようです。
次回は、『AIOモジュールの入出力制御』についてできればいいなと考えています。
もしかしたら違う事になるかもしれませんが、更新を楽しみにしていてください。
業務でプログラミング(C#/VB/Python)を作っている。
挫折を何回も繰り返し、幾度の壁を乗り越えてきた。
乗り越えてきた事を忘れないように記録に残す。
同じ思いをしている人への情報提供になれたらと思う。
基本は初心者に向けたプログラムの情報を提供する。
コメント
かみさまーー。ありがとうございます。ハーティング標準サンプルプログラムは難しくてわかりませんでした。
参考になって、何よりです。自分も電気的知識が乏しいため、試行錯誤でした。
最近使う機会が減っているので、忘れている事が多いですが、使う機会があれば、備忘録を増やしていきたいと思います。
今回作成したサンプルのプログラムの内容ですが、
1秒おきに入力の確認と出力の反転を行っています。
それを10回繰り返しているプログラムになっています。