Kirim Data Arduino ke Excel: Data Streamer, PLX-DAQ, CSV, dan Python
Kirim data Arduino ke Excel dengan empat cara: Serial Monitor ke CSV, Data Streamer, PLX-DAQ, dan pencatatan dengan Python, plus timestamp, grafik, dan tabel data untuk laporan praktikum.
Memasukkan data Arduino ke Excel berarti mengirim nilai yang dibaca Arduino dari sensor-sensornya ke komputer lewat kabel USB, lalu mengumpulkannya baris demi baris di spreadsheet. Arduino menulis setiap pembacaan ke port serial sebagai satu baris yang dipisahkan koma; di komputer ada empat cara umum untuk membawa baris-baris itu ke Excel: menyimpan output Serial Monitor sebagai file CSV, add-in Data Streamer dari Microsoft, makro PLX-DAQ, dan pencatatan otomatis dengan Python. Idenya sama di semua cara: setiap baris yang dikirim Arduino menjadi satu baris di Excel, dan setiap koma memulai kolom baru.
Di panduan ini kami memakai sensor suhu dan kelembapan DHT11 dan sensor cahaya LDR sebagai contoh. Pertama kami membandingkan keempat metode supaya kamu bisa memilih yang tepat, lalu kami menyiapkan masing-masing langkah demi langkah. Setelah itu kamu akan melihat cara menambahkan timestamp ke pembacaanmu, cara memilih jenis grafik yang tepat di Excel, dan cara membuat tabel data laporan praktikum yang bisa kamu pakai di sekolah atau untuk lomba sains. Bagian terakhir menunjukkan cara melakukan hal yang sama dengan ESP32 dan Raspberry Pi Pico, serta cara mengatasi error yang paling sering muncul.

Bagaimana cara kerja pengiriman data Arduino ke Excel?
Arduino tidak bisa menulis langsung ke Excel; yang dilakukannya hanya mengirim teks ke port serial dengan Serial.print(). Komputer mengakses port itu dengan nama seperti COM3 di Windows, /dev/cu.usbmodem… di macOS, atau /dev/ttyACM0 di Linux. Bahasa bersama antara Excel dan Arduino adalah CSV (Comma Separated Values, nilai yang dipisahkan koma): baris seperti 12.0,23.0,45,78 dipecah menjadi empat kolom. Jadi sketch-mu cukup mengikuti dua aturan: selalu taruh pemisah yang sama di antara nilai, dan akhiri setiap pembacaan dengan Serial.println(). Dasar-dasar port serial bisa kamu baca lengkap di panduan Serial Monitor Arduino.
| Metode | Platform | Transfer langsung | Informasi waktu | Paling cocok untuk |
|---|---|---|---|---|
| Serial Monitor + CSV | Windows, macOS, Linux | Tidak, disalin setelah pengujian | Opsi timestamp di IDE | Eksperimen singkat, pengecekan cepat |
| Excel Data Streamer | Windows, Excel desktop Microsoft 365 | Ya | millis() yang dikirim Arduino | Grafik langsung di kelas |
| PLX-DAQ v2 | Windows, Excel desktop (makro) | Ya | Perintah DATE, TIME, dan TIMER | Pencatatan lama ke sheet yang sudah disiapkan |
| Python (pyserial + openpyxl) | Windows, macOS, Linux | Ya, ke file | Jam komputer | Laporan otomatis, pencatatan berjam-jam |
| Modul kartu SD | Tidak butuh komputer | Tidak, kartu dibaca belakangan | Modul RTC | Pengukuran lapangan dengan daya baterai |
Contoh rangkaian: pengkabelan DHT11 dan LDR
Contoh rangkaiannya punya dua sensor. DHT11 mengukur suhu dengan resolusi 1 °C dan kelembapan dengan resolusi 1%; akurasinya sekitar ±2 °C dan ±5% kelembapan relatif, dan sensor ini hanya butuh satu pin data. LDR adalah fotoresistor yang hambatannya turun ketika cahaya bertambah; kamu membuat pembagi tegangan dengan resistor 10 kΩ dan menghubungkan titik tengahnya ke pin analog. Dengan pengkabelan di bawah, nilai analog naik ketika cahaya makin terang. Angka dari LDR bukan dalam lux, melainkan level cahaya relatif, jadi yang jujur adalah memberinya label “cahaya (%)” di laporanmu. Kalau butuh nilai lux sungguhan, pakai sensor cahaya terkalibrasi seperti BH1750.
| Koneksi | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VCC DHT11 (+) | 5V | 3V3 | Memakai sensor bawaan |
| DATA DHT11 (OUT) | D2 | GPIO 4 | Sensor bawaan (ADC4) |
| GND DHT11 (-) | GND | GND | - |
| Kaki 1 LDR | 5V | 3V3 | 3V3(OUT), pin 36 |
| Kaki 2 LDR + 10 kΩ | A0 | GPIO 34 | GP26 (ADC0), pin 31 |
| Ujung lain resistor 10 kΩ | GND | GND | AGND, pin 33 |

Kode Arduino: mengirim pembacaan sebagai baris CSV
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}Sketch ini memakai DHT sensor library dari Adafruit; ketika menginstalnya dari Library Manager, setujui juga instalasi dependensinya, Adafruit Unified Sensor. Pembacaan diambil setiap 2 detik dan diatur waktunya dengan millis(), bukan delay(), jadi loop() tidak pernah terblokir (detailnya di panduan millis dan delay). Setiap baris berisi kolom waktu, suhu, kelembapan, dan cahaya sesuai urutan itu. Serial.print(sicaklik, 1) mencetak angka dengan satu angka desimal dan selalu dengan titik. Kalau sensor tidak bisa dibaca, sketch mencetak “HATA” (bahasa Turki untuk “error”) alih-alih angka, jadi baris yang salah langsung bisa kamu kenali dan saring di tabel. Baris header di setup() berguna untuk metode Serial Monitor dan Python; kamu boleh menghapusnya kalau memakai Data Streamer. Untuk pembacaan yang berubah pelan seperti suhu ruangan, atur ARALIK (interval) ke 60000 supaya pembacaan diambil sekali per menit.
Metode 1: menyimpan output Serial Monitor sebagai CSV
- Upload sketch-nya, buka Tools > Serial Monitor, lalu pilih 9600 baud dari menu kecepatan.
- Kalau mau, aktifkan timestamp: klik ikon jam di kanan atas jendela di Arduino IDE 2, atau kotak centang timestamp di bagian bawah di IDE 1.8. Waktu komputer ditambahkan di awal setiap baris dalam bentuk 14:03:21.512 ->.
- Ketika eksperimen selesai, pilih baris-barisnya dengan mouse lalu salin dengan Ctrl+C (Cmd+C di macOS). Kalau ingin menyimpan data mentahnya, tempel ke Notepad lalu simpan sebagai olcum.csv dengan tipe file All Files.
- Di Excel, klik sel A1 di sheet kosong lalu tempel dengan Ctrl+V; semua baris masuk ke kolom A.
- Dengan kolom A terpilih, buka Data > Text to Columns, pilih Delimited, lalu centang Comma sebagai pemisah. Kalau timestamp aktif, centang juga Space: waktu masuk ke kolom pertama dan tanda “->” ke kolom kedua, yang kemudian kamu hapus.
- Di langkah terakhir, klik Advanced dan atur pemisah desimal ke titik; dengan begitu nilai seperti 23.5 dikenali sebagai angka walaupun Excel-mu memakai koma untuk desimal. Klik Finish lalu simpan file sebagai .xlsx.
Metode ini sangat praktis untuk beberapa ratus baris; dengan ribuan baris, memilihnya jadi merepotkan dan jendela IDE melambat. Untuk rekaman yang berlangsung berjam-jam, program terminal seperti PuTTY (Session > Logging > All session output) atau CoolTerm, yang berjalan di Windows, macOS, dan Linux (Connection > Capture to Text/Binary File), menulis setiap baris yang masuk langsung ke file. File itu kamu bawa ke Excel dengan langkah yang sama. Ingat: selama program terminal atau Serial Monitor memakai port, add-in Excel dan Python tidak bisa terhubung ke port itu.
Metode 2: data langsung dengan Excel Data Streamer
Data Streamer adalah add-in gratis yang dibuat Microsoft untuk pendidikan; add-in ini mengalirkan baris CSV dari port serial langsung ke worksheet. Add-in ini sudah ikut dengan Excel desktop di Microsoft 365 (versi 1902 ke atas), jadi kamu hanya perlu mengaktifkannya. Karena berupa COM add-in, Data Streamer bekerja hanya di Windows; add-in ini tidak tersedia di Excel untuk macOS atau Excel di browser. Di sisi Arduino tidak ada yang perlu diubah: sketch di atas langsung bekerja di 9600 baud, kecepatan default add-in ini.
- Di Excel, buka File > Options > Add-ins, pilih COM Add-ins di daftar Manage di bagian bawah, lalu klik Go.
- Centang Microsoft Data Streamer for Excel lalu klik OK; tab Data Streamer muncul di ribbon.
- Tutup Serial Monitor di Arduino IDE; satu port serial hanya bisa dibuka oleh satu program dalam satu waktu.
- Pilih port COM Arduino dengan tombol Connect a Device, lalu klik Start Data. Tergantung bahasa Excel-mu, nama tombol bisa tampil dalam terjemahan.
- Excel membuat tiga sheet: Data In (data masuk), Data Out (data yang dikirim ke Arduino), dan Settings. Di sheet Settings, atur Data Channels ke 4 dan naikkan Data Rows supaya riwayat yang terlihat di tabel lebih banyak.
- Untuk menyimpan rekaman permanen, mulai merekam dengan Record Data; ketika kamu menghentikannya dengan Stop Recording, pembacaan disimpan ke file CSV. File itu bisa kamu putar ulang nanti dengan Import Data File.
Bagian atas sheet Data In menampilkan nilai terbaru (Current Data), dan di bawahnya ada tabel tempat pembacaan sebelumnya bergulir (Historical Data). Kalau kamu memilih tabel ini dan menambahkan grafik garis atau scatter dengan Insert > Recommended Charts, grafiknya diperbarui sendiri setiap ada pembacaan baru; ini ideal untuk menunjukkan ke kelas bagaimana kurva cahaya langsung turun begitu kamu menutup sensor dengan tangan. Di sheet Settings, Data Interval (ms) menentukan seberapa sering sheet diperbarui, dan Data Orientation menentukan apakah data terbaru muncul di atas atau di bawah tabel. Nilai yang kamu ketik di sheet Data Out juga dikirim ke Arduino sebagai baris CSV; Arduino bisa membacanya dengan Serial.parseInt(), jadi misalnya kamu bisa mengatur ambang alarm dari Excel.
Metode 3: menulis ke Excel baris demi baris dengan makro PLX-DAQ
PLX-DAQ (Parallax Data Acquisition) adalah makro VBA yang berjalan di dalam Excel dan mengubah perintah khusus yang datang dari port serial menjadi sel Excel. Karena versi asli dari Parallax hanya bekerja di Excel 32-bit, sekarang orang memakai PLX-DAQ v2 yang dikembangkan komunitas Arduino; versi ini mendukung Excel 64-bit dan berupa satu file .xlsm. Karena makronya bergantung pada Windows API, PLX-DAQ juga hanya berjalan di Windows. Bedanya dengan Data Streamer: di sini Arduino yang mengendalikan Excel. Arduino menulis header, mengosongkan sheet, dan menyuruh Excel menambahkan tanggal dan waktu.
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}| Perintah | Fungsinya |
|---|---|
| CLEARDATA | Menghapus pembacaan lama di sheet |
| LABEL,Tarih,Saat,... | Menulis header kolom ke baris 1 |
| DATA,... | Menulis pembacaan baru ke baris kosong berikutnya |
| DATE dan TIME | Diganti dengan tanggal dan waktu komputer di baris DATA |
| TIMER | Detik sejak pencatatan dimulai atau sejak RESETTIMER |
| RESETTIMER | Mengembalikan penghitung TIMER ke nol |
| ROW,SET,2 | Menentukan baris tempat data berikutnya ditulis |
| CELL,SET,G2,25 / CELL,GET,G2 | Menulis nilai ke sel, atau mengirim nilai sel kembali ke Arduino |
| SAVEWORKBOOK | Menyimpan file Excel |
- Unduh file PLX-DAQ v2 lalu ekstrak dari zip. Klik kanan file .xlsm dan centang Unblock di Properties; secara default Office memblokir makro di file dari internet.
- Buka file-nya lalu klik Enable Content di bilah kuning di bagian atas.
- Tutup Serial Monitor di Arduino IDE lalu klik tombol Open PLX DAQ UI di sheet.
- Di jendela yang terbuka, ketik hanya nomor COM di kotak Port (5 untuk COM5), pilih 9600 sebagai Baud, lalu klik Connect.
- Kalau header tidak muncul, tekan tombol reset Arduino: setup() berjalan lagi, perintah CLEARDATA dan LABEL sampai ke Excel, dan baris-baris mulai masuk.
- Kalau sudah selesai, klik Disconnect dan, kalau mau, simpan datanya sebagai file .xlsx terpisah.
Metode 4: file CSV dan Excel otomatis dengan Python
Kalau kamu memakai Mac atau Linux, berencana mencatat berjam-jam, atau bosan menyusun laporan secara manual setiap kali, Python adalah pilihan paling fleksibel. Pertama, instal dua paket di terminal dengan python -m pip install pyserial openpyxl. Script pertama di bawah mendengarkan Arduino dan menulis setiap pembacaan, bersama waktu komputer, ke file deney_olcumleri.csv. Topik seperti mencari port, reset otomatis, dan grafik langsung sudah kami bahas lengkap di panduan komunikasi serial Arduino dan 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)Ada tiga detail di script ini yang membuatnya kompatibel dengan Excel. Encoding utf-8-sig menambahkan BOM tak terlihat di awal file; tanpa itu, Excel menampilkan karakter seperti “°C” atau huruf beraksen secara kacau. Konstanta AYIRICI (pemisah) dan ONDALIK (desimal) diatur ke titik koma dan koma desimal, format yang diharapkan Excel dengan pengaturan regional Indonesia dan sebagian besar Eropa daratan; dengan pengaturan AS atau Inggris, cukup ubah keduanya menjadi koma dan titik. f.flush() langsung menulis setiap baris ke disk, jadi kalau komputer mati atau kabel terlepas, paling banyak kamu hanya kehilangan pembacaan terakhir. Setelah kamu menghentikan script dengan Ctrl+C, cukup klik dua kali file-nya dan kolom-kolomnya terbuka dengan pemisahan yang benar. Kalau ingin melihat file selama pencatatan masih berjalan, buka salinannya, karena Excel bisa mengunci file yang dibukanya.
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)Script kedua mengubah CSV menjadi file .xlsx sungguhan. Di dalam .xlsx, angka disimpan sebagai angka, bukan teks, jadi masalah pemisah dan desimal hilang sepenuhnya; file ini terbuka dengan cara yang sama di Excel berbahasa Inggris, Jerman, Turki, atau Indonesia. Script ini juga menambahkan tabel ringkasan berisi rata-rata, minimum, maksimum, dan simpangan baku, ditambah dua grafik scatter untuk suhu dan cahaya. Rumus ditulis ke file dengan nama Inggrisnya (AVERAGE, MIN, MAX, STDEV), dan Excel menerjemahkannya ke bahasanya sendiri ketika membuka file. Baris delete = False mencegah masalah label sumbu tidak muncul di grafik yang dibuat dengan openpyxl versi terbaru.
Menambahkan timestamp: millis(), jam komputer, atau RTC
| Sumber | Cara mendapatkannya | Kelebihan | Kekurangan |
|---|---|---|---|
| millis() | millis() / 1000.0 di sketch Arduino | Tanpa hardware tambahan, resolusi milidetik | Kembali ke nol setiap reset, bukan tanggal sungguhan, overflow setelah 49,7 hari |
| Jam komputer | datetime Python, DATE dan TIME PLX-DAQ, timestamp Serial Monitor | Tanggal dan waktu sungguhan, tanpa pengaturan | Komputer harus tetap terhubung |
| Modul RTC (DS3231, DS1307) | rtc.now() dengan RTClib | Bekerja tanpa komputer, baterai menjaga jam tetap berjalan | Butuh modul tambahan; DS1307 bisa meleset beberapa detik per hari |
| Waktu internet (NTP) | configTime() di ESP32 | Waktu akurat sampai hitungan detik tanpa perlu diatur | Butuh koneksi Wi-Fi |
Untuk eksperimen yang terhubung ke komputer, jam komputer adalah pilihan termudah, dan script Python kami menuliskannya di setiap baris. Menyimpan juga waktu berjalan yang dikirim Arduino adalah kebiasaan yang baik: waktu ini menunjukkan interval sebenarnya di antara pembacaan, dan kamu langsung sadar kalau ada baris yang hilang. Kalau kamu mengirim nilai millis() mentah dari Arduino, kamu bisa mengubahnya ke detik di Excel dengan =B2/1000, atau ke menit dengan =B2/60000. Kalau Arduino akan bekerja tanpa komputer, misalnya mencatat ke kartu SD, sebaiknya ambil tanggal dan waktu dari modul jam RTC; detail pencatatan CSV ke kartu SD ada di panduan modul kartu SD. Dengan ESP32 kamu juga bisa mengambil waktu dari internet: jam NTP dengan ESP32.
Membuat grafik di Excel
- Pilih kolom waktu dan suhu bersama header-nya; kalau kolomnya tidak bersebelahan, tahan Ctrl ketika memilih kolom kedua.
- Pilih jenis scatter dengan garis dari Insert > Charts > Scatter (X, Y).
- Pakai tombol + di samping grafik untuk mengaktifkan Axis Titles, lalu beri nama sumbu beserta satuannya: “Waktu (dtk)” dan “Suhu (°C)”.
- Untuk menambahkan seri cahaya, klik kanan grafik lalu tambahkan kolom cahaya dengan Select Data > Add; karena skalanya sangat berbeda, klik kanan seri itu lalu pilih Format Data Series > Secondary Axis.
- Klik kanan sumbu vertikal lalu tetapkan nilai minimum dan maksimum di Format Axis, supaya perubahan 1 °C tidak terlihat seperti lonjakan besar.
Kenapa grafik scatter, bukan grafik garis? Grafik Line di Excel memperlakukan nilai di sumbu horizontal sebagai label berjarak sama; kalau ada pembacaan yang hilang atau intervalnya kamu ubah, sumbu waktu diam-diam jadi tidak akurat. Grafik Scatter (X, Y) menempatkan setiap titik di waktu sebenarnya, dan itulah yang diharapkan dari grafik ilmiah. Kalau kamu hanya membandingkan beberapa nilai tetap, seperti suhu rata-rata di tiga ruangan berbeda, grafik kolom lebih mudah dibaca. Kalau sensornya berderau, klik kanan seri lalu haluskan kurvanya dengan Add Trendline > Moving Average.
Contoh laporan praktikum: tabel pengukuran
Misalkan pertanyaan eksperimenmu adalah: “Bagaimana suhu, kelembapan, dan level cahaya udara di dekat lampu meja berubah ketika lampu dinyalakan?” Kami menaruh sensor sekitar 15 cm dari lampu dan mengatur ARALIK di sketch ke 60000, artinya satu pembacaan per menit. Lampu kami nyalakan di menit ke-1 dan matikan di menit ke-6. Nilai di bawah adalah contoh nilai tipikal yang bisa kamu dapat dengan susunan ini; dua baris terakhir adalah ringkasan yang dihitung dengan rumus Excel:
| Waktu (mnt) | Suhu (°C) | Kelembapan (%) | Cahaya (%) | Status |
|---|---|---|---|---|
| 0 | 23 | 46 | 14 | Lampu mati |
| 1 | 23 | 46 | 81 | Lampu dinyalakan |
| 2 | 24 | 45 | 82 | Lampu menyala |
| 3 | 25 | 44 | 82 | Lampu menyala |
| 4 | 26 | 43 | 83 | Lampu menyala |
| 5 | 26 | 42 | 83 | Lampu menyala |
| 6 | 26 | 42 | 15 | Lampu dimatikan |
| 7 | 25 | 43 | 14 | Lampu mati |
| 8 | 24 | 45 | 14 | Lampu mati |
| Rata-rata | 24,7 | 44,0 | 52,0 | - |
| Minimum / maksimum | 23 / 26 | 42 / 46 | 14 / 83 | - |
Baris ringkasan kamu hitung di Excel dengan =AVERAGE(B2:B10), =MIN(B2:B10), dan =MAX(B2:B10); untuk menunjukkan seberapa tersebar pembacaannya, kamu juga bisa menambahkan =STDEV(B2:B10). Ketika menafsirkan hasil, jelaskan pola di tabel: cahaya melonjak dari 14% ke 81% begitu lampu menyala, sementara suhu naik pelan sebesar 3 °C dalam sekitar 3 menit; ini disebut inersia termal. Ketika lampu mati, cahaya langsung turun, tapi suhu tetap tinggi selama beberapa menit lagi. Kelembapan relatif turun ketika suhu naik, karena udara yang lebih hangat bisa menampung lebih banyak uap air walaupun jumlah air di dalamnya tetap sama. Lampu pijar atau halogen menunjukkan efek ini dengan jelas; dengan lampu LED, kenaikan suhunya jauh lebih kecil.
- Tujuan: pertanyaan penelitian dan hipotesismu dalam satu kalimat.
- Alat dan bahan: model board, sensor, resistor, dan software yang kamu pakai (Arduino IDE, Excel).
- Metode: di mana sensor ditempatkan, interval pengukuran (misalnya 60 dtk), berapa lama eksperimen berlangsung, dan metode apa yang kamu pakai untuk memasukkan data ke Excel.
- Tabel data: setiap header kolom harus mencantumkan satuannya; pakai tabel ringkasan di dalam teks dan sertakan data mentah lengkap sebagai lampiran.
- Grafik: grafik scatter dengan judul sumbu, satuan, dan kejadian yang ditandai (lampu dinyalakan, dimatikan).
- Kesimpulan dan sumber kesalahan: bandingkan temuanmu dengan hipotesis dan tuliskan keterbatasan seperti akurasi DHT11 ±2 °C, LDR yang tidak dikalibrasi, dan jarak sensor dari lampu.
Mengirim data ESP32 ke Excel
Semua metode bekerja dengan cara yang sama di ESP32; bagi Data Streamer dan PLX-DAQ, ESP32 hanyalah port serial biasa. Ada tiga hal yang berubah: pembacaan analog 12-bit (0–4095), pembagi LDR diberi daya dari 3,3 V, dan sebaiknya kamu memilih salah satu pin ADC1 (GPIO 32–39) sebagai input analog, karena pin ini tetap bekerja ketika Wi-Fi aktif. Board ESP32 biasanya dipakai di 115200 baud, jadi sesuaikan kecepatannya di script Python, di Data Streamer, dan di PLX-DAQ. Pesan bootloader yang muncul di port serial ketika board menyala bukan angka, jadi script Python tetap melewatinya. Kalau ingin mengirim pembacaan ke cloud tanpa menghubungkan ke komputer sama sekali, lihat panduan mencatat data ESP32 ke Google Sheets.
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}Mencatat CSV dengan Raspberry Pi Pico (MicroPython)
Kalau kamu memakai MicroPython di Raspberry Pi Pico, kamu bisa menulis pembacaan ke file CSV di memori flash board itu sendiri alih-alih mengirimnya ke komputer; dengan begitu kamu sama sekali tidak butuh komputer dan bisa meninggalkan Pico, dengan daya dari power bank, di mana pun kamu ingin mengukur. Kode di bawah memakai sensor suhu bawaan (ADC4), yang tidak butuh hardware tambahan, dan LDR yang terhubung ke GP26, lalu menulis file dengan titik koma dan koma desimal supaya cocok dengan Excel berformat regional Indonesia atau Eropa. Karena sensor bawaan mengukur suhu chip, hasilnya bisa beberapa derajat di atas suhu ruangan; pakai sensor eksternal untuk pengukuran yang akurat. Kalau kamu baru mengenal MicroPython, mulailah dari panduan Apa Itu Raspberry Pi Pico?

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)Kalau kamu menyimpan kode ke Pico di Thonny sebagai main.py, board akan mulai mencatat sendiri setiap kali dinyalakan; kalau file-nya sudah ada, file itu tidak dihapus, dan baris baru ditambahkan di akhir. Ketika pengukuran selesai, hubungkan Pico ke komputer, klik Stop di Thonny, klik kanan olcum.csv di panel View > Files, unduh ke komputermu, lalu buka di Excel. Dengan satu baris sekitar 20 byte setiap 10 detik, file bertambah kira-kira 170 KB per hari; di sistem file Pico, itu masih menyisakan banyak ruang untuk pencatatan beberapa hari. Kalau Excel-mu memakai titik untuk desimal, hapus pemanggilan replace() di fungsi tr().
Error yang sering muncul dan cara mengatasinya
| Gejala | Penyebab | Solusi |
|---|---|---|
| Port tidak mau terbuka, “Access is denied” | Serial Monitor, Serial Plotter, atau program lain sedang memakai port | Tutup semua jendela yang memakai port; port hanya bisa dibuka oleh satu program dalam satu waktu |
| Semua nilai masuk ke satu kolom | Pemisah CSV tidak cocok dengan pengaturan regional Excel | Pecah di tanda koma dengan Data > Text to Columns, atau atur pemisah ke ; di Python |
| 23.5 berubah jadi tanggal (23 Mei) atau tetap sebagai teks | Excel dengan format regional Eropa atau Indonesia mengharapkan koma desimal | Atur pemisah desimal ke titik di Text to Columns > Advanced, atau hapus centang Use system separators di File > Options > Advanced |
| Huruf beraksen dan tanda ° tampil kacau | CSV disimpan sebagai UTF-8 tanpa BOM | Pakai encoding="utf-8-sig" di Python, atau hindari karakter khusus di header |
| Tabel penuh karakter sampah | Baud rate tidak cocok | Samakan kecepatan di Serial.begin() dengan Data Streamer, PLX-DAQ, atau Python |
| Tidak ada tab Data Streamer | Add-in belum diaktifkan atau versi Excel-mu tidak mendukungnya | Aktifkan di COM Add-ins; add-in ini tidak ada di Excel untuk macOS atau versi web |
| Tombol PLX-DAQ tidak berfungsi | Makro diblokir | Centang Unblock di Properties file, lalu klik Enable Content |
| PLX-DAQ tidak bisa terhubung ke port | Nomor COM salah atau terlalu tinggi | Di Device Manager, ubah nomor COM ke nilai rendah (misalnya COM4) di Port Settings > Advanced milik port tersebut |
| HATA atau nan, bukan suhu dan kelembapan | Pengkabelan DHT11, pull-up yang tidak ada, atau pembacaan terlalu sering | Periksa kabel dan tunggu minimal 1 detik di antara dua pembacaan |
Ide proyek dengan pencatatan data ke Excel
- Kurva pendinginan: ukur bagaimana segelas air panas mendingin dengan DS18B20 tahan air, tambahkan trendline eksponensial di Excel, lalu pelajari hukum pendinginan Newton.
- Stasiun cuaca mini: catat suhu, kelembapan, dan tekanan dengan BME280 selama seminggu, lalu buat grafik perbedaan antara malam dan siang.
- Catatan penyiraman tanaman: rekam nilai sensor kelembapan tanah sebelum dan sesudah penyiraman, lalu cari tahu berapa lama tanah mengering.
- Analisis gerak: buat tabel jarak-waktu dengan HC-SR04, lalu hitung kecepatan dan percepatan di Excel dari selisih antarbaris yang berurutan.
- Kurva pengosongan baterai: ukur tegangan baterai dengan pembagi tegangan, catat selama berjam-jam, lalu pelajari bagaimana tegangannya turun seiring waktu.
- Proyek lomba sains: bandingkan seberapa panas kotak dengan warna berbeda ketika dijemur di bawah matahari; untuk ide lainnya, lihat panduan ide proyek Arduino untuk lomba sains.
Metode mana pun yang kamu pilih, dasarnya sama: hasilkan baris CSV yang bersih dan konsisten di Arduino, lalu bawa ke Excel dengan pemisah yang tepat di komputer. Serial Monitor paling cocok untuk pengecekan cepat, Data Streamer untuk demo langsung di kelas, PLX-DAQ untuk mengendalikan Excel dari Arduino, dan Python untuk pencatatan panjang yang otomatis. Di aplikasi BlueGrays kamu akan menemukan proyek seperti “Suhu dan Kelembapan dengan DHT11”, “Mengukur Intensitas Cahaya dengan LDR”, dan pencatat data suhu ESP32, langkah demi langkah lengkap dengan skema rangkaian dan kode, dan data yang kamu ukur bisa kamu kirim ke Excel dengan metode-metode ini.
Pertanyaan umum
Bagaimana cara memasukkan data Arduino ke Excel?
Cara termudah adalah mengirim pembacaan dari Arduino sebagai baris yang dipisahkan koma dengan Serial.println(), lalu membawa baris-baris itu ke Excel. Di Windows dengan Microsoft 365, add-in Data Streamer mentransfer data secara langsung, dan makro PLX-DAQ melakukan pekerjaan serupa. Di Mac atau Linux, mencatat ke file CSV dengan Python dan pyserial adalah solusi paling praktis.
Apakah Excel Data Streamer bisa dipakai di Mac?
Tidak. Data Streamer adalah COM add-in dan hanya tersedia di Excel desktop Microsoft 365 untuk Windows; add-in ini tidak ada di Excel untuk macOS atau versi web. Di Mac kamu bisa membuat file CSV atau .xlsx dengan Python, atau menyimpan output serial ke file dengan program terminal seperti CoolTerm.
Apakah PLX-DAQ bisa dipakai di Excel 64-bit?
PLX-DAQ asli dari Parallax hanya bekerja di Excel 32-bit. PLX-DAQ v2, yang dikembangkan komunitas Arduino, juga mendukung Excel 64-bit dan memakai perintah CLEARDATA, LABEL, dan DATA yang sama. Kedua versi adalah makro VBA, jadi hanya berjalan di Windows dan butuh makro yang diaktifkan.
Bagaimana cara menyimpan data dari Serial Monitor Arduino?
Serial Monitor tidak punya tombol simpan; kamu memilih baris-barisnya dengan mouse, menyalinnya dengan Ctrl+C, lalu menempelkannya ke file teks atau langsung ke Excel. Kalau opsi timestamp kamu aktifkan, waktu komputer ditambahkan ke setiap baris. Untuk rekaman panjang, lebih aman memakai fitur pencatatan ke file di PuTTY atau CoolTerm, atau script Python.
Kenapa file CSV-ku terbuka dalam satu kolom di Excel?
Dengan pengaturan regional Indonesia dan banyak negara Eropa, Excel mengharapkan titik koma sebagai pemisah kolom, jadi ketika kamu mengklik dua kali file yang dipisahkan koma, semua nilai tetap di kolom A. Kamu bisa memecah data di tanda koma dengan Data > Text to Columns, atau mengimpor file dengan Data > From Text/CSV lalu memilih pemisahnya sendiri. Kalau file-nya kamu buat dengan Python, memakai pemisah yang diharapkan Excel-mu sejak awal adalah solusi yang paling tahan lama.
Bagaimana cara mencatat data Arduino tanpa komputer?
Tanpa komputer, kamu bisa menulis pembacaan ke modul kartu SD sebagai file CSV dan mengambil tanggal serta waktu dari modul RTC; nanti kartunya kamu masukkan ke komputer dan file-nya dibuka di Excel. Dengan ESP32 yang punya Wi-Fi, kamu bisa mengirim data langsung ke Google Sheets. Raspberry Pi Pico bisa menulis file CSV ke memori flash-nya sendiri dengan MicroPython.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Suhu dan Kelembapan dengan DHT11
Seberapa hangat kamarmu, dan apakah udaranya lembap atau kering? Sensor DHT11 mengukur suhu dan kelembapan, dan Arduino menulis nilainya di layar LCD dua baris, diperbarui setiap beberapa detik. Jika

Mengukur Intensitas Cahaya dengan LDR
Ingin melihat seberapa terang kamarmu dalam bentuk angka? LDR, komponen kecil yang bereaksi terhadap cahaya, mengukur cahaya di sekitarnya, dan Arduino menulis nilainya ke layar komputermu setiap sete

Pengukuran Jarak HC-SR04 (Tampilan Serial)
Sensor HC-SR04 bekerja persis seperti kelelawar yang mencari jalan dalam gelap: ia mengirim suara yang tidak bisa kamu dengar, mendengarkan pantulannya, dan mengukur seberapa jauh benda di depannya. A

Membaca Intensitas Cahaya dengan Modul LDR ESP32
Memantau secara real-time di Serial Monitor nilai ADC mentah modul LDR dan persentase cahaya relatif yang dihitung dari nilai acuan gelap dan terang. Persentase ini bukan pengukuran lux. Mengajarkan logika kalibrasi modul. Ideal dikerjakan sebelum Proyek 10, karena dipakai untuk menentukan nilai ambang.

Pencatat Data Suhu ESP32 (DHT22 + RTC DS1307 + microSD + OLED)
Buat pencatat suhu bercap waktu dengan ESP32! Baca suhu/kelembapan DHT22 setiap menit, ambil waktu sebenarnya dari RTC DS1307, dan catat ke kartu microSD sebagai CSV. OLED menampilkan suhu langsung (font besar), kelembapan, cap waktu, dan penghitung catatan. File /temp_log.csv bisa dibuka di Excel, Google Sheets, atau Python pandas; cocok untuk rumah kaca, suhu kamar, data laboratorium, penyimpanan makanan, atau sarang lebah.

Suhu dan Kelembapan DHT22 ESP32 (dengan Layar LCD)
Proyek ini mengukur suhu dan kelembapan sekitar dengan sensor DHT22 dan menampilkan datanya secara real-time di LCD I2C 16x2. Data dibaca dari sensor dengan protokol satu kabel lewat library Adafruit DHT. Proyek ini menjadi dasar untuk stasiun cuaca IoT, otomasi rumah pintar, atau sistem pemantauan lingkungan di rumah kaca. Komunikasi dengan DHT22 dilakukan lewat pin GPIO 4 ESP32.

Mengukur Suhu dengan NTC dan Layar LCD 2x16
Ukur suhu di sekitarmu dengan sensor yang mirip manik-manik kecil. Komponen bernama NTC ini makin mudah dilewati listrik ketika makin hangat; Arduino membaca perubahan itu, mengubahnya menjadi derajat

Jam Digital dengan ESP32 dan RTC DS1307 (I2C + LCD)
Di proyek ini, kita menampilkan waktu dan tanggal di layar LCD I2C 16x2 memakai modul jam real-time (RTC) DS1307. DS1307 adalah RTC berbaterai cadangan yang tetap menjaga waktu meskipun ESP32 dimatikan. Kedua modul berbagi bus I2C yang sama (SDA/SCL), sehingga kita belajar mengendalikan beberapa perangkat hanya dengan dua kabel sinyal. Lewat proyek ini kamu mendapat pengetahuan praktis tentang protokol komunikasi I2C, cara kerja modul RTC, dan tampilan data dinamis di LCD.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

