Arduino ile Fen Deneyi: Sensörle Veri Toplama, Tablo ve Grafik
Arduino ile fen deneyi: DS18B20, LDR ve HC-SR04 ile 3 hazır deney, CSV veren kod, Serial Plotter, tablo ve grafik, 2 × 40 dakikalık akış ve rapor şablonu.
Arduino ile fen deneyi yaptırmanın yolu altı adımdır: öğrenciler önce ölçülebilir bir soru ve hipotez yazar, sonra uygun sensörü Arduino'ya bağlar; kart her ölçümü zaman damgasıyla "zaman_ms,deger" biçiminde seri porta yazar, eğri Serial Plotter'da canlı izlenir, seri ekrandaki satırlar kopyalanıp CSV dosyası olarak tabloya aktarılır, tablodan grafik çizilir ve grafik hipotezle karşılaştırılarak sonuç yazılır. Termometre ve kronometreyle elle yapılan ölçümün aksine Arduino 10 dakikada 60 noktayı eşit aralıklarla, yorulmadan ve okuma hatası yapmadan toplar. Böylece öğrencinin işi değer yazmak değil, veriyi yorumlamak olur.
Bu yazıda fen, fizik ve biyoloji derslerine uyan üç hazır deney var: DS18B20 ile sıcak suyun soğuma eğrisi, LDR ile ışık şiddetinin mesafeyle değişimi ve HC-SR04 ile eğik düzlemde hareket (ek olarak ses hızı ölçümü). Her deneyin sorusu, değişkenleri, malzemesi, bağlantı özeti, derlenebilir kodu, veri tablosu şablonu ve beklenen sonucu hazır. Ardından Serial Plotter ve tabloya aktarma adımları, ölçüm hataları ve kalibrasyon tablosu, 2 × 40 dakikalık ders akışı, kısa bir laboratuvar raporu şablonu ve güvenlik notları geliyor. Örnekler şu varsayımla kuruldu: diyelim ki 24 kişilik bir sınıfın var, öğrenciler 4'er kişilik 6 grupta çalışıyor ve her grubun bir Arduino Uno'su ile bir bilgisayarı var. Sensörlerin bağlantı ayrıntısına burada girmiyoruz; her sensörün kendi rehberine yeri geldikçe link verdik.
Arduino ile fen deneyi 6 adımda: sorudan sonuca
- Soru ve hipotez: Ölçülebilir bir soru seç ("Sıcak su ilk 5 dakikada mı, sonraki 5 dakikada mı daha hızlı soğur?") ve hipotezi "Eğer … ise … olur, çünkü …" kalıbıyla yazdır. Hipotez bir yön ya da sayı içermeli; "değişir" demek yetmez.
- Değişkenler: Bağımsız değişkeni (senin değiştirdiğin: zaman, mesafe, eğim), bağımlı değişkeni (sensörün ölçtüğü: sıcaklık, ışık, konum) ve sabit tutulan değişkenleri (su miktarı, aynı fener, aynı tahta) tabloya yazdır. Bir deney bozulduğunda sebep çoğu zaman sabit tutulmayan bir değişkendir.
- Sensör ve kod: Sensörü bağla, kodu yükle. Kod her satırı "zaman_ms,deger" biçiminde yazar; ilk satır sütun adlarını veren başlık satırıdır. Zamanı kart kendi millis() sayacıyla tutar, kronometreye gerek kalmaz.
- Canlı izleme: Kayıt turundan önce kısa bir deneme turunu Serial Plotter'da izle. Eğri beklenmedik biçimde sıçrıyorsa (gevşek kablo, gölge, el teması) sorunu o anda düzelt; ölçüm bittikten sonra fark etmek geç olur.
- Veri ve tablo: Seri ekrandaki satırları kopyalayıp .csv dosyası olarak kaydet, tablo programına aktar, birim dönüşümünü (ms → s) ve hesap sütunlarını ekle.
- Grafik ve sonuç: XY (dağılım) grafiği çiz, eksenlere ad ve birim yaz, grafiği hipotezle karşılaştır ve sonucu verilere dayanan bir cümleyle yaz: "Hipotezimiz doğrulandı ya da doğrulanmadı, çünkü …".
Malzeme listesi ve bağlantı özeti
| Malzeme | Grup başına | Sınıf toplamı (6 grup) | Hangi deney |
|---|---|---|---|
| Arduino Uno + USB kablosu | 1 | 6 | Hepsi |
| Bilgisayar (Arduino IDE kurulu) | 1 | 6 | Hepsi |
| Breadboard + 10 erkek-erkek jumper kablo | 1 takım | 6 takım | Hepsi |
| Su geçirmez DS18B20 prob + 4,7 kΩ direnç | 1 + 1 | 6 + 6 | 1 Soğuma |
| Isıya dayanıklı kupa (yaklaşık 250 mL) + ölçü kabı | 1 + 1 | 6 + 6 | 1 Soğuma |
| Sıcak su (yaklaşık 60 °C, öğretmen dağıtır) | 200 mL | 1,2 L + yedek | 1 Soğuma |
| LDR + 10 kΩ direnç | 1 + 1 | 6 + 6 | 2 Işık |
| Küçük LED el feneri ya da telefon feneri + şerit metre | 1 + 1 | 6 + 6 | 2 Işık |
| HC-SR04 mesafe sensörü | 1 | 6 | 3 Hareket |
| 1–1,5 m düz tahta, 2–3 kitap, oyuncak araba + 10 × 10 cm karton | 1 takım | 6 takım | 3 Hareket |
| Laboratuvar termometresi (karşılaştırma için) | — | 1 | Kalibrasyon |
| Deney | Sensör | Arduino Uno bağlantısı | Ek parça ve not |
|---|---|---|---|
| 1 Soğuma | DS18B20 prob | Kırmızı → 5V, siyah → GND, sarı (DQ) → D2 | Sarı kablo ile 5V arasına 4,7 kΩ direnç; kütüphaneler OneWire ve DallasTemperature |
| 2 Işık | LDR | Bir bacak → 5V, diğer bacak → A0 | A0 ile GND arasına 10 kΩ direnç (gerilim bölücü); kütüphane gerekmez |
| 3 Hareket ve ses | HC-SR04 | VCC → 5V, GND → GND, Trig → D9, Echo → D10 | Ek parça yok; sensörün önündeki yaklaşık 15°'lik koni boş kalmalı |
Deney 1: Sıcak suyun soğuma eğrisi (DS18B20)

Soru: Sıcak su her dakika aynı miktarda mı soğur, yoksa soğuma giderek yavaşlar mı? Hipotez örneği: "Su ile oda arasındaki sıcaklık farkı büyükken soğuma hızlıdır, fark azaldıkça yavaşlar." Bağımsız değişken zaman, bağımlı değişken suyun sıcaklığı; sabit tutulanlar su miktarı (200 mL), kap türü, kabın masadaki yeri ve oda sıcaklığı. Gruplara ikinci bir soru da verebilirsin: kapaklı ve kapaksız kupa ya da cam ve karton bardak arasında fark var mı? O zaman bağımsız değişken kap türü olur, iki grup aynı anda ölçüm yapar ve eğrilerini karşılaştırır. Bağlantı ve kütüphane kurulumu için DS18B20 rehberine bakabilirsin. Elinde yalnız DHT11 varsa onu asla suya sokma: DHT11 ile yapılabilecek güvenli eşdeğer deney, sensörü bir dakika avucunda ısıtıp masaya bırakmak ve havada soğumasını ölçmektir (DHT11 rehberi).
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}| Zaman (s) | Su sıcaklığı T (°C) | Oda sıcaklığı T_oda (°C) | Fark ΔT = T − T_oda (°C) | Kalan oran ΔT / ΔT₀ |
|---|---|---|---|---|
| 0 | … | … | … | 1,00 |
| 60 | … | … | … | … |
| 120 | … | … | … | … |
| 300 | … | … | … | … |
| 600 | … | … | … | … |
| 900 | … | … | … | … |
| 1200 | … | … | … | … |
Kod 10 saniyede bir satır yazar; 20 dakikalık ölçüm 120 satır eder. Zaman kartın millis() sayacından gelir ve lastMs değişkenine her seferinde tam 10 000 eklendiği için ölçümler zamanla kaymaz; bu tekniğin ayrıntısı millis() ve delay() yazısında. Kodun başındaki PLOTTER_MODE değerini true yaparsan zaman sütunu kalkar ve Serial Plotter yalnız sıcaklığı çizer. Yukarıdaki şablon rapora girecek özet tablodur, tam veri CSV dosyasında kalır; oda sıcaklığını deneyin başında aynı sensörle havada ölçüp yaz. Beklenen sonuç: Eğri düz bir çizgi değil, giderek yatıklaşan bir eğridir: ilk dakikalarda sıcaklık hızlı düşer, sonra düşüş yavaşlar. Bunun nedeni Newton'un soğuma yasasıdır: soğuma hızı, cisim ile ortam arasındaki sıcaklık farkıyla orantılıdır. Son sütunu hesaplayan öğrenciler farkın eşit sürelerde yaklaşık aynı oranda azaldığını görür; diyelim ki fark ilk 8 dakikada yarıya indi, sonraki 8 dakikada da yine yarıya iner. Kapaklı kupa daha yavaş soğur, çünkü buharlaşmayla kaybedilen ısı azalır. Biyoloji dersinde aynı deney, küçük ve büyük kaplarla tekrarlanarak küçük hayvanların neden daha hızlı ısı kaybettiğini tartışmaya bağlanabilir.
Deney 2: Işık şiddeti ve mesafe (LDR)

Soru: Bir ışık kaynağından uzaklaştıkça ışık şiddeti nasıl azalır; mesafe iki katına çıkınca ışık yarıya mı, dörtte bire mi düşer? Hipotez örneği: "Mesafe iki katına çıkınca ışık şiddeti dörtte bire iner." Bağımsız değişken fenerin LDR'ye uzaklığı (10, 15, 20, 30, 40 ve 50 cm), bağımlı değişken A0'dan okunan değer; sabit tutulanlar aynı fener, aynı pil, fenerin LDR'ye dik bakması ve ortam ışığı. Deneyi perdeleri kapalı, mümkünse ışıkları kısılmış bir sınıfta yap; ortam ışığı güçlüyse uzak mesafelerde fenerin katkısı kaybolur. Bu bağlantıda ışık arttıkça okunan değer büyür; gerilim bölücünün mantığı LDR rehberinde. Feneri şerit metre boyunca kaydır, her mesafede değer oturana kadar 5 saniye bekle ve seri ekrandan üç ardışık değeri tabloya yaz. Deneyin başında fener kapalıyken bir ölçüm al: bu, ortamın arka plan değeridir. En uzak mesafedeki değer arka plana çok yakınsa o mesafeyi grafiğe katma.
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}| Mesafe d (cm) | 1 / d² (1/cm²) | Ölçüm 1 | Ölçüm 2 | Ölçüm 3 | Ortalama ham | LDR direnci (Ω) |
|---|---|---|---|---|---|---|
| Fener kapalı | — | … | … | … | … | … |
| 10 | 0,0100 | … | … | … | … | … |
| 15 | 0,0044 | … | … | … | … | … |
| 20 | 0,0025 | … | … | … | … | … |
| 30 | 0,0011 | … | … | … | … | … |
| 40 | 0,0006 | … | … | … | … | … |
| 50 | 0,0004 | … | … | … | … | … |
Kod yarım saniyede bir, 16 ölçümün ortalamasını yazar; tek bir analogRead değerindeki küçük titreşimler böylece söner. LDR direncini hesaplamak için ortalama ham değer F sütunundaysa G sütununa =10000*(1023-F3)/F3 formülünü yaz ve aşağı çek (10 kΩ sabit direnç ve 5V'a bağlı LDR için). Beklenen sonuç: Mesafe arttıkça okunan değer düşer ve düşüş yakında hızlı, uzakta yavaştır. Fakat ham değer 10 cm'den 20 cm'ye geçince dörtte bire inmez, çünkü ham sayı ışık şiddeti değil, bölücü geriliminin karşılığıdır. Ters kare yasasını görmek için mesafeyi ve LDR direncini iki ekseni de logaritmik bir grafiğe koy: noktalar yaklaşık bir doğru üzerinde dizilir. Işık şiddeti mesafenin karesiyle ters orantılıdır, LDR direnci de ışık şiddetinin yaklaşık γ'ncı kuvvetiyle ters orantılıdır; bu yüzden doğrunun eğimi 2 değil, 2 × γ çıkar. Yaygın LDR'lerde γ çoğunlukla 0,5 ile 0,9 arasındadır, yani eğim 1 ile 1,8 arasında beklenir. Lise fiziğinde bu, "ölçme aletinin kendi davranışı sonucu nasıl etkiler?" sorusunu tartışmak için iyi bir fırsattır.
Deney 3: Eğik düzlemde hareket ve ses hızı (HC-SR04)

Soru: Eğik düzlemden bırakılan bir araba sabit hızla mı iner, yoksa giderek hızlanır mı? Eğim artınca hızlanma nasıl değişir? Hipotez örneği: "Araba eşit sürelerde giderek daha fazla yol alır, yani hızlanır; eğim artınca hızlanma da artar." Bağımsız değişken zaman (ikinci turda eğim: 1, 2 ve 3 kitap), bağımlı değişken arabanın sensöre uzaklığı; sabit tutulanlar araba, bırakma noktası ve tahta. Kurulum: 1–1,5 m'lik düz bir tahtanın bir ucunu kitaplarla yükselt, HC-SR04'ü alçak uca, tahtaya bakacak biçimde yerleştir. Oyuncak arabanın arkasına 10 × 10 cm'lik bir karton yapıştır; sensör küçük ve yuvarlak cisimlerden güvenilir yankı alamaz, düz bir karton ise güçlü bir yankı verir. Arabayı sensörden yaklaşık 100 cm uzakta tutup bırak ve sensörün önüne bir kitap koyarak arabanın sensöre çarpmasını önle. Sensörün çalışma ilkesi ve menzili HC-SR04 rehberinde.
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}| Sütun | Başlık | İçerik ya da formül | Ne gösterir? |
|---|---|---|---|
| A | zaman_ms | CSV'den gelir | Deney başından beri geçen süre |
| B | mesafe_cm | CSV'den gelir | Arabanın sensöre uzaklığı |
| C | zaman_s | =A2/1000 | Grafikte yatay eksen |
| D | yol_cm | =B$2-B2 | Bırakma noktasından itibaren alınan yol |
| E | hiz_cm_s | =(D7-D2)/(C7-C2), E7'den başlar | Yaklaşık 0,3 s'lik aralıktaki ortalama hız |
| F | kosul | 1, 2 ya da 3 kitap | Satırın hangi denemeye ait olduğu |
Kod 60 ms'de bir, yani saniyede yaklaşık 16 satır yazar; HC-SR04'ün yankıları birbirine karışmasın diye ölçümler arasında bu kadar boşluk bırakılması önerilir. Yankı gelmezse (cisim menzil dışında ya da eğik duruyorsa) o satır atlanır. Hızı iki ardışık satırdan değil, 5 satır arayla hesapla; 60 ms'lik aralıkta 1–2 mm'lik ölçüm titreşimi bile hızı çok oynatır. Beklenen sonuç: Konum-zaman grafiği bir doğru değil, giderek dikleşen bir eğridir (parabol); hız-zaman grafiği ise yaklaşık bir doğrudur, yani araba sabit ivmeyle hızlanır ve doğrunun eğimi ivmeyi verir. Sürtünmesiz bir eğik düzlemde ivme g × sin θ olurdu: 1,5 m'lik tahta 10 cm yükseltilince sin θ ≈ 0,067, ivme yaklaşık 65 cm/s². Ölçülen değerin bundan küçük çıkması sürtünme ve tekerleklerin dönmesi yüzündendir ve rapora hata kaynağı olarak yazılır. Ses hızı çeşitlemesi: RAW_ECHO_US değerini true yap, sensörün karşısına düz bir kartonu 20, 40, 60, 80 ve 100 cm'ye koy ve her mesafede yankı süresinin ortalamasını al. Yatay eksende gidiş-dönüş yolu (2 × d), dikey eksende süre olan grafiğin eğimi 1/v'dir; v oda sıcaklığında 340 m/s civarında çıkar ve sıcaklıkla artar (yaklaşık v ≈ 331 + 0,6 × T m/s). Eğim yöntemi, sensörün içindeki sabit gecikmeyi de kendiliğinden dışarıda bırakır.
Serial Plotter ve veriyi tabloya aktarma
- Kodu yükledikten sonra Araçlar > Seri Port Ekranı'nı aç ve hızı koddaki gibi 9600 baud seç. Zaman damgası düğmesi kapalı olsun; açıksa her satırın başına bilgisayar saati eklenir ve CSV bozulur.
- Ölçüme başlamadan önce çıktıyı temizle ve kartın RESET düğmesine bas. Böylece zaman 0'dan başlar ve ilk satır zaman_ms,sicaklik_C gibi bir başlık satırı olur.
- Canlı grafik için kodda PLOTTER_MODE değerini true yapıp yeniden yükle ve Araçlar > Seri Çizici'yi aç. Seri Çizici veriyi kaydetmez, yalnız gösterir; bu yüzden onu deneme turunda kullan, kayıt turunda PLOTTER_MODE false olsun.
- Ölçüm bitince seri ekrandaki satırları fareyle başlık satırından son satıra kadar seç ve Ctrl+C (macOS'ta Cmd+C) ile kopyala. Düz metin düzenleyiciye yapıştır ve grup2-sogume-0411.csv gibi grup, deney ve tarih içeren bir adla kaydet.
- Tablo programında dosyayı içe aktar: Excel'de Veri > Metinden/CSV'den, Google E-Tablolar'da Dosya > İçe aktar, LibreOffice Calc'ta dosyayı doğrudan açarak. Ayırıcı olarak virgülü seç.
- Ondalık ayırıcıya dikkat et: Arduino 23.50 gibi noktalı yazar, Türkçe ayarlı tablo programları ise virgül bekler. İçe aktarırken yerel ayarı İngilizce (ABD) seç ya da noktaları virgülle değiştir; aksi halde 23.50 metin ya da tarih olarak okunur ve grafik boş çıkar.
- Hesap sütunlarını ekle (ms → s, fark, oran, hız) ve grafiği XY dağılım grafiği olarak çiz. Çizgi grafiği yatay ekseni eşit aralıklı kategori sayar; atlanan satırlarda zaman ekseni bozulur.
İyi bir deney grafiği dört şeyden belli olur: yatay eksende bağımsız değişken, dikey eksende bağımlı değişken, iki eksende de ad ve birim ("Zaman (s)", "Sıcaklık (°C)") ve ne gösterdiğini söyleyen bir başlık ("200 mL suyun kapaksız kupada soğuması"). Aynı grafikte iki koşulu (kapaklı ve kapaksız, 1 ve 3 kitap) farklı renklerle göstermek karşılaştırmayı tek bakışta yaptırır. Öğrencilerden grafiğe bakmadan önce "Hipotezimiz doğruysa grafik nasıl görünmeli?" sorusuna kâğıtta kaba bir eskizle cevap vermelerini iste; gerçek grafikle eskizi yan yana koymak, sonuç cümlesini yazmanın en kolay yoludur. Sonuç cümlesi her zaman bir sayıya dayanmalı: "Su ilk 5 dakikada … °C, sonraki 5 dakikada … °C soğudu." Seri Çizici'de ölçeği sabitleme ve etiket kuralları Serial Monitor rehberinde anlatılıyor. Uzun ölçümleri elle kopyalamak istemezsen veriyi Python ile doğrudan dosyaya yazdırabilir, bilgisayarsız ölçüm için de SD kart modülüyle CSV kaydı alabilirsin.
Ölçüm hataları ve kalibrasyon
| Konu | Bilmen gereken | Sınıfta ne yapmalı? |
|---|---|---|
| DS18B20 doğruluğu | −10 ile +85 °C arasında ±0,5 °C; 12 bitte bir ölçüm yaklaşık 750 ms sürer. | Ölçümden önce tüm probları aynı buzlu su kabına koy; 0 °C'den farklarını not et ve tabloda düzelt. |
| DHT11 doğruluğu | 0–50 °C arasında ±2 °C; saniyede en fazla 1 ölçüm, tepkisi yavaş. | Suya sokma, yalnız hava deneylerinde kullan; ölçüm aralığını 1 saniyenin altına indirme. |
| LDR | Doğrusal değil, parçadan parçaya farklı; ışık değişince değerin oturması zaman alır. | Deney boyunca aynı LDR'yi kullan, her mesafede 5 s bekle, sonucu yalnız grubun kendi verisi içinde yorumla. |
| HC-SR04 | 2–400 cm, çözünürlük yaklaşık 3 mm; ses hızı her 1 °C'de yaklaşık 0,6 m/s değişir; yaklaşık 15°'lik koni. | Şerit metreyle 20 ve 50 cm'de kontrol et; hedef düz ve sensöre dik olsun, yolda başka cisim kalmasın. |
| Örnekleme sıklığı | Çok seyrek ölçüm eğrinin şeklini kaçırır, çok sık ölçüm gürültü ve gereksiz büyük dosya üretir. | Olayın süresine göre seç: soğuma 10 s, ışık 0,5 s, hareket 60 ms. Olay boyunca en az 20–30 nokta hedefle. |
| Tekrar ölçüm | Tek ölçüm şans eseri olabilir; tekrar, sonucun ne kadar güvenilir olduğunu gösterir. | Her koşulu en az 3 kez ölç; ortalamayı ve en büyük ile en küçük değer arasındaki farkı (yayılım) rapora yaz. |
| Zaman | Elle tutulan kronometrede insan tepki süresi yaklaşık 0,2 s'dir. | Zamanı kartın millis() sayacına bırak; elle zaman tutmayı yalnız kontrol için kullan. |
Ders akışı: 2 × 40 dakika
Aşağıdaki akış üç deneyin hepsine uyar. İlk sefer için bütün gruplara Deney 1'i vermeni öneririz: kurulumu en basit olanıdır ve ölçüm kendi kendine akarken gruplar tablolarını hazırlayabilir. Sınıf alıştıktan sonra 6 grubu ikişerli üç istasyona bölebilirsin; her deneyi iki grup yapınca sonuçları birbiriyle karşılaştırmak da mümkün olur. Kodları dersten önce kartlara yüklemek ilk dersin 8–10 dakikasını kazandırır. Kalabalık sınıflarda rol kartları ve istasyon düzeni için kalabalık sınıf yazısına, malzeme ve masa düzeni için okul laboratuvarı rehberine bakabilirsin.
| Ders ve dakika | Öğretmen | Gruplar | Çıktı |
|---|---|---|---|
| 1. ders 0–5 | Günlük bir gözlemle soruyu açar: "Çay neden ilk dakikalarda hızlı soğur?" | Soruyu deftere yazar, ilk tahminleri söyler. | Deney sorusu |
| 1. ders 5–12 | Hipotez kalıbını ve değişken türlerini anlatır, rolleri dağıtır: deneyci, zaman ve kontrol, veri sorumlusu, raporcu. | Hipotezi ve değişken tablosunu yazar. | Hipotez ve değişken tablosu |
| 1. ders 12–20 | Bağlantı tablosunu gösterir; kodu önceden yüklemiş olabilir. | Devreyi kurar, seri ekranda başlık satırını ve ilk değerleri görür. | Çalışan devre |
| 1. ders 20–35 | Grupları dolaşır, sabit tutulan değişkenleri kontrol eder. | Ölçümü yapar: soğumada 15 dakika, ışıkta 7 koşul × 3 tekrar, harekette 3 eğim × 3 deneme. | Ham veri |
| 1. ders 35–40 | Dosya adlandırma kuralını hatırlatır. | Veriyi kopyalayıp .csv olarak kaydeder, ortak klasöre koyar. | CSV dosyası |
| 2. ders 0–10 | Ondalık ayırıcı ve içe aktarma adımlarını tahtada gösterir. | CSV'yi tabloya aktarır, hesap sütunlarını ekler. | Düzenli tablo |
| 2. ders 10–22 | Eksen adı, birim ve başlık kuralını hatırlatır. | XY grafiği çizer, hipotez eskiziyle karşılaştırır. | Grafik |
| 2. ders 22–32 | Hata tablosundan grubun deneyine uyan satırları sorar. | Sonuç cümlesini ve hata kaynaklarını yazar. | Sonuç ve hata paragrafı |
| 2. ders 32–37 | Grafik turunu yönetir. | Grafiğini yan gruba 1 dakikada anlatır, bir soru alır. | Akran geri bildirimi |
| 2. ders 37–40 | Aşağıdaki çıkış sorularından ikisini sorar. | Kısa cevapları kâğıda yazar. | Çıkış kartı |
- Bağımsız ve bağımlı değişkenin neydi, hangi değişkeni sabit tuttun?
- Grafiğin hangi bölümünde değişim en hızlı, bunu grafikte nereden anlıyorsun?
- Hipotezin doğrulandı mı? Hangi iki sayıya dayanarak söylüyorsun?
- Ölçüm aralığını 10 saniye yerine 60 saniye yapsaydın grafiğin nasıl değişirdi?
- En büyük hata kaynağı neydi, deneyi yeniden yapsan neyi değiştirirdin?
Değerlendirme: kısa laboratuvar raporu şablonu
- Başlık ve soru: Deneyin adı, grup üyeleri, tarih ve tek cümlelik deney sorusu.
- Hipotez: "Eğer … ise … olur, çünkü …" kalıbında, ölçümden önce yazıldığı hâliyle; sonradan düzeltilmez.
- Değişkenler: Bağımsız, bağımlı ve en az iki sabit tutulan değişken.
- Malzeme ve yöntem: Sensör, bağlantı özeti, ölçüm aralığı ve tekrar sayısı; başka bir grubun deneyi tekrarlayabileceği netlikte, en fazla 6 adım.
- Veri: Şablondaki gibi özet tablo ve ek olarak CSV dosyasının adı.
- Grafik: Eksen adları, birimleri ve başlığıyla XY grafiği.
- Sonuç: Hipotez doğrulandı mı? Bir ya da iki sayıya dayanan 2–3 cümle.
- Hata kaynakları ve iyileştirme: En az iki hata kaynağı ve deneyi tekrar yapsan neyi değiştireceğin. Puanlamak için Arduino dersi rubriği yazısındaki ölçütleri bu bölümlere uyarlayabilirsin.
Uygulamada hazır sensör projeleri, Kodu anla ve araçlar
Bu deneylerdeki sensörlerin hepsi için BlueGrays'te devre şeması, parça listesi ve koduyla hazır projeler var; öğrenciler deneyden önce sensörü tanımak için bunları kullanabilir. Ücretsiz olanlar: Ldr İle Işık Şiddeti Okuma, HC-SR04 Mesafe Ölçme (Serial Ekran) ve DHT11 İle Sıcaklık Ve Nem; ESP32 kullanıyorsan ESP32 LDR Modülü ile Işık Şiddeti Okuma, ESP32 HC-SR04 Ultrasonik Mesafe Ölçer ve ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı) de ücretsiz. Ücretsiz projelerde bloklar ve Kodu anla bölümü de açık: öğrenci kodun ne yaptığını adım adım okur, Kendin dene görevinde küçük bir değişikliği kendisi yapar; bölümün sınıfta nasıl kullanılacağı Kodu anla yazısında. LDR deneyindeki bölücü gerilimini hesaplamak için Gerilim bölücü aracı (Premium), dirençleri doğrulamak için ücretsiz Renk kodu ve Ohm kanunu araçları işini görür. Sıcaklığı LCD'de gösteren NTC ve 2x16 Lcd Ekran İle Sıcaklık Ölçümü ya da veriyi microSD karta kaydeden ESP32 Sıcaklık Loglayıcı (DHT22 + DS1307 RTC + microSD + OLED) gibi Premium sensör projelerini bütün sınıfa açmak istersen, öğrencilerin kart eklemeden Premium olduğu tek seferlik eğitmen paketleri bunun için var.
Güvenlik: sıcak su, elektrik ve su yakınlığı
- Sıcak su: Kaynar su kullanma; 60 °C civarı yeterlidir ve eğri yine net çıkar. Suyu öğretmen dağıtsın, kupalar masanın ortasında, kabloların takılamayacağı bir yerde dursun. Ölçüm sırasında kupa elle tutulmaz ve taşınmaz.
- Su ve elektrik: Suya yalnız su geçirmez probun metal ucu girer. Arduino, breadboard ve bilgisayar su kabından en az 30 cm uzakta, tercihen ayrı bir tepside dursun. Masaya su dökülürse önce USB kablosunu çek, sonra sil.
- Yalnız USB gücü: Bu deneylerin hepsi bilgisayarın USB çıkışından beslenir; şebekeye bağlı hiçbir cihaz (su ısıtıcısı, lamba, ısıtıcı) Arduino devresine bağlanmaz.
- Kablolama: Bağlantıları USB takılı değilken yap ve değiştir. Bir parça ısınır ya da koku gelirse hemen USB'yi çek.
- Işık: Feneri kimsenin gözüne doğrultma; güçlü LED fenerlere yakından bakmak gözü rahatsız eder.
- Eğik düzlem: Tahta masadan taşmasın, araba sensöre çarpmadan kitapla durdurulsun, tahtanın altındaki kitaplar kaymayacak biçimde yerleştirilsin.
Bir sensör, düzgün bir CSV çıktısı ve iyi sorulmuş bir soru, fen dersindeki deneyi kitaptaki sonucu tekrar etmekten çıkarıp gerçek bir ölçüm çalışmasına dönüştürür: öğrenciler kendi grafiklerini çizer, kendi hata kaynaklarını tartışır ve sonucu kendi sayılarıyla savunur. Deneyden önce sensörleri tanımak ve devreleri telefondan adım adım kurmak istersen, BlueGrays uygulamasındaki ücretsiz LDR, HC-SR04 ve DHT11 projeleriyle başlayabilirsin.
Sıkça sorulan sorular
Arduino ile hangi fen deneyleri yapılabilir?
Sensörle ölçülebilen her büyüklük bir deneye dönüşebilir: sıcaklık (soğuma, ısınma, yalıtım), ışık (mesafe, renkli filtre), mesafe ve hareket (eğik düzlem, sarkaç), toprak nemi (bitki deneyleri), ses ve basınç. Başlangıç için soğuma eğrisi, ışık-mesafe ve eğik düzlem deneyleri en kolay kurulan ve sonucu en net görülen üç deneydir.
Arduino verileri Excel'e nasıl aktarılır?
En basit yol, kodun verileri "zaman_ms,deger" biçiminde virgülle ayrılmış satırlar olarak seri porta yazmasıdır. Seri ekrandaki satırları kopyalayıp .csv dosyası olarak kaydeder ve Excel'de Veri > Metinden/CSV'den ile içe aktarırsın. Türkçe ayarlı Excel'de ondalık ayırıcıyı nokta olarak seçmeyi unutma, yoksa sayılar metin olarak okunur.
Arduino Serial Plotter veriyi kaydeder mi?
Hayır, Serial Plotter (Seri Çizici) yalnız canlı grafik gösterir, veriyi dosyaya yazmaz. Kayıt için seri ekrandaki CSV satırlarını kopyalaman, bir Python betiğiyle dosyaya yazdırman ya da SD kart modülü kullanman gerekir.
Fen deneyinde DS18B20 mi, DHT11 mi kullanılmalı?
Su ya da başka bir sıvı ölçeceksen su geçirmez prob sürümüyle DS18B20 kullan; ±0,5 °C doğruluğu ve suya girebilen ucu soğuma deneyleri için uygundur. DHT11 havanın sıcaklığını ve nemini ±2 °C doğrulukla ölçer, suya sokulmaz ve yavaş tepki verir; yalnız hava deneylerinde kullan.
Arduino ile ses hızı nasıl ölçülür?
HC-SR04'ün yankı süresini mikrosaniye olarak yazdırır, sensörün karşısına düz bir kartonu farklı mesafelere koyarsın. Gidiş-dönüş yolunu (2 × mesafe) yankı süresine karşı grafiğe dökersin; doğrunun eğiminden ses hızı bulunur ve oda sıcaklığında yaklaşık 340 m/s çıkar.
Arduino ile fen deneyi kaç ders saatinde yapılır?
Bir deney için iki ders saati (2 × 40 dakika) yeterlidir: ilk derste hipotez, kurulum ve ölçüm, ikinci derste tablo, grafik, sonuç ve rapor. Kodlar dersten önce kartlara yüklenirse ilk derste ölçüme daha fazla zaman kalır.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Ldr İle Işık Şiddeti Okuma
Odanın ne kadar aydınlık olduğunu sayıyla görmek ister misin? Işığa duyarlı küçük bir parça olan LDR ortam ışığını ölçer ve Arduino bu değeri yarım saniyede bir bilgisayar ekranına yazar. Elinle üstün

HC-SR04 Mesafe Ölçme (Serial Ekran)
Yarasalar karanlıkta yollarını nasıl buluyorsa HC-SR04 sensörü de öyle çalışır: duyamadığın bir ses gönderir, yankısını dinler ve önündeki cismin ne kadar uzakta olduğunu ölçer. Arduino bu mesafeyi sa

DHT11 İle Sıcaklık Ve Nem
Odan kaç derece, hava nemli mi, kuru mu? DHT11 sensörü sıcaklığı ve nemi ölçer, Arduino da bu değerleri iki satırlık LCD ekrana yazar ve birkaç saniyede bir yeniler. Sensöre bir şey olursa ekranda hat

ESP32 LDR Modülü ile Işık Şiddeti Okuma
LDR modülünün ham ADC değerini ve karanlık/aydınlık referanslarına göre hesaplanan göreli ışık yüzdesini Serial Monitor'da gerçek zamanlı izleme. Bu yüzde lux ölçümü değildir. Modülün kalibrasyon mantığını öğretir. Proje 10'un öncesinde yapılması ideal; çünkü eşik değerini belirlemek için kullanılır.

ESP32 HC-SR04 Ultrasonik Mesafe Ölçer
HC-SR04 ultrasonik sensör, gönderdiği ses dalgasının nesneye çarpıp geri dönme süresini (Time of Flight) ölçerek mesafe hesaplar. Bu projede ESP32 ile TRIG pinine 10 mikrosaniyelik darbe gönderip, ECHO pininden gelen yankı süresini pulseIn() ile okuyacağız. Hesaplanan mesafeyi cm cinsinden 16x2 I2C LCD'de göstereceğiz. HC-SR04 5V çalıştığı için ECHO pinine gerilim bölücü zorunludur — aksi halde ESP32'nin 3.3V GPIO'su zarar görür.

ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı)
DHT22 sensörü ile ortam sıcaklığını ve nem oranını ölçüp 16x2 I2C LCD ekranda gerçek zamanlı olarak gösteren bir projedir. Adafruit DHT kütüphanesi kullanılarak tek kablo (one-wire) protokolü ile sensörden veri okunur. Bu proje, IoT hava istasyonu, akıllı ev otomasyonu veya seralarda ortam takip sistemlerinin temelini oluşturur. ESP32'nin GPIO 4 pini üzerinden DHT22 ile haberleşme sağlanır.

NTC ve 2x16 Lcd Ekran İle Sıcaklık Ölçümü
Ortamın sıcaklığını küçük bir boncuk gibi görünen sensörle ölç. NTC adlı bu parça ısındıkça elektriği daha kolay geçirir; Arduino bu değişimi okuyup bir formülle santigrat dereceye çevirir ve iki satı

ESP32 Sıcaklık Loglayıcı (DHT22 + DS1307 RTC + microSD + OLED)
ESP32 ile zamanlı sıcaklık ve nem kayıt sistemi kur! Bu projede DHT22 sensörü ile dakikada bir sıcaklık/nem okuyup DS1307 RTC modülünden aldığın gerçek zaman etiketiyle microSD karta CSV formatında kaydediyoruz. OLED ekranda büyük font ile son sıcaklık değeri, nem yüzdesi, timestamp ve toplam kayıt sayısı canlı gösterilir. SD kart üzerindeki /temp_log.csv dosyası Excel/Google Sheets/Python pandas ile açılıp analiz edilebilir — sera monitörü, ev/oda sıcaklık takibi, laboratuvar veri toplama,
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 200'den fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

