忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

【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

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30