#author("2019-02-21T09:22:46+00:00","","") #author("2019-04-09T03:02:35+00:00","","") [[戻る>専門ゼミ]] **ハード構築 [#z8063d9d] -必要なもの~ raspberrypi~ Arduino×2(GPSセンサとその他のセンサを同じArduinoで動かすと衝突してうまく動かないため,GPSだけ別のArduinoで動かす.)~ Arduino用アクリルベースセット×2~ 抵抗(10kΩ)~ -GPS受信機セット(緯度、経度、海抜高度)~ --配線~ https://deviceplus.jp/hobby/entry060/~ --コード~ https://www.petitmonte.com/robot/howto_gysfdmaxb.html~ --別の参考コード~ https://deviceplus.jp/hobby/entry060/~ -温湿度気圧センサー(温度、湿度、気圧)~ --配線~ http://monhime.hatenablog.com/entry/2018/06/24/114921~ --コード~ https://github.com/SWITCHSCIENCE/BME280/blob/master/Arduino/BME280_I2C/BME280_I2C.ino~ -照度センサー~ --配線 http://jkoba.net/prototyping/arduino/cds_practice.html~ --コード~ #ref(hikari.ino)~ --配線・コード~ http://~ -赤外線焦度センサー~ --配線・コード~ http://tech.blog.surbiton.jp/arduino_motion_sensor_se-10/~ -9軸センサーモジュール(加速度xyz、角速度xyz、磁気コンパスxyz)~ --配線・コード~ http://tomi-tomi-pon.hatenablog.com/entry/2018/11/07/012854~ #ref(BMX055_20180510.ino) -体温センサー~ --配線・コード http://naritaku.hatenablog.com/entry/2016/04/05/230649 -心拍~ --配線・コード http://myct.jp/arduino/index.php?%E5%BF%83%E6%8B%8D%E3%82%BB%E3%83%B3%E3%82%B5%20SEN-11574~ -GSRセンサー(皮膚電気反射)~ --配線・コード~ http://wiki.seeedstudio.com/Grove-GSR_Sensor/~ +基盤の組み立て~ 9軸・GPS・温湿度気圧のセンサーははんだ付けが必要.~ #ref(handa.png,,20%)~ 加速度センサの青丸の部分は,はんだ付けでショートさせる必要がある.~ +配線~ 各参考サイトに配線の仕方が書いてある.すべて組み合わせた配線が下の画像である.参考にしてほしい.~ #ref(haisen1.JPG,,20%)~ #ref(haisen2.JPG,,20%)~ #ref(haisen3.JPG,,20%)~ #ref(haisen4.JPG,,20%)~ #ref(haisen5.JPG,,20%)~ +配線のチェック~ 配線がうまくいっているかをArduinoを動かしてみて確かめる.~ -GPSセンサ以外のセンサの動作確認~ PCとGPSセンサ以外が接続しているArduinoをコードで接続する.こちらのArduinoで使うプログラムは以下の2つである.~ #ref(0125PSO.ino)~ #ref(Interrupt.ino)~ このプログラムはそれぞれのセンサのプログラムを参考サイトをもとに書いたものである.このプログラムを,2つとも同じファイル内に保存する.~ その後,ArduinoIDEで「0125PSO.ino」を開く.(ArduinoIDEのバージョンは学生実験でも使った1.8.5?で構わない)~ #ref(check1.png,,50%)~ 上の写真で示した右矢印(マイコンボードに起動)をクリックするとコンパイルが始まる.~ コンパイルが終了したら,ツール>シリアルモニターで取得画面を表示できる.~ シリアルモニタの右下は「CRおよびLF」「115200fps」に変更する.~ 結果はカンマ区切りで表示されていて,左から「気温,湿度,気圧,照度,人感,加速度(3軸),角速度(3軸),磁気コンパス(3軸),体温,脈拍,GSR」である.~ --GSRセンサについて~ GSRセンサは初期値が510程度が正常値である.ここの数値がおかしい場合は以下の画像に示す部分をプラスドライバーで調節する.~ #ref(GSRsensor.JPG,,20%)~ -GPSセンサの動作確認~ PCとGPSセンサが接続しているArduinoをコードで接続する.例で示した配線と同じように組んだ場合は,基盤の電源は最初のArduinoにつないだコードから供給しているので先ほどのArduinoにつないでいるコードは抜かない.~ こちらのArduinoで使うプログラムは以下のものである.~ #ref(GPSPSO.ino)~ 上のプログラムを起動する前に,GPSセンサの赤いランプを確認する.~ #ref(GPSsensor.JPG,,20%)~ ・点滅~ 位置情報の取得ができる状態である.~ ・点灯~ 位置情報の受信中(しばらく起動していなかったりすると取得に時間がかかる.30秒~10分ほどかかることもある)~ 点滅したら,ArduinoIDEで「0125PSO.ino」を開く.~ ツール>シリアルポートから書き込むArduinoを選択する.(先ほど使用したArduinoとは違うほうに書き込まないと先ほどコンパイルしたものを上書きしてしまう)~ その後,1つ目のAruduinoをチェックしたサイト同じように右矢印(マイコンボードに起動)をクリックしコンパイルする.~ コンパイルが終了したら,ツール>シリアルモニターで取得画面を表示できる.~ #ref(check2.png,,50%)~ 結果はカンマ区切りで表示されていて,左から[緯度,経度,海抜高度]である.~ ここまでで,Aruduinoを使ってセンサのデータを受け取ることができる.~ -現在わかっている問題点 --海抜の値が大きくずれる~ --心拍のノイズがひどい~ --体温が安定しない~ ** RaspberryPiの初期設定 [#id66250c] +SDカードとアダプターを用意し,PCに挿入する.~ +DD for Windowsのインストール~ 参考サイト:[[DDfor Windows - Tech Info:http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows#s74c46f6]]~ 参考サイトからDDWinをインストールする.~ (今回はVer.0.9.9.8を使用している)~ インストールしたらZIPファイルを展開しておく.~ +Raspbianのインストール~ 参考サイト:[[Download Raspbian for Raspberrypi:https://www.raspberrypi.org/downloads/raspbian/]]~ 参考サイトからRaspbianをダウンロードする.~ サイト内の「Raspbian strech with desktop」のZIPファイルをダウンロードする.~ インストールしたらZIPファイルを展開しておく.~ +DDwinを使ってラズパイ用のOSをSDカードに書き込む~ DDwinのアプリケーションを管理者として実行する.~ 左側のディスク選択は書き込むSDカードを指定する.(初めからなってるかも)~ その後,右側のファイル選択から先程ダウンロードしたRaspbianのファイル(2018-11-13-raspbian-stretch.img)~を選択する.~ (この時,フォルダの中に何も入っていないことになっている場合は,右下のddiをAll filesに変更すると出てくる.)~ 選択したら書込をクリックし,完了したらSDカードを取り出す.~ +ラズパイでの初期設定 -ラズパイにSDカードを挿入し,ディスプレイ・マウス・キーボードを接続する.~ ラズパイを電源に接続し,ラズパイの画面がちゃんと起動したらOSの書き込みは成功している.~ -右上から研究室のWifiに接続する.~ -左上のラズパイのマークから,Preferences>Raspberry Pi Configurationをクリック.以下のように設定を変更し,再起動する.~ --System~ ここでユーザー名とパスワードを設定できる.初期設定だとユーザー名は「pi」,パスワードは「raspberry」になっている.~ パスワードは初期設定のままだとラズパイ起動時に毎回警告が出るのでそれが嫌なら任意のものに変えるといい.~ --Interdface~ SSHをEnableに変更する.~ --Localisation~ LocateのLanguageを「ja」に変更する.~ TimeZoneを「Japan」に変更する.~ KeyboardのLayoutを「Japanese」に変更する.~ WifiCountryを「JP」に変更する.~ -再起動後左上のターミナルを開き,以下のコマンドを入力する.~ sudo raspi-config すると画面が切り替わる.ここからはキーボードのカーソルキーで操作する.~ まず7番のAdvanced Optionsを選択し,その後A1のExpand Filesystem1を選択する.~ すると許可を求める画面が出るのでEnterキーで許可する.~ その後最初の画面に戻るのでfinishを選択し,再起動するか聞かれるのでYesを選択する.~ -再起動後再度ターミナルを開き,以下のコマンド~ sudo apt-get update を入力するすると,アップデートが始まる.終了したら,~ sudo apt-get upgrade を入力するすると,アップデートが始まる.この時続行するかを聞かれるので,Yと入力し続行する.終了したら,~ sudo reboot で再起動する.~ ~ ~ ここまでで初期設定が終了である.~ **RaspberryPiの各種設定 [#y79f6fdf] +RaspberryPiのIPの固定~ TeraTermでラズパイに接続するためにIPの固定をする.~ 左上のフォルダを起動し,フォルダ>etc>dhcpcd.confを起動し,コードの1番下に以下のように書き込む.~ #okuharaLab interface wLan0 static ip_address=10.0.221.144/24 static routers=10.0.221.1 static domein_name_servers=10.0.221.1 書き込んだら保存し,ラズパイを再起動する.~ 再起動後,左上からターミナルを起動し, ifconfig と入力すると,IPの一覧が出てくる.その中のwLanのIPの項目が書き加えたIPのアドレスになっていたらOK.~ +使用するプログラム~ プログラムは以下のものを使う.~ #ref(sensa.py)~ ラズパイでWikiを開いてダウンロードしてもいいし,USB経由でダウンロードしてもいい.~ プログラムはホームのディレクトリ内(pi)に置いておく.~ ~ ~ これでラズパイの設定は終わりである.~ **Teraterm [#vba4cc21] ラズパイをPC上でリモート操作するためのソフト.~ 特にバージョンにこだわったりインストールする際の注意事項はないので,~ 「Teraterm インストール」で検索して自分のPCにインストールする.~ raspberrypiに接続する際はラズパイ側のIPアドレスが必要なので控えておく.(今回は「10.0.221.144」) ** Xampp [#t995d58b] +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というものがあるのでそちらを起動,下記の画像のような画面が表示される.~ #ref(xampp.png,,50%)~ 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"~ DocumentRoot "C:/xampp/htdocs/changeroot" <Directory "C:/xampp/htdocs/changeroot"> その後にhtdocsの中にchangerootというフォルダを作っておく.~ **PC側の設定 [#e68c20be] -プログラム各種 以下のphpファイルダウンロードする.~ send.phpはxamppの中のhtdocs→changerootフォルダ内に入れておく.~ #ref(test1.php)~ test1.phpはxampp>htdocs>changerootのフォルダ内に入れておく.~ ** 実行 [#b286ddaa] +RaspberryPiとArduinoの接続 まず,ラズパイを電源に接続する.~ その後ラズパイとArduinoをコードで繋ぐのだが,先にGPSセンサ以外のセンサが接続されているAruduino(いっぱいセンサがついてるほう)をラズパイと繋ぎ,その後でGPSセンサの接続しているAruduinoをラズパイと繋ぐ.~ (ラズパイ側でArduinoを接続された順番に番号をつけて認識しているから)~ それからはGPSセンサのランプが点滅するのを待ってから実行を続ける.~ #ref(setsuzoku.jpg,,50%)~ +Tera Termを起動する.~ #ref(teraterm.png,,50%)~ 上のような画面が出てくるので,アドレスを「10.0.221.144」に変更し「接続」をクリック.~ するとユーザー名とパスワードを求められる. ~ #ref(teraterm2.png,,50%)~ ユーザー名に「pi」、パスワードに「raspberry」を入力する.(ラズパイ初期設定のままの場合)~ これでラズパイへのリモート接続が完了.~ その後,次のコマンドを入力する.~ sudo nano sensa.py ここでsensa.pyの編集を行う. ~ #ref(program.png,,80%)~ ・urlの部分のIPアドレスを自分のPCのものに変更する. ~ ・Ctrl+x → y → Enterで編集画面を閉じる.~ その後、次のコマンドを入力し、接続しているアルディーノの型番を確認する. ~ ls /dev/ttyA* もう一回post.pyの編集画面を開き型番を確認、違ったら変更する. ~ +Xampp-control.exeを起動する. ~ #ref(xampp2.png,,50%) Apacheの横にある「start」をクリック.~ (これでラズパイからphpファイルへ接続するためのサーバーを建てた) ~ +Tera Termに戻り、次のコマンドを入力する.~ python sensa.py すると,changerootフォルダ内にデータを記録したcsvファイルができる~ #ref(last1.png,,50%) #ref(last2.png,,50%) ※自分はDesktopのPCで行った際には,csvファイルが生成されませんでした.山元君の場合でも同じ現象が起きています.~ 個人のPCではちゃんと動くことは確認できています.~ もしかしたらOfficeの有無が関係してるかも...?~ **現状の課題と今後 [#jc70a661] -Wifiモジュールを使ってRaspberryPiを使わずに接続できるようにする→軽量化~ -今は同一Wifi内でしか接続できない~ →外からでも研究室のサーバーにデータを送れるようにする(この辺は小野田さんに聞けば何らかの情報が得られるかもしれない)~ ~ ~ ~ ~ ~ **補足 [#n072cacb] 以下の項目は以前に取得したデータをWEBサイト上にリアルタイムで表示していた際に使用していた項目である.現在のプログラムではうまく動かない.~ ~ ~ -取得したデータをサイト上に表示するのに必要なもの --node.js~ socket通信を用いるのでその前段階としてまずnode.jsというものを入れる. https://qiita.com/taiponrock/items/9001ae194571feb63a5e~ 上記のサイトの手順に従ってインストールを行う.~ インストールが終わったら以下のコマンド~ node -v をコマンドプロンプトで打ち込む.~ バージョンが表示されればインストールは完了している.~ 次にsocket.ioというものを入れる.~ npm install socket.io 上記のコマンドを打ち込むとインストールが始まる. --RealTimeWEB~ 以下のZIPファイルとをダウンロードする.~ ZIPファイルは適当なところに展開して構わない.~ 展開したファイルのディレクトリ内でのパスは後で使うので控えておく.~ #ref(RealTimeWEB.zip)~ ここにソースコードを貼ると量がすごいので書き換えるところを以下に示しておく.(分からないところがあれば聞いてください)~ ---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 -実行する際には~ Xampp起動後にTeraTermでプログラムを実行する前に以下のことをする.~ --コマンドプロンプトを開く. ~ ディレクトリをリアルタイムWEBファイル内のsocketまで移動する.~ 移動したら、次のコマンドを入力する. ~ node server.js (これでaccept.jsからindex.htmlへ接続するためのサーバーを建てた) ~ --ブラウザ(なんでもいい)で以下のURLに接続 .~ http://localhost:3000 #ref(localhost3000.png,,50%) 接続すると表示用のサイトが開く.