ガイド · 読了まで22分

Arduinoの自由研究・科学コンテスト:3〜12年生(小3〜高3)向けの25のアイデア

小学校・中学校・高校向けのArduinoとESP32の自由研究・科学コンテストのアイデア25個を、部品と費用、サンプルコード、レポート、ポスター、審査のコツとあわせて紹介します。

Arduinoの自由研究や科学コンテストのアイデアを探していますか?このガイドでは、Arduino、ESP32、Raspberry Pi Picoで作れる25の科学フェア・研究プロジェクトのアイデアを、小学校、中学校、高校のレベル別に集めました。アイデアごとに、解決する課題、しくみ(方法)、必要な部品、おおよその費用を紹介します。このリストはトルコのTÜBİTAK 4006(学校の科学フェア)と2204(研究コンテスト)向けに書かれたものですが、どのアイデアも学校のSTEMの日やISEF型の科学コンテストでそのまま使えます。

審査員の前でプロジェクトを強くするのは高価なボードではありません。本物の課題を定め、何かを測定し、結果を正直に解釈することです。そのため、この記事の後半では、サンプルコード、測定値をExcelに取り込む方法、研究レポートの構成、ポスターのレイアウト、審査員によく聞かれる質問も取り上げます。電子工作が初めてなら、Arduinoとは?から始めましょう。

Arduino Unoマイコンボード
Arduino Uno:学校のプロジェクトで最もよく使われるボードです。このリストの小学校と中学校のアイデアは、どれもUno、ブレッドボード、いくつかのセンサーで作れます。

TÜBİTAK 4006と2204とは?その違い

TÜBİTAK 4006科学フェア支援プログラムは、5年生から12年生(日本の小学5年〜高校3年に相当)の生徒が、指導教員のもとで準備した小プロジェクトを、自分の学校で開く科学フェアで発表するのを支援するものです。コンテストではなく、順位もつきません。応募するのは生徒ではなく、プロジェクトのコーディネーターを務める学校の教員で、TÜBİTAKはフェアのための予算を学校に送ります。一方、2204はコンテストです。2204-Bは中学生、2204-Aは高校生が対象です。完成したプロジェクトをレポートで提出し、一次審査を通過したものは地域の展示会で審査員の前で発表し、地域の優勝者は全国大会に進みます。2026〜2027年度のおもなルールは次のとおりです。

項目4006 科学フェア2204-B 中学校2204-A 高校
参加できるのは?公立校、BİLSEM(英才教育センター)、特別支援学校の5〜12年生(私立校は応募不可)中学生高校生(20歳未満)
応募するのは?プロジェクトのコーディネーターを務める教員指導教員(指導教員は必須)生徒(指導教員は任意)
チーム小プロジェクトごとに生徒2〜4人、指導教員は最大2人生徒は最大3人、指導教員1人生徒は最大3人、指導教員は最大1人
プロジェクトの種類と分野研究、調査、設計。12の主分野と67のテーマ10の主分野(技術設計とソフトウェアを含む)+テーマ12の主分野(技術設計とソフトウェアを含む)+テーマ
提出するもの小プロジェクトの用紙:目的20〜50語、方法50〜150語、期待される結果50〜150語テンプレートに沿った2〜20ページのPDFレポート、150〜250語の要旨付きテンプレートに沿った2〜20ページのPDFレポート、150〜250語の要旨付き
審査小プロジェクトごとに少なくとも3人の外部審査員がオンラインで採点一次審査、地域展示会、決勝一次審査、地域展示会、決勝
2026〜2027年度の日程応募2026年9月21日〜11月13日、フェア2027年3月1日〜6月5日応募2026年10月21日〜2027年2月10日応募2026年9月23日〜2027年1月4日

4006では、学校は最少10、最大20の小プロジェクトで応募します。条件を満たすすべての学校が応募できる4006-Aでは、小プロジェクトが少なくとも5つの異なるテーマにまたがる必要があります。すでに2回以上フェアを開いた学校が対象の4006-Bでは、テーマは最大5つで、研究と設計の種類だけが認められます。フェアの期間は、授業日で最短2日、最長3日です。第13回の公募では、フェアごとの準備費と、小プロジェクトごとの支援金(4006-Bのほうが高額)が定められ、金額はインフレに合わせて改定されるとされています。Arduinoのプロジェクトはふつう、技術と設計または情報技術とソフトウェアの分野と、「ロボットとプログラミング」「自然災害と防災」「誰もが暮らしやすい技術」などのテーマに入ります。日程や金額は毎年変わるので、応募の前に指導教員と一緒にその年の公募要項を読んでください。

Arduinoの工作を研究プロジェクトに変えるもの:測定できる問い

審査員が最もよく指摘するのは、ネット上に何千もの作例がある回路を「動くから」というだけで発表することです。2204の一次審査の採点表では、最も大きな配点が独創性と影響と結果と考察にあり、4006の小プロジェクトは目的、方法、期待される結果で採点されます。これに応えるには、アイデアを研究の問いに変え、何かを測定して比較することです。何を変えるか(独立変数)、何を測るか(従属変数)、何と比べるか(対照)を最初に決めましょう。ありふれたアイデアが研究の問いになる例を表にまとめました。

ありふれたアイデア研究の問い測るもの
スマート温室を作ろう土の水分に応じた水やりは、タイマーでの水やりと比べてどれだけ水を節約できるか?1週間の水の量(リットル)と植物の高さ(cm)
地震アラームを作ろうアラームのしきい値を変えると、誤報と検知までの時間はどう変わるか?誤報の回数、検知の遅れ(ms)
スマート白杖を作ろう振動での通知は、音での通知と比べて障害物への反応時間を短くするか?目隠しをした協力者の反応時間(秒)
太陽追尾装置を作ろう追尾するパネルは固定パネルより1日に何%多くエネルギーを生むか?1日のエネルギー(mWh)
空気の質の測定器を作ろう休み時間に窓を開けると、授業中のCO2の増加をどれだけ抑えられるか?CO2(ppm)と時間(分)

小学校〜小学5年生向けのかんたんなプロジェクトのアイデア7選

TÜBİTAK 4006の対象は5年生から12年生なので、低学年の児童は学校の科学の日、授業の活動、英才教育センターなどでこれらのアイデアを発表し、5年生になってからフェアに向けて発展させられます。このレベルのルールは簡単で、センサー1つ、出力1つ(LED、ブザー、サーボのどれか)、そしてそばに先生がいることです。コードを一緒に書くには、mBlockのようなブロック型のツールが使えます。商用電源で動く機器には触れず、すべてUSBか電池で動かします。

  • 1. 省エネのナイトライト:廊下や庭の明かりは、昼間もつけっぱなしになりがちです。LDR光センサーが、暗くなるとLEDを点灯し、明るくなると消灯します。児童は1日の明るさを記録し、しきい値をどこにするかを自分で決めます。LDR光センサーをご覧ください。
  • 2. 20秒の手洗いタイマー:菌が広がるのを減らすには、20秒以上手を洗うことがすすめられていますが、多くの人は途中でやめてしまいます。HC-SR04距離センサーが手洗い場に伸びた手を検知すると、4つのLEDが点灯し、5秒ごとに1つずつ消えていき、時間になるとブザーが短いメロディを鳴らします。
  • 3. 「植物がのどかわいた」アラーム:教室の植物は週末の間に乾いてしまいます。土壌水分センサーで、土が乾くと赤のLEDを点灯して短くブザーを鳴らし、湿っているときは緑のLEDを点灯します。土の種類による乾きやすさの違いを測ることもできます。土壌水分センサーをご覧ください。
  • 4. 押しボタン式の通学路の信号:学校の前の道路を渡るのは大変です。ボタンを押した歩行者は、少し待つと青信号になり、目の不自由な歩行者のために青の間ずっとブザーが鳴ります。プロジェクトは段ボールの道路模型で発表します。Arduinoで信号機をご覧ください。
  • 5. 教室の騒音メーター:騒がしい教室では授業に集中しにくくなります。サウンドセンサーで騒音レベルを測り、静かなときは緑、うるさくなると黄、とても騒がしいときは赤のLEDを点灯します。児童はどの授業、どの時間帯が一番騒がしいかをグラフにします。
  • 6. 触らないゴミ箱:ゴミ箱のふたに手で触れるのは衛生的ではありません。HC-SR04がふたに近づく手を検知し、SG90サーボがふたを開け、数秒後にまた閉じます。スマートゴミ箱をご覧ください。
  • 7. 冷蔵庫のドアの閉め忘れアラーム:開けっぱなしのドアはエネルギーをむだにし、食品を傷めます。ドアに貼った磁石と枠に付けたリードスイッチでドアが開いたことを検知し、30秒以上開いたままならブザーを鳴らします。
プロジェクト部品(ボードを除く)おおよその費用4006のテーマ
ナイトライトLDR、10 kΩの抵抗、LED 3個、220 Ωの抵抗1〜2ドルつくる責任つかう責任
手洗いタイマーHC-SR04、LED 4個、アクティブブザー2〜4ドル感染症と感染症対策
のどかわいたアラーム土壌水分センサー、LED 2個、ブザー2〜4ドル農業と畜産の技術
押しボタン式の信号LED 5個、押しボタン、ブザー、段ボールの模型1〜3ドルスマート交通システム
騒音メーターKY-038サウンドセンサー、LED 3個1〜3ドル健康な生活とスポーツ
触らないゴミ箱HC-SR04、SG90サーボ、箱4〜7ドルゼロ・ウェイストとリサイクル
ドアの閉め忘れアラームリードスイッチ、磁石、ブザー、電池ボックス2〜3ドルつくる責任つかう責任

費用は、2026年10月時点のネットの電子部品店での互換品の大まかな目安で、為替や在庫によって変わります。ボード、ブレッドボード、ジャンパーワイヤー、USBケーブルは含まれていません。学校にスターターキットがあれば、センサーだけで済むことも多いでしょう。キットにふつう何が入っているかはArduinoスターターキットで、回路は何かを買う前にTinkercadで試せます。

中学校向けのプロジェクトのアイデア9選(4006と2204-B)

中学校では、2〜3個のセンサーを組み合わせて、「土が乾いていて昼間ならポンプを動かす」のような判断をするプロジェクトになります。2204-Bに出る場合、プロジェクトは応募前に完成していて、測定を含んでいる必要があります。4006のフェアなら、目的、方法、期待される結果を短くはっきり書けば十分です。下のアイデアのほとんどはArduino Unoで作れます。データをスマートフォンに送りたいなら、同じ回路をESP32で作りましょう。

  • 8. スマート温室:温室の水やりや換気は、勘に頼って行われることがよくあります。DHT11で温度と湿度を、土壌水分センサーで土を、LDRで光を測り、土が乾くとリレーでミニ水ポンプを、暑くなるとファンを動かします。研究の問いは、センサーによる水やりとタイマーでの水やりで、同じ植物が使う水の量はどれだけ違うか、です。詳しくはスマート温室プロジェクトをご覧ください。
  • 9. 地震アラーム:最初の数秒で揺れに気づいて大きなアラームを鳴らせることは、特に眠っている人にとって価値があります。MPU-6050加速度センサーで静止時の加速度を記録し、設定したしきい値を何回か続けて超えたら、ブザーとLEDをオンにします。このシステムは地震を予知するのではなく揺れを検知するものなので、レポートにはそのことをはっきり書きましょう。コードは下にあります。
  • 10. 目の不自由な人のためのスマート白杖:白杖は地面の障害物は見つけられますが、腰や胸の高さの障害物は見逃します。白杖に付けたHC-SR04で前方の障害物までの距離を測り、近づくほど振動モーターが速く震え、すぐ近くではブザーも鳴ります。コードは下にあります。詳しくはスマート白杖プロジェクトをご覧ください。
  • 11. 節水メーター:シャワーや手洗い場で何リットル使っているかは、ふだんわかりません。蛇口に付けたYF-S201流量センサーは1リットルあたり約450パルスを出し、Arduinoがそれを数えて使った水の量をLCDに表示し、上限を超えたら知らせます。1週間測定して、メーターの導入前後の家族の水の使用量を比べます。
  • 12. 火災の早期警報システム:家や学校の火事は、最初の数分が重要です。炎センサーで炎の赤外線を、MQ-2で煙を、DHT11で温度の急上昇を見張り、2つのセンサーが反応したときだけアラームを鳴らします。センサー1つのシステムと比べて誤報が減ります。炎センサーをご覧ください。
  • 13. 学校の気象観測所:教科書の気候のデータと自分の学校のデータを比べると、新しい発見があります。DHT22で温度と湿度を、BMP280で気圧を、雨センサーで降雨を測り、値をディスプレイに表示して1時間ごとに記録します。気圧の低下と雨の関係を調べることもできます。BME280とBMP280をご覧ください。
  • 14. 教室の換気リマインダー:人の多い閉め切った教室では、空気がすぐによどみ、集中力が落ちます。MQ-135空気質センサーで空気中のガスの相対的な変化を追い、値が最初の値よりはっきり上がると黄のLED、さらに上がると赤のLEDを点灯して、窓を開けるよう知らせます。MQ-135をご覧ください。
  • 15. スマート駐車場(模型):空きスペースを探す車は、時間も燃料もむだにします。各区画の赤外線センサーで車を検知し、入口のディスプレイに空きの数を表示し、満車のときはサーボのゲートを閉じたままにします。模型で、空きを見つけるまでの平均時間を測れます。
  • 16. スマートな薬ケース:高齢者は薬を飲む時間を忘れたり、同じ薬を2回飲んだりすることがあります。RTC時計モジュールで薬の時間にブザーとLEDを鳴らし、ケースのふたに付けたリードスイッチで開けたかどうかを記録し、飲んでいなければ通知を繰り返します。RTC時計モジュールをご覧ください。
プロジェクト部品(ボードを除く)おおよその費用4006のテーマ
スマート温室DHT11、土壌水分センサー、LDR、リレー、ミニ水ポンプ、5 Vファン9〜15ドル農業と畜産の技術
地震アラームMPU-6050(またはSW-420)、ブザー、LED4〜8ドル自然災害と防災
スマート白杖HC-SR04、振動モーターモジュール、ブザー、電池とホルダー6〜10ドル誰もが暮らしやすい技術
節水メーターYF-S201流量センサー、I2C LCD、ブザー、ホースのアダプター10〜15ドルつくる責任つかう責任
火災の早期警報炎センサー、MQ-2、DHT11、ブザー、LED6〜9ドル自然災害と防災
気象観測所DHT22、BMP280、雨センサー、OLEDディスプレイ11〜18ドル地球温暖化と気候変動
換気リマインダーMQ-135、LED 3個、ブザー4〜7ドル健康な生活とスポーツ
スマート駐車場赤外線障害物センサー4個、SG90サーボ、I2C LCD8〜13ドル持続可能な都市とコミュニティ
スマートな薬ケースRTCモジュール、リードスイッチと磁石、ブザー、LED4〜8ドル医療機器の技術
HC-SR04
HC-SR04
MPU-6050
MPU-6050
MQ-135
MQ-135
DHT11
DHT11
SG90
SG90
DS18B20
DS18B20

高校向けの発展的なプロジェクトのアイデア9選(4006と2204-A)

高校のレベルでは、審査員は多面的な解決策を期待します。センサーからデータを集め、それをもとに判断し、利用者に知らせ、その効果が測定されているシステムです。2204-Aのプロジェクトガイドでも、植物に水や光を与えるだけのスマート農業の装置より、農家に情報を伝えて助言する統合されたシステムのほうが好まれています。このレベルでは、ESP32のWi-Fi、データの記録、2つの構成の比較が中心になるため、下の表の部品にはESP32ボードを含めています。ESP32を使ったことがなければ、ESP32とは?から始めましょう。

  • 17. 振動台での免震装置の実験:耐震建築に使われる基礎免震装置のしくみを学校で見せるのは難しいものです。免震装置ありとなしの2つの建物模型を、サーボかDCモーターで揺らす台の上に置き、MPU-6050を1つは基礎に、もう1つは屋上に取り付けて加速度を測ります。ESP32でデータを記録し、2つの模型で屋上と基礎の加速度の比を比べます。
  • 18. 天気予報を使ったスマートな水やり:雨の直前に庭に水をまくのは水のむだです。ESP32が静電容量式の土壌水分センサーを読み、インターネットから明日の降水確率を取得します。土が乾いていて雨が予想されなければ、リレーでポンプか電磁弁を動かします。タイマーで水やりした区画と1か月間の水の使用量を比べます。ESP32で天気APIをご覧ください。
  • 19. 高齢者の転倒検知器:一人暮らしの高齢者にとって、転倒後に助けが遅れると深刻な結果になることがあります。腰に付けたESP32とMPU-6050で、短い自由落下のあとに強い衝撃と静止が続くことを検知し、家族にTelegramのメッセージを送ります。テストは人ではなく、マットの上に落とすダミー人形で行います。ESP32でTelegramボットをご覧ください。
  • 20. 太陽追尾装置の効率の実験:固定した太陽光パネルは、1日のほとんどの時間、太陽にまっすぐ向いていません。4つのLDRの光の差をもとに、2つのサーボでパネルを太陽に向けます。同じ2枚目のパネルは固定したままにし、電流センサーで1日を通して両方の電力を測ります。得られたエネルギーからサーボが使ったエネルギーを引くと、追尾装置が本当に得なのかがわかります。太陽追尾装置をご覧ください。
  • 21. 水質モニタリングステーション:水道水、浄水器の水、ペットボトルの水、川の水の違いを測ると、環境への意識が高まります。TDSセンサーで溶けている固形物を、防水のDS18B20で温度を測り、TDSの値を温度で補正して記録します。TDSだけでは水が飲んでも安全かはわからないことを、レポートに書いておきましょう。TDSセンサーをご覧ください。
  • 22. ゴミを分別するリサイクルボックス:ゴミが混ざっているとリサイクルが難しくなります。入口の近接センサーで金属を検知し、カラーセンサーか、ESP32-CAMで学習させた画像分類モデルでプラスチックと紙を見分け、サーボでそれぞれを正しい区画に送ります。システムは正しく分別できた割合で評価します。
  • 23. 山火事センサーネットワーク:山火事はまだ小さいうちに見つけるほど、消すのがずっと簡単になります。太陽光パネルと電池で動く2〜3個のESP32のノードで温度、湿度、煙を測り、ESP-NOWで中央のボードにデータを送ります。中央のボードはしきい値を超えるとTelegramで警報を送ります。ノードは測定の合間にディープスリープに入ります。電池が何日もつかは電池寿命ツールで計算しましょう。
  • 24. 交通量に応じて変わる交差点:時間固定の信号機は、空いている道路でも車を待たせます。十字路の模型で、各車線の赤外線センサーが待っている車を数え、Arduinoが列の長さに応じて青の時間を決めます。同じ交通のシナリオで、固定式と適応式の平均待ち時間を比べます。
  • 25. 教室のCO2の増加の研究:換気の悪い教室ではCO2が増え、多くのガイドラインが室内を1000 ppm未満に保つようすすめています。ESP32に付けたNDIR方式のCO2センサーで、授業中ずっと1分ごとに濃度を記録し、窓を閉めたまま、休み時間に開ける、少し開けたままにする、などのシナリオを比べます。結果は、具体的な換気の提案として学校の管理職に届けます。
プロジェクト部品おおよその費用テーマ / 2204-Aの分野
振動台ESP32、MPU-6050 2個、サーボまたはDCモーターとドライバ、模型の材料15〜25ドル自然災害と防災 / 物理
スマートな水やりESP32、静電容量式土壌水分センサー2個、リレー、ポンプまたは12 V電磁弁18〜28ドル農業と畜産の技術 / 技術設計
転倒検知器ESP32、MPU-6050、LiPo電池、TP4056充電モジュール、ブザー13〜20ドルウェアラブル技術 / 技術設計
太陽追尾装置ESP32、小型太陽光パネル2枚、LDR 4個、サーボ2個、INA219電流センサー2個20〜30ドル再生可能エネルギー / 物理
水質ESP32、TDSセンサー、防水DS18B20、OLEDディスプレイ11〜20ドル環境と環境保護 / 化学
ゴミ分別ボックス近接センサー、TCS3200カラーセンサーまたはESP32-CAM、サーボ2個15〜25ドルゼロ・ウェイストとリサイクル / 技術設計
山火事ネットワークESP32 3個、DHT22、MQ-2、太陽光パネル、18650電池とTP405640〜60ドル森林と森林保護 / 技術設計
適応式の交差点Arduino、LED 12個、赤外線センサー8個、交差点の模型8〜15ドルスマート交通システム / ソフトウェア
CO2の研究ESP32、NDIR方式CO2センサー、DHT22、OLEDディスプレイ25〜45ドル健康な生活とスポーツ / 技術設計

サンプルコード1:スマート白杖(Arduino Uno)

下のコードはHC-SR04で距離を測り、障害物が近づくほど頻繁に知らせます。150 cmより遠いと無音、80〜150 cmではゆっくり振動、30〜80 cmでは速く振動してブザーも鳴らし、30 cm未満では連続で知らせます。音は約343 m/sで進み、行って戻ってくる必要があるので、マイクロ秒単位のエコーの時間を58で割るとセンチメートルになります。センサーについて詳しくはHC-SR04距離センサーをご覧ください。配線は次のとおりです。

部品Arduino Unoのピンメモ
HC-SR04のVCCとGND5VとGNDセンサーは5 Vで動く
HC-SR04のTRIGD910 µsのトリガーパルスを送る
HC-SR04のECHOD10エコーの長さだけHIGHになる
振動モーターモジュールのIND6(PWM)モジュールには駆動用のトランジスタが載っている
アクティブブザー(+)D8マイナスの足はGNDへ
むき出しの振動モーターをArduinoのピンに直接つながないでください。このモーターは約60〜100 mAを流すことがありますが、ピンの安全な上限は約20 mAです。既製のモジュールを使わない場合は、NPNトランジスタ(1 kΩのベース抵抗とBC337か2N2222)でモーターを駆動し、ダイオード(1N4148)をモーターに逆向きに並列でつなぎます。トランジスタの選び方はトランジスタツールを、詳しくはトランジスタとは?をご覧ください。
C++ (Arduino IDE)
1const int TRIG = 9;     // HC-SR04 tetik pini / trigger pin
2const int ECHO = 10;    // HC-SR04 yankı pini / echo pin
3const int MOTOR = 6;    // titreşim motoru modülü (PWM) / vibration motor module (PWM)
4const int BUZZER = 8;   // aktif buzzer / active buzzer
5
6long mesafeOlc() {
7  digitalWrite(TRIG, LOW);
8  delayMicroseconds(2);
9  digitalWrite(TRIG, HIGH);       // 10 µs tetik darbesi / 10 µs trigger pulse
10  delayMicroseconds(10);
11  digitalWrite(TRIG, LOW);
12  unsigned long sure = pulseIn(ECHO, HIGH, 25000UL);  // en fazla ~4 m bekle / wait for up to ~4 m
13  if (sure == 0) return 999;      // yankı gelmedi: engel yok / no echo: no obstacle
14  return sure / 58;               // mikrosaniye -> cm / microseconds -> cm
15}
16
17void titret(int guc, bool ses, int bekle) {
18  analogWrite(MOTOR, guc);
19  digitalWrite(BUZZER, ses ? HIGH : LOW);
20  delay(60);                      // kısa titreşim / short pulse
21  analogWrite(MOTOR, 0);
22  digitalWrite(BUZZER, LOW);
23  delay(bekle);                   // titreşimler arası boşluk / gap between pulses
24}
25
26void setup() {
27  pinMode(TRIG, OUTPUT);
28  pinMode(ECHO, INPUT);
29  pinMode(MOTOR, OUTPUT);
30  pinMode(BUZZER, OUTPUT);
31  Serial.begin(9600);
32}
33
34void loop() {
35  long cm = mesafeOlc();
36  Serial.println(cm);             // Seri Çizici ile izle / watch it in the Serial Plotter
37
38  if (cm < 30) {                  // çok yakın: sürekli uyarı / very close: continuous alert
39    analogWrite(MOTOR, 255);
40    digitalWrite(BUZZER, HIGH);
41    delay(60);
42  } else if (cm < 80) {
43    titret(220, true, 120);       // yakın: sık titreşim ve ses / near: fast pulses and sound
44  } else if (cm < 150) {
45    titret(180, false, 400);      // orta: seyrek titreşim / medium: slow pulses
46  } else {
47    analogWrite(MOTOR, 0);        // engel yok / no obstacle
48    digitalWrite(BUZZER, LOW);
49    delay(60);
50  }
51}

サンプルコード2:MPU-6050で地震アラーム

MPU-6050モジュールは、VCCを5Vに、GNDをGNDに、SDAをA4に、SCLをA5につなぎます。ブザーはD8、LEDはD13です。起動時、コードは2秒間静止時の加速度を測って基準値を決めます(重力のため約1 g)。その後、10 msごとに加速度の大きさを計算し、基準値からのずれが5回続けて0.08 gを超えたらアラームを鳴らし、揺れが止まってからも5秒間鳴らし続けます。シリアルプロッタ(「ツール」>「シリアルプロッタ」)を115200ボーで開くと、揺れをグラフで見られます。このグラフはレポートの結果の章のよい証拠になります。本物の緊急地震速報のシステムは、破壊的なS波より先に届く速いP波をとらえて数秒を稼ぎます。一方、この装置は揺れの検知器なので、机をたたいても反応します。ESIK_GとART_ARDAを変えて誤報の回数を数えることで、研究になります。センサーについて詳しくはMPU-6050をご覧ください。

C++ (Arduino IDE)
1#include <Wire.h>
2
3const int MPU = 0x68;         // MPU-6050 I2C adresi (AD0 = GND) / I2C address (AD0 = GND)
4const int BUZZER = 8;
5const int LED = 13;
6const float ESIK_G = 0.08;    // alarm eşiği (g) / alarm threshold (g)
7const int ART_ARDA = 5;       // eşiği üst üste aşması gereken örnek / samples in a row over the threshold
8
9float taban = 1.0;            // sakin haldeki ivme, yaklaşık 1 g / acceleration at rest, about 1 g
10int sayac = 0;
11unsigned long sonAlarm = 0;
12
13int16_t oku16() {
14  uint8_t yuksek = Wire.read();
15  uint8_t dusuk = Wire.read();
16  return (int16_t)(((uint16_t)yuksek << 8) | dusuk);
17}
18
19float ivmeOku() {
20  Wire.beginTransmission(MPU);
21  Wire.write(0x3B);             // ACCEL_XOUT_H yazmacından başla / start at ACCEL_XOUT_H
22  Wire.endTransmission(false);
23  Wire.requestFrom(MPU, 6);
24  float x = oku16() / 16384.0;  // ±2 g aralığında 16384 = 1 g / at ±2 g, 16384 = 1 g
25  float y = oku16() / 16384.0;
26  float z = oku16() / 16384.0;
27  return sqrt(x * x + y * y + z * z);
28}
29
30void setup() {
31  Serial.begin(115200);
32  pinMode(BUZZER, OUTPUT);
33  pinMode(LED, OUTPUT);
34  Wire.begin();
35  Wire.beginTransmission(MPU);
36  Wire.write(0x6B);             // PWR_MGMT_1: sensörü uykudan uyandır / wake the sensor up
37  Wire.write(0);
38  Wire.endTransmission();
39  delay(100);
40
41  float toplam = 0;             // 2 saniyelik kalibrasyon, sensöre dokunma / 2 s calibration, don't touch it
42  for (int i = 0; i < 200; i++) {
43    toplam += ivmeOku();
44    delay(10);
45  }
46  taban = toplam / 200;
47}
48
49void loop() {
50  float fark = fabs(ivmeOku() - taban);   // sarsıntı = tabandan sapma / shaking = deviation from rest
51  if (fark > ESIK_G) {
52    if (sayac < ART_ARDA) sayac++;
53  } else {
54    sayac = 0;
55  }
56  if (sayac >= ART_ARDA) sonAlarm = millis();
57
58  bool alarm = (sonAlarm != 0) && (millis() - sonAlarm < 5000);  // 5 s daha çal / keep sounding for 5 s
59  digitalWrite(BUZZER, alarm ? HIGH : LOW);
60  digitalWrite(LED, alarm ? HIGH : LOW);
61
62  Serial.print("fark:");        // Seri Çizici etiketleri / Serial Plotter labels
63  Serial.print(fark, 3);
64  Serial.print(",esik:");
65  Serial.println(ESIK_G, 3);
66  delay(10);                    // saniyede yaklaşık 100 örnek / about 100 samples per second
67}

ESP32とRaspberry Pi Picoでデータを集める

結果の章にとって最も価値があるのは、定期的に記録したデータです。下のESP32のコードは、換気プロジェクトのMQ-135を30秒ごとに読み、最新の120件を保存します。同じWi-Fiネットワークのスマートフォンかパソコンでボードのアドレス(IP)を開くと最新の値が見られ、「CSV indir / download」リンクでデータをExcelに取り込めます。MQ-135モジュールは5 Vで動き、アナログ出力は5 Vに達することがありますが、ESP32のピンは3.3 Vまでしか耐えられないので、AOは分圧回路を通してGPIO 34につなぎます。AOとGPIO 34の間に10 kΩ、GPIO 34とGNDの間に20 kΩです(5 V × 20/30 ≈ 3.3 V)。値はppmではなく相対的な値です。メーカーは初めて使う前にセンサーを24時間以上予熱するようすすめています。また、毎回の測定の前にも数分ウォームアップさせましょう。

C++ (Arduino IDE)
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
5const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
6const int SENSOR = 34;               // MQ-135 AO, gerilim bölücü üzerinden / MQ-135 AO through a divider
7const int N = 120;                   // saklanan ölçüm sayısı / number of readings kept
8const unsigned long ARALIK = 30000;  // 30 saniyede bir ölç / measure every 30 s
9
10WebServer server(80);
11int deger[N];
12unsigned long saniye[N];
13unsigned long olcumSayisi = 0;
14unsigned long sonOlcum = 0;
15
16void olcumAl() {
17  int k = olcumSayisi % N;           // dolunca en eskinin üzerine yaz / overwrite the oldest when full
18  deger[k] = analogRead(SENSOR);     // 0–4095
19  saniye[k] = millis() / 1000;
20  olcumSayisi++;
21}
22
23void anaSayfa() {
24  String s = "<meta charset='utf-8'><meta name='viewport' content='width=device-width'>";
25  s += "<h1>Sınıf hava kalitesi</h1><p>Son değer / last value: ";
26  s += String(olcumSayisi ? deger[(olcumSayisi - 1) % N] : 0);
27  s += "</p><p>Ölçüm sayısı / readings: ";
28  s += String(olcumSayisi);
29  s += "</p><a href='/veri.csv'>CSV indir / download</a>";
30  server.send(200, "text/html", s);
31}
32
33void csvGonder() {
34  String s = "saniye,deger\n";
35  unsigned long ilk = (olcumSayisi > N) ? olcumSayisi - N : 0;
36  for (unsigned long i = ilk; i < olcumSayisi; i++) {
37    int k = i % N;
38    s += String(saniye[k]) + "," + String(deger[k]) + "\n";
39  }
40  server.send(200, "text/csv", s);
41}
42
43void setup() {
44  Serial.begin(115200);
45  WiFi.begin(ssid, password);
46  while (WiFi.status() != WL_CONNECTED) delay(500);
47  Serial.println(WiFi.localIP());    // bu adresi tarayıcıda aç / open this address in a browser
48  server.on("/", anaSayfa);
49  server.on("/veri.csv", csvGonder);
50  server.begin();
51  olcumAl();
52  sonOlcum = millis();
53}
54
55void loop() {
56  server.handleClient();
57  if (millis() - sonOlcum >= ARALIK) {
58    sonOlcum = millis();
59    olcumAl();
60  }
61}

Raspberry Pi Picoなら、土の水分や温室の温度など、Wi-Fiのいらない長期の測定がもっと簡単です。下のMicroPythonのコードは、GP26の土壌水分センサーを1分に1回読み、値をPico自体のメモリにあるveri.csvファイルに追記します。出力が3.3 Vを超えないよう、センサーはPicoの3V3ピンから給電します。ファイルをmain.pyとして保存すれば、Picoはパソコンなしで電池やACアダプターで測定を続けます。あとでThonnyのファイルパネルからveri.csvをパソコンにダウンロードします。初めてPicoを使うなら、Raspberry Pi Picoとは?をご覧ください。

MicroPython
1from machine import ADC, Pin
2import time, os
3
4sensor = ADC(26)               # GP26 = ADC0: toprak nem sensörü AO / soil moisture sensor AO
5led = Pin("LED", Pin.OUT)      # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
6ARALIK = 60                    # ölçümler arası saniye / seconds between readings
7DOSYA = "veri.csv"
8
9if DOSYA not in os.listdir():  # dosya yeniyse başlık satırını yaz / write the header for a new file
10    with open(DOSYA, "w") as f:
11        f.write("saniye,ham,nem_yuzde\n")
12
13baslangic = time.time()
14while True:
15    ham = sensor.read_u16()                 # 0–65535
16    nem = round(100 - ham * 100 / 65535)    # kuru toprakta değer yüksektir / dry soil reads high
17    sure = time.time() - baslangic
18    with open(DOSYA, "a") as f:             # her ölçümü sona ekle / append each reading
19        f.write("{},{},{}\n".format(sure, ham, nem))
20    print(sure, ham, nem)
21    led.toggle()                            # çalıştığını göster / show that it is running
22    time.sleep(ARALIK)

研究レポートの書き方

  1. プロジェクトのタイトル:最大15語で、何を誰のためにしたのかがわかるようにします。TÜBİTAKの公募要項では、タイトルやレポートでブランドを宣伝しないよう求められているので、ボードは「マイコンを使った」のような技術的な言葉で表します。
  2. 要旨:150〜250語で、目的、方法、おもな発見を数文でまとめ、そのあとにキーワードを最大5つ書きます。要旨はプロジェクトが終わってから最後に更新します。
  3. 目的と序論:課題を数字で定義し(たとえば1回のシャワーで使う平均の水の量)、似た研究を出典とともに要約します。自分の研究がどこが違うのかをはっきり書きます。
  4. 方法:回路図、フローチャート、各センサーの測定範囲と精度(たとえばDHT11なら0〜50 °Cと±2 °C)、実験を何回、どんな条件で繰り返したかを書きます。コード全体は付録に入れます。
  5. 作業計画:文献調査、部品の購入、試作、テスト、執筆を週や月ごとに分け、表で示します。
  6. 結果:測定値を解釈せずに表やグラフで示します。すべての図に番号とタイトルを付け、「図2に示すように」のように本文で触れます。
  7. 結論と考察:研究の問いに答え、結果を似た研究と比べ、センサーの精度や模型の縮尺などの限界について正直に書きます。
  8. 提言と参考文献:プロジェクトを発展させたい人への道すじを示し、参考文献をAPA形式で並べます。

4006の小プロジェクトの用紙はずっと短く、4006-Aでは目的が20〜50語、方法と期待される結果がそれぞれ50〜150語です。4006-Bでは「目的と重要性」、方法、期待される結果の各章がそれぞれ50〜150語です。小プロジェクトは類似度チェックを受けるので、ネットから文章をコピーすると応募が差し戻されます。白杖を目隠しした協力者でテストするなど、人からアンケートや測定値を集める場合は、署名入りの参加同意書と保護者の同意書を用意しましょう。トルコの公立校でのアンケートには、教育省の研究許可も必要です。

ポスターと展示の準備

  • 4006のポスター:4006-Aのガイドによると、ポスターは100×80 cmの3面構成です。左の面には課題または問い、要約、方法、中央の面の上部にはタイトル、プロジェクトの種類、分野、テーマ、チーム、その下に結果、右の面には結論、提言、参考文献を載せます。
  • 2204のポスター:タイトルの下に、要旨、序論、方法、結果、結論と考察、提言、参考文献を並べます。文字は離れていても読めるようにし、同じ結果を表とグラフの両方で繰り返さないようにしましょう。
  • 見た目の重み:回路図、試作品の写真、おもな結果のグラフを、最も目立つ3つの要素にします。長い段落ではなく、短い箇条書きを使いましょう。
  • 動く試作品:机の上で試作品を動かして見せましょう。ディスプレイのリアルタイムの値や、流れていくシリアルプロッタのグラフは、来場者の足を止めます。
  • 予備の計画:当日は線が外れたり、センサーが壊れたりすることがあります。予備のセンサー、ジャンパーワイヤー、USBケーブル、モバイルバッテリー、プロジェクトが動いている短い動画を持っていきましょう。
  • プロジェクト日誌:4006では、TÜBİTAKがすすめる「科学フェアのプロジェクト日誌」を進めながら記入し、フェアで見せましょう。試してうまくいかなかった方法も、審査員にとっては価値があります。

審査員の採点方法とよく聞かれる質問

2204の一次審査では、レポートが4つの項目で採点されます。地域と決勝の展示会では、口頭発表とプロジェクトの理解度が加わり、最も大きな配点になります。一次審査の得点の30%は地域の段階でも加算されます。口頭発表は最大10分で、チームの生徒は全員出席する必要があり、指導教員は発表や質疑の間に口をはさめません。2025年の採点表の配点は次のとおりです。

基準一次審査地域と決勝
課題の定義と研究の問い2015
方法2010
独創性と影響3015
結果と考察3020
発表とプロジェクトの理解度なし40
  • 「このプロジェクトの独創的な点は?」似た製品や研究を知っていることを示し、そのうえで違いを1文で言いましょう。安い、エネルギーが少ない、新しい利用者に役立つ、などです。
  • 「なぜこのセンサーを選び、精度はどのくらい?」測定範囲と精度を把握し、センサーを既知の基準(温度計、定規、計量カップ)と比べたキャリブレーションの表を見せましょう。
  • 「何回テストした?」1回の試行では何も証明できません。各実験を少なくとも3〜5回繰り返し、平均と値のばらつきを示しましょう。
  • 「この行は何をしている?」審査員はコードの一部について聞くことがあります。すべての行を説明できるくらい理解しておきましょう。ここでコメントが役に立ちます。
  • 「費用はいくら?実際の生活で使える?」価格付きの部品リストを用意し、量産でどう安くなるか、どんな限界があるかを説明しましょう。
  • 「次のステップは?」より精密なセンサー、実際の環境でのテスト、スマートフォンアプリなどの具体的な計画は、プロジェクトが本当に自分のものであることを示します。

よくある失敗

  • ネットのプロジェクトをコピーする:レポートは類似度チェックを受け、出典を示さずに他人の作品を発表すると失格になります。既存のプロジェクトから始めてもかまいませんが、変数を変え、その効果を測定し、出典を書く必要があります。
  • アイデアだけで応募する:2204は完成したプロジェクトだけを受け付け、アイデアや途中の作品は落とされます。応募の前に、試作品、測定、レポートを完成させておく必要があります。
  • 測定せずに「動いた」と言う:「LEDが点いた」は結果ではありません。反応までに何秒かかるか、何リットルの水を節約できるか、誤報が何回あるかを測りましょう。
  • 危険な実験:健康を危険にさらす実験があるとプロジェクトは失格になります。商用電源を扱ったり、本物の火を起こしたり、人で転倒をテストしたりしないでください。炎センサーは先生の監督のもとで小さな炎で、転倒検知器はダミー人形でテストします。
  • 分野の選び間違い:分野はプロジェクトの最終的な目的で選び、応募後は変更できません。センサーを使って植物の成長を調べるプロジェクトは生物学に、装置そのものを開発するプロジェクトは技術設計に向いています。
  • 電源を甘く見る:サーボやポンプが動き出すとArduinoが勝手にリセットするのは、展示会当日に最も多いトラブルです。モーターは別の電源から給電し、すべてのGNDをつなぎましょう。Arduinoの電源の取り方をご覧ください。
アイデアを選ぶときは、3つの質問を自分にしてみましょう。この課題を本当に抱えている人はいるか?結果を数値で測れるか?手持ちの時間と予算で完成できるか?3つとも「はい」なら、正しいアイデアが見つかっています。もっと多くのアイデアはArduinoのプロジェクトのアイデアをご覧ください。

科学フェアのプロジェクトは、Arduinoをおもちゃではなく、本物の課題を解決するために使うことを学ぶ一番の方法です。LDRのナイトライト、駐車センサー、炎とガスのアラーム、スマートな水やり、ESP32での温度記録など、これらのアイデアの多くの回路は、BlueGraysアプリに回路図とコード付きでステップごとに用意されていて、自分のプロジェクトのしっかりした出発点として使えます。

よくある質問

科学フェアに向いているArduinoのプロジェクトは?

よいプロジェクトは、回路が動くことを見せるだけでなく、本物の課題を解決し、何かを測定します。センサーとタイマーの水やりを比べるスマート温室、しきい値を変えてテストする地震アラーム、反応時間をテストするスマート白杖などのアイデアは作りやすく、分析できる本物のデータが得られます。

科学フェアのプロジェクトにArduinoを使ってもいいですか?

はい。Arduino、ESP32、Raspberry Pi Picoのボードは、技術や工学のプロジェクトで広く使われています。審査員が重視するのはボードそのものではなく、解決する課題と行った測定なので、ボードは技術的な言葉で説明し、方法と結果に重点を置きましょう。

小学生でもArduinoのプロジェクトはできますか?

はい、先生や保護者の手助けがあればできます。LDRのナイトライトや手洗いタイマーのような、センサー1つと出力1つの簡単なプロジェクトが最適で、mBlockのようなブロック型のツールを使えばプログラミングも楽になります。すべてUSBか電池で動かし、商用電源は決して使わないでください。

Arduinoのプロジェクトを科学の実験にするには?

アイデアを測定できる問いに変えましょう。何を変えるか(独立変数)、何を測るか(従属変数)、何と比べるか(対照)を決め、各テストを何回か繰り返し、平均を表やグラフで示します。

科学フェアの審査員はどんな質問をしますか?

審査員はふつう、プロジェクトの独創的な点、そのセンサーを選んだ理由と精度、テストの回数、コードの特定の行の働き、費用、次のステップなどを聞きます。きれいなポスターよりも、自分のデータとコードをよく理解していることのほうが大切です。

Arduinoの科学フェアのプロジェクトにはいくらかかりますか?

HC-SR04、LDR、土壌水分センサーなどのセンサーは安いので、初心者向けのプロジェクトの多くは、ボード以外の部品が数ドルで済みます。ESP32ボードを複数使ったり、電流センサーやNDIR方式のCO2センサーを使ったりする発展的なプロジェクトは25〜60ドルかかることがあるので、複数作る前に1台でテストしましょう。

全プロジェクトを見る
LDRで作る常夜灯
#12初級

LDRで作る常夜灯

暗くなると自動で点灯し、朝になると消灯する小さな常夜灯です。光センサーが部屋の明るさを測定し、Arduinoが十分に暗くなったらLEDを点灯させ、明るくなったら消灯させます。街灯が夕方になると自動で点灯する仕組みも理解できます。

4.8(102)
205
信号機
#3初級

信号機

毎日道路で見かける信号機の小さな模型です。赤が2秒点灯し、黄が一瞬点灯した後、緑が2秒点灯します。その後、再び黄を経て赤に戻り、この動作を繰り返します。3個のLEDを順番に点けたり消したりしながら、タイミングの組み立て方を学びます。

4.8(131)
397
DHT11で温度と湿度を測定
#55中級

DHT11で温度と湿度を測定

部屋の温度は何度で、空気は湿っているでしょうか、それとも乾燥しているでしょうか?DHT11センサーが温度と湿度を測定し、Arduinoが2行のLCDディスプレイに値を表示して、数秒ごとに更新します。センサーに異常があればエラーメッセージが表示されます。自分だけの小さな気象観測装置を作る第一歩です。

4.7(47)
73
スマート水やりステーション
#83上級
プレミアム

スマート水やりステーション

旅行中も植物が枯れないよう、自動で水やりをするシステムです。土壌水分センサーで土の湿り具合を測定し、乾燥するとArduinoが給水ポンプを数秒間動かして、青いライトを点灯させます。水分が適切なときは緑のライトが点灯します。土がひどく乾燥すると、赤いライトが点滅し、ブザーが鳴って知らせます。

5.0(42)
57
炎・ガスセンサーで警報
#52上級
プレミアム

炎・ガスセンサーで警報

ガスが漏れたり炎が出たりすると、すぐに知らせる小さな見張り役です。ガスセンサーは空気中のガスを、炎センサーは火の光を監視します。異常がないときは緑色のLEDが点灯し、どちらかが危険を検出すると、赤色のLEDの点滅とブザーの断続音で警報を出します。危険がなくなるまで警報は続きます。

4.8(52)
67
HC-SR04で作る駐車センサー
#28中級
プレミアム

HC-SR04で作る駐車センサー

車の駐車センサーを小さく再現します。物体が近づくほど、ビープ音の間隔が短くなります。距離センサーが前方の物体までの距離を測り、20センチメートルより遠ければ緑のLEDが点灯します。近づくと赤いLEDが点滅してブザーが鳴り、さらに近づくほど警告の間隔が短くなります。車が壁にぶつからずに駐車できる仕組みを、机の上で確かめられます。

4.8(64)
85
ESP32温度データロガー(DHT22 + DS1307 RTC + microSD + OLED)
#144上級
プレミアム

ESP32温度データロガー(DHT22 + DS1307 RTC + microSD + OLED)

ESP32で日時付きの温度・湿度記録システムを作ります!DHT22で1分ごとに温度と湿度を読み取り、DS1307 RTCから取得した日時とともにmicroSDカードへCSV形式で記録します。OLEDには最新の温度を大きな文字で表示し、湿度のパーセント値、日時、総記録数も表示します。SDカードの/temp_log.csvファイルはExcel、Google Sheets、Pythonのpandasで開いて分析できます。温室の監視、家や部屋の温度管理、実験室のデータ収集、食品の保管環境や養蜂箱の監視に適しています。

4.7(7)
12