Cara Menambahkan Data Logger SD Card ke Proyek Arduino
() translation by (you can also view the original English article)
Proyek Arduino dapat bervariasi dari pengelola minuman rumahan hingga stasiun cuaca untuk otomatisasi rumah lebih lanjut. Seringkali anda ingin memasukkan data dari proyek-proyek ini. Dalam tutorial ini saya akan menunjukkan kepada anda cara mengintegrasikan SD Card dan modul jam nyata ke dalam proyek untuk memungkinkan pencatatan data waktu.
Kumpulkan Komponen, Alat, dan Bahan
Komponen
- Breadboard Standar
- Arduino tutorial ini menggunakan Nano, tetapi kebanyakan model dapat bekerja
- Papan breakout kartu microSD
- Kartu microSD
- Real Time Clock
- Sensor Kelembaban Suhu
- 22 Kawat pengait (beberapa warna)
- 9V Klip baterai dengan kabel kawat
Alat
- Besi solder
- Pateri
- Third hand tool
- Komputer dengan Arduino IDE untuk pemrograman
- Kabel USB sesuai untuk Arduino anda — Mini B untuk Nano
Bahan
Unduh pustaka Arduino berikut dari repositori mereka. Untuk setiap pustaka, unzip folder ke folder Arduino/pustaka. Ubah nama masing-masing folder menjadi SD, RTCLib, dan DHT. Arduino IDE tidak dapat menangani setrip di nama file.
- Adafruit SD library (wrapper untuk sdfat library) untuk bekerja dengan SD Card
- Adafruit RTCLib fork untuk membaca dan mengatur waktu di jam waktu nyata
- Adafruit DHT sensor Library untuk membaca suhu dan kelembaban
Sebuah Kata Tentang Memilih Pencatat Data
Pencatat data tersedia sebagai elemen terpisah dan dapat bervariasi dalam biaya mulai dari $ 35 hingga ratusan. Memilih logger yang tepat adalah keputusan penting dalam proyek. Akan sangat mengecewakan untuk mengambil proyek pengamat kedalaman laut untuk menemukan bahwa data selama setahun terakhir telah rusak.
Seperti halnya semua proyek anda perlu mempertimbangkan konsumsi daya tetapi ada beberapa fitur lain yang ingin anda sadari ketika memilih pencatat data untuk proyek tertentu.
Keadaan lingkungan
Mungkin proyek ini akan berada dalam kondisi yang keras. Goncangan fisik, suhu tinggi, kelembaban, dan kondisi lainnya akan mempengaruhi pilihan. Ada logger tersedia yang dapat menahan kondisi yang berbeda. Pastikan untuk mengetahui di mana proyek dan logger anda akan tinggal dan pilih teknologi yang tepat.
Tipe Antarmuka
Ada logger serial yang berbicara tentang protokol apa pun, I2C, RS232, CAN, SPI, dan banyak lagi. Protokol antarmuka akan mempengaruhi seberapa cepat data log dapat ditulis. Pastikan anda memilih logger yang sesuai dengan teknologi proyek dan menulis persyaratan kecepatan.
Log Retrieval
Tidak ada gunanya jika data yang dicatat tidak dapat diambil. Itu adalah pohon pepatah yang jatuh tanpa ada orang di sekitarnya untuk mendengarnya. Pastikan anda memahami bagaimana data akan diambil dari logger yang anda pilih. Dalam beberapa kasus chip IC logger diskrit, anda harus membangun antarmuka eksternal yang dapat anda gunakan untuk menarik data kembali dari chip.
Waktu
Beberapa logger hanya membuang data sementara yang lain memiliki cap waktu yang sangat akurat untuk catatan data. Seperti yang anda harapkan, semakin akurat cap waktu, umumnya semakin tinggi harganya. Jika proyek anda memerlukan pencatatan kecepatan yang sangat cepat yang cap waktu ke nanodetik, logger akan berjalan sedikit lebih dari logger yang tidak tahu jam berapa hari itu.
Kegigihan
Inilah yang anda inginkan terjadi ketika anda melampaui akhir penyimpanan. Skema bervariasi dari berhenti mencatat untuk mulai menimpa data tertua.
Jenis Media / Daya Tahan
Pastikan anda mengevaluasi berapa kali memori perangkat dapat ditimpa dan apa rencananya ketika mulai rusak. Jika anda harus mengganti seluruh pencatat setelah 10.000 penimpaan, nilainya akan tergantung pada berapa banyak tulis yang anda rencanakan untuk dibuat per detik.
SD Card Logger
Kelebihan untuk menggunakan Kartu SD untuk logger banyak. Itu relatif murah. Anda dapat memilih format logger anda sendiri dan apakah anda ingin cap waktu atau tidak. Media mudah diganti saat aus dan dapat dihapus dengan cepat dan dibaca oleh komputer standar.
Pencatatan SD Card memiliki beberapa kelemahan juga.
Ini bukan lingkungan kasar terbaik di mana uap air dapat mempengaruhi kontak. Ini juga mengkonsumsi banyak pin berharga pada mikro-controller. Antara waktu nyata (RTC) dan papan breakout SD itu mengkonsumsi enam pin dari berbagai jenis.
Saya memilih logger SD Card untuk tutorial ini karena kemudahan dan fleksibilitas bekerja dengan kartu SD untuk menulis dan membaca log. Lebih penting lagi, keterampilan menggunakan kartu SD dan RTC akan berguna untuk berbagai proyek lainnya.
Membangun Proyek
Ikuti langkah-langkah di bawah ini untuk merakit papan breadboard. Tutorial ini menggunakan sensor suhu dan kelembaban sederhana untuk mengumpulkan data untuk logger. Setelah mengikuti langkah-langkah anda harus memiliki papan breadboard yang terlihat mirip dengan diagram di bawah ini.



Pasang Papan Breakout SD
Papan breakout SD Card dilengkapi dengan lubang, ramah header breadboard, tetapi tidak terpasang. Sesi singkat penyolderan akan memperbaikinya dan memungkinkan anda untuk duduk di papan seperti yang ditunjukkan pada diagram.
Format dan Masukkan Kartu SD
Masukkan Kartu SD ke dalam komputer dan verifikasi bahwa itu diformat dengan sistem file FAT32. Anda mungkin memerlukan MicroSD untuk adaptor SD Card standar. Kartu SD dalam daftar komponen dilengkapi dengan adaptor. Masukkan Kartu SD dengan hati-hati ke dalam papan breakout.
Pasang Nyata Jam Waktu
The Real Time Clock, atau RTC, papan datang sebagai kit dan akan membutuhkan sedikit lebih banyak penyolderan untuk disatukan. Semua komponen termasuk dalam kit. Ikuti petunjuk langkah demi langkah untuk merakit papan termasuk melalui lubang header.
Pastikan anda memasukkan baterai yang disertakan ke dalam klip setelah pemasangan. Ini tidak akan berfungsi dengan benar tanpa baterai di tempatnya. The RTC hanya menarik dari baterai ketika tidak ada tegangan utama, sehingga baterai harus bertahun-tahun terakhir.
Memasang Klip Baterai 9V
Banyak kasus baterai seperti yang ada di daftar bagian atas dilengkapi dengan kabel yang tidak ramah dengan papan. Untuk membuat lead breadboard ramah solder kawat atau pin header ke ujung setiap kawat timah.
Sepatah Kata Tentang Pembaca Kartu SD
Pembaca SD Card dapat dibeli jauh lebih murah daripada yang direkomendasikan dalam tutorial ini. Namun, hasil tangkapannya adalah pembaca SD Card adalah teknologi 3-volt sedangkan Arduino menggunakan mikro-controller 5-volt.
Ini berarti bahwa untuk menggunakan pembaca Kartu SD dengan aman dengan Arduino, diperlukan pengonversi tingkat logika untuk mengonversi tegangan di antara keduanya. Ini menambah biaya dan kompleksitas. Pembaca yang ditentukan dalam daftar bagian mungkin sedikit lebih mahal, tetapi memiliki beberapa hal yang terjadi untuk itu.
- Ini memiliki konverter tingkat logika yang dibangun sehingga tidak ada komponen tambahan atau kabel yang diperlukan. Itu tidak menggunakan resistor untuk mengurangi tegangan yang dapat memperlambat membaca dan menulis ke kartu. Oleh karena itu, dapat ditransfer langsung ke Arduino dengan aman
- Ini menggunakan Kartu Micro SD untuk jejak yang sangat kompak
- Ada banyak kode dan contoh yang tersedia untuk itu
Pembaca menggunakan protokol SPI untuk berkomunikasi. Papan Arduino dilengkapi dengan pin tertentu yang dirancang untuk protokol ini. Meskipun dimungkinkan untuk menggunakan pin alternatif dalam keadaan darurat, Anda akan mendapatkan kinerja tercepat dan paling dapat diandalkan dengan menggunakan pin khusus perangkat keras.
Pin yang ditunjukkan dalam gambar skematik akurat untuk Arduino Uno atau Arduino Nano.
Memprogram Arduino
Dengan perangkat keras proyek dirakit, langkah selanjutnya adalah memprogramnya. Unduh zip yang dikemas dengan tutorial ini atau dari repositori github untuk proyek logging data ini.
- Buka
datalogger.ino
di Arduino IDE - Hubungkan Arduino Nano ke komputer dengan kabel mini USB-ke-USB
- Pastikan port serial diatur ke port komputer yang terdeteksi ketika Anda menghubungkan Arduino menggunakan menu Tools > Serial Port
- Pastikan papan diatur ke Arduino Nano w/ ATmega328 menggunakan menu Tools > Board
- Verifikasi bahwa pustaka sudah diinstal dengan benar dengan mengklik tombol Verifikasi dan memastikan tidak ada kesalahan
- Hubungkan baterai ke proyek. Ini tampaknya merupakan langkah yang aneh di sini, tetapi pembaca Arduino, RTC, sensor, dan Kartu SD semua menarik tegangan yang cukup yang saya temukan port USB saya tidak memberikan kekuatan yang cukup konsisten dan proyek terus ulang. Luangkan waktu untuk menghubungkan baterai 9V. Ketika saya melakukan ini, saya melihat indikator status yang memimpin pada Arduino tampak cerah
- Gunakan tombol Upload untuk mendorong kode ke Arduino
- Edit kode untuk mengomentari baris:
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__)));
Dengan meletakkan//
di awal baris. Pertama kali anda mengunggah kode, itu mengatur tanggal dan waktu RTC ke waktu kompilasi. Tetapi anda tidak ingin mengatur ulang waktu untuk mengkompilasi waktu setiap kali papan direset. Mengunggah kode tanpartc.adjust
ini di dalamnya akan meninggalkan waktu jam sendirian pada boot berikutnya - Unggah kode lagi dengan garis waktu yang dikomentari
- Buka jendela Serial Monitor dengan menekan Control-Shift-M dan pastikan itu diatur ke 19200 baud. Anda harus melihat Arduino menginisialisasi dengan output seperti contoh di bawah ini
1 |
Initializing datalogger with RTC version 1.0 |
2 |
Starting Temp and Humidity Sensor |
3 |
Starting SDCard reader and card |
4 |
Opening logfile for write. |
5 |
Starting Real Time Clock |
6 |
Unixtime: 1405787147 |
7 |
1405787148,2014/7/19 16:25:48,69.80,40.00 |
8 |
1405787151,2014/7/19 16:25:51,69.80,40.00 |
9 |
1405787155,2014/7/19 16:25:55,69.80,40.00 |
10 |
1405787158,2014/7/19 16:25:58,69.80,40.00 |
11 |
1405787162,2014/7/19 16:26:02,69.80,40.00 |
12 |
1405787165,2014/7/19 16:26:05,69.80,40.00 |
Catatan Tentang Program
Program datalogger menyatukan fungsi dari pustaka RTC, pustaka DHT, dan pustaka SD. Ada beberapa opsi di bagian atas program yang dapat anda atur seperti nama file data dan jenis DHT apa yang anda miliki.
Semua default, bagaimanapun, harus bekerja dengan baik jika anda menggunakan komponen yang disarankan di atas.
Loop Utama
Lingkaran utama dari program sederhana melakukan tiga hal.
- Baca suhu dan kelembaban dari sensor. Saya meminjam beberapa kode untuk ini dari tutorial lain yang saya tulis: Membangun Jaringan Sensor Nirkabel di Rumah Anda
- Format data yang diambil ke dalam daftar yang dipisahkan koma untuk dikirim ke fungsi log
- Kirim data ke fungsi
logThis ()
untuk menulis ke kartu - Tidur selama tiga detik
Ini mengulangi proses selama ada kekuatan dan ruang pada Kartu SD.
Logging
Fungsi logThis ()
mengambil string karakter data sebagai argumen, mendapatkan waktu dari RTC, memformatnya dengan data dan menulisnya ke file log. Nama file log ditentukan di bagian #define
dari program. Sketsa membuka file log ketika pengaturan dimulai sehingga file logger tidak harus membukanya kembali untuk setiap entri log. Perintah sprintf
samar yang ditunjukkan di bawah ini memformat data.
Jika anda ingin mengubah bagaimana data dicatat, pastikan anda sudah familiar dengan fungsi sprintf dan anda dapat memindahkan elemen pemformatan dan data di sekitar. Jika anda hanya perlu menyusun ulang bidang tanggal, anda dapat mengubah urutan antara koma dan setiap hal harus bekerja dengan baik.
1 |
sprintf(message, "%ld,%d/%d/%d %02d:%02d:%02d,%s",epoch,Year,Month,Day,Hour,Minute,Second,logmessage ); |
Akhirnya, perintah dataFile.println(message)
menulis string yang diformat ke file. Fungsi berfungsi seperti perintah Serial.println
.
FAT32 filesystem yang ada di SD Card memiliki beberapa batasan yang perlu diketahui. Nama file juga harus dalam format 8.3. Ukuran file terbesar yang dapat dipegangnya adalah file 2GB dan hanya dapat menyimpan 268.173.300 file. Mudah-mudahan anda dapat hidup dengan batasan-batasan ini untuk sedikit.
Waktu
Fungsi now.year()
dan teman-teman melakukan pekerjaan yang diperlukan untuk membaca elemen waktu saat ini (unix epoch, tahun, bulan, hari, jam, menit, detik) dari papan RTC dan mengembalikan nilainya
Hal yang keren tentang jam real time adalah waktu yang mereka tempuh. Meskipun kode dan proyek dapat berhenti melakukan hal-hal penting lainnya seperti memastikan bir anda memfermentasi pada suhu yang tepat, itu hanya akan menghemat waktu. Bahkan jika proyek anda kehilangan daya, itu terus berdetak dengan baterai independen.
Yang perlu anda lakukan adalah menanyakannya dan itu akan memberi tahu anda jam berapa sekarang. Ini tentu saja sempurna untuk data pencatatan log. Komponen yang ditentukan dalam daftar bagian adalah pengatur waktu yang dapat dilewati, tetapi spesifikasi mengatakan dapat memperoleh hingga dua detik sehari.
Jika itu membuat anda terjaga semalam, maka periksa ChronoDot yang mewah untuk presisi yang lebih tinggi dengan protokol yang sama persis. Ini benar-benar dapat dipertukarkan dengan RTC dalam proyek ini untuk beberapa dolar lebih banyak dan itu sepenuhnya dikumpulkan.
Pengujian
Anda telah membuat proyek, memprogramnya (dua kali), dan membaca semua tentang teori operasi di atas. Sudah waktunya untuk mencobanya.
- Atur papan di suatu tempat suhu dan kelembaban akan menarik dan pasang baterai
- Biarkan pencatat berjalan untuk sementara sambil mengumpulkan data
- Setelah sedikit lepaskan daya dari proyek dan lepaskan SD Card
- Masukkan kartu ke adaptor berukuran penuh dan masukkan Kartu SD ke komputer Anda.
- Buka file
datalog.txt
Anda harus melihat sesuatu seperti berikut ini.
1 |
1405787012,2014/7/19 16:23:32,69.80,40.00 |
2 |
1405787015,2014/7/19 16:23:35,69.80,40.00 |
3 |
1405787019,2014/7/19 16:23:39,69.80,40.00 |
4 |
1405787022,2014/7/19 16:23:42,69.80,40.00 |
5 |
1405787026,2014/7/19 16:23:46,69.80,40.00 |
6 |
1405787029,2014/7/19 16:23:49,69.80,40.00 |
7 |
1405787053,2014/7/19 16:24:13,69.80,40.00 |
Kesimpulan
Dalam tutorial ini saya telah menunjukkan kepada anda bagaimana mengintegrasikan Kartu SD dan modul jam waktu nyata ke dalam proyek anda. Dengan kode contoh, anda dapat mencatat data untuk jangka waktu yang panjang yang dapat dengan cepat dan mudah disalin ke komputer.
Setelah menyelesaikan proyek ini, anda dapat mencoba beberapa modifikasi atau upgrade ke sana. Coba perbarui chip waktu untuk stempel waktu yang lebih akurat. Program yang disertakan hanya menulis ke file yang sama berulang-ulang sampai penuh. Anda dapat mencoba membuat skema rotasi file berdasarkan tanggal untuk memutar file sekali seminggu.
Saya bahkan tidak menyebutkan kartu mendeteksi kabel dari pembaca yang memungkinkan anda memodifikasi skematis dan papan untuk menguji keberadaan kartu sebelum mencoba operasi baca atau tulis apa pun. Semoga sukses dan bersenang-senang bereksperimen.