.. note::
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
**参加する理由は?**
- **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
- **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。
- **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。
- **特別割引**:最新製品の独占割引をお楽しみください。
- **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう!
レッスン13:火星ローバーのエネルギーシステムの調査
=================================================================
私たちの火星ローバー探査の旅の最終レッスンへようこそ。今回は、ローバーの心臓部であるエネルギーシステムを掘り下げていきます。
遠く離れた惑星、例えば火星を探査することを考えるとき、最も重要な要素の一つはエネルギーです。
これらのローバーは、どのようにして過酷で人里離れた環境で自らを動力供給するのでしょうか?
このレッスンでは、この興味深いトピックを探究し、私たちの火星ローバーモデルのようなローバーが、どのようにエネルギーを取り込み、管理するかを学びます。
私たちは、バッテリーとソーラーパネルの動作原理を調査し、これらの電源をローバーモデルに実際に取り付けて使用する実践も行います。さらに、Arduinoを使用してバッテリーのレベルを監視するスキルを一段と高めます。
レッスンの終わりには、これらの重要なエネルギー統計を私たちのアプリに表示し、ローバーのエネルギー状態をリアルタイムで理解することができるようになります。探査のパワーアップに準備はいいですか?始めましょう!
.. image:: img/solar_panel.jpg
:width: 600
:align: center
学習目標
-----------------------
* バッテリーとソーラーパネルの動作原理を理解する。
* 火星ローバーモデルにソーラーパネルを取り付ける実践を行う。
* Arduinoを使用してバッテリーレベルとソーラーパネルの充電状態を監視する方法を学ぶ。
* アプリ上にバッテリーレベルを表示する。
材料
------------------------
* 全部品を装備した火星ローバーモデル(ソーラーパネルと底板を除く)
* ソーラーパネルと底板
* Arduino IDE
* コンピューター
* SunFounderコントローラーアプリがインストールされたタブレットまたはスマートフォン
手順
----------------------
**ステップ1:火星ローバーのエネルギーシステムの紹介**
私たちの体が機能するためには常にエネルギーが必要なように、火星ローバーも探査ミッションのためにエネルギーを蓄え、発電する方法が必要です。ローバーのエネルギーシステムを私たちの体の心臓に例えてみてください。心臓が血液を体中に送り、必要な酸素や栄養素を供給するように、ローバーのエネルギーシステムはエネルギーをローバーの各部分に流し、スムーズにタスクを遂行できるようにします。
このエネルギーシステムの主要なコンポーネントは、昼夜を問わずローバーが動作できるように連携して働くバッテリーとソーラーパネルです。
ローバーのエネルギーシステムにおけるバッテリーの役割は、私たちの体のエネルギー蓄積の役割に似ています。私たちが活動時に使用するエネルギーを蓄える必要があるように、ローバーも探査ミッションのためにエネルギーを蓄える方法が必要です。バッテリーに蓄えられたエネルギーは、ローバーのさまざまな部分に継続的に送られ、タスクを体系的に実行できるようになります。
.. image:: img/battery_galaxyrvr.png
:width: 600
:align: center
しかし、バッテリーのエネルギーが尽きたときはどうなるのでしょうか?どのようにしてエネルギーを補充するのでしょうか?ここでソーラーパネルが登場します。
木々が光合成のために太陽光を吸収し、食物を作るように、私たちの火星ローバーはソーラーパネルを使用して太陽からエネルギーを取り込み、それを電気に変換し、使用するためにバッテリーに蓄えます。各ソーラーパネルは、多くの小さなソーラーセルで構成されています。これらのセルは、光を電気に変換することができる材料でできており、この過程は光起電力効果と呼ばれます。太陽光がセルに当たると、すぐに使用することも、後で使用するためにローバーのバッテリーに蓄えることもできる電流が発生します。
.. image:: img/solar_panel_gala.png
:width: 600
:align: center
しかし、火星でのソーラーエネルギーの取り込みは、思ったほど簡単ではありません。砂嵐によりパネルに到達する太陽光が減少したり、地球よりも弱い火星の太陽光のためにパネルが生成する電力が少なくなることがあります。これらの課題にもかかわらず、ソーラー発電は私たちの火星ローバーを動力供給するための最も実用的で効率的な方法です。
しかし、ソーラーパネルが仕事をしているか、バッテリーの電力が低下しているかをどのように知るのでしょうか?ここでArduinoの出番です。次のセクションでは、Arduinoを使用してローバーのバッテリーの充電と放電を監視する方法を学びます。
**ステップ2:火星ローバーへのソーラーパネルの取り付け**
このステップを始める前に、火星ローバーモデル、ソーラーパネル、およびソーラーパネルをローバーの電源システムに接続するためのケーブルが必要です。
これは理論を実践に移す過程であり、科学、技術、工学、数学(STEM)教育の魅力を本当に理解できる機会です。さあ、始めましょう!
.. raw:: html
**ステップ3:バッテリー電圧と充電のモニタリングのためのプログラミング**
火星ローバーモデルにソーラーパネルを取り付けたので、次のステップは、プログラミングを通じてバッテリーの電圧と充電状態を監視することです。
.. raw:: html
このコードは、電力管理が重要な火星ローバーのようなアプリケーションで特に役立つシンプルなバッテリーモニターを作成します。バッテリーの状態を監視することで、ローバーを再充電する必要がある時や、電力を消費するタスクをスケジュールするべき時を理解するのに役立ちます。
コードの異なる部分を詳しく見ていきましょう:
* この行は、 ``BATTERY_PIN`` をアナログピンA3として定義しており、ここからバッテリー電圧が読み取られます。
.. code-block:: arduino
#define BATTERY_PIN A3
* この関数はバッテリーの電圧を計算します。まず ``BATTERY_PIN`` からアナログ値を読み取り、それを電圧に変換します。Arduinoのアナログ-デジタルコンバータ(ADC)は0-1023のスケールで動作するため、生の読み取り値を1023で割ります。次に、Arduinoの基準電圧5と、2(電圧分割器を2と仮定)を掛けて、これを電圧の読み取り値に変換します。
.. code-block:: arduino
:emphasize-lines: 5
float batteryGetVoltage() {
// Reads the analog value from the battery pin
int adcValue = analogRead(BATTERY_PIN);
// Converts the analog value to voltage
float adcVoltage = adcValue / 1023.0 * 5 * 2;
// Rounds the voltage to two decimal places
float batteryVoltage = int(adcVoltage * 100) / 100.0;
return batteryVoltage;
}
Arduinoのアナログ-デジタルコンバータからの生のADC読み取り値は、1023で割って分数に変換し、5を掛けて電圧に変換します。これは、Arduinoが5ボルトの基準電圧を使用しているためです。
しかし、バッテリー電圧がArduinoの最大入力電圧よりも高いため、Arduinoを保護するために抵抗器が使用されます。そのため、ADC電圧を2倍にして、抵抗器の影響を相殺し、正しいバッテリー電圧を得ます。
* この関数は、電圧に基づいてバッテリーの充電率を計算します。 ``map`` 関数を使用して、電圧値(6.6ボルトから8.4ボルトの範囲)をパーセンテージ(0から100の範囲)に ``map`` します。
.. code-block:: arduino
uint8_t batteryGetPercentage() {
float voltage = batteryGetVoltage(); // Gets the battery voltage
// Maps the voltage to a percentage.
int16_t temp = map(voltage, 6.6, 8.4, 0, 100);
// Ensures the percentage is between 0 and 100
uint8_t percentage = max(min(temp, 100), 0);
return percentage;
}
**ステップ4:火星ローバーのエネルギーシステムのテスト:屋内および屋外での走行試験**
バッテリーモニタリングシステムのコーディングが完了したので、今度は火星ローバーを実際に動かす時です。
まず、ローバーをフル充電し、屋内で30分間、屋外で太陽光の下で30分間の探査ミッションを計画します。各ミッション前の初期バッテリーレベルを記録し、各テスト終了時のバッテリーパーセンテージと比較します。
以下の表は、あなたの発見を追跡するのに役立つ便利なテンプレートです:
.. list-table:: 電力テスト
:widths: 50 25 25
:header-rows: 1
* -
- 日光
- 屋内
* - スタートバッテリーパーセンテージ
-
-
* - エンドバッテリーパーセンテージ
-
-
各テスト後のバッテリーレベルの違いを観察します。ローバーのバッテリーは屋外の日光の中で長持ちしましたか?この観察から、ソーラーパネルの効果についてどのような結論を引き出せるでしょうか?
これらの差異を理解することで、ソーラーエネルギーが火星ローバーを効果的に動力供給できるか、また火星表面のような遠隔地や過酷な環境でもどのように機能するかをよりよく理解できます。
**ステップ5:アプリでバッテリーレベルを表示する**
もちろん、残りのバッテリーレベルを確認するために、繰り返し新しいコードを火星ローバーにアップロードするのは非現実的です。それはかなり不便になるでしょう。
代わりに、バッテリーレベルをアプリに送信し、楽しんでいる間にどれだけのプレイ時間が残っているかを簡単にモニターできるようにします。
前のレッスンから、SunFounderコントローラーでデータを表示したり、ウィジェットを使用して火星ローバーを制御したりするときは、まずこれらのウィジェットを追加する必要があることを学びました。
しかし、バッテリーレベル表示は特別なウィジェットです。専用のキー(``BV``)があり、その表示はAからQとラベル付けされた領域にはありません。代わりに、右上隅にバッテリーアイコンとして表示されます。
コードに含める方法は次のとおりです:
.. code-block:: Arduino
...
// This pin reads the voltage of the battery
#define BATTERY_PIN A3
...
void setup() {
...
// Sets the battery pin as an input
pinMode(BATTERY_PIN, INPUT);
}
// Function to execute when data is received from the Controller
void onReceive() {
...
//show battery voltage
aiCam.sendDoc["BV"] = batteryGetVoltage();
}
...
// This function reads the battery voltage
float batteryGetVoltage() {
// Reads the analog value from the battery pin
int adcValue = analogRead(BATTERY_PIN);
// Converts the analog value to voltage
float adcVoltage = adcValue / 1023.0 * 5 * 2;
// Rounds the voltage to two decimal places
float batteryVoltage = int(adcVoltage * 100) / 100.0;
return batteryVoltage;
}
以下は完全なコードです:
.. raw:: html
コードのアップロードに成功したら、SunFounderコントローラーを起動します。右上隅にバッテリーレベルが表示されるのを見ることができます。
.. image:: img/battery_icon.png
このステップを完了することで、私たちは火星ローバーのエネルギーシステムをマスターし、リアルタイムでその電力レベルを監視する能力を得ました。
これで太陽の力を利用して火星ローバーを効果的に操作する方法を学んだので、庭でのより広範な探査や、さらに挑戦的な地形への冒険を計画することができます!
**ステップ6:振り返り**
このレッスンを通じて、火星ローバーのエネルギーシステムの重要な役割と、ローバーの残りエネルギーを監視するメカニズムを理解することに焦点を当てました。ソーラーパネルベースのエネルギーシステムは、ローバーに電力を供給するだけでなく、宇宙探査における再生可能エネルギー源の重要性を強調しています。
このシステムの実生活への影響について考えてみてください。火星でのソーラーエネルギーシステムが直面する可能性のある課題を考えてみてください。極端な温度、砂嵐、または長期間の暗闇は、エネルギー供給にどのような影響を与えるでしょうか?これらの障害を克服するための解決策を提案できますか?
**ステップ7:前進**
火星ローバーに動きの能力を与えたので、探査の旅を始める時が来ました!火星環境を模倣したさまざまな地形で、ローバーを自由に動かしてみましょう。
たとえば、石の山を登らせることができます。
.. raw:: html
または、濃い草のパッチをナビゲートさせることもできます。
.. raw:: html
または、石がいっぱいの砂利の地形でコースを設定することもできます。
.. raw:: html
ただし、障害物が高すぎる場合、ローバーはそれを乗り越えることができないかもしれません。
.. raw:: html
これらのさまざまな地形は、本物の火星ローバーにとっても、ローバーにとっても独特の挑戦を提供します。ローバーがこれらの障害を克服しようとするのを見ながら、NASAの科学者やエンジニアが火星にローバーを送るときに経験することの一部を体験しているのです!
火星ローバーのレッスンを終えるにあたり、私たちが学んだことについて振り返ることが重要です。この旅があなたの知識やスキルを広げただけでなく、好奇心を刺激し、探究する意欲をかき立てたことを願っています。ローバーがあなたの庭を歩き回るか、広大な想像力の世界を横断するかにかかわらず、途中で発見することは確実に非凡なものになるでしょう。