Научные опыты с Arduino: запись данных, таблицы и графики
Опыты с Arduino на уроке: 3 готовые лабораторные с DS18B20, LDR и HC-SR04, код с выводом в CSV, плоттер, графики, план на 2 урока и шаблон отчёта.
Чтобы провести научные опыты с Arduino, достаточно шести шагов: сначала ученики формулируют измеримый вопрос и гипотезу, потом подключают к Arduino подходящий датчик; плата записывает каждое показание с отметкой времени в последовательный порт в виде «zaman_ms,deger» (время в мс, значение), кривая в реальном времени видна в плоттере, строки из монитора порта копируются в электронную таблицу как CSV-файл, по таблице строится график, а вывод пишется на основе сравнения графика с гипотезой. В отличие от ручных измерений с термометром и секундомером, Arduino собирает 60 точек за 10 минут через равные промежутки, не устаёт и не ошибается при снятии показаний. Ученикам остаётся интерпретировать данные, а не переписывать цифры.
В этой статье три готовых опыта для уроков естествознания, физики и биологии: кривая остывания горячей воды с DS18B20, зависимость освещённости от расстояния с LDR и движение по наклонной плоскости с HC-SR04 (плюс измерение скорости звука). Для каждого опыта есть вопрос, переменные, материалы, краткая схема подключения, компилируемый код, шаблон таблицы данных и ожидаемый результат. Дальше идут шаги для плоттера и переноса данных в таблицу, таблица погрешностей и калибровки, план урока 2 × 40 минут, короткий шаблон лабораторного отчёта и правила безопасности. Примеры построены на таком допущении: допустим, в классе 24 ученика, они работают в 6 группах по 4 человека, и у каждой группы есть Arduino Uno и компьютер. В подробности подключения каждого датчика здесь не углубляемся: по ходу текста есть ссылки на отдельное руководство по каждому датчику.
Научный опыт с Arduino за 6 шагов: от вопроса к выводу
- Вопрос и гипотеза: выбери измеримый вопрос («Горячая вода остывает быстрее в первые 5 минут или в следующие 5?») и попроси учеников записать гипотезу по шаблону «Если …, то …, потому что …». В гипотезе должно быть направление или число; «что-то изменится» не годится.
- Переменные: пусть ученики занесут в таблицу независимую переменную (то, что меняем: время, расстояние, наклон), зависимую переменную (то, что измеряет датчик: температура, свет, положение) и контролируемые переменные (количество воды, тот же фонарик, та же доска). Когда опыт не удаётся, причина обычно в переменной, которую не удержали постоянной.
- Датчик и код: подключи датчик и загрузи код. Код пишет каждую строку в виде «zaman_ms,deger»; первая строка — заголовок с названиями столбцов. Время плата отсчитывает собственным счётчиком millis(), так что секундомер не нужен.
- Просмотр в реальном времени: перед записью посмотри в плоттере короткий пробный прогон. Если кривая неожиданно скачет (отошёл провод, упала тень, касание рукой), исправь это сразу; заметить после измерения уже поздно.
- Данные и таблица: скопируй строки из монитора порта, сохрани их как файл .csv, импортируй в электронную таблицу и добавь перевод единиц (мс → с) и расчётные столбцы.
- График и вывод: построй точечную диаграмму XY, подпиши обе оси названием и единицей, сравни график с гипотезой и запиши вывод одним предложением, опираясь на данные: «Наша гипотеза подтвердилась (или не подтвердилась), потому что …».
Список материалов и краткая схема подключения
| Что нужно | На группу | На класс (6 групп) | Опыт |
|---|---|---|---|
| Arduino Uno + USB-кабель | 1 | 6 | Все |
| Компьютер (с установленной Arduino IDE) | 1 | 6 | Все |
| Макетная плата + 10 перемычек «папа–папа» | 1 комплект | 6 комплектов | Все |
| Водонепроницаемый зонд DS18B20 + резистор 4,7 kΩ | 1 + 1 | 6 + 6 | 1 Остывание |
| Термостойкая кружка (около 250 мл) + мерный стакан | 1 + 1 | 6 + 6 | 1 Остывание |
| Горячая вода (около 60 °C, раздаёт учитель) | 200 мл | 1,2 л + запас | 1 Остывание |
| LDR + резистор 10 kΩ | 1 + 1 | 6 + 6 | 2 Свет |
| Небольшой светодиодный фонарик или фонарик телефона + рулетка | 1 + 1 | 6 + 6 | 2 Свет |
| Датчик расстояния HC-SR04 | 1 | 6 | 3 Движение |
| Ровная доска 1–1,5 м, 2–3 книги, игрушечная машинка + картонка 10 × 10 см | 1 комплект | 6 комплектов | 3 Движение |
| Лабораторный термометр (для сравнения) | — | 1 | Калибровка |
| Опыт | Датчик | Подключение к Arduino Uno | Доп. детали и примечания |
|---|---|---|---|
| 1 Остывание | Зонд DS18B20 | Красный → 5V, чёрный → GND, жёлтый (DQ) → D2 | Резистор 4,7 kΩ между жёлтым проводом и 5V; библиотеки OneWire и DallasTemperature |
| 2 Свет | LDR | Одна ножка → 5V, другая ножка → A0 | Резистор 10 kΩ между A0 и GND (делитель напряжения); библиотека не нужна |
| 3 Движение и звук | HC-SR04 | VCC → 5V, GND → GND, Trig → D9, Echo → D10 | Доп. деталей нет; конус около 15° перед датчиком должен быть свободным |
Опыт 1: кривая остывания горячей воды (DS18B20)

Вопрос: остывает ли горячая вода каждую минуту на одну и ту же величину или остывание со временем замедляется? Пример гипотезы: «Пока разница температур воды и комнаты велика, вода остывает быстро, а по мере уменьшения разницы — медленнее». Независимая переменная — время, зависимая переменная — температура воды; контролируемые переменные — количество воды (200 мл), тип сосуда, его место на столе и температура в комнате. Группам можно дать и второй вопрос: есть ли разница между кружкой с крышкой и без неё или между стеклянным и бумажным стаканом? Тогда независимой переменной становится сосуд, две группы измеряют одновременно и сравнивают свои кривые. Подключение и установка библиотек описаны в руководстве по DS18B20. Если есть только DHT11, ни в коем случае не опускай его в воду: безопасный аналог опыта с DHT11 — минуту погреть датчик в ладони, положить на стол и измерять, как он остывает на воздухе (руководство по DHT11).
1// Deney 1: Sıcak suyun soğuma eğrisi / Experiment 1: cooling curve of hot water
2// Kütüphaneler: OneWire + DallasTemperature / Libraries: OneWire + DallasTemperature
3#include <OneWire.h>
4#include <DallasTemperature.h>
5
6const int ONE_WIRE_PIN = 2; // DS18B20 veri (DQ) pini / data (DQ) pin
7const unsigned long INTERVAL_MS = 10000; // 10 saniyede bir ölçüm / one reading every 10 s
8const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
9
10OneWire oneWire(ONE_WIRE_PIN);
11DallasTemperature sensors(&oneWire);
12unsigned long startMs = 0;
13unsigned long lastMs = 0;
14
15void setup() {
16 Serial.begin(9600);
17 sensors.begin();
18 if (!PLOTTER_MODE) {
19 Serial.println("zaman_ms,sicaklik_C"); // CSV başlık satırı / CSV header line
20 }
21 startMs = millis();
22 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
23}
24
25void loop() {
26 unsigned long now = millis();
27 if (now - lastMs < INTERVAL_MS) {
28 return; // daha zamanı gelmedi / not time yet
29 }
30 lastMs += INTERVAL_MS; // kaymayan zamanlama / drift-free timing
31
32 sensors.requestTemperatures(); // ölçümü başlat (~750 ms) / start conversion (~750 ms)
33 float tempC = sensors.getTempCByIndex(0);
34 if (tempC == DEVICE_DISCONNECTED_C) { // sensör yanıt vermedi / sensor did not respond
35 return;
36 }
37
38 if (PLOTTER_MODE) {
39 Serial.print("sicaklik_C:");
40 Serial.println(tempC, 2);
41 } else {
42 Serial.print(now - startMs); // deney başından beri ms / ms since start
43 Serial.print(",");
44 Serial.println(tempC, 2);
45 }
46}| Время (с) | Температура воды T (°C) | Температура в комнате T_комн (°C) | Разница ΔT = T − T_комн (°C) | Оставшаяся доля ΔT / ΔT₀ |
|---|---|---|---|---|
| 0 | … | … | … | 1,00 |
| 60 | … | … | … | … |
| 120 | … | … | … | … |
| 300 | … | … | … | … |
| 600 | … | … | … | … |
| 900 | … | … | … | … |
| 1200 | … | … | … | … |
Код выводит одну строку каждые 10 секунд, так что 20-минутный прогон даёт 120 строк. Время берётся из счётчика платы millis(), и поскольку к lastMs каждый раз прибавляется ровно 10 000, показания не «уплывают»; приём разобран в статье о millis() и delay(). Если в начале кода поставить PLOTTER_MODE в true, столбец времени исчезнет и плоттер будет рисовать только температуру. Шаблон выше — это сводная таблица для отчёта, а полные данные остаются в CSV-файле; в начале измерь тем же датчиком температуру воздуха в комнате и запиши её. Ожидаемый результат: кривая получается не прямой, а постепенно выполаживающейся: в первые минуты температура падает быстро, потом падение замедляется. Это закон охлаждения Ньютона: скорость остывания пропорциональна разности температур тела и окружающей среды. Те, кто посчитает последний столбец, увидят, что за равные промежутки времени разница уменьшается примерно в одно и то же число раз: допустим, за первые 8 минут разница уменьшилась вдвое, тогда за следующие 8 минут она снова уменьшится вдвое. Кружка с крышкой остывает медленнее, потому что меньше тепла уходит с испарением. На биологии тот же опыт с маленьким и большим сосудом выводит на обсуждение того, почему мелкие животные теряют тепло быстрее.
Опыт 2: освещённость и расстояние (LDR)

Вопрос: как уменьшается освещённость по мере удаления от источника света: если расстояние удвоить, свет станет слабее в два раза или в четыре? Пример гипотезы: «При удвоении расстояния освещённость уменьшается в четыре раза». Независимая переменная — расстояние от фонарика до LDR (10, 15, 20, 30, 40 и 50 см), зависимая переменная — значение, прочитанное с A0; контролируемые переменные — тот же фонарик, те же батарейки, фонарик направлен точно на LDR, внешнее освещение. Проводи опыт с закрытыми жалюзи и, если можно, с приглушённым светом в классе: при сильной внешней засветке вклад фонарика на больших расстояниях теряется. В этой схеме показание растёт с усилением света; идея делителя напряжения объяснена в руководстве по LDR. Передвигай фонарик вдоль рулетки, на каждом расстоянии жди 5 секунд, пока значение не установится, и записывай в таблицу три подряд идущих значения из монитора порта. В самом начале сделай одно измерение с выключенным фонариком: это фоновое значение комнаты. Если значение на самом большом расстоянии очень близко к фону, не включай это расстояние в график.
1// Deney 2: Işık şiddeti ve mesafe / Experiment 2: light intensity and distance
2// Bağlantı: 5V - LDR - A0 - 10 kΩ - GND / Wiring: 5V - LDR - A0 - 10 kΩ - GND
3const int LDR_PIN = A0; // bölücünün orta noktası / divider midpoint
4const unsigned long INTERVAL_MS = 500; // yarım saniyede bir satır / one line every 0.5 s
5const int SAMPLES = 16; // ortalama için örnek sayısı / samples per average
6const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11int readAverage() {
12 long sum = 0;
13 for (int i = 0; i < SAMPLES; i++) {
14 sum += analogRead(LDR_PIN); // 0 (karanlık) ... 1023 (aydınlık) / dark ... bright
15 delay(2);
16 }
17 return (int)(sum / SAMPLES); // gürültüyü azaltır / reduces noise
18}
19
20void setup() {
21 Serial.begin(9600);
22 if (!PLOTTER_MODE) {
23 Serial.println("zaman_ms,ldr_ham"); // CSV başlık satırı / CSV header line
24 }
25 startMs = millis();
26 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
27}
28
29void loop() {
30 unsigned long now = millis();
31 if (now - lastMs < INTERVAL_MS) {
32 return;
33 }
34 lastMs += INTERVAL_MS;
35
36 int raw = readAverage();
37 if (PLOTTER_MODE) {
38 Serial.print("ldr_ham:");
39 Serial.println(raw);
40 } else {
41 Serial.print(now - startMs); // deney başından beri ms / ms since start
42 Serial.print(",");
43 Serial.println(raw);
44 }
45}| Расстояние d (см) | 1 / d² (1/см²) | Показание 1 | Показание 2 | Показание 3 | Среднее (сырое) | Сопротивление LDR (Ω) |
|---|---|---|---|---|---|---|
| Фонарик выключен | — | … | … | … | … | … |
| 10 | 0,0100 | … | … | … | … | … |
| 15 | 0,0044 | … | … | … | … | … |
| 20 | 0,0025 | … | … | … | … | … |
| 30 | 0,0011 | … | … | … | … | … |
| 40 | 0,0006 | … | … | … | … | … |
| 50 | 0,0004 | … | … | … | … | … |
Каждые полсекунды код выводит среднее из 16 измерений, и это сглаживает мелкий разброс отдельных значений analogRead. Чтобы посчитать сопротивление LDR, при сыром среднем в столбце F введи в столбец G формулу =10000*(1023-F3)/F3 и протяни её вниз (для постоянного резистора 10 kΩ и LDR, подключённого к 5V). Ожидаемый результат: с ростом расстояния показание падает: вблизи быстро, дальше медленно. Однако между 10 и 20 см сырое значение не уменьшается в четыре раза, потому что сырое число — это не освещённость, а мера напряжения делителя. Чтобы увидеть закон обратных квадратов, построй зависимость сопротивления LDR от расстояния на графике с логарифмическими осями: точки лягут примерно на прямую. Освещённость обратно пропорциональна квадрату расстояния, а сопротивление LDR примерно обратно пропорционально освещённости в степени γ; поэтому наклон прямой получается не 2, а 2 × γ. У распространённых LDR γ обычно от 0,5 до 0,9, так что жди наклон от 1 до 1,8. На уроке физики в старших классах это хороший повод поговорить о вопросе: «Как поведение самого измерительного прибора влияет на результат?»
Опыт 3: движение по наклонной плоскости и скорость звука (HC-SR04)

Вопрос: скатывается ли машинка, отпущенная на наклонной плоскости, с постоянной скоростью или всё время разгоняется? Как меняется ускорение при увеличении наклона? Пример гипотезы: «За равные промежутки времени машинка проходит всё большее расстояние, значит, она разгоняется; при более крутом наклоне она разгоняется быстрее». Независимая переменная — время (а во втором заходе — наклон: 1, 2 и 3 книги), зависимая переменная — расстояние от машинки до датчика; контролируемые переменные — машинка, точка старта и доска. Установка: подними один конец ровной доски длиной 1–1,5 м на книги и поставь HC-SR04 у нижнего конца, направив его вверх по доске. Приклей к задней части игрушечной машинки картонку 10 × 10 см: от маленьких округлых предметов датчик не получает надёжного эха, а плоская картонка даёт сильное эхо. Держи машинку примерно в 100 см от датчика, отпусти её и поставь перед датчиком книгу, чтобы машинка в него не врезалась. Как работает датчик и какая у него дальность, описано в руководстве по HC-SR04.
1// Deney 3: Eğik düzlemde hareket ve ses hızı / Experiment 3: motion on a ramp and speed of sound
2const int TRIG_PIN = 9; // tetik / trigger
3const int ECHO_PIN = 10; // yankı / echo
4const unsigned long INTERVAL_MS = 60; // ölçümler arası en az ~60 ms / at least ~60 ms between pings
5const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
6const bool RAW_ECHO_US = false; // true: ses hızı deneyi için yankı süresi (µs) / echo time for speed of sound
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11void setup() {
12 pinMode(TRIG_PIN, OUTPUT);
13 pinMode(ECHO_PIN, INPUT);
14 digitalWrite(TRIG_PIN, LOW);
15 Serial.begin(9600);
16 if (!PLOTTER_MODE) {
17 Serial.println(RAW_ECHO_US ? "zaman_ms,yanki_us" : "zaman_ms,mesafe_cm"); // CSV başlığı / CSV header
18 }
19 startMs = millis();
20 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
21}
22
23void loop() {
24 unsigned long now = millis();
25 if (now - lastMs < INTERVAL_MS) {
26 return;
27 }
28 lastMs += INTERVAL_MS;
29
30 digitalWrite(TRIG_PIN, LOW);
31 delayMicroseconds(2);
32 digitalWrite(TRIG_PIN, HIGH); // 10 µs tetik darbesi / 10 µs trigger pulse
33 delayMicroseconds(10);
34 digitalWrite(TRIG_PIN, LOW);
35
36 unsigned long echoUs = pulseIn(ECHO_PIN, HIGH, 25000UL); // en fazla 25 ms (~4 m) / max 25 ms (~4 m)
37 if (echoUs == 0) { // yankı yok, satırı atla / no echo, skip the line
38 return;
39 }
40 float distanceCm = echoUs * 0.0343 / 2.0; // 343 m/s, gidiş-dönüş / round trip
41
42 if (PLOTTER_MODE) {
43 Serial.print("mesafe_cm:");
44 Serial.println(distanceCm, 1);
45 } else {
46 Serial.print(now - startMs); // deney başından beri ms / ms since start
47 Serial.print(",");
48 if (RAW_ECHO_US) {
49 Serial.println(echoUs);
50 } else {
51 Serial.println(distanceCm, 1);
52 }
53 }
54}| Столбец | Заголовок | Содержимое или формула | Что показывает |
|---|---|---|---|
| A | zaman_ms | Из CSV | Время с начала прогона |
| B | mesafe_cm | Из CSV | Расстояние от машинки до датчика |
| C | zaman_s | =A2/1000 | Горизонтальная ось графика |
| D | yol_cm | =B$2-B2 | Путь, пройденный от точки старта |
| E | hiz_cm_s | =(D7-D2)/(C7-C2), начиная с E7 | Средняя скорость примерно за 0,3 с |
| F | kosul | 1, 2 или 3 книги | К какому прогону относится строка |
Код выводит строку каждые 60 мс, примерно 16 строк в секунду; такой промежуток между измерениями рекомендуют, чтобы эхо-сигналы HC-SR04 не смешивались. Если эхо не вернулось (предмет вне диапазона или стоит под углом), строка пропускается. Скорость считай не по двум соседним строкам, а по строкам, отстоящим на 5 рядов: при интервале 60 мс даже разброс измерения в 1–2 мм заставляет скорость сильно скакать. Ожидаемый результат: график «положение — время» не прямая, а кривая, которая становится всё круче (парабола), а график «скорость — время» — примерно прямая: машинка разгоняется с постоянным ускорением, и наклон этой прямой даёт ускорение. На наклонной плоскости без трения ускорение было бы g × sin θ: доска 1,5 м, поднятая на 10 см, даёт sin θ ≈ 0,067, то есть примерно 65 см/с². Измеренное значение ниже этого из-за трения и вращения колёс, и в отчёте это идёт как источник погрешности. Вариант со скоростью звука: поставь RAW_ECHO_US в true, держи плоскую картонку перед датчиком на расстоянии 20, 40, 60, 80 и 100 см и усредни время эха на каждом расстоянии. На графике, где по горизонтальной оси путь туда и обратно (2 × d), а по вертикальной — время, наклон равен 1/v; v при комнатной температуре получается около 340 м/с и растёт с температурой (примерно v ≈ 331 + 0,6 × T м/с). Метод наклона к тому же автоматически убирает постоянную задержку внутри датчика.
Плоттер и перенос данных в таблицу
- После загрузки кода открой Инструменты › Монитор порта (Tools › Serial Monitor) и выставь скорость 9600 бод, как в коде. Кнопку отметок времени держи выключенной: если она включена, в начало каждой строки добавляется время компьютера и CSV ломается.
- Перед измерением очисти вывод и нажми на плате кнопку RESET. Тогда время начнётся с 0, а первой строкой будет заголовок вроде zaman_ms,sicaklik_C.
- Для графика в реальном времени поставь в коде PLOTTER_MODE в true, загрузи код заново и открой Инструменты › Плоттер по последовательному соединению (Tools › Serial Plotter). Плоттер не сохраняет данные, а только показывает их; поэтому используй его для пробного прогона, а для записи верни PLOTTER_MODE в false.
- Когда измерение закончено, выдели мышью строки в мониторе порта от строки заголовка до последней и скопируй их через Ctrl+C (на macOS Cmd+C). Вставь их в простой текстовый редактор и сохрани с именем, в котором есть группа, опыт и дата, например group2-cooling-1104.csv.
- Импортируй файл в электронную таблицу: в Excel через Данные › Из текстового/CSV-файла (Data › From Text/CSV), в Google Таблицах через Файл › Импорт (File › Import), а в LibreOffice Calc файл достаточно просто открыть. В качестве разделителя выбери запятую.
- Следи за десятичным разделителем: Arduino пишет числа с точкой, например 23.50, а таблицы со многими европейскими региональными настройками (и с русскими тоже) ждут запятую. При необходимости выбери при импорте язык «Английский (США)» или замени точки на запятые; иначе 23.50 прочитается как текст или дата и график окажется пустым.
- Добавь расчётные столбцы (мс → с, разница, доля, скорость) и построй точечную диаграмму XY. Линейная диаграмма считает горизонтальную ось равномерными категориями, поэтому там, где строки пропущены, ось времени искажается.
У хорошего графика опыта четыре признака: независимая переменная по горизонтальной оси, зависимая по вертикальной, название и единица на обеих осях («Время (с)», «Температура (°C)») и заголовок, который говорит, что показано («Остывание 200 мл воды в открытой кружке»). Если показать два условия на одном графике разными цветами (с крышкой и без, 1 и 3 книги), сравнение видно с первого взгляда. Прежде чем ученики посмотрят на свой график, попроси их ответить на вопрос «Если наша гипотеза верна, как должен выглядеть график?» примерным наброском на бумаге; положить настоящий график рядом с наброском — самый простой путь к выводу. Вывод всегда должен опираться на число: «За первые 5 минут вода остыла на … °C, а за следующие 5 — на … °C». Как зафиксировать масштаб и подписать линии в плоттере, объясняется в руководстве по монитору порта. Если не хочется копировать длинные прогоны вручную, можно записывать данные прямо в файл с помощью Python, а для измерений без компьютера — писать CSV на модуль SD-карты.
Погрешности измерений и калибровка
| Тема | Что важно знать | Что делать на уроке |
|---|---|---|
| Точность DS18B20 | ±0,5 °C в диапазоне от −10 до +85 °C; при 12 битах одно измерение занимает около 750 мс. | Перед измерением опусти все зонды в один сосуд с ледяной водой; запиши, насколько каждый отличается от 0 °C, и внеси поправку в таблицу. |
| Точность DHT11 | ±2 °C в диапазоне от 0 до 50 °C; не больше 1 измерения в секунду, медленный отклик. | Ни в коем случае не опускать в воду, использовать только для опытов на воздухе; не опрашивать чаще раза в секунду. |
| LDR | Нелинейный, разный от экземпляра к экземпляру; после изменения освещения значению нужно время, чтобы установиться. | Весь опыт работать с одним и тем же LDR, на каждом расстоянии ждать 5 с и интерпретировать результат только в пределах данных своей группы. |
| HC-SR04 | 2–400 см, разрешение около 3 мм; скорость звука меняется примерно на 0,6 м/с на 1 °C; конус около 15°. | Проверить рулеткой на 20 и 50 см; цель должна быть плоской и смотреть на датчик, а на пути не должно быть ничего лишнего. |
| Частота измерений | Слишком редкие измерения упускают форму кривой, слишком частые дают шум и неоправданно большие файлы. | Выбирать по длительности процесса: остывание — 10 с, свет — 0,5 с, движение — 60 мс. Стремиться хотя бы к 20–30 точкам на весь процесс. |
| Повторные измерения | Одно измерение может оказаться случайностью; повторы показывают, насколько надёжен результат. | Каждое условие измерять не меньше 3 раз; указывать среднее и разницу между наибольшим и наименьшим значением (разброс). |
| Время | При ручном секундомере время реакции человека составляет около 0,2 с. | Отсчёт времени оставить счётчику платы millis(); ручной замер использовать только для проверки. |
План урока: 2 × 40 минут
Этот план подходит для всех трёх опытов. В первый раз советуем дать всем группам опыт 1: его проще всего собрать, а пока измерение идёт само, группы успевают подготовить таблицы. Когда класс освоится, 6 групп можно разделить на три станции по две группы; если каждый опыт делают две группы, они ещё и сравнивают свои результаты. Если загрузить код в платы до урока, на первом уроке экономится 8–10 минут. Карточки ролей и расстановку станций для больших классов смотри в статье о больших классах, а материалы и расстановку столов — в руководстве по школьной лаборатории.
| Урок и минуты | Учитель | Группы | Результат |
|---|---|---|---|
| Урок 1, 0–5 | Открывает тему бытовым наблюдением: «Почему чай сильнее всего остывает в первые минуты?» | Записывают вопрос в тетрадь, делятся первыми догадками. | Вопрос опыта |
| Урок 1, 5–12 | Объясняет шаблон гипотезы и виды переменных, распределяет роли: экспериментатор, хронометраж и проверка, данные, доклад. | Пишут гипотезу и таблицу переменных. | Гипотеза и таблица переменных |
| Урок 1, 12–20 | Показывает таблицу подключения; код можно загрузить заранее. | Собирают схему, видят в мониторе порта строку заголовка и первые значения. | Рабочая схема |
| Урок 1, 20–35 | Обходит группы, проверяет контролируемые переменные. | Проводят измерения: 15 минут на остывание, 7 условий × 3 повтора на свет, 3 наклона × 3 прогона на движение. | Сырые данные |
| Урок 1, 35–40 | Напоминает правило именования файлов. | Копируют данные, сохраняют их как .csv, кладут в общую папку. | CSV-файл |
| Урок 2, 0–10 | Показывает на доске десятичный разделитель и шаги импорта. | Импортируют CSV в электронную таблицу, добавляют расчётные столбцы. | Чистая таблица |
| Урок 2, 10–22 | Напоминает правило: название оси, единица и заголовок. | Строят диаграмму XY, сравнивают её с наброском по гипотезе. | График |
| Урок 2, 22–32 | Спрашивает, какие строки таблицы погрешностей относятся к опыту группы. | Пишут вывод и источники погрешности. | Абзац с выводом и погрешностями |
| Урок 2, 32–37 | Проводит «экскурсию по графикам». | За 1 минуту объясняют свой график соседней группе, отвечают на один вопрос. | Отзыв одноклассников |
| Урок 2, 37–40 | Задаёт два вопроса на выходе из списка ниже. | Пишут короткие ответы на листке. | Вопросы на выходе |
- Какие переменные в опыте были независимой и зависимой, а какая оставалась постоянной?
- В какой части графика изменение идёт быстрее всего и как это видно по графику?
- Подтвердилась ли гипотеза? На какие два числа опирается этот вывод?
- Как изменился бы график, если бы измерения шли каждые 60 секунд, а не каждые 10?
- Что стало главным источником погрешности и что стоит изменить, если повторить опыт?
Оценивание: короткий шаблон лабораторного отчёта
- Название и вопрос: название опыта, участники группы, дата и вопрос опыта одним предложением.
- Гипотеза: по шаблону «Если …, то …, потому что …», ровно в том виде, в каком она записана до измерений; потом её не исправляют.
- Переменные: независимая, зависимая и не меньше двух контролируемых.
- Материалы и метод: датчик, краткая схема подключения, интервал измерений и число повторов; так понятно, чтобы другая группа могла повторить опыт, и не больше 6 шагов.
- Данные: сводная таблица по шаблону плюс имя CSV-файла.
- График: диаграмма XY с названиями осей, единицами и заголовком.
- Вывод: подтвердилась ли гипотеза? 2–3 предложения с опорой на одно-два числа.
- Источники погрешности и улучшения: не меньше двух источников погрешности и что стоит изменить при повторе опыта. Для выставления оценок можно приспособить к этим разделам критерии из статьи о критериях оценивания уроков Arduino.
Готовые проекты с датчиками, «Разбор кода» и утилиты в приложении
В BlueGrays для каждого датчика из этих опытов есть готовые проекты со схемой, списком деталей и кодом; по ним ученики могут познакомиться с датчиком до опыта. Бесплатные: Измерение освещённости с LDR, Измерение расстояния HC-SR04 (вывод в порт) и Температура и влажность с DHT11; для ESP32 бесплатны также Измерение освещённости модулем LDR на ESP32, Ультразвуковой датчик расстояния HC-SR04 на ESP32 и Температура и влажность с DHT22 на ESP32 (с LCD-дисплеем). В бесплатных проектах открыты и блоки, и раздел Разбор кода: ученики шаг за шагом читают, что делает код, и самостоятельно вносят небольшое изменение в задании Твоя очередь; как использовать этот раздел на уроке, рассказано в статье о «Разборе кода». Чтобы посчитать напряжение делителя в опыте с LDR, подойдёт утилита делителя напряжения (Premium), а проверить резисторы помогут бесплатные утилита цветового кода резисторов и калькулятор закона Ома. Если хочется открыть всему классу Premium-проекты с датчиками, например Измерение температуры с NTC и LCD-дисплеем 2x16, который выводит температуру на LCD, или Регистратор температуры на ESP32 (DHT22 + DS1307 RTC + microSD + OLED), который сохраняет данные на карту microSD, для этого есть разовые пакеты для педагогов: ученики получают Premium без привязки карты.
Безопасность: горячая вода, электричество и вода рядом
- Горячая вода: не используй кипяток; около 60 °C достаточно, и кривая всё равно получается чёткой. Воду пусть раздаёт учитель, а кружки стоят в середине стола, где их не зацепит кабель. Во время измерения кружку не держат и не двигают.
- Вода и электричество: в воду опускается только металлический наконечник водонепроницаемого зонда. Arduino, макетную плату и компьютер держи не ближе 30 см от воды, лучше на отдельном подносе. Если на стол пролилась вода, сначала отключи USB-кабель, потом вытирай.
- Только питание по USB: все эти опыты работают от USB-порта компьютера; никакой прибор с питанием от сети (чайник, лампа, обогреватель) к схеме с Arduino никогда не подключается.
- Подключение: собирай и меняй соединения только при отключённом USB. Если деталь нагревается или чувствуется запах, сразу отключи USB.
- Свет: не направляй фонарик никому в глаза; смотреть вблизи на яркий светодиодный фонарик неприятно для глаз.
- Наклонная плоскость: доска не должна выступать за край стола, машинку должна останавливать книга до удара о датчик, а книги под доской нужно положить так, чтобы они не скользили.
Один датчик, чистый вывод в CSV и хорошо поставленный вопрос превращают школьный опыт из повторения результата из учебника в настоящее измерительное исследование: ученики строят собственные графики, обсуждают собственные источники погрешности и защищают вывод своими числами. Если до опыта хочется познакомиться с датчиками и шаг за шагом собрать схемы на телефоне, начни с бесплатных проектов с LDR, HC-SR04 и DHT11 в приложении BlueGrays.
Частые вопросы
Какие научные опыты можно провести с Arduino?
Опытом может стать любая величина, которую измеряет датчик: температура (остывание, нагрев, теплоизоляция), свет (расстояние, цветные светофильтры), расстояние и движение (наклонная плоскость, маятник), влажность почвы (опыты с растениями), звук и давление. Для начала проще всего собрать и нагляднее всего по результатам три опыта: кривая остывания, «свет и расстояние» и наклонная плоскость.
Как перенести данные Arduino в Excel?
Проще всего, чтобы код писал данные в последовательный порт строками через запятую, например «zaman_ms,deger». Строки копируются из монитора порта, сохраняются как файл .csv и импортируются в Excel через «Данные › Из текстового/CSV-файла». Если Excel использует запятую как десятичный разделитель (как при русских региональных настройках), при импорте выбери язык «Английский (США)», иначе числа прочитаются как текст.
Сохраняет ли плоттер Arduino данные?
Нет, плоттер по последовательному соединению только показывает график в реальном времени и не записывает данные в файл. Чтобы сохранить данные, нужно скопировать строки CSV из монитора порта, записать их в файл скриптом на Python или использовать модуль SD-карты.
Что выбрать для научного опыта: DS18B20 или DHT11?
Если измеряется вода или другая жидкость, бери DS18B20 в версии с водонепроницаемым зондом: точность ±0,5 °C и наконечник, который можно опускать в воду, хорошо подходят для опытов с остыванием. DHT11 измеряет температуру и влажность воздуха с точностью ±2 °C, в воду его опускать нельзя, и откликается он медленно; используй его только для опытов на воздухе.
Как измерить скорость звука с помощью Arduino?
Выведи время эха HC-SR04 в микросекундах и ставь плоскую картонку перед датчиком на разных расстояниях. Построй зависимость пути туда и обратно (2 × расстояние) от времени эха: наклон прямой даёт скорость звука, при комнатной температуре она получается около 340 м/с.
Сколько уроков занимает научный опыт с Arduino?
На один опыт хватает двух уроков по 40 минут: первый для гипотезы, сборки и измерений, второй для таблицы, графика, вывода и отчёта. Если загрузить код в платы до урока, на первом уроке остаётся больше времени на измерения.
Что собрать после прочтения
Все проекты
Измерение освещённости с LDR
Хочешь увидеть яркость своей комнаты в виде числа? LDR — маленькая деталь, реагирующая на свет, — измеряет освещённость вокруг, а Arduino каждые полсекунды выводит значение на экран компьютера. Закрой

Измерение расстояния HC-SR04 (вывод в порт)
Датчик HC-SR04 работает совсем как летучая мышь, которая находит дорогу в темноте: он посылает звук, которого ты не слышишь, слушает эхо и измеряет, насколько далеко предмет перед ним. Arduino каждые

Температура и влажность с DHT11
Насколько тепло в твоей комнате и влажный ли воздух или сухой? Датчик DHT11 измеряет температуру и влажность, а Arduino выводит значения на двухстрочный LCD-экран и обновляет их каждые пару секунд. Ес

Измерение освещённости модулем LDR на ESP32
Наблюдение в мониторе порта в реальном времени за сырым значением ADC модуля LDR и относительным процентом освещённости, вычисленным по опорным значениям темноты и света. Этот процент — не измерение в люксах. Учит логике калибровки модуля. Идеально выполнить его перед проектом 10, потому что он нужен для определения порога.

Ультразвуковой датчик расстояния HC-SR04 на ESP32
Ультразвуковой датчик HC-SR04 вычисляет расстояние по времени, за которое испущенная им звуковая волна отражается от предмета и возвращается (Time of Flight). В этом проекте ESP32 подаёт импульс 10 микросекунд на пин TRIG датчика, а длительность эха читает с пина ECHO через pulseIn(). Вычисленное расстояние в сантиметрах выводится на I2C LCD 16x2. HC-SR04 работает от 5V, поэтому на пине ECHO нужен делитель напряжения.

Температура и влажность с DHT22 на ESP32 (с LCD-дисплеем)
Этот проект измеряет температуру и влажность воздуха датчиком DHT22 и в реальном времени показывает данные на I2C LCD 16x2. Данные читаются с датчика по однопроводному протоколу через библиотеку Adafruit DHT. Проект служит основой для IoT-метеостанций, умного дома или систем мониторинга среды в теплицах. Связь с DHT22 идёт через пин GPIO 4 у ESP32.

Измерение температуры с NTC и LCD-дисплеем 2x16
Измерь температуру вокруг с помощью датчика, похожего на крошечную бусинку. Эта деталь, NTC, при нагреве легче пропускает электричество; Arduino читает это изменение, по формуле переводит его в градус

Регистратор температуры на ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
Собери на ESP32 регистратор температуры с отметками времени! Каждую минуту читай температуру и влажность с DHT22, бери реальное время из DS1307 RTC и записывай всё на карту microSD в формате CSV. OLED показывает текущую температуру (крупным шрифтом), влажность в процентах, время и счётчик записей. Файл /temp_log.csv на SD-карте открывается в Excel, Google Sheets или Python pandas — идеально для теплиц, комнат, лабораторий и хранения продуктов.
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

