忍者ブログ

設備のマニアどっとこむ

設備、電子工作、DIYのブログ!

11/14

Mon

2016

【NODE js / arduino】簡易監視システムを作る 前編

工場や商業施設など大規模な現場の場合、遠隔・集中監視のため設備員用の監視システムが使用されている。メーカーとしては横河電機やアズビル、富士電機製のものなどがあり、それぞれ自社システムにて構築されているものがほとんどだ。しかしさまざまなものがオープンソース化されている現在、メーカーでなければ構築できない、という時代は過ぎ去るのでないかと考えている。

今回、arduino、NODE js、Javascript等を用いて簡易的な監視システムを作ってみることにした。

まず一般的な監視システムの一例を紹介する。

現場機器からの信号をI/Oカードで受け取り監視サーバとデータのやり取りをする。
そしてクライアントPCから監視サーバへアクセスし監視、操作を実施する。
クライアントPCは通常複数あるのが一般的で、一台壊れても監視そのものには影響がない。


続いて今回構築する簡易の監視システムはこのようになっている。

監視サーバの代わりにPC内でNODEjsを動かす事にした。これによりarduinoとシリアル通信しつつjavascriptを用いてウェブブラウザでやりとりができる。ローカルの機器とはarduinoと接続する。ちなみにOSはウインドウズ10で実施。


手順としてはまず、NODEjsをインストールするところから始める。
http://nodejs.jp/よりダウンロードできる。
下記のようなコマンドプロンプト画面で操作する。

NODE JSはさまざまなモジュールをダウンロードできる機能がある。
シリアル通信などをするための準備段階として下記コマンドでインストールする。

npm install  express
npm install  serialport
npm install  socket.io

続いてJavascriptファイルと監視画面のhtmlファイルを作っていく


ファイル名:index.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var SerialPort = require('serialport');
var serial = new SerialPort('COM3',{   //MACだとポート名が異なる
    baudrate:74880    //alduinoとの通信速度
});
app.get('/',function(req,res){
    res.sendfile('index.htm'); //htmlファイルを呼び出す
});
serial.on('open',function(){
    console.log('open'); //コマンドプロンプトへ出力
});
serial.on('data',function(data){
    io.emit('recvmsg',data.toString());  //温度データ取り込み
});
io.on('connection',function(socket){   //alduinoへ信号出力
    socket.on('sendmsg',function(msg){
console.log('socket.on');
        serial.write(msg,function(err,results){
        });
    });
});
http.listen(3000,function(){ //http://localhost:3000/へ出力
    console.log('listen 3000 port');
});
続いて監視画面となるHTMLの作成

ファイル名:index.htm
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>arduino control</title>
  <style>
   article, aside, dialog, figure, footer, header,
   hgroup, menu, nav, section { display: block; }
  </style>
 </head>
 <body>
 <script>
document.write("temperature");
</script>
<h1>hello</h1>
<br></br>
<button>on</button> 
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('button').click(function(){
socket.emit('sendmsg','1');//ブラウザのボタンから1を出力
});
socket.on('recvmsg',function(data){
$('h1').text(data);//ブラウザへ温度を出力
});
</script>        
</script>
 </body>
</html>
これで準備はOK、かなり簡単なインターフェースだが、PC側の準備はこれで問題ない。
あとは後編にてarduino IDEのプログラムと回路構成について説明する。

→後編はこちら




拍手[0回]

PR

11/04

Fri

2016

arduinoで自己保持回路をつくる

以前にシーケンス回路の入門編の記事を書きましたが、今回電子回路で自己保持回路を作ってみました。 

盤内のすべて強電の回路で盤を組むと回路の変更ができなかったり、リレーの数が多くなり高額になってしまっています。そのため、制御回路が複雑な場合はシーケンサーをつかったりします。

そのシーケンサーをプログラムの書き込める電子回路モジュールarduinoで代用してみました。


左がarduinoUNOで右がブレッドボードです。

押しボタンスッチ黒、赤の片側をそれぞれデジタル入力7番、8番ピンと10kΩをはさんでGNDへ、スイッチのもう片方をarduinoから出力されている5Vへ接続しています。

プログラムのソースはこちら↓↓

int val = 0;


int val2 = 0;


int state = 0;


int old_val;



void setup() {


pinMode(13,OUTPUT);


pinMode(7,INPUT);


pinMode(8,INPUT);


}


void loop() {


val = digitalRead(7);


val2 = digitalRead(8);


if((val == HIGH)&&(state==0))


{


state = 1 - state ;


}


if((val2 == HIGH)&&(state==1))


{


state = 1 - state ;


}


old_val;


if(state == 1){


digitalWrite(13,HIGH);


}else{


digitalWrite(13,LOW);


}}




黒いボタンを押すと13番ピンへ5Vが出力され続けLEDが点灯します。
OFFにするときは赤のボタンを押します。

これを応用し出力にSSRリレーをつなげれば強電の回路を組み合わせることができます。
例)スマフォで家電を遠隔操作する方法
  自動点滅器について
  音に反応する照明

今回つかったarduino UNOはデジタル入出力が14個しかありませんが、価格が3千円程度と安くプログラミングも比較的簡単なのでウン十万するシーケンサーを使うより賢いかもしれません。
メンテもプログラムミングしたarduino基板を交換すればイイだけなのでメーカーを呼ぶ必要もありません。耐久性は疑問ですがなかなか使えそうです。
まだまだarduinoでいろいろできそうなので今後も紹介していきたいと思います。お楽しみに~

12/15追記
ガチの自己保持回路はこちら






拍手[0回]

AD

シェアしてね

プロフィール

HN:
アルティメット雅史
性別:
男性
自己紹介:
製油所、データセンター、化学工場を渡り歩いた設備のマニア
最近はarduinoあたりの電子工作にハマる。
取得資格は電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士一次試験合格(電気・電子)、エネ電合格、フォークリフトほか

カウンター

お問い合わせ

忍者アクセスランキング

Copyright © 設備のマニアどっとこむ : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]