#author("2018-07-18T16:30:44+09:00","","")
#author("2018-07-18T16:31:41+09:00","","")
[[横井]]
#contents
** 11月9日 raspberry piの初期設定 [#u5fc6976]
+必要なもの~
・USBキーボード(任意)~
・USBマウス(任意)~
・新品またはフォーマット済のmicroSDカード8GB以上(必須)~
・HDMIケーブル(任意)~
・LCDモニタ(HDMI入力があるもの)(任意)~
・ACアダプタ(必須)~
・PC(必須)~
・Raspberry pi 3 Model B(必須)~
・LANケーブル(任意)
+Raspbianのダウンロード~
・下記のリンクからOS(RASBIAN)をダウンロード~
・[[OS(RASPBIAN)の配布元:https://www.raspberrypi.org/downloads/raspbian/]]~
・Raspbian Stretch with desktopの欄にあるDownload ZIPをクリックするとダウンロードが始まる。~
・ダウンロード後解凍すると、Raspbianのディスクイメージファイルが入手できる。~
+RaspbianをmicroSDに焼く~
・今回は、DD for Windows を使う。下記のリンクから最新バージョンを選んでダウンロード&解凍~
・[[DD for Windows の配布元:http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows]]~
・DL&解凍後、DDWin.exeを右クリックより管理者権限で起動。~
・ディスクの選択 → OSを焼くSDカードを選択。~
・ファイルの選択 → OSイメージを選択(ファイルの種類をddi→ALL Filesに)~
・<<書き込み<< をクリック~
・しばらく待つと完了~
+SSHの設定(他のパソコンから操作しないのであれば不要であるが、ディスプレイ無いなら必須)~
・SDカードを開いて一番上の階層にsshという名前のファイルを作るだけ。(メモ帳などをリネームして拡張子を削る)~
~ここまでやって、raspberry piにmicroSDをいれると、起動できるようになる。
+raspberry piの起動方法~
・最初に、OSを入れたmicroSDをraspberry piに入れる。~
・次に、raspberry piとモニタをHDMIケーブルで繋げる。~
・次に、USBマウス、キーボードを持っているならraspberry piに繋げる。~
・最後に、ACアダプタをraspberry piに繋げると起動する。
+各種設定変更~
・raspberry piにてターミナルを起動する。~
・raspberry piのターミナルで下記のコマンドを入力すると設定画面が開く~
・sudo  raspi-config~
・Piユーザーのパスワードの変更~
・・Chagen User Password  より行う~
・タイムゾーン&Wifiの設定~
・・Localisation Options → Change Timezone からタイムゾーンの変更をする  Asia → Tokyo~
・・Localisation Options → Change Wi-fi Country から Wifiを使う国の選択 Japan~
・SDカードの拡張~
・・Advanced Options → Expand Filesystem~
・・大容量のSDカードを使用しても、初期設定のままでは先頭の 2GB 程度のみの利用しかできなくなっているため、 Expand Filesystemを使い容量を拡張する。~
・上記の設定を終えたらFinishを押し再起動する。
+Wifi接続方法~
-注意 富山県立大学のwifiを使うときは、物理アドレス登録が必要です。
-ターミナルで下記のコマンドを入力する。SSIDとPASSPHRASEはそれぞれの環境に合わせて変更して実行する。
--sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'
-お節介でパスワードが生で記述されているので下記のコマンドを入力して削除する。
--vi /etc/wpa_supplicant/wpa_supplicant.conf
-再起動後 ip addr コマンド等で無線LANのIPアドレスを確認する~
IPアドレスを確認することでTera Term等を用いて、他のパソコンからSSH接続することができる。~
Tera termを用いたSSH接続については、12月6日の欄で説明する。
+パッケージ情報を最新にする
-ターミナルで下記のコマンドを入力
--sudo apt-get update
-次に、下記のコマンドを入力
--sudo apt-get upgrade
-続行しますか?[Y/n] と表示されます。「Y」を入力し、しばらく待ちましょう。~
-その後下記のコマンドを入力し再起動
--sudo reboot
-ほかにノートパソコンにダウンロードしたもの
--[[窓の杜|Tera Term:https://forest.watch.impress.co.jp/library/software/utf8teraterm/]]
--[[iTuens:https://www.apple.com/jp/itunes/download/]](これをダウンロードするとPCと直接LANケーブルでつなげることでSSH接続可能)
-参考サイト
--[[モニターキーボードなしでRaspberry Pi 3のセットアップ:http://teihengrammer.net/raspberry-pi-3-setup]]
--[[Raspberry Pi 3を買ってMacを使ってWiFi接続とSSHの接続するまで:https://qiita.com/toshihirock/items/8e7f0887b565defe7989]]
--[[Raspberry Pi 3のセットアップ→日本語入力まで(MacOS、NOOBS使用):http://xayataka.hatenablog.com/entry/2017/02/25/225418]]
** 11月16日 温湿度センサ [#t1f94cbd]
-下記にraspberry piと温湿度センサDHT11の接続方法を載せる。
#ref(wiki1.png,,50%)
-raspberry piのターミナルにて下記のコマンドを入力するとgithubからデータをダウンロードできるようになる。
--sudo apt-get install git
-次に、プログラムを入れたいフォルダに移動して、下記のコマンドを入力するとDHT11を動作させるプログラムを入手できる。
--git clone https://github.com/szazo/DHT11_Python.git
-最後に、プログラムの入っているフォルダに移動して、ターミナルから下記のコマンドを入力する。
--sudo python dht11_example.py
-下の画像のように温度と湿度の値が表示されれば完成。
#ref(wiki2.png,,50%)
-参考サイト
--[[Raspberry Pi3(ラズベリーパイ3)とDHT11の温湿度センサーを使って室温を測定してみよう:https://yuki-no-yabo.com/measure-temp-usingdht11/]]
** 11月30日 KY-038 KY-039 [#l631f5fd]
-未完成
-以下、参考リンク
-http://bitwave.showcase-tv.com/raspberry-pi%e3%81%a8%e3%82%bb%e3%83%b3%e3%82%b5%e3%83%bc%e3%81%a7%e3%83%98%e3%83%ab%e3%82%b9%e6%83%85%e5%a0%b1%e3%81%ae%e5%8f%96%e5%be%97%ef%bc%88%e5%bf%83%e6%8b%8d%e6%95%b0%e7%b7%a8%ef%bc%89/
-https://developer.cybozu.io/hc/ja/articles/205642634-%E5%BF%83%E6%8B%8D%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6kintone-Hospital
** 12月6日 Tera termから得られるデータを用いてPCから何かを制御(PC側はC++を使用) [#ic9e6695]
+Tera termの使い方~
・Tera termのダウンロード方法については、下記のサイトを参考にしてほしい。~
・[[【ゼロからわかる】Teratermのインストールと使い方:https://eng-entrance.com/teraterm-install]]~
・ダウンロードしたTera termを起動すると、下記のような画面が表示される。
#ref(wiki3.png,,50%)
・上の画像の、ホスト(T):の所にraspberry piのIPアドレスを入力し、OKをクリックする。~
・すると、下記のような画面が表示されるので続行をクリックする。
#ref(wiki4.png,,50%)
・次に、下記のような画面が表示されるので、raspberry piのユーザー名とパスワードを入力する。~
・初期設定であれば、ユーザー名はpi、パスワードはraspberryである。
#ref(wiki5.png,,50%)
・その後、OKをクリックするとraspberry piとSSH接続できる。
+Tera term マクロの作成と使用~
・先ほど、ログイン方法を説明したばかりだが、自動でログインしてraspberry piのログをテキストファイルに書き込むマクロを作成する。~
・まず下記のコードを入力した拡張子が.ttlのファイルを作る。~
 ;接続先ホスト
 HOSTADDR = '133.55.174.76'
 ;ユーザ名
 USERNAME = 'pi'
 ;パスワード設定
 PASSWORD = 'raspberry'
 ;接続コマンド作成
 COMMAND = HOSTADDR
 strconcat COMMAND ':22 /ssh /2 /auth=password /user='
 strconcat COMMAND USERNAME
 strconcat COMMAND ' /passwd='
 strconcat COMMAND PASSWORD
 ;接続
 connect COMMAND
 ;================================================
 ;ログファイル保存
 wait '$'
 logopen "C:\raspberry\Project1\Debug\command.txt" 0 1
 sendln ""
 wait '$'
 sendln "cd DHT11_Python"
 wait '$'
 sendln "python dht11_example.py"
 wait '$'
 logclose
 ;================================================
 ;マクロ終了
 end
・133.55.174.76は、自分のraspberry piのIPアドレスに変える。~
・piは、ユーザー名を変えたならそのユーザー名にする。~
・raspberryは、パスワードを変えたならそのパスワードにする。~
・C:\raspberry\Project1\Debug\command.txtの部分はログの保存場所なので、自分の保存したいところに変更する。~
・cd DHT11_Pythonの部分は、raspberry pi内のdht11_example.pyが入っているフォルダに変更する。~
・その後、Tera termを起動し上のコントロールをクリックしマクロをクリックする。~
・すると、ファイルを選択する画面になるのでttlファイルを選択する。~
・今回は、先程作成したttlファイルを選択する。~
・すると、マクロが起動し、PC上に温湿度が取得できる。上のコードの場合は、command.txtにログが入力される。
+C++を用いて入力されたログの最終行を読み取る方法~
・あまり理解していないがC++の下記のコードで読み取ることができる。~
 #define _CRT_SECURE_NO_WARNINGS
 #include<stdio.h>
 #include <windows.h>
 #define STR_MAX 256
 int main(void)
 {
	FILE *fp;
	int str_max = STR_MAX;
	char buf[STR_MAX];
	int step, kk, n_line;
	while (1) {
		Sleep(3000);
		fp = fopen("command.txt", "r");
		if (fp == NULL) {
			printf("can't open file\n");
			return -1; /*abort();*/
		}
		n_line = 0;
		while (fgets(buf, str_max, fp) != NULL) {
			n_line++;
		} //行数のカウント
		fclose(fp);
		fp = fopen("command.txt", "r");
		for (kk = 0; kk < n_line - 1; kk++)//上からn_line-1行は読み飛ばす
		{
			fgets(buf, str_max, fp);
		}
		fscanf(fp, "%d\n", &step);
		//printf("%d\n", step);
		fclose(fp);
		if (step >= 25) {
			
		}
	}
 }
・このコードは、raspberry pi内のdht11_example.pyを温度の数字のみを表示するように変更すると使える。~
・if文の中に、何か制御を入れると温度が25℃以上の時に実行される。~
・上記のコードを用いたパソコンのカメラを制御するC++のプロジェクト作成方法を次項から述べる。(環境はVisual Studio2015)~
+Visual Studio 2015でOpenCVを動かすための環境設定 Windows編~
・OpenCVを[[こちら:https://opencv.org/]]から下記の図のようにダウンロードする。
#ref(wiki7.png,,50%)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#ref(wiki8.png,,50%)
・ダウンロードしたファイルを起動するとOpenCVの解凍処理に進みます。Cドライブの任意の場所に解凍してください。~
・解凍が完了すると「opencv」といるフォルダが生成されています。~
・次は、ソースコード上で静的リンクライブラリの指定が可能にするために「opencv_lib.hpp」を作成しましょう。~
・作成場所は「C:\任意の場所\opencv\build\include\opencv2\opencv_lib.hpp」となります。~
・opencv_lib.hppの中身は次のように記述してください。~
 #if _DEBUG
 #pragma comment(lib, "opencv_calib3d2411d.lib")
 #pragma comment(lib, "opencv_contrib2411d.lib")
 #pragma comment(lib, "opencv_core2411d.lib")
 #pragma comment(lib, "opencv_features2d2411d.lib")
 #pragma comment(lib, "opencv_flann2411d.lib")
 #pragma comment(lib, "opencv_gpu2411d.lib")
 #pragma comment(lib, "opencv_highgui2411d.lib")
 #pragma comment(lib, "opencv_imgproc2411d.lib")
 #pragma comment(lib, "opencv_legacy2411d.lib")
 #pragma comment(lib, "opencv_ml2411d.lib")
 #pragma comment(lib, "opencv_nonfree2411d.lib")
 #pragma comment(lib, "opencv_objdetect2411d.lib")
 #pragma comment(lib, "opencv_ocl2411d.lib")
 #pragma comment(lib, "opencv_photo2411d.lib")
 #pragma comment(lib, "opencv_stitching2411d.lib")
 #pragma comment(lib, "opencv_superres2411d.lib")
 #pragma comment(lib, "opencv_ts2411d.lib")
 #pragma comment(lib, "opencv_video2411d.lib")
 #pragma comment(lib, "opencv_videostab2411d.lib")
 #else
 #pragma comment(lib, "opencv_calib3d2411.lib")
 #pragma comment(lib, "opencv_contrib2411.lib")
 #pragma comment(lib, "opencv_core2411.lib")
 #pragma comment(lib, "opencv_features2d2411.lib")
 #pragma comment(lib, "opencv_flann2411.lib")
 #pragma comment(lib, "opencv_gpu2411.lib")
 #pragma comment(lib, "opencv_highgui2411.lib")
 #pragma comment(lib, "opencv_imgproc2411.lib")
 #pragma comment(lib, "opencv_legacy2411.lib")
 #pragma comment(lib, "opencv_ml2411.lib")
 #pragma comment(lib, "opencv_nonfree2411.lib")
 #pragma comment(lib, "opencv_objdetect2411.lib")
 #pragma comment(lib, "opencv_ocl2411.lib")
 #pragma comment(lib, "opencv_photo2411.lib")
 #pragma comment(lib, "opencv_stitching2411.lib")
 #pragma comment(lib, "opencv_superres2411.lib")
 #pragma comment(lib, "opencv_ts2411.lib")
 #pragma comment(lib, "opencv_video2411.lib")
 #pragma comment(lib, "opencv_videostab2411.lib")
 #endif
・opencv_lib.hpp作成が終わったら、Windowsの環境変数のpathにOpenCVの動的ライブラリを登録しましょう。~
・動的ライブラリが配置されてる場所は「C:\任意の場所\opencv\build\x64\vc12\bin」ですので、それを以下の図の所に入力してください。~
・;C:\任意の場所\opencv\build\x64\vc12\binの最初の;を忘れないでください。
#ref(wiki9.jpg,,50%)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#ref(wiki10.jpg,,50%)
+Visual Studio 2015でOpenCVを動かすための環境設定 Visual Studio2015編~
・Visual Studio 2015では、プロジェクトがOpenCVを認識できるようにOpenCVの「includeフォルダ」と「ライブラリフォルダ」を設定します。~
・まず、「ファイル>新規作成>プロジェクト」をクリックして、Win32コンソールアプリケーションの新しいプロジェクトを生成しましょう。~
・プロジェクト名は「opencvsample」にします。
#ref(wiki11.jpg,,50%)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#ref(wiki12.jpg,,50%)
・プロジェクトが生成されたら、x64用アプリケーションを作成するように構成を変更しましょう。~
・「ビルド>構成マネージャー」をクリックして、アクティブソリューションプラットフォームを「x86」から「x64」に変更します。~
#ref(wiki13.jpg,,50%)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#ref(wiki14.jpg,,50%)
・これからOpenCVの「includeフォルダ」を指定します。~
・ソリューションエクスプローラーのプロジェクト名を選択し、マウスを右クリックすると、メニューが表示されます。~
・メニューから「プロパティ」を選択するとプロジェクトのプロパティページが表示されます。~
・プロジェクトのプロパティページの左側のツリーで「構成プロパティ>C/C++>全般」を選択します。右側の設定画面に「追加のインクルドディレクトリ」が見えますね?そこに「C:\任意の場所\opencv\build\include」を設定します。~
#ref(wiki15.jpg,,50%)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#ref(wiki16.jpg,,50%)
・次は、「ライブラリフォルダ」を指定します。~
・プロジェクトのプロパティページの左側のツリーで「構成プロパティ>リンカ―>全般」を選択します。~
・右側の設定画面に「追加のライブラリディレクトリ」が見えますね?そこに「C:\任意の場所\opencv\build\x64\vc12\lib」を設定します。
#ref(wiki17.jpg,,50%)
・これで、環境設定は終わりです。~
・最後に、温度が25℃以上になったらカメラからの画像を保存するコードを載せる。~
・↓opencvsample.cppのコード~
 // opencvsample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
 //
 #define _CRT_SECURE_NO_WARNINGS
 #include <stdio.h>
 #include "stdafx.h"
 #include <opencv2/opencv.hpp> // インクルードファイル指定
 #include <opencv2/opencv_lib.hpp> // 静的リンクライブラリの指定
 using namespace cv; // 名前空間の指定
 int main(int argh, char* argv[])
 {
	FILE *fp;
	int str_max = 256;
	char buf[256];
	int step, kk, n_line;
	cv::VideoCapture cap(0);//デバイスのオープン
							//cap.open(0);//こっちでも良い.
	if (!cap.isOpened())//カメラデバイスが正常にオープンしたか確認.
	{
		//読み込みに失敗したときの処理
		return -1;
	}
	while (1) {
		//Sleep(3000);
		cv::Mat frame;
		cap >> frame; // get a new frame from camera
					  //
					  //取得したフレーム画像に対して,クレースケール変換や2値化などの処理を書き込む.
					  //
		cv::imshow("window", frame);//画像を表示.
		fp = fopen("command.txt", "r");
		if (fp == NULL) {
			printf("can't open file\n");
			return -1; /*abort();*/
		}
		n_line = 0;
		while (fgets(buf, str_max, fp) != NULL) {
			n_line++;
		} //行数のカウント
		fclose(fp);
		fp = fopen("command.txt", "r");
		for (kk = 0; kk < n_line - 1; kk++)//上からn_line-1行は読み飛ばす
		{
			fgets(buf, str_max, fp);
		}
		fscanf(fp, "%d\n", &step);
		//printf("%d\n", step);
		fclose(fp);
		if (step >= 25) {
			//cv::Mat frame;
			//cap >> frame; // get a new frame from camera
						  //
						  //取得したフレーム画像に対して,クレースケール変換や2値化などの処理を書き込む.
						  //
			//cv::imshow("window", frame);//画像を表示.
			cv::imwrite("img.png", frame);
		}
		int key = cv::waitKey(1);
		if (key == 113)//qボタンが押されたとき
		{
			break;//whileループから抜ける.
		}
	}
	cv::destroyAllWindows();
	return 0;
 }
・stdafx.hのコード~
 #pragma once
 #include "targetver.h"
 #define _CRT_SECURE_NO_WARNINGS
 #include <stdio.h>
 #include <tchar.h>
 #include <windows.h>
-参考サイト~
--[[ファイルの最終行のみ読み込みたい。:https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1298165382]]
--[[TeraTerm マクロ入門:http://www.illinternet.com/2017/06/18/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E5%AE%9F%E8%A1%8C%E7%B5%90%E6%9E%9C%E3%82%92%E3%83%AD%E3%82%B0%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B/]]
--[[【ゼロからわかる】Teratermのインストールと使い方:https://eng-entrance.com/teraterm-install]]~
--https://qiita.com/vs4sh/items/4a9ce178f1b2fd26ea30
--

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS