Rehberler · 13 dk okuma

Arduino Excel Veri Aktarma: Data Streamer, PLX-DAQ ve Python

Arduino Excel veri aktarma rehberi: Serial Monitor'den CSV, Data Streamer, PLX-DAQ ve Python ile canlı kayıt, zaman damgası, grafik ve deney raporu tablosu.

Arduino Excel veri aktarma, Arduino'nun sensörlerden okuduğu değerleri USB kablosu üzerinden bilgisayara gönderip bir Excel tablosunda satır satır toplamaktır. Arduino her ölçümü virgülle ayrılmış tek bir satır olarak seri porta yazar; bilgisayar tarafında bu satırları Excel'e taşımanın dört yaygın yolu vardır: Serial Monitor çıktısını CSV olarak kaydetmek, Microsoft'un Data Streamer eklentisi, PLX-DAQ makrosu ve Python ile otomatik kayıt. Hepsinde mantık aynıdır: Arduino'nun gönderdiği her satır Excel'de bir satıra, her virgül de yeni bir sütuna dönüşür.

Bu rehberde örnek olarak bir DHT11 sıcaklık ve nem sensörüyle bir LDR ışık sensörü kullanıyoruz. Önce dört yöntemi karşılaştırıp sana uygun olanı seçmeni kolaylaştıracağız, sonra her birini adım adım kuracağız. Ardından ölçümlere zaman damgası eklemeyi, Excel'de doğru grafik türünü seçmeyi ve okulda ya da bilim fuarında kullanabileceğin bir deney raporu ölçüm tablosu hazırlamayı göreceğiz. Son bölümlerde aynı işi ESP32 ve Raspberry Pi Pico ile yapmayı ve en sık karşılaşılan hataların çözümlerini bulacaksın.

Arduino Uno kartı ve USB soketi
Arduino Uno: ölçümler USB kablosundaki sanal seri port üzerinden bilgisayara akar; Excel'e aktarmak için ek bir modül gerekmez.

Arduino'dan Excel'e veri aktarma nasıl çalışır?

Arduino'nun Excel'e doğrudan yazma yeteneği yoktur; yalnızca Serial.print() ile seri porta metin gönderir. Bilgisayar bu porta Windows'ta COM3, macOS'ta /dev/cu.usbmodem…, Linux'ta /dev/ttyACM0 gibi bir adla erişir. Excel ile Arduino arasındaki ortak dil CSV'dir (Comma Separated Values, virgülle ayrılmış değerler): 12.0,23.0,45,78 gibi bir satır dört sütuna bölünür. Bu yüzden kodda iki kurala uyman yeterli: değerlerin arasına her zaman aynı ayırıcıyı koy ve her ölçümü Serial.println() ile bitir. Seri portun temellerini Arduino Serial Monitor yazısında ayrıntılı bulabilirsin.

YöntemPlatformCanlı aktarımZaman bilgisiEn uygun olduğu iş
Serial Monitor + CSVWindows, macOS, LinuxHayır, ölçüm bitince kopyalanırIDE'nin zaman damgası seçeneğiKısa deneyler, hızlı kontrol
Excel Data StreamerWindows, Microsoft 365 masaüstü ExcelEvetArduino'dan millis() gönderilirSınıfta canlı grafik
PLX-DAQ v2Windows, masaüstü Excel (makro)EvetDATE, TIME ve TIMER komutlarıHazır tabloya uzun kayıt
Python (pyserial + openpyxl)Windows, macOS, LinuxEvet, dosyayaBilgisayar saatiOtomatik rapor, saatlerce kayıt
SD kart modülüBilgisayar gerekmezHayır, kart sonradan okunurRTC modülüSahada, pille ölçüm

Örnek devre: DHT11 ve LDR bağlantısı

Örnek devrede iki sensör var. DHT11 sıcaklığı 1 °C, nemi %1 çözünürlükle ölçer; doğruluğu yaklaşık ±2 °C ve ±%5 bağıl nemdir ve tek bir veri pini yeterlidir. LDR ise ışık arttıkça direnci düşen bir fotodirençtir; 10 kΩ'luk bir dirençle gerilim bölücü kurup orta noktayı analog pine bağlarsın. Aşağıdaki bağlantıda ışık arttıkça analog değer de artar. LDR'nin verdiği sayı lüks cinsinden değil, göreli bir ışık düzeyidir; raporunda bunu "ışık (%)" diye belirtmen dürüst olur. Gerçek lüks değeri gerekiyorsa BH1750 gibi kalibre edilmiş bir ışık sensörü kullanmalısın.

BağlantıArduino UnoESP32Raspberry Pi Pico
DHT11 VCC (+)5V3V3Yerleşik sensör kullanılır
DHT11 DATA (OUT)D2GPIO 4Yerleşik sensör (ADC4)
DHT11 GND (-)GNDGND-
LDR 1. bacak5V3V33V3(OUT), pin 36
LDR 2. bacak + 10 kΩA0GPIO 34GP26 (ADC0), pin 31
10 kΩ'un diğer ucuGNDGNDAGND, pin 33
Üç pinli DHT11 modüllerinde veri hattının pull-up direnci kartın üzerindedir; dört bacaklı çıplak sensörü kullanıyorsan DATA ile VCC arasına kendin 4,7–10 kΩ'luk bir direnç eklemelisin, yoksa kod sürekli nan okur. ESP32 ve Pico'da LDR bölücüsünü mutlaka 3,3 V'tan besle: 5 V'a bağlarsan analog pine kartın dayanabileceğinden yüksek gerilim gelir.
DHT11 sıcaklık ve nem sensörü modülü
DHT11: tek veri pininden hem sıcaklık hem nem gönderir; iki okuma arasında en az 1 saniye beklemek gerekir.

Arduino kodu: ölçümleri CSV satırı olarak göndermek

C++ (Arduino IDE)
1// DHT11 + LDR ölçümlerini CSV satırı olarak gönderir / Sends DHT11 + LDR readings as CSV lines
2#include <DHT.h>
3
4const int DHT_PIN = 2;                 // DHT11 veri pini / DHT11 data pin
5const int LDR_PIN = A0;                // LDR + 10k gerilim bölücü / LDR + 10k voltage divider
6const unsigned long ARALIK = 2000;     // ölçüm aralığı, ms (DHT11 için en az 1000) / interval in ms (at least 1000 for DHT11)
7
8DHT dht(DHT_PIN, DHT11);               // DHT22 kullanıyorsan DHT22 yaz / write DHT22 if you use one
9unsigned long sonOlcum = 0;
10
11void setup() {
12  Serial.begin(9600);                  // Data Streamer ve PLX-DAQ varsayılanı / default of Data Streamer and PLX-DAQ
13  dht.begin();
14  Serial.println("zaman_s,sicaklik_C,nem_yuzde,isik_yuzde");   // başlık satırı / header row
15}
16
17void loop() {
18  if (millis() - sonOlcum < ARALIK) return;   // zamanı gelmediyse çık / not time yet
19  sonOlcum = millis();
20
21  float sicaklik = dht.readTemperature();     // santigrat derece / degrees Celsius
22  float nem = dht.readHumidity();             // bağıl nem, % / relative humidity, %
23  int isik = map(analogRead(LDR_PIN), 0, 1023, 0, 100);   // göreli ışık, % / relative light, %
24
25  if (isnan(sicaklik) || isnan(nem)) {
26    Serial.println("HATA,DHT okunamadi");     // sayı olmadığı için kolay ayıklanır / easy to filter out, not a number
27    return;
28  }
29
30  Serial.print(sonOlcum / 1000.0, 1);         // açılıştan beri geçen saniye / seconds since power-up
31  Serial.print(',');                          // sütun ayırıcı / column separator
32  Serial.print(sicaklik, 1);
33  Serial.print(',');
34  Serial.print(nem, 0);
35  Serial.print(',');
36  Serial.println(isik);                       // satır sonu = yeni Excel satırı / line end = new Excel row
37}

Kod Adafruit'in DHT sensor library kütüphanesini kullanır; Kütüphane Yöneticisi'nden kurarken bağımlılığı olan Adafruit Unified Sensor'ı da kurmayı kabul et. Ölçümler 2 saniyede bir, delay() yerine millis() ile zamanlanır; böylece loop() hiç bloklanmaz (ayrıntılar millis ve delay yazısında). Her satır sırasıyla süre, sıcaklık, nem ve ışık sütunlarından oluşur. Serial.print(sicaklik, 1) sayıyı tek ondalık basamakla ve her zaman nokta ile yazar. Sensör okunamazsa sayı yerine "HATA" yazılır; böylece tabloda bozuk satırı hemen görür ve filtrelersin. Setup'taki başlık satırı Serial Monitor ve Python yöntemlerinde işine yarar; Data Streamer kullanacaksan bu satırı silebilirsin. Oda sıcaklığı gibi yavaş değişen ölçümlerde ARALIK değerini 60000 yaparak dakikada bir ölçüm alabilirsin.

Yöntem 1: Serial Monitor çıktısını CSV olarak kaydetmek

  1. Kodu yükle, Araçlar > Seri Port Ekranı'nı (Serial Monitor) aç ve hız menüsünden 9600 baud seç.
  2. İstersen zaman damgasını aç: Arduino IDE 2'de pencerenin sağ üstündeki saat simgesine, IDE 1.8'de alttaki zaman damgası kutusuna tıkla. Her satırın başına 14:03:21.512 -> biçiminde bilgisayarın saati eklenir.
  3. Deney bitince satırları fareyle seç ve Ctrl+C ile kopyala (macOS'ta Cmd+C). Ham veriyi saklamak istersen Not Defteri'ne yapıştırıp kayıt türünü Tüm Dosyalar seçerek olcum.csv adıyla kaydet.
  4. Excel'de boş bir sayfanın A1 hücresine tıkla ve Ctrl+V ile yapıştır; tüm satırlar A sütununa yerleşir.
  5. A sütunu seçiliyken Veri > Metni Sütunlara Dönüştür'ü aç, Sınırlandırılmış'ı seç ve ayırıcı olarak Virgül'ü işaretle. Zaman damgası açıksa Boşluk'u da işaretle: saat ilk sütuna, "->" işaretleri ikinci sütuna düşer, o sütunu sonra silersin.
  6. Son adımda Gelişmiş düğmesine bas ve ondalık ayırıcıyı nokta yap; böylece 23.5 gibi değerler Türkçe Excel'de de sayı olarak tanınır. Son'a bas ve dosyayı .xlsx olarak kaydet.

Bu yöntem birkaç yüz satıra kadar çok pratiktir; binlerce satırda hem seçmek zorlaşır hem de IDE penceresi yavaşlar. Saatler süren kayıtlarda PuTTY (Session > Logging > All session output) ya da Windows, macOS ve Linux'ta çalışan CoolTerm (Connection > Capture to Text/Binary File) gibi terminal programları gelen her satırı doğrudan bir dosyaya yazar. Bu dosyayı da aynı adımlarla Excel'e alırsın. Unutma: bir terminal programı ya da Serial Monitor portu kullanırken Excel eklentileri ve Python aynı porta bağlanamaz.

Türkçe bölge ayarlı Windows'ta Excel, CSV dosyalarında sütun ayırıcı olarak noktalı virgül, ondalık ayırıcı olarak virgül bekler. Bu yüzden virgüllü bir CSV'ye çift tıkladığında her şey tek sütunda toplanabilir ya da 23.5 gibi bir değer 23 Mayıs tarihine dönüşebilir. Çözüm, dosyayı çift tıklayarak açmak yerine yukarıdaki gibi Metni Sütunlara Dönüştür ile bölmek ya da dosyayı en baştan noktalı virgül ve ondalık virgülle üretmektir; aşağıdaki Python betiği tam olarak bunu yapar.

Yöntem 2: Excel Data Streamer ile canlı veri aktarma

Data Streamer, Microsoft'un eğitim için geliştirdiği ve seri porttan gelen CSV satırlarını doğrudan bir çalışma sayfasına akıtan ücretsiz bir eklentidir. Microsoft 365'teki masaüstü Excel ile (sürüm 1902 ve sonrası) birlikte gelir; yalnızca etkinleştirmen gerekir. Bir COM eklentisi olduğu için yalnızca Windows'ta çalışır, macOS'taki Excel'de ve tarayıcıdaki Excel'de bulunmaz. Arduino tarafında ek bir şey yapmana gerek yoktur: yukarıdaki kod, eklentinin varsayılan hızı olan 9600 baud ile olduğu gibi çalışır.

  1. Excel'de Dosya > Seçenekler > Eklentiler'i aç, alttaki Yönet listesinden COM Eklentileri'ni seçip Git'e bas.
  2. Microsoft Data Streamer for Excel kutusunu işaretle ve Tamam'a bas; şeritte Data Streamer sekmesi belirir.
  3. Arduino IDE'deki Serial Monitor'ü kapat; seri port aynı anda yalnızca bir programa açılabilir.
  4. Connect a Device düğmesinden Arduino'nun COM portunu seç, ardından Start Data'ya bas. Excel'in diline göre düğme adları çevrilmiş görünebilir.
  5. Excel üç sayfa oluşturur: Data In (gelen veriler), Data Out (Arduino'ya gidecek veriler) ve Settings (ayarlar). Settings sayfasında Data Channels değerini 4 yap ve tabloda daha fazla geçmiş görmek için Data Rows değerini artır.
  6. Kalıcı kayıt için Record Data ile kaydı başlat; Stop Recording ile durdurduğunda ölçümler bir CSV dosyasına kaydedilmiş olur. Bu dosyayı daha sonra Import Data File ile yeniden oynatabilirsin.

Data In sayfasının üst kısmında en son gelen değerler (Current Data), altında da geçmiş ölçümlerin aktığı bir tablo (Historical Data) bulunur. Bu tabloyu seçip Ekle > Önerilen Grafikler ile bir çizgi ya da dağılım grafiği eklersen grafik her yeni veride kendiliğinden güncellenir; sensörün önüne elini tuttuğunda ışık eğrisinin anında düştüğünü sınıfa göstermek için idealdir. Settings sayfasındaki Data Interval (ms) sayfanın ne sıklıkla yenileneceğini, Data Orientation ise en yeni verinin tablonun üstünde mi altında mı görüneceğini belirler. Data Out sayfasına yazdığın değerler de CSV satırı olarak Arduino'ya gönderilir; Arduino bunları Serial.parseInt() ile okuyarak örneğin bir alarm eşiğini Excel'den ayarlayabilir.

Data Streamer sekmesi hiç görünmüyorsa büyük olasılıkla Microsoft 365 dışında bir Office sürümü ya da macOS kullanıyorsundur; bu durumda PLX-DAQ ya da Python yöntemine geç. Arduino kodunda 9600 dışında bir hız kullanıyorsan Advanced penceresindeki ayarlardan baud hızını aynı değere getir; yoksa tabloya anlamsız karakterler dolar.

Yöntem 3: PLX-DAQ makrosu ile Excel'e satır satır yazmak

PLX-DAQ (Parallax Data Acquisition), Excel'in içinde çalışan bir VBA makrosudur ve seri porttan gelen özel komutları Excel hücrelerine dönüştürür. Parallax'ın orijinal sürümü yalnızca 32 bit Excel'de çalıştığı için bugün Arduino topluluğunun geliştirdiği PLX-DAQ v2 kullanılır; 64 bit Excel'i destekler ve tek bir .xlsm dosyası olarak gelir. Makro Windows API'sine dayandığından o da yalnızca Windows'ta çalışır. Data Streamer'dan farkı, Excel'i Arduino'nun yönetmesidir: başlıkları kendisi yazar, sayfayı temizler, tarihi ve saati Excel'e ekletir.

C++ (Arduino IDE)
1// PLX-DAQ v2: Excel'e tarih, saat ve ölçüm satırı yazar / PLX-DAQ v2: writes date, time and readings into Excel
2#include <DHT.h>
3
4DHT dht(2, DHT11);                     // DHT11 veri pini D2 / DHT11 data pin D2
5const int LDR_PIN = A0;
6
7void setup() {
8  Serial.begin(9600);                  // PLX-DAQ'ta da 9600 seç / choose 9600 in PLX-DAQ too
9  dht.begin();
10  Serial.println("CLEARDATA");         // eski ölçümleri sil / clear old readings
11  Serial.println("LABEL,Tarih,Saat,Sure (s),Sicaklik (C),Nem (%),Isik (%)");   // 1. satır başlıkları / row 1 headers
12  Serial.println("RESETTIMER");        // TIMER sayacını sıfırla / reset the TIMER counter
13}
14
15void loop() {
16  float sicaklik = dht.readTemperature();
17  float nem = dht.readHumidity();
18  int isik = map(analogRead(LDR_PIN), 0, 1023, 0, 100);
19
20  if (!isnan(sicaklik) && !isnan(nem)) {
21    Serial.print("DATA,DATE,TIME,TIMER,");   // DATE, TIME, TIMER'ı Excel doldurur / Excel fills in DATE, TIME, TIMER
22    Serial.print(sicaklik, 1);
23    Serial.print(',');
24    Serial.print(nem, 0);
25    Serial.print(',');
26    Serial.println(isik);
27  }
28  delay(2000);                         // DHT11 saniyede en fazla 1 ölçüm verir / DHT11 gives at most 1 reading per second
29}
KomutNe yapar?
CLEARDATASayfadaki eski ölçümleri siler
LABEL,Tarih,Saat,...1. satıra sütun başlıklarını yazar
DATA,...Bir sonraki boş satıra yeni ölçümü yazar
DATE ve TIMEDATA satırında bilgisayarın tarihi ve saatiyle değiştirilir
TIMERKayıt başladığından ya da RESETTIMER'dan beri geçen saniye
RESETTIMERTIMER sayacını sıfırlar
ROW,SET,2Sonraki verinin yazılacağı satırı belirler
CELL,SET,G2,25 / CELL,GET,G2Bir hücreye değer yazar ya da hücredeki değeri Arduino'ya geri gönderir
SAVEWORKBOOKExcel dosyasını kaydeder
  1. PLX-DAQ v2 dosyasını indirip zip'ten çıkar. .xlsm dosyasına sağ tıkla, Özellikler'de Engellemeyi kaldır kutusunu işaretle; Office internetten gelen dosyalardaki makroları varsayılan olarak engeller.
  2. Dosyayı aç ve üstteki sarı çubukta İçeriği Etkinleştir'e tıkla.
  3. Arduino IDE'deki Serial Monitor'ü kapat ve sayfadaki Open PLX DAQ UI düğmesine bas.
  4. Açılan pencerede Port kutusuna yalnızca COM numarasını yaz (COM5 için 5), Baud olarak 9600 seç ve Connect'e bas.
  5. Başlıklar gelmediyse Arduino'nun reset düğmesine bas: setup() yeniden çalışır, CLEARDATA ve LABEL komutları Excel'e ulaşır ve satırlar akmaya başlar.
  6. Kaydı bitirince Disconnect'e bas ve verileri istersen ayrı bir .xlsx dosyası olarak kaydet.

Yöntem 4: Python ile otomatik CSV ve Excel dosyası

Mac ya da Linux kullanıyorsan, saatlerce kayıt yapacaksan ya da raporu her seferinde elle hazırlamaktan sıkıldıysan en esnek yol Python'dur. Önce terminalde python -m pip install pyserial openpyxl komutuyla iki paketi kur. Aşağıdaki ilk betik Arduino'yu dinler ve her ölçümü bilgisayarın saatiyle birlikte deney_olcumleri.csv dosyasına yazar. Port bulma, otomatik reset ve canlı grafik gibi konuların ayrıntılarını Arduino Python seri haberleşme yazısında anlattık.

Python
1import csv
2import time
3from datetime import datetime
4
5import serial
6
7PORT = "COM3"               # macOS: /dev/cu.usbmodem…, Linux: /dev/ttyACM0
8BAUD = 9600                 # Arduino'daki Serial.begin ile aynı / same as Serial.begin on the Arduino
9DOSYA = "deney_olcumleri.csv"
10AYIRICI = ";"               # Türkçe Excel ; bekler, İngilizce Excel , / Turkish Excel expects ;, English Excel ,
11ONDALIK = ","               # Türkçe Excel ondalık virgül, İngilizce nokta / decimal comma in Turkish Excel, dot in English
12
13
14def sayi(x):
15    return f"{x:.1f}".replace(".", ONDALIK)   # 23.5 -> "23,5"
16
17
18with serial.Serial(PORT, BAUD, timeout=3) as ser, \
19        open(DOSYA, "w", newline="", encoding="utf-8-sig") as f:   # BOM: Excel Türkçe harfleri doğru gösterir / BOM keeps accents readable
20    time.sleep(2)                       # Uno port açılınca resetlenir / the Uno resets when the port opens
21    ser.reset_input_buffer()            # yarım kalmış satırları at / drop partial lines
22    yazici = csv.writer(f, delimiter=AYIRICI)
23    yazici.writerow(["Zaman", "Süre (s)", "Sıcaklık (°C)", "Nem (%)", "Işık (%)"])
24    print("Kayıt başladı, durdurmak için Ctrl+C / logging, press Ctrl+C to stop")
25    try:
26        while True:
27            satir = ser.readline().decode("utf-8", errors="ignore").strip()
28            parca = satir.split(",")
29            if len(parca) != 4:
30                continue                # boş, hata ya da başlık satırı / empty, error or header line
31            try:
32                sure, sicaklik, nem, isik = (float(p) for p in parca)
33            except ValueError:
34                continue                # sayı olmayan satır / non-numeric line
35            simdi = datetime.now()
36            yazici.writerow([simdi.strftime("%Y-%m-%d %H:%M:%S"),   # bilgisayar saati / PC clock
37                             sayi(sure), sayi(sicaklik), sayi(nem), sayi(isik)])   # süre Arduino'dan gelir / elapsed time comes from the Arduino
38            f.flush()                   # satırı hemen diske yaz / write the row to disk now
39            print(simdi.strftime("%H:%M:%S"), sicaklik, nem, isik)
40    except KeyboardInterrupt:
41        print("Kayıt bitti / logging stopped:", DOSYA)

Betikteki üç ayrıntı Excel uyumunu sağlar. utf-8-sig kodlaması dosyanın başına görünmez bir BOM işareti ekler; bu işaret olmadan Excel "Sıcaklık" ve "°C" gibi karakterleri bozuk gösterir. AYIRICI ve ONDALIK sabitleri Türkçe Excel için noktalı virgül ve ondalık virgüle ayarlıdır; İngilizce bölge ayarlı bir bilgisayarda bunları virgül ve nokta yapman yeterli. f.flush() ise her satırı anında diske yazar; bilgisayar kapanırsa ya da kablo çıkarsa en fazla son ölçümü kaybedersin. Ctrl+C ile durdurduktan sonra dosyaya çift tıklaman yeterlidir, sütunlar doğru ayrılmış olarak açılır. Kayıt sürerken dosyayı incelemek istersen Excel açtığı dosyaları kilitleyebildiği için bir kopyasını aç.

Python
1import csv
2from datetime import datetime
3
4from openpyxl import Workbook
5from openpyxl.chart import Reference, ScatterChart, Series
6
7GIRIS = "deney_olcumleri.csv"
8CIKIS = "deney_raporu.xlsx"
9
10wb = Workbook()
11ws = wb.active
12ws.title = "Olcumler"
13
14with open(GIRIS, encoding="utf-8-sig", newline="") as f:
15    okuyucu = csv.reader(f, delimiter=";")
16    ws.append(next(okuyucu))                               # başlık satırı / header row
17    for satir in okuyucu:
18        zaman = datetime.strptime(satir[0], "%Y-%m-%d %H:%M:%S")
19        degerler = [float(x.replace(",", ".")) for x in satir[1:]]   # "23,5" -> 23.5
20        ws.append([zaman] + degerler)                      # .xlsx sayıyı sayı olarak saklar / .xlsx stores real numbers
21
22son = ws.max_row
23for hucre in ws["A"][1:]:
24    hucre.number_format = "hh:mm:ss"                       # zaman sütunu biçimi / time column format
25ws.column_dimensions["A"].width = 12
26
27# Özet tablo: formüller İngilizce yazılır, Excel kendi diline çevirir
28# Summary: formulas are written in English, Excel shows them in its own language
29ws["G1"], ws["H1"], ws["I1"], ws["J1"] = "Özet", "Sıcaklık (°C)", "Nem (%)", "Işık (%)"
30for i, (ad, fonk) in enumerate([("Ortalama", "AVERAGE"), ("En düşük", "MIN"),
31                                ("En yüksek", "MAX"), ("Std. sapma", "STDEV")], start=2):
32    ws.cell(row=i, column=7, value=ad)
33    for sutun, harf in ((8, "C"), (9, "D"), (10, "E")):
34        ws.cell(row=i, column=sutun, value=f"={fonk}({harf}2:{harf}{son})")
35
36# Her ölçüm için süre-değer (XY dağılım) grafiği / one time-value (XY scatter) chart per reading
37x = Reference(ws, min_col=2, min_row=2, max_row=son)       # Süre (s) sütunu / elapsed time column
38for sutun, baslik, konum in ((3, "Sıcaklık (°C)", "G8"), (5, "Işık (%)", "G24")):
39    grafik = ScatterChart()
40    grafik.title = baslik + " - süre"
41    grafik.x_axis.title = "Süre (s)"
42    grafik.y_axis.title = baslik
43    grafik.x_axis.delete = False                           # yeni Excel'de eksenler görünsün / keep axes visible
44    grafik.y_axis.delete = False
45    y = Reference(ws, min_col=sutun, min_row=1, max_row=son)
46    grafik.series.append(Series(y, x, title_from_data=True))
47    grafik.width, grafik.height = 18, 8                    # cm
48    ws.add_chart(grafik, konum)
49
50wb.save(CIKIS)
51print(son - 1, "ölçüm yazıldı / readings written:", CIKIS)

İkinci betik CSV'yi gerçek bir .xlsx dosyasına çevirir. .xlsx içinde sayılar metin olarak değil sayı olarak saklandığı için ayırıcı ve ondalık sorunu tamamen ortadan kalkar; dosya Türkçe, Almanca ya da İngilizce Excel'de aynı şekilde açılır. Betik ayrıca ortalama, en düşük, en yüksek ve standart sapmayı hesaplayan bir özet tablo ile sıcaklık ve ışık için iki dağılım grafiği ekler. Formüller dosyaya İngilizce adlarıyla (AVERAGE, MIN, MAX, STDEV) yazılır; Excel açarken bunları kendi diline çevirir, Türkçe Excel'de ORTALAMA, MİN, MAK ve STDSAPMA olarak görürsün. delete = False satırları, openpyxl'in yeni sürümleriyle oluşturulan grafiklerde eksen etiketlerinin görünmemesi sorununu önler.

Zaman damgası eklemek: millis(), bilgisayar saati ya da RTC

KaynakNasıl alınır?ArtısıEksisi
millis()Arduino kodunda millis() / 1000.0Ek donanım gerekmez, milisaniye hassasiyetiHer resette sıfırlanır, gerçek tarih değildir, 49,7 günde taşar
Bilgisayar saatiPython datetime, PLX-DAQ DATE ve TIME, Serial Monitor zaman damgasıGerçek tarih ve saat, kurulum gerekmezBilgisayar sürekli bağlı olmalı
RTC modülü (DS3231, DS1307)RTClib ile rtc.now()Bilgisayarsız çalışır, pil saati korurEk modül gerekir; DS1307 günde birkaç saniye kayabilir
İnternet saati (NTP)ESP32'de configTime()Ayar gerektirmeyen, saniye hassasiyetinde doğru saatWi-Fi bağlantısı gerekir

Bilgisayara bağlı deneylerde en kolayı bilgisayar saatidir; Python betiğimiz de her satıra bunu yazar. Arduino'nun gönderdiği süre değerini de saklamak iyi bir alışkanlıktır: ölçümler arasındaki gerçek aralığı gösterir ve bir satır kaybolursa hemen fark edersin. Arduino'dan ham millis() değeri gönderirsen Excel'de =B2/1000 formülüyle saniyeye, =B2/60000 ile dakikaya çevirebilirsin. Arduino bilgisayardan bağımsız çalışacaksa, örneğin bir SD karta kayıt yapacaksa, tarih ve saati bir RTC saat modülünden almalısın; SD karta CSV kaydının ayrıntıları SD kart modülü yazısında. ESP32 kullanıyorsan saati internetten de çekebilirsin: ESP32 ile NTP saat.

Excel'de grafik oluşturmak

  1. Süre ve sıcaklık sütunlarını başlıklarıyla birlikte seç; sütunlar yan yana değilse ikincisini Ctrl tuşuna basılı tutarak seç.
  2. Ekle > Grafikler > Dağılım (X, Y) menüsünden çizgili bir dağılım türü seç.
  3. Grafiğin yanındaki + düğmesinden Eksen Başlıkları'nı aç ve eksenlere birimleriyle ad ver: "Süre (s)" ve "Sıcaklık (°C)".
  4. Işık serisini eklemek için grafiğe sağ tıkla, Veri Seç > Ekle ile ışık sütununu ekle; ölçekler çok farklı olduğu için seriye sağ tıklayıp Veri Serisini Biçimlendir > İkincil Eksen'i seç.
  5. Dikey eksene sağ tıklayıp Ekseni Biçimlendir'den en küçük ve en büyük değerleri sabitle; böylece 1 °C'lik bir değişim dev bir dalgalanma gibi görünmez.

Neden çizgi grafik değil de dağılım grafiği? Excel'in Çizgi grafiği yatay eksendeki değerleri eşit aralıklı etiketler olarak görür; bir ölçüm kaçtığında ya da ölçüm aralığını değiştirdiğinde zaman ekseni sessizce bozulur. Dağılım (X, Y) grafiği ise her noktayı gerçek zamanına göre yerleştirir; bilimsel bir grafikte beklenen de budur. Yalnızca birkaç sabit değeri karşılaştıracaksan, örneğin üç farklı odadaki ortalama sıcaklığı, sütun grafik daha okunaklıdır. Sensör gürültülüyse seriye sağ tıklayıp Eğilim Çizgisi Ekle > Hareketli Ortalama seçeneğiyle eğriyi yumuşatabilirsin.

Deney raporu için ölçüm tablosu örneği

Diyelim ki deneyin sorusu şu: "Masa lambası açıldığında yakınındaki havanın sıcaklığı, nemi ve ışık düzeyi nasıl değişir?" Sensörleri lambadan yaklaşık 15 cm uzağa yerleştirip koddaki ARALIK değerini 60000 yaptık, yani dakikada bir ölçüm aldık. 1. dakikada lambayı açtık, 6. dakikada kapattık. Aşağıdaki değerler bu düzenekle elde edilebilecek tipik örnek değerlerdir; son iki satır Excel formülleriyle hesaplanan özetlerdir:

Süre (dk)Sıcaklık (°C)Nem (%)Işık (%)Durum
0234614Lamba kapalı
1234681Lamba açıldı
2244582Lamba açık
3254482Lamba açık
4264383Lamba açık
5264283Lamba açık
6264215Lamba kapandı
7254314Lamba kapalı
8244514Lamba kapalı
Ortalama24,744,052,0-
En düşük / en yüksek23 / 2642 / 4614 / 83-

Özet satırlarını Excel'de =ORTALAMA(B2:B10), =MİN(B2:B10) ve =MAK(B2:B10) formülleriyle hesaplarsın; ölçümlerin ne kadar dağıldığını göstermek için =STDSAPMA(B2:B10) de ekleyebilirsin. Sonuçları yorumlarken tablodaki örüntüyü anlat: lamba açılır açılmaz ışık %14'ten %81'e sıçradı, sıcaklık ise yaklaşık 3 dakikada yavaş yavaş 3 °C yükseldi; buna ısıl eylemsizlik denir. Lamba kapanınca ışık hemen düştü ama sıcaklık birkaç dakika daha yüksek kaldı. Bağıl nem sıcaklık artarken azaldı, çünkü havadaki su miktarı değişmese de ısınan hava daha fazla nem taşıyabilir. Akkor ya da halojen lamba bu etkiyi belirgin gösterir; LED lambada sıcaklık artışı çok daha küçük olur.

  • Amaç: Tek cümlelik araştırma sorusu ve hipotezin.
  • Malzemeler: Kart modeli, sensörler, dirençler ve kullandığın yazılımlar (Arduino IDE, Excel).
  • Yöntem: Sensörlerin konumu, ölçüm aralığı (örneğin 60 s), deneyin süresi ve verilerin Excel'e hangi yöntemle aktarıldığı.
  • Ölçüm tablosu: Her sütun başlığında birim olsun; metinde özet tabloyu kullan, ham verinin tamamını ek olarak ver.
  • Grafik: Eksen başlıkları, birimler ve olayların (lamba açıldı, kapandı) işaretlendiği bir dağılım grafiği.
  • Sonuç ve hata kaynakları: Bulguların hipotezle karşılaştırması; DHT11'in ±2 °C doğruluğu, LDR'nin kalibre olmaması ve sensörün lambaya uzaklığı gibi sınırlamalar.

ESP32 ile Excel'e veri aktarma

ESP32'de de bütün yöntemler aynı şekilde çalışır; Data Streamer ve PLX-DAQ için ESP32 yalnızca başka bir seri porttur. Değişen üç şey var: analog okuma 12 bittir (0–4095), LDR bölücüsü 3,3 V ile beslenir ve analog pin olarak Wi-Fi açıkken de çalışan ADC1 pinlerinden birini (GPIO 32–39) seçmelisin. ESP32'ler genellikle 115200 baud ile kullanılır; Python betiğinde, Data Streamer'da ve PLX-DAQ'ta hızı buna göre değiştir. Açılışta seri porta düşen önyükleyici mesajları sayı olmadığı için Python betiği tarafından zaten atlanır. Bilgisayara hiç bağlamadan ölçümleri buluta göndermek istersen ESP32 ile Google E-Tablolar'a veri kaydı yazısına göz at.

C++ (Arduino IDE)
1// ESP32: aynı CSV çıktısı, 12 bit ADC ve 3,3 V / ESP32: same CSV output, 12-bit ADC and 3.3 V
2#include <DHT.h>
3
4const int DHT_PIN = 4;                 // güvenli bir GPIO / a safe GPIO
5const int LDR_PIN = 34;                // ADC1 pini, Wi-Fi açıkken de okur / ADC1 pin, still reads with Wi-Fi on
6DHT dht(DHT_PIN, DHT11);
7
8void setup() {
9  Serial.begin(115200);                // Python'da ve Data Streamer'da da 115200 / 115200 in Python and Data Streamer too
10  dht.begin();
11  analogReadResolution(12);            // 0-4095
12}
13
14void loop() {
15  float sicaklik = dht.readTemperature();
16  float nem = dht.readHumidity();
17  int isik = map(analogRead(LDR_PIN), 0, 4095, 0, 100);   // göreli ışık, % / relative light, %
18
19  if (!isnan(sicaklik) && !isnan(nem)) {
20    // zaman_s,sicaklik,nem,isik biçimi, Uno koduyla aynı / same zaman_s,temp,hum,light format as the Uno sketch
21    Serial.printf("%.1f,%.1f,%.0f,%d\n", millis() / 1000.0, sicaklik, nem, isik);
22  }
23  delay(2000);
24}

Raspberry Pi Pico ile CSV kaydı (MicroPython)

Raspberry Pi Pico'da MicroPython kullanıyorsan ölçümleri bilgisayara göndermek yerine kartın kendi flaş belleğindeki bir CSV dosyasına yazabilirsin; böylece bilgisayar gerekmez, Pico'yu bir powerbank ile besleyip ölçüm yapılacak yere bırakırsın. Aşağıdaki kod ek sensör gerektirmeyen yerleşik sıcaklık sensörünü (ADC4) ve GP26'ya bağlı LDR'yi kullanır, dosyayı da Türkçe Excel'e uygun olsun diye noktalı virgül ve ondalık virgülle yazar. Yerleşik sensör yonganın sıcaklığını ölçtüğü için ortam sıcaklığından birkaç derece yüksek okuyabilir; hassas ölçüm için harici bir sensör kullan. MicroPython'a yeni başlıyorsan Raspberry Pi Pico nedir yazısıyla başlayabilirsin.

Raspberry Pi Pico mikrodenetleyici kartı
Raspberry Pi Pico: MicroPython ile ölçümleri kendi flaş belleğindeki bir CSV dosyasına yazar; dosyayı Thonny ile bilgisayara indirirsin.
MicroPython
1import os
2import time
3
4import machine
5
6ldr = machine.ADC(26)                 # GP26 = ADC0, LDR + 10k bölücü / LDR + 10k divider
7ic_sensor = machine.ADC(4)            # yongadaki sıcaklık sensörü / on-chip temperature sensor
8DOSYA = "olcum.csv"
9ARALIK_S = 10                         # ölçüm aralığı, saniye / interval in seconds
10
11
12def tr(x):
13    return "{:.1f}".format(x).replace(".", ",")   # Türkçe Excel için ondalık virgül / decimal comma for Turkish Excel
14
15
16try:
17    os.stat(DOSYA)                    # dosya varsa silme, sonuna ekle / keep an existing file, append to it
18except OSError:
19    with open(DOSYA, "w") as f:
20        f.write("Sure (s);Sicaklik (C);Isik (%)\n")   # ASCII başlık / ASCII header
21
22baslangic = time.ticks_ms()
23while True:
24    volt = ic_sensor.read_u16() * 3.3 / 65535
25    sicaklik = 27 - (volt - 0.706) / 0.001721       # RP2040 veri sayfası formülü / RP2040 datasheet formula
26    isik = ldr.read_u16() * 100 / 65535             # göreli ışık, % / relative light, %
27    sure = time.ticks_diff(time.ticks_ms(), baslangic) / 1000
28    satir = "{};{};{}".format(tr(sure), tr(sicaklik), tr(isik))
29    print(satir)                                    # Thonny kabuğunda da görünür / also shown in the Thonny shell
30    with open(DOSYA, "a") as f:                     # her satırda aç-kapat / open and close for every line
31        f.write(satir + "\n")                       # elektrik kesilse de veri kalır / data survives a power cut
32    time.sleep(ARALIK_S)

Kodu Thonny'de main.py adıyla Pico'ya kaydedersen kart her açıldığında kayda kendiliğinden başlar; dosya zaten varsa silinmez, yeni satırlar sonuna eklenir. Ölçüm bitince Pico'yu bilgisayara bağla, Thonny'de Stop'a bas, Görünüm > Dosyalar panelinde olcum.csv'ye sağ tıklayıp bilgisayarına indir ve Excel'de aç. 10 saniyede bir yazılan yaklaşık 20 baytlık satırlar günde 170 KB civarında yer tutar; Pico'nun dosya sisteminde bu, birkaç günlük kayda rahatça yer demektir. Ondalık ayırıcısı nokta olan İngilizce bir Excel kullanıyorsan tr() fonksiyonundaki replace() çağrısını kaldırman yeterli.

Sık yapılan hatalar ve çözümleri

BelirtiNedenÇözüm
Port açılmıyor, "Access is denied" (Erişim engellendi)Serial Monitor, Serial Plotter ya da başka bir program portu kullanıyorPortu kullanan tüm pencereleri kapat; port aynı anda tek programa açılır
Tüm değerler tek sütundaCSV ayırıcısı Excel'in bölge ayarıyla uyuşmuyorVeri > Metni Sütunlara Dönüştür ile virgülden böl ya da Python'da ayırıcıyı ; yap
23.5 değeri 23 Mayıs oldu ya da metin kaldıTürkçe Excel ondalık ayırıcı olarak virgül bekliyorMetni Sütunlara Dönüştür > Gelişmiş'te ondalık ayırıcıyı nokta yap ya da Dosya > Seçenekler > Gelişmiş'te Sistem ayırıcılarını kullan kutusunu kaldır
Türkçe harfler ve ° işareti bozukCSV, BOM olmadan UTF-8 kaydedilmişPython'da encoding="utf-8-sig" kullan ya da başlıklarda Türkçe karakter kullanma
Tabloya anlamsız karakterler doluyorBaud hızı uyuşmuyorSerial.begin() ile Data Streamer, PLX-DAQ ya da Python'daki hızı eşitle
Data Streamer sekmesi yokEklenti etkin değil ya da Excel sürümü desteklemiyorCOM Eklentileri'nden etkinleştir; macOS ve web Excel'de bu eklenti yoktur
PLX-DAQ düğmeleri çalışmıyorMakrolar engellenmişDosya Özellikleri'nde Engellemeyi kaldır'ı işaretle, ardından İçeriği Etkinleştir'e tıkla
PLX-DAQ porta bağlanamıyorYanlış ya da çok yüksek COM numarasıAygıt Yöneticisi'nde portun Bağlantı Noktası Ayarları > Gelişmiş bölümünden COM numarasını küçük bir değere (örneğin COM4) çek
Sıcaklık ve nem yerine HATA ya da nanDHT11 bağlantısı, eksik pull-up ya da çok sık okumaKabloları kontrol et, iki okuma arasında en az 1 saniye bekle
Ölçüm aralığını ihtiyacına göre seç: oda sıcaklığı gibi yavaş değişen büyüklükler için dakikada bir ölçüm fazlasıyla yeterlidir ve bir günlük kayıt 1440 satırda kalır. Excel'in bir sayfası en fazla 1.048.576 satır alır; saniyede 10 ölçüm alırsan bu sınıra yaklaşık 29 saatte ulaşırsın. Gürültülü sensörlerde Arduino'da birkaç ölçümün ortalamasını alıp tek satır göndermek hem dosyayı küçültür hem de grafiği yumuşatır.

Excel'e veri aktarma ile proje fikirleri

  • Soğuma eğrisi: Sıcak bir bardak suyun soğumasını su geçirmez DS18B20 ile ölç, Excel'de üstel eğilim çizgisi ekleyerek Newton'un soğuma yasasını incele.
  • Mini hava istasyonu: BME280 ile sıcaklık, nem ve basıncı bir hafta boyunca kaydet, gece ve gündüz arasındaki farkı grafikle göster.
  • Bitki sulama günlüğü: Toprak nem sensörünün değerini sulamadan önce ve sonra kaydedip toprağın ne kadar sürede kuruduğunu bul.
  • Hareket analizi: HC-SR04 ile mesafe-zaman tablosu çıkar, Excel'de ardışık satırların farkından hız ve ivme hesapla.
  • Pil boşalma eğrisi: Bir pilin gerilimini gerilim bölücüyle ölçerek saatlerce kaydet ve gerilimin zamana göre nasıl düştüğünü incele.
  • Bilim fuarı projesi: Farklı renkteki kutuların güneş altında ne kadar ısındığını karşılaştır; daha fazla fikir için TÜBİTAK Arduino proje fikirleri yazısına bak.

Hangi yöntemi seçersen seç temel aynıdır: Arduino'da temiz ve tutarlı CSV satırları üret, bilgisayarda bunları doğru ayırıcıyla Excel'e taşı. Hızlı bir kontrol için Serial Monitor, sınıfta canlı gösteri için Data Streamer, Excel'i Arduino'dan yönetmek için PLX-DAQ, uzun ve otomatik kayıt için Python en iyi sonucu verir. BlueGrays uygulamasında DHT11 ile sıcaklık ve nem ölçümü, LDR ile ışık şiddeti okuma ve ESP32 sıcaklık kaydedici gibi projeleri devre şemaları ve kodlarıyla adım adım bulabilir, ölçtüğün verileri bu yöntemlerle Excel'e aktarabilirsin.

Sıkça sorulan sorular

Arduino verileri Excel'e nasıl aktarılır?

En kolay yol, Arduino'da ölçümleri virgülle ayrılmış satırlar hâlinde Serial.println() ile göndermek ve bu satırları Excel'e almaktır. Windows'ta Microsoft 365 kullanıyorsan Data Streamer eklentisi veriyi canlı aktarır, PLX-DAQ makrosu da benzer işi yapar. Mac ve Linux'ta ise Python ve pyserial ile CSV dosyasına kaydetmek en pratik çözümdür.

Excel Data Streamer Mac'te çalışır mı?

Hayır. Data Streamer bir COM eklentisidir ve yalnızca Windows'taki Microsoft 365 masaüstü Excel'de bulunur; macOS'taki Excel'de ve web sürümünde yoktur. Mac'te Python ile CSV ya da .xlsx dosyası oluşturabilir veya CoolTerm gibi bir terminal programıyla seri çıktıyı dosyaya kaydedebilirsin.

PLX-DAQ 64 bit Excel'de çalışır mı?

Parallax'ın orijinal PLX-DAQ'ı yalnızca 32 bit Excel'de çalışır. Arduino topluluğunun geliştirdiği PLX-DAQ v2 ise 64 bit Excel'i de destekler ve aynı CLEARDATA, LABEL ve DATA komutlarını kullanır. İki sürüm de VBA makrosu olduğu için yalnızca Windows'ta çalışır ve makroların etkinleştirilmesi gerekir.

Arduino Serial Monitor verileri nasıl kaydedilir?

Serial Monitor'de bir kaydet düğmesi yoktur; satırları fareyle seçip Ctrl+C ile kopyalar, bir metin dosyasına ya da doğrudan Excel'e yapıştırırsın. Zaman damgası seçeneğini açarsan her satıra bilgisayarın saati eklenir. Uzun kayıtlarda PuTTY ya da CoolTerm'in dosyaya kaydetme özelliğini veya bir Python betiğini kullanmak daha güvenlidir.

CSV dosyası Excel'de neden tek sütunda açılıyor?

Türkçe bölge ayarlı Windows'ta Excel, sütun ayırıcı olarak noktalı virgül bekler; virgülle ayrılmış bir dosyaya çift tıklayınca tüm değerler A sütununda kalır. Verileri Veri > Metni Sütunlara Dönüştür ile virgülden bölebilir ya da dosyayı Veri > Metinden/CSV'den ile içe aktarıp sınırlayıcıyı elle seçebilirsin. Dosyayı Python ile üretiyorsan ayırıcıyı baştan noktalı virgül yapmak en kalıcı çözümdür.

Arduino verileri bilgisayar olmadan nasıl kaydedilir?

Bilgisayar yoksa ölçümleri bir SD kart modülüne CSV dosyası olarak yazabilir, tarih ve saati bir RTC modülünden alabilirsin; kartı sonra bilgisayara takıp dosyayı Excel'de açarsın. Wi-Fi'li bir ESP32 kullanıyorsan verileri doğrudan Google E-Tablolar'a gönderebilirsin. Raspberry Pi Pico ise MicroPython ile kendi flaş belleğine CSV dosyası yazabilir.

Tüm projeleri gör
DHT11 İle Sıcaklık Ve Nem
#55Orta

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

4.7(47)
73
Ldr İle Işık Şiddeti Okuma
#11Başlangıç

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

4.6(81)
139
HC-SR04 Mesafe Ölçme (Serial Ekran)
#27Başlangıç

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

4.6(46)
71
ESP32 LDR Modülü ile Işık Şiddeti Okuma
#113Başlangıç

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.

4.6(36)
55
ESP32 Sıcaklık Loglayıcı (DHT22 + DS1307 RTC + microSD + OLED)
#144İleri
Premium

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,

4.7(7)
12
ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı)
#117Orta

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.

4.8(38)
56
NTC ve 2x16 Lcd Ekran İle Sıcaklık Ölçümü
#44Başlangıç
Premium

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ı

4.5(33)
44
ESP32 RTC DS1307 ile Dijital Saat (I2C + LCD)
#120Orta
Premium

ESP32 RTC DS1307 ile Dijital Saat (I2C + LCD)

Bu projede DS1307 gerçek zaman saati (RTC) modülü ile 16x2 I2C LCD ekrana saat ve tarih bilgisi yansıtıyoruz. DS1307 pil destekli bir RTC'dir; ESP32 kapansa bile zamanı korur. Her iki modül de aynı I2C hattını (SDA/SCL) paylaşır, böylece sadece iki sinyal kablosu ile çoklu cihaz kontrolü öğrenmiş oluruz. Bu proje sayesinde I2C haberleşme protokolünü, RTC modüllerinin çalışma prensibini ve LCD ekranda dinamik veri gösterimini pratik bir şekilde öğreneceksiniz.

4.6(26)
40