#author("2020-08-25T08:56:17+00:00","","") #author("2020-09-25T01:54:47+00:00","","") [[センサとマイコン(Arduino, Raspberry Pi)による行動分類]] [[Rene_専門ゼミ]] 沼田さんの卒論のデータをPCに集めるところまでを 教えてください. 沼田さんから聞いて,テキストを作っておいてください. 以下はイメージです.これに追加していくと良いです. - テキスト用 &ref(); =========== [[技術資料]] *目次 [#e890b3d5] #CONTENTS **1. 目標 [#i67428c5] カメラ,マイク,GPS受信機セット(緯度、経度、海抜高度),温湿度気圧センサー,照度センサー,赤外線焦度センサー,9軸センサーモジュール(加速度xyz、角速度xyz、磁気コンパスxyz),体温センサー,心拍,GSRセンサー(皮膚電気反射)のデータを取得する.ただし,カメラ画像とマイク音声はテキストでも取得する. **2. センサ,ブレッドボード,Arduino間の接続 [#y586a7a4] *** センサ [#b993d560] -必要なもの~ raspberrypi(3がおすすめ)~ Arduino~ ブレッドボード 抵抗(10kΩ)×3、GPS用丸電池、ケーブル、SDカード、ボードとArduinoを固定する板など、~~ -GPS受信機セット(緯度、経度、海抜高度)~ --参考~ https://qiita.com/AmbientData/items/fff54c8ac8ec95aeeee6 #ref(Screen(43).png,,50%)~ -温湿度気圧センサー(温度、湿度、気圧)~ --配線~ 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/~ -マイク~ --製品 https://www.sanwa.co.jp/product/syohin.asp?code=MM-MCU02BK ~ -カメラ~ --製品 https://www.rs-online.com/designspark/raspberry-pi-camera --参考 https://iotdiyclub.net/raspberry-pi-camera-python-1/ ~ #ref(14.PNG,,40%)~ *** センサとブレッドボード間の接続 [#n1967089] +基盤の組み立て~ 9軸・GPS・温湿度気圧のセンサーははんだ付けが必要.~ #ref(4.jpg,,20%) #ref(5.jpg,,20%)~ +配線~ 各参考サイトに配線の仕方が書いてある.すべて組み合わせた配線が下の画像である.~ #ref(9-2.PNG,,70%)~ #ref(10.jpg,,20%)~ ~ ***装置組み立て [#ba0ceec6] ラズパイにGPSセンサとマイクをぶっさす。~ --配線 [[配線URL:https://denor.jp/raspberry-pi%E3%81%AB%E3%80%8C%E3%81%BF%E3%81%A1%E3%81%B3%E3%81%8D%E3%80%8D%E5%AF%BE%E5%BF%9Cgps%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E6%8E%A5%E7%B6%9A]] ラズパイとArduinoを連結した装置を作る。~ #ref(11.jpg,,20%)~ ** 3. Raspberry Piの設定 [#l3167c59] *** ラズパイの初期設定 [#p06e1e94] ここからOSがWindowsの場合で紹介します。インストールするものも全部for Windows~ [[Raspberry Piの始め方>Raspbianのインストール及び初期設定]] ~ *** PC操作のための設定 [#y79f6fdf] ~ 再起動後 ターミナルでifconfigと入力して無線LANのIPアドレスを確認する~ IPアドレスを確認することで、他のパソコンからSSH接続することができる~ ~ -リモート接続~ win+rでリモート画面を表示。mstscと入力して実行すると、リモート接続画面が表示される。~ ここでラズパイのIPアドレスを入浴するとやがてログイン画面が表示される。~ Module→Xorgで、ユーザー名とパスワードを入力すればラズパイのデスクトップが表示できる。~ 操作は簡単だが重くて時間がかかる時があるので以下のようなソフトを使ったりする。~ ~ -Teraterm ~ ラズパイをPC上でリモート操作するためのソフト~ [[ここから:https://forest.watch.impress.co.jp/library/software/utf8teraterm/]]自分のPCにインストールする.~ インストール後、起動して「ホスト(T)」にラズパイのIPアドレス→OK→ユーザー名とパスワードを入力→で接続できる。~ 初期設定のページで述べているssh.txtくだりが必須になる。~ 参考サイトはこれがよく使われている。~ ~ -SDKビュワー~ これをつかってもPC上で操作できる。~ 重くないのでストレスにはならない~ [[ここから:https://www.realvnc.com/en/connect/download/viewer/]]ダウンロードする。~ 起動したのち、ラズパイのIPアドレスおよびユーザー名、パスワードを入力すればもれなくPC上に表示できる。~ これはVNCなのでラズパイの方で~ メニュー>設定>ラズパイの設定>インターフェースのVNCを「Enable」にする必要がある。~ ** 4. Arduinoの設定 [#d79762cb] ***Arduinoをダウンロード [#e961f36b] https://www.arduino.cc/en/Main/Software よりArduinoIDEをダウンロードしておく。(情報実験で持たされる。)~ -各センサから取得するコード #ref(app1.ino) 上記で作ったArduinoとPCをつなげてこのプログラムを起動する。シリアルポートをCOM4にしておくとよい~ マイコンボードでつなげたセンサのデータが取得できる。 -app1.inoと一緒のファイルに↓の2つも一緒に入れておく。起動しない~ #ref(AllSerialHandling.ino) #ref(Interrupt.ino) ~ 書き込み後、シリアルモニタで表示するとセンサのデータが,で区切られて表示される。 左から~ 気温、湿度、気圧、光、 人感(1か0)、x加速度、y加速度、z加速度、x軸ジャイロ、y軸ジャイロ、z軸ジャイロ、x軸地磁気、y軸地磁気、z軸地磁気、体温、心拍、GSRセンサ~ #ref(12.PNG,,50%)~ ** 5. ラズパイでデータ取得 [#d79762cb] ***GPS [#o7f9c373] ・GPSデータをラズパイで取得~ まずGPSセンサに丸電池をつけ、ラズパイと接続する。~ 今回使ったセンサは時刻、緯度、経度、海抜高度を取得する。~ ~gpsp.pyを起動すると、衛星からデータを受け取れる。このGPSモジュールは、受信したGPSデーターをシリアルで送出するのでシリアル通信できるようにする必要がある~ ターミナルを開き、シリアル通信を有効にする。~ sudo raspi-config で「5 Interfacing Options」を選択、「6 Serial」を選択、「yes」、「finish」を選択、再起動(sudo reboot と入力)~ ls /dev/se* と入力すると、/dev/serial0 /dev/serial1と表示される。~ コンソールを修正するが、テキスト修正するときはターミナルからファイルを開かないと修正できない。よってターミナルで、~ sudo nano /boot/cmdline.txt と入力して修正する。~ 「console=serial0,115200」の部分を削除する。~ pip install pyserial でPythonのシリアルモジュールをインポートし、python3 と入力すると次のような表示が出る。 #ref(16.PNG,,55%) ~この青文字がデータに当たる~ #ref(gpsp.py) #ref(micropyGPS.py) micropyGPS.pyは衛星信号をプログラムで扱いやすいデーターに変換するPythonライブラリーに変換するためのもので、gpsp.pyと同じファイルに入れておく。 python3 gpsp.py で実行する。使っているセンサは電源入れて窓付近において10分~1日放置しないと受信しない。赤いランプが点滅したら受信できている~ #ref(17.PNG,,40%) ~ ・MAP~ 実行上の表記が乱れるが地図で表示可能。モジュールをまずインストールしてから行う。 pip install folium #ref(gps_getter.py) を実行すると地図が表示される。 #ref(18.PNG,,40%) ~ ***音声 [#g00f14bf] ・USBマイクで音声認識~ マイクに話しかけ(英語限定)音声入力でテキスト化する。以下は単純なテキスト化~ #ref(recmic.py) ラズパイにUSBマイクをぶっさし、音声をテキスト変換するAPIをインスト―ルする~ pip install Speechrecognition 続いてプログラムをターミナル上で実行する~ python recmic.py 実行すると「samething say」と表示されるので何か答える。~ #ref(13.PNG,,30%) ~ ***カメラ [#uf556c25] ・rasberry pi カメラで画像認識~ [[カメラの使い方]] ~ **6.Raspberry Pi と Auduino の連結[#j1504d6c] Auduinoとラズパイを連結して情報を得る~ ラズパイ、PCで使うコード #ref(sensa.py) #ref(server2.py) .ラズパイに入れるモジュール(他多数) opencv matplotlib scikit-learn graph-marker ~ ・PCに入れるnltkリソース python >>>import nltk >>>download('averaged_perceptron_tagger') >>>download('wordnet') >>>download('universal_tagset') ・プログラム修正点~ #ref(19.PNG,,35%) #ref(20.PNG,,35%) server2.pyの133行目、sensaK.pyの42行目の下線のIPアドレスを自身のパソコンのIPに変更する。~ PC側でserver2.pyがうまく軌道できたら~ [available to connect: 192.168.0.205]の文字が表示されるのですぐラズパイの方でsensaK.pyを起動する。~ 上手くいけばラズパイもPCにもAuduinoで取得したデータ(数値)が表示され、ラズパイ側にはカメラ画像、PC側にセンサのグラフがリアルタイムで更新される。~ **補足 [#n072cacb] [[今回の技術資料とは無関係]]~~ ⇒[[補足]] [[センサとArduino間の動作確認]] [[ゼミやで]] 0の値を無くす、 ~ できたら完了