戻る
ハード構築
- 必要なもの
raspberrypi
Arduino×2(GPSセンサとその他のセンサを同じArduinoで動かすと衝突してうまく動かないため,GPSだけ別のArduinoで動かす.)
Arduino用アクリルベースセット×2
抵抗(10kΩ)
- 赤外線焦度センサー
- 9軸センサーモジュール(加速度xyz、角速度xyz、磁気コンパスxyz)
- 体温センサー
- 心拍
- GSRセンサー(皮膚電気反射)
- 基盤の組み立て
9軸・GPS・温湿度気圧のセンサーははんだ付けが必要.
加速度センサの青丸の部分は,はんだ付けでショートさせる必要がある.
- 配線
各参考サイトに配線の仕方が書いてある.すべて組み合わせた配線が下の画像である.参考にしてほしい.
- 配線のチェック
配線がうまくいっているかをArduinoを動かしてみて確かめる.
- GPSセンサ以外のセンサの動作確認
PCとGPSセンサ以外が接続しているArduinoをコードで接続する.こちらのArduinoで使うプログラムは以下の2つである.
このプログラムはそれぞれのセンサのプログラムを参考サイトをもとに書いたものである.このプログラムを,2つとも同じファイル内に保存する.
その後,ArduinoIDEで「0125PSO.ino」を開く.(ArduinoIDEのバージョンは学生実験でも使った1.8.5?で構わない)
#ref(): File not found: "check1" at page "無線データ取得"
上の写真で示した右矢印(マイコンボードに起動)をクリックするとコンパイルが始まる.
コンパイルが終了したら,ツール>シリアルモニターで取得画面を表示できる.
#ref(): File not found: "check2" at page "無線データ取得"
結果はカンマ区切りで表示されていて,左から・・・・・である.
- GSRセンサについて
GSRセンサは初期値が510程度が正常値である.ここの数値がおかしい場合は以下の画像に示す部分をプラスドライバーで調節する.
- GPSセンサの動作確認
PCとGPSセンサが接続しているArduinoをコードで接続する.例で示した配線と同じように組んだ場合は,基盤の電源は最初のArduinoにつないだコードから供給しているので先ほどのArduinoにつないでいるコードは抜かない.
こちらのArduinoで使うプログラムは以下の2つである.
上のプログラムを起動する前に,GPSセンサの赤いランプを確認する.
・点滅
位置情報の取得ができる状態である.
・点灯
位置情報の受信中(しばらく起動していなかったりすると取得に時間がかかる.30秒~10分ほどかかることもある)
点滅したら,ArduinoIDEで「0125PSO.ino」を開く.
ツール>シリアルポートから書き込むArduinoを選択する.(先ほど使用したArduinoとは違うほうに書き込まないと先ほどコンパイルしたものを上書きしてしまう)
その後,1つ目のAruduinoをチェックしたサイト同じように右矢印(マイコンボードに起動)をクリックしコンパイルする.
コンパイルが終了したら,ツール>シリアルモニターで取得画面を表示できる.
#ref(): File not found: "check3" at page "無線データ取得"
結果はカンマ区切りで表示されていて,左から[緯度,経度,海抜高度]である.
ここまでで,Aruduinoを使ってセンサのデータを受け取ることができる.
- 現在わかっている問題点
- 海抜の値が大きくずれる
- 心拍のノイズがひどい
- 体温が安定しない
raspberrypi
次にデータ送信部であるraspberrypiの説明をする.
今回はWifiモジュールではなく代わりとしてraspberrypiを使う.
Arduino→Raspberrypi→PC といったようにデータが流れていくイメージでいい.
raspberrypiの設定に関しては横井君の「rasberrypiによる温湿度取得?」のページやネットで調べる.
- Teraterm
ラズパイをPC上でリモート操作するためのソフト.
特にバージョンにこだわったりインストールする際の注意事項はないので,
「Teraterm インストール」で検索して自分のPCにインストールする.
raspberrypiに接続する際はラズパイ側のIPアドレスが必要なので控えておく.
- データ送信プログラム
pythonでプログラムを作成する.
raspberrypiにはデフォルトでpythonの環境が整っているはずなので設定とかはいらない.(もしかしたら勘違いしてるかもしれないんでpythonが入ってないと感じたときは指摘してください)
プログラムを作成するときは好きなエディタを使ってもらって大丈夫.
例
sudo nano 〇〇.py
のようにしてpythonファイルを作成します.
以下にそのソースコードを示します.
※python側のソースコード
Arduinoの型番号ACM〇〇はそのとき用いるものに,IPアドレスは自分のPCのものに書き換える.
Arduinoの型番を調べるのは以下のリンクを参考に.
https://uepon.hatenadiary.com/entry/2017/01/01/141220
Xampp
- xamppのインストール
xamppとはApacheでサーバーを立てたりMySQLを使用できたりする便利なソフトである.
https://www.apachefriends.org/jp/index.html
上記のURLからそれぞれの環境に合わせてxamppをインストールする.
インストールで不明な点があったら以下のURLを参考にするといい.
https://www.adminweb.jp/xampp/install/index1.html
- xamppの設定変更
C:\xamppの位置にxampp-control.exeというものがあるのでそちらを起動,下記の画像のような画面が表示される.
configからApache(http.conf)を選択すればApacheの設定ファイルの中身が表示される.
・ローカルIP設定
Apacheの設定ファイルの59行目に
Listen 80~
とあるので
Listen 8080~
と書き換えておく.
Apacheの設定ファイルの227行目に
ServerName localhost:80~
とあるので
ServerName localhost:8080~
と書き換えておく.
・ディレクトリパス設定
251・252行あたりの DocumentRoot と Directory のパスを下記のように書き換える.
DocumentRoot "C:/xampp/htdocs/changeroot"~
Directory "C:/xampp/htdocs/changeroot"~
その後にhtdocsの中にchangerootというフォルダを作っておく.
PC側の設定
データ受信部,並びにグラフ出力を行うPC側の設定をする.
今回はsocket通信を用いるのでその前段階としてまずnode.jsというものを入れる.
- プログラム各種
以下のZIPファイルとphpファイルダウンロードする.
ZIPファイルは適当なところに展開して構わない.
展開したファイルのディレクトリ内でのパスは後で使うので控えておく.
send.phpはxamppの中のhtdocs→changerootフォルダ内に入れておく.
ここにソースコードを貼ると量がすごいので書き換えるところを以下に示しておく.(分からないところがあれば聞いてください)
- send.php
49行目
exec ("node C:\Users\Seiya\Documents\RealTimeWEB\socket\accept.js"."\t".$data1."\t".$data2."\r\n" );
のフォルダ内のパスを自分のPC内のパスに合わせて書き換える.
- accept.js
5行目
var socket = io.connect('http://192.168.0.110:3000');
のIPアドレスを自分のPCのIPアドレスに書き換える
※サーバーが競合するかもしれない場合は3000を好きな数字に書き換える
その場合はserver.jsの3000も書き換える
- index.html
201行目
var socket = io.connect('http://192.168.0.110:3000');
のIPアドレスも同様に書き換える
サーバーが競合している場合はこちらも同様に3000を好きな数字に書き換えてください.
グラフのプロットにはEpoch.jsというものを用いている(html内).興味のある人は以下のリンクに細かい解説が載っている.
https://qiita.com/okoppe8/items/d8d8bc4e68b1da4a0a36
実行
- Tera Termを起動する.
上のような画面が出てくるが、アドレスは変更せずに「接続」をクリック.
するとユーザー名とパスワードを求められる.
ユーザー名に「pi」、パスワードに「pu-toyama」を入力する.
これでラズパイへのリモート接続が完了.
- コマンドプロンプトを開き、次のコマンドを入力する.
sudo nano post.py
ここでpost.pyの編集を行う.
・19行目のurlの部分のIPアドレスを自分のものに変更する.
・Ctrl+x → y → Enterで編集画面を閉じる.
その後、次のコマンドを入力し、接続しているアルディーノの型番を確認する.
ls /dev/ttyA*
もう一回post.pyの編集画面を開き型番を確認、違ったら変更する.
- Xampp-control.exeを起動する.
Apacheの横にある「start」をクリック.~
(これでラズパイからphpファイルへ接続するためのサーバーを建てた)
- 再度コマンドプロンプトを開く.
ディレクトリをリアルタイムWEBファイル内のsocketまで移動する.
移動したら、次のコマンドを入力する.
node server.js
(これでaccept.jsからindex.htmlへ接続するためのサーバーを建てた)
- ブラウザ(なんでもいい)で以下のURLに接続 .
http://localhost:3000
接続すると表示用のサイトが開く.
- Tera Termに戻り、次のコマンドを入力する.
python post.py
これでアルディーノから送られてきたデータがサイト上に表示されるはずである.