> Agricultural Information Engineering (13)

(農業)情報工学(2020/12/24)

現在、情報の更新中です。(2020/12/23)

 LastLecture

情報工学の授業は今回が最終回となる。完全オンラインでの授業のため、いろいろと勝手が異なり、昨年までのコンテンツが利用できなかったなどのトラブルが多発した。特にビデオの品質や音声のトラブルなどでは迷惑をかけてしまいました。すみませんでした。
一方で授業のために最新のツールを利用するなど新しい試みも行い、学生諸君だけでなく教員自身も勉強となった。今後の授業内容の高度化に役立てることができるものと思われる。学生の皆さんの協力のおかげでもある。改めて感謝します。
今回は情報工学の近年のトピックを若干を紹介すると共に、総復習を行いたいと思う。
LCDに温度を表示する
最初に前回の復習として、まずtinkercadで、LCDに温度表示をさせる回路とスケッチを紹介する。

<部品>
TMP36:i25-27
コンデンサ(0.1μF):i28-i29
抵抗(1KΩ抵抗):e26-e30
LCD 16x2
<LCD配線:既出>
ArduinoLCD1602A
GND(黒)GND,V0,RW,LED(右端)
5V(赤)VCC
10(橙)DB4
11(橙)DB5
12(橙)DB6
13(橙)DB7
6(緑)E
4(黄)RS
<TMP36配線>
黒:GND:(-),f27,h27,h28
赤:5V:(+),g25,g29
ピンク色(信号線):A1,f26
前回作成した、LCDの回路(2-5.LCDの接続)にTMP36を追加した回路になる。
スケッチは次の様になる。

        #include 	//LCD制御のライブラリをインクルード
          LiquidCrystal lcd( 4, 6, 10, 11, 12, 13 );	//LCDの設定
          const int PIN_TMP36 = 1;	//TMP36のピン番号(A1)
          void setup() {
            lcd.begin( 16, 2 );	//LCDの初期化
            //lcd.print("Hello, world!");	//LCDに文字列の表示!
            Serial.begin(9600);	//シリアルモニタ
          }
          void loop() {
            float a = (float) analogRead( PIN_TMP36 );
            float v = a*5.0/1023.0;	//電圧値
            float t = v*100.0 - 50.0;	//温度
            Serial.println( t );	//シリアルモニタへ書き出し
            lcd.clear();			//表示のクリア
            lcd.setCursor(0, 0);	//LCD表示位置
            lcd.print("Temp:");	//LCDへの表示書き出し
            lcd.print( t );		//LCDへの気温書き出し
            delay(1000);			//回路安定化
          }
      
このスケッチで、シミュレーションの実行を行うとLCDに温度が表示される。

ここからは、若干の情報工学系の話題を紹介する。
Artificial Intelligence
現在、非常に話題になっている人工知能(Artificial Intelligence)について、若干の知識を補強しておきたい。現在、AI技術ではCNN(畳み込みニューラルネットワーク)を用いた機械学習が広く使われているが、GoogleではそのモジュールであるTensorFlowの体験ができるウェブサイトを公開しているので、ぜひニューラルネットワークによる、赤と青の「分類」に挑戦して欲しい。
GUIとCUI
この話題は情報工学と言うより、コンピュータ操作スキルの問題である。
現在のPCは基本的にマウスによるアイコン操作と言った、GUI(Graphic User Interface)を多用している。ただ、情報工学分野でPCを操作する際には、従来から備わっているCUI(Characer User Interface)を利用する事にメリットがある場合もある。更にコンピュータの内部でのファイルの配置や拡張子とその関連付けなど、コンピュータの理解を深めるためにも、CUIの理解は役に立つ。そのために、ここでは基本的な「ファイルの一覧表示、作成、内容表示、複製、削除」「ディレクトリ(フォルダ)の位置、カレントディレクトリ、ディレクトリ間の移動」などの操作について、説明する。
なお、このようにPCの内部のファイルやディレクトリなどの操作を行うためのプログラムのことを、コンピュータという果実の核(コア)の外側を覆っている殻(シェル)とたとえて、シェルプログラムと呼ぶ。シェルもプログラムの1種であり、異なったシェルを用いれば、異なったコマンド体系となる。今回紹介するシェルは、Windowsでは「cmd.exe」であり、MacOSでは「zsh」となる。
コマンドプロンプトとターミナル

まずWindowsでの操作を説明する。

WindowsでCUIを利用するのは、コマンドプロンプトである。コマンドプロンプトは、Windowsが発売される前のMS-DOS(MicroSoft DiskOperationgSystem:えむえすどす)に由来するコマンド体系である。
コマンドプロンプトを呼び出すのは、WindowsキーとRキーを同時に押しながら、CMDと入力する。すると、画面に黒背景の「コマンドプロンプト」画面が表示される。この画面での次の操作を行ってみる。
スタート→Windowsシステムツール→コマンドプロンプト、で起動することもできる。
  1. dir
    現在のディレクトリに入っているファイルとフォルダの一覧表が表示される
  2. cd ..
    現在のディレクトリの「親」ディレクトリに移動する。(Change Directoryの略:chdirでも良い)「..」は、ディレクトリの構造(ツリー)をさかのぼる事に相当する。これを繰り返すと、ディレクトリの根本(ルート)にたどり着く。これを「ルートディレクトリ」と呼ぶ。Windwoの場合には、(C:¥)である。ちなみに、「C」は「ドライブレター」と呼ばれる。(PCが販売された当初は、AとBはメインとサブのフロッピーディスクのドライブであった。Cはあくまで「補助」装置のハードディスクであった。)
  3. cd
    今、自分の作業しているディレクトリ(カレントディレクトリ)を表示する。
  4. cd Users¥ユーザー名
    元のディレクトリに行くには、ディレクトリの名前を入力する必要がある。長いディレクトリだと入力ミスの可能性も高くなるが、ここは正確に入力する必要がある。
  5. cd Desktop
    今、自分で作業しているデスクトップで作業する。(ディレクトリ名はPCの環境によって異なる。デスクトップに存在しているファイルの「プロパティ」を表示すると、「場所」がわかるので、その「場所」にcdしてみると良い。)
  6. copy con a.txt
    これは、con(コンソール:キーボード)から、a.txtというファイルにcopy(複写)しろというコマンドになる。具体的には、a.txtというファイルをデスクトップに作成する事ができる。
    きーぼーどから、文字列を「ABCD」など入力して、リターン。
    Ctrl+Cで、入力終了。
    これで、デスクトップにa.txtというファイルが作成されている筈である。
  7. dir
    ファイルの一覧を表示して、a.txtが作成されていることを確認
  8. type a.txt
    ファイルの内容を表示させる。
    デスクトップで、a.txtをダブルクリックして、エディターで表示させても同じ内容である。
  9. copy a.txt b.txt
  10. copy a.txt c.txt
    ファイルの複写
  11. dir
    ファイルの確認
  12. dir *.txt
    今回は、拡張子が.txtとなっている、ファイルのみを表示させた。
    このように、コマンドラインの強力なツール「ワイルドカード」が使える。
    ワイルドカードとは、ファイル名などの「パターンマッチング」を行う特殊文字で、Windowsのコマンドプロンプトの場合、「?」 と「*」が使える。
    「?」は、任意の1文字を表すので、ここでも、「dir ?.txt」と指定することも可能。 一方、「*」は、長さ0以上の任意の文字列となるので、dir *.txtとすると、ファイル拡張子が.txtである、すべてのファイルを指すことになる。
  13. del b.txt
    ファイルの削除を行う。
    dirで、削除を確認出来る。なお、コマンドラインでdelしたファイルは、ゴミ箱に移動せずに、完全に消去されるので注意が必要である。
    ここで、del *.*と行うと、そのディレクトに存在する、全てのファイルが消去される。極めて危険なコマンドである。そのため入力すると、確認のメッセージが表示される。(オプション /Q を付与すると、この確認が省略されるので、更に危険度が増加する。)
  14. md dirA
    ディレクトリ(dirA)の作成
  15. md dirB
    ディレクトリ(dirB)の作成
  16. cd dirA
    作成したディレクトリに移動
  17. dir
    今のディレクトリの内容表示(まだ、何も無い筈である)
  18. copy ../a.txt .
    親ディレクトリ(..)のa.txtを今のディレクトリ(.)にコピー
    このように、ファイルをしているするときに、今作業しているディレクトリ(カレントディレクトリ)からの相対的な位置指定を行う事を「相対パス」指定と呼ぶ。
    一方、ルートから辿ったファイル指定(C:¥Users¥ユーザー名¥Desktop¥a.txtなど)は、「絶対パス」指定と呼ぶ。
  19. dir
    今のディレクトリの内容表示(a.txtが存在する)
  20. cd ..
    親ディレクトリに戻る。
  21. rd dirA
    ディレクトリdirAの削除
    ディレクトリが空で無いから削除できない
  22. rd dirB
    ディレクトリdirBの削除
    削除できる。
  23. rd /s dirA
    ディレクトリdirAの削除
    中身があっても削除できる。
    rd /s /q dirA
    と指定すると、確認のメッセージも省略できる。
  24. mspaint
    このようにプログラムを起動することもできる。
  • shutdown /f
    これは、コンピュータの「強制」シャットダウン。実行すると即座に終了するので、今は実行しないことをお勧めする。

  • 次にMacOSでの操作を説明する。

    MacOSはUNIX系の流れを汲むOSである。そのため、ターミナルのコマンド体系はUnixとほぼ同一となっていて、MS-DOSのコマンド体系とはかなり異なっている。これから研究や業務でコンピュータを使いこなす上では、両方のコマンド体系をとりあえず知っておく価値はあると思われる。なお、Windows10からは「PowerShell」というシェルプログラムが標準で装備されるようになり、PowerShellではMacOSとほぼ同様のコマンドライン操作が可能になっている。
    MacOSでコマンドを実行するには「ターミナル」を呼び出す。
    ファインダー→アプリケーション→ユーティリティ→ターミナルで起動。
    1. ls
      これは、現在のディレクトリのファイル一覧を「list:リスト表示」するコマンドである。このように、MacOSのコマンドは短い省略形が多くなっているので、タイプ文字数は少ないがコマンドは覚えにくくなっている。
    2. ls -la
      リストにオプションを付けて表示させる。これによって、ファイルサイズや作成年月日などが一覧できる。
    3. cd ..
      ディレクトリを親ディレクトリに変更(change directory)ディレクトリの移動(cd)は、Windowsのコマンドプロンプトとほぼ同一なので、ここでは省略する
    4. pwd
      今、自分が作業しているディレクトリ名(PrintWorkigDirectory)を表示させる。
    5. cat > a.txt
      今度はファイル作成にcatコマンドを用いる。catコマンドは、ファイル内容を標準出力(連結)するコマンド(コマンド名はconcatinateの一部に由来)である。ここで、大小記号を用いると、ファイル内容の「リダイレクト」が出来て、標準入力(即ちキーボード)の内容が、a.txtファイルに、出力される。(つまり、ファイルが作成できる)と言うことになる。
      ここで、適当に文字列をABCDなどと入力して、Ctrl+Cで終了させると、a.txtが作成できている。
      lsで確認してみる。
    6. cat a.txt
      ファイルa.txtの内容が表示される。
    7. cp a.txt b.txt
    8. cp a.txt c.txt
      ファイルの複写はcpコマンドである
      なお、catコマンドとリダイレクトを用いて、
      cat a.txt > b.txt
      としても、a.txtをb.txtにコピーすることが出来る。
    9. ls *.txt
      この動作の場合、MacOSのワイルドカードは、Windowsとほぼ同等に動作する。ただ、MocOSでは「正規表現」が標準なので、単にls *と実行すると、Windowsとは異なった表示となる。
    10. mkdir dirA
      ディレクトリの作成は、mkdirコマンド
    11. rm -r ディレクトリ名
      ディレクトリの削除はrmコマンドで行う。但し、-rのオプションを付ける。
      中身が入っていても即座に削除されるので注意が必要である。
    12. banner a
      バナー(拡大文字サイン)を表示するプログラム。ターミナルの大きさを変更しないときちんと表示されない可能性もある。

    今回の課題:授業の感想
    最終回のアンケートを作成したので、アンケートに回答して下さい。