ファイル分析¶
/home/piに2つのフォルダーがある:モーターとステアリングを制御するための SunFounder_PiCar と、パン/チルトとワイヤレス制御のための SunFounder_PiCar-V ここでPiCar-Vのコードを調べる。
コードに含まれる内容と指示が多すぎるため、すべての詳細を説明しない。プログラムのPython 2、Python 3、Django、HTML、CSSの詳細については、関連するWebサイトにアクセスするか、または本を購入して自分で学習してください。次のパートでは、全体的な構造とプロセスについて簡単に説明する。
まず、コードフォルダー内のファイルを確認する:
.git
はGitリポジトリのすべての情報を確認するための隠しディレクトリで、リポジトリを作成すると、自動的に生成される。Ball_track
は車に赤いボールを追跡させるために使用される。データシート
はハードウェアモジュールで使用される一部のチップのマニュアルを保存する。mjpg-streamer
はカメラのデータが転送されるオープンソースのストリーミングメディアライブラリである。Remote_control
はWebサーバーのコードを保存するためのもので、APIリクエストに基づいて車のモーターとサーボを制御する。.gitignore
はGithubリポジトリが同期されるときに無視されるファイルタイプのリクエストを記録する。Pythonパッケージの標準の必要なドキュメントであるプロジェクトを作成すると、
_init_.py
は自動的に生成されるため、そのままにしておいてください。i2cHelper.py
はI2C接続を構成したり検出したりするためにPython 2によって作成されたPythonスクリプトである。install_dependencies
,簡単なインストールと環境設定のための実行可能なbashスクリプト。その名のとおり、
LICENSE
はGNU V2ライセンスのテキストファイルである。README.md
とshow
はステートメントとプロンプトに関する通常の情報を記録する。
サーバーコード¶
サーバーコードはDjango 1.10に基づいている(必要に応じて最新のリリースに適応する)。これに興味がある場合は、DjangoのWebサイトhttps://www.djangoproject.com/にアクセスするか。ここでは、Webサーバーがどのように機能するかを学習する。
注釈
バグを修正し、一部の関数の更新をリリースするために、Githubでコードが不定期に更新される場合がある。したがって、ここのコードは初期バージョンである。以下の場合、Githubリポジトリの更新を表示できる:
コードディレクトリを開き、ls
でファイルを確認します。
pi@raspberry:~ $ cd SunFounder_PiCar-V/
pi@raspberry:~/SunFounder_PiCar-V $ ls
datasheet install_dependencies mjpg-streamer remote_control
client i2cHelper.py LICENSE README.md show
remote_control
は、Webサーバーのメインコードディレクトリである。cd remote_control
でコードディレクトリを開き、lsによってファイルを確認する:
pi@raspberry:~/SunFounder_PiCar-V $ cd remote_control
pi@raspberry:~/SunFounder_PiCar-V/remote_control $ ls
db.sqlite3 manage.py remote_control start static
Djangoプロジェクトを作成すると、
db.sqlite3
が生成される。manage.py
はDjangoプロジェクトのメインプログラムであり、プロジェクトの作成時に生成される。通常は変更する必要はない。remote_control
には、メインコードファイルが含まれている。start
はsudo python manage.py runserver 0.0.0.0:8000
を実行するために書かれた小さなスクリプトであり、便宜上、属性のあるインストールを使用したサーボインストール
である。static
はいくつかの静的な画像をWebに保存するものである。
Djangoウェブサーバーは通常、 sudo python manage.py runserver `` の実行を通じて起動する。アドレス0.0.0.0:8000は、リスニングアドレスがLAN上のすべてのアドレスをカバーし、ポート番号が8000であることを意味する。ここでは、 ``remote_control
フォルダーのコードに焦点を当てる。 cd remote_control
を使用してディレクトリに入る:
pi@raspberry:~/SunFounder_PiCar-V/remote_control $ cd remote_control
pi@raspberry:~/SunFounder_PiCar-V/remote_control/remote_control $ ls
driver \__init__.py settings.py templates urls.py views.py wsgi.py
driver
は車のドライバーを保存する。__init__.py
はPythonパッケージの標準的な必要なドキュメントであるDjangoプロジェクトを作成すると自動的に生成される。そのままにしておいてください。settings.py
は自動的に生成され、関連する設定を保存する。templates
HTML形式でウェブを格納するためのジャンゴアプリです。urls.py
は自動的に生成され、コードに関連付けるURLを構成する。views.py
はURLによって関連付けられるページコントロールのコードである。テンプレートを呼び出してページを表示し、ドライバーが車を制御する。wsgi.py
は自動的に生成され、変更する必要はない。詳しくはDjangoの公式サイトをご覧ください。
これがコードの動作原理である。urls.py
に自動的に関連付けられるメインプログラム manage.py
を実行して、URLに応答する。ChromeのようなWebブラウザを実行して http://<rpi_ip_address>:<port> `` または、クライアントを介して構成済みのAPIにアクセスすると、``urls.py
の関連付けにより、manage.py
が views.py
に変わる。次に、views.py
はこれを処理し、テンプレートをブラウザに返す。さらに、ブラウザーで設定されたパラメーターに基づいて driver
パッケージを呼び出し、車を制御する。
ここで、フォルダー driver
を開き、以下を確認する:
pi@raspberry:~/SunFounder_PiCar-V/remote_control/remote_control $ cd driver/
pi@raspberry:~/SunFounder_PiCar-V/remote_control/remote_control/driver $ ls
camera.py config \__init__.py stream.py
driver
フォルダーには、主にパン&チルトを制御するためのドライバーモジュールとカメラストリーマーが含まれている。
パン&チルトを制御するための camera.py
。
config
は補正データを保存するために使用される。
__init__.py
はパッケージの必須ファイルであり、そのままにしておいて下さい。
stream.py
はMJPG-streamerに基づくビデオストリーミングサービスである。
表示するフォルダ templates
を終了して開くと、以下が表示される:
pi@raspberry:~/SunFounder_PiCar-V/remote_control/remote_control/driver $ cd ../
pi@raspberry:~/SunFounder_PiCar-V/remote_control/remote_control $ cd templates/
admin.py \__init__.py models.py tests.py
apps.py migrations templates views.py
このフォルダーは、テンプレートを簡単に呼び出すために、`` manage.py startapp`` によって作成される。したがって、`` templates`` 以外のファイルは変更されていない。templates
をもう一度開く:
pi@raspberry:~/SunFounder_PiCar-V/remote_control/remote_control/templates $ cd templates
pi@raspberry:~/SunFounder_PiCar-V/remote_control/remote_control/templates/templates $ ls
base.html cali.html run.html
レイヤーで構成される3つのHTMLファイルがある。低レベルの base.html
には、デフォルトでは、HTMLの `` <head> 、レイアウト全体、とホームページのコンテンツが含まれている。表層:補正用の ``cali.html
と、車を制御するための run.html
。