Sebagai Jurutera / Pembangun, kami selalu bergantung pada data yang dikumpulkan untuk merancang atau memperbaiki sistem. Merakam data dan menganalisisnya adalah praktik biasa di kebanyakan industri, di sini kita sedang membina Arduino Data Logger Project di mana kita akan belajar bagaimana kita dapat log data pada selang waktu tertentu. Kami akan menggunakan papan Arduino untuk membaca beberapa data (di sini suhu, kelembapan, tarikh dan waktu) dan menyimpannya pada kad SD dan komputer secara serentak.
Data yang disimpan dapat dibuka dengan mudah dalam Lembaran Excel untuk analisis lebih lanjut. Untuk mengekalkan tarikh dan masa, kami akan menggunakan modul RTC DS3231 yang terkenal dan untuk mendapatkan Suhu dan Kelembapan kami akan menggunakan Sensor DHT11. Pada akhir projek anda akan belajar
- Cara log data ke kad SD dengan nilai Tarikh, Masa dan sensor.
- Cara menulis data terus ke Lembaran Excel di PC melalui komunikasi bersiri.
Bahan yang Diperlukan:
- Papan roti
- Arduino UNO (mana-mana papan Arduino)
- Sensor suhu DHT11
- Modul RTC DS3231
- Modul kad SD
- Kad SD
- Menyambung wayar
- Komputer / Komputer riba
Rajah Litar:
Rajah litar untuk Projek Pembalak Suhu Arduino ini ditunjukkan di bawah.
Seperti yang ditunjukkan dalam gambarajah litar, sambungannya sangat mudah kerana kita telah menggunakannya sebagai modul, kita boleh membuatnya secara langsung di papan roti. Sambungan selanjutnya dikelaskan dalam jadual di bawah
Pin Arduino |
Pin Modul |
Sensor Suhu - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Keluar |
Pin 7 |
Modul RTC DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pin A5 |
SDA |
Pin A4 |
Modul kad SD |
|
Vcc |
5V |
Gnd |
Gnd |
MISO |
Pin 12 |
MOSI |
Pin 11 |
SCK |
Pin 13 |
CS |
Pin 4 |
Anda boleh mengganti sensor suhu DHT11 dengan mana-mana sensor dari mana anda perlu mencatat nilai. Anda boleh menyemak LM35 dengan Arduino untuk membaca suhu.
Modul RTC DS3231 dihubungkan dengan Arduino menggunakan komunikasi I2C (SCL, SDA) dan modul kad SD dihubungkan menggunakan Komunikasi SPI (MISO, MOSI, SCK, CS). Pin 4 dan 7 didefinisikan sebagai pin CS dan pin output oleh program Arduino, anda boleh menukarnya ke pin lain jika diperlukan. Kami sebelumnya menghubungkan kad SD dengan Arduino dalam projek Pemain muzik.
Penjelasan Program Arduino:
Kita harus menulis program Arduino yang boleh melakukan perkara berikut.
- Baca data dari DTH11 Sensor (atau data lain yang ingin anda log).
- Memulakan bas I2C untuk membaca data dari modul RTC.
- Memulakan bas SPI untuk menghubungkan modul kad SD dengan Arduino.
- Simpan Tarikh, Masa, Suhu dan Kelembapan ke dalam kad SD.
- Simpan Tarikh, Masa, Suhu dan Kelembapan pada Helaian Excel yang berjalan di komputer / Komputer riba.
Langkah-langkah di atas mungkin terdengar rumit tetapi sangat mudah kerana kami mempunyai perpustakaan untuk melakukan kerja keras untuk kami. Anda mesti memuat turun dua perpustakaan berikut
- Perpustakaan Sensor DHT11 dari GitHub
- Perpustakaan modul DS3231 RTC dari Rinky-Dink Electronics
Sebaik sahaja anda memuat turun perpustakaan, tambahkan ke Arduino IDE anda dengan mengikuti
Sketsa-> Sertakan Perpustakaan -> Tambah Perpustakaan.ZIP
Untuk memasukkan data dari Arduino secara langsung ke dalam lembaran Excel di komputer, kami juga perlu memasang perisian yang dipanggil PLX-DAQ yang disediakan oleh Parallax Inc. Ikuti pautan untuk memuat turun fail dan memasangnya berdasarkan sistem operasi anda. Ini semestinya telah membuat folder bernama PLS-DAQ di desktop anda. Kami akan menjaganya kemudian di bahagian kerja kami.
Sekarang setelah menambahkan kedua-dua perpustakaan dan setelah memasang perisian, anda dapat menggunakan Kod Lengkap (diberikan di bawah tutorial) dan memuat naiknya ke Arduino anda. Saya telah berusaha sedaya upaya untuk menjaga kod sesederhana mungkin dan penjelasannya juga diberikan melalui bahagian komen. Selanjutnya, saya akan menerangkan segmen penting di bawah.
1. Membaca Data dari DS3231:
DS3231 adalah modul RTC (Real Time Clock). Ia digunakan untuk mengekalkan tarikh dan masa untuk kebanyakan projek Elektronik. Modul ini mempunyai bekalan kuasa sel duit syiling sendiri yang menggunakannya mengekalkan tarikh dan masa walaupun kuasa utama dikeluarkan atau MCU telah hilang walaupun diset semula keras. Oleh itu, setelah kita menetapkan tarikh dan masa dalam modul ini, ia akan sentiasa melacaknya.
Menggunakan modul ini sangat mudah kerana perpustakaan yang disediakan oleh Arduino.
// Masukkan DS3231 menggunakan antara muka perkakasan DS3231 rtc (SDA, SCL); batal Initialize_RTC () {// Memulakan objek rtc rtc.begin (); // #### baris berikut tidak dapat dibahaskan untuk menetapkan tarikh dan waktu untuk pertama kalinya ### / * rtc.setDOW (JUMAAT); // Tetapkan Hari Minggu ke SUNDAY rtc.setTime (18, 46, 45); // Tetapkan masa ke 12:00:00 (format 24jam) rtc.setDate (6, 30, 2017); // Tetapkan tarikh hingga 1 Januari 2014 * /}
Catatan: Semasa menggunakan modul ini untuk pertama kalinya anda mesti menetapkan tarikh dan waktu. Ini dapat dilakukan dengan menghapus komen seperti yang disebutkan di atas dan menulis tarikh dan waktu. Pastikan anda mengomentari mereka semula dan memuat naiknya, jika tidak, setiap kali anda menjalankan papan, tarikh dan masa akan ditetapkan lagi. Anda juga boleh menggunakan RTC IC DS1307 untuk membaca waktu bersama Arduino.
2. Membaca Data dari DHT11:
DHT11 adalah sensor Kelembapan suhu. Ia menghantar nilai suhu dan kelembapan sebagai data 8-bit secara bersiri melalui pin output modul. Perpustakaan membaca data ini dengan menggunakan fungsi siri perisian Arduino.
#define DHT11_PIN 7 // Pin output sensor disambungkan ke pin 7 dht DHT; // Objek sensor dinamakan sebagai DHT batal Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN); }
Di sini saya telah menghubungkan pin output ke pin 7 sebagai contoh anda boleh memilih pin apa pun yang menyokong Perisian Serial. Memanggil DHT.read (nombor pin); akan membaca nilai suhu dan kelembapan dan menyimpannya dalam parameter DHT.temperature dan DHT.Humidity masing-masing. Juga periksa Pengukuran Suhu Arduino berdasarkan DHT11 ini.
3. Memulakan modul kad SC:
batal Initialize_SDcard () {// lihat apakah kad itu ada dan boleh dimulakan: if (! SD.begin (chipSelect)) {Serial.println ("Kad gagal, atau tidak hadir"); // jangan buat apa-apa lagi: kembali; } // buka fail. perhatikan bahawa hanya satu fail yang dapat dibuka pada satu masa, // jadi anda harus menutupnya sebelum membuka yang lain. Data failFile = SD.open ("LoggerCD.txt", FILE_WRITE); // jika fail itu ada, tuliskan kepadanya: jika (dataFile) {dataFile.println ("Tarikh, Masa, Suhu, Kelembapan") // Tulis baris pertama data file excelFile.close (); }}
Menggunakan kad SD dengan Arduino adalah mudah kerana perpustakaan kad SD yang akan ditambahkan ke Arduino IDE secara lalai. Dalam fungsi inisialisasi kad SD kita akan membuat file teks bernama "LoggerCD.txt" dan menulis baris pertama kandungan kita. Di sini kita memisahkan nilai dengan menggunakan "," sebagai pembatas. Maksudnya ketika koma ditempatkan itu bermaksud kita harus berpindah ke sel seterusnya dalam helaian Excel.
4. Menulis Data ke kad SD
batal Write_SDcard () {// buka fail. perhatikan bahawa hanya satu fail yang dapat dibuka pada satu masa, // jadi anda harus menutupnya sebelum membuka yang lain. Data failFile = SD.open ("LoggerCD.txt", FILE_WRITE); // jika fail itu ada, tuliskan kepadanya: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Tarikh penyimpanan pada data kad SDFile.print (","); // Pindah ke lajur seterusnya menggunakan "," dataFile.print (rtc.getTimeStr ()); // Tarikh penyimpanan pada data kad SDFile.print (","); // Pindah ke lajur seterusnya menggunakan "," dataFile.print (DHT.temperature); // Tarikh penyimpanan pada data kad SDFile.print (","); // Pindah ke lajur seterusnya menggunakan "," dataFile.print (DHT.humidity); // Tarikh penyimpanan pada data kad SDFile.print (","); // Pindah ke lajur seterusnya menggunakan "," dataFile.println (); // End of Row pindah ke baris data berikutnyaFile.close ();// Tutup fail} lain Serial.println ("OOPS !! Penulisan kad SD gagal"); }
Seperti yang dinyatakan sebelumnya, tujuan kami adalah untuk menyimpan Tarikh, Waktu, Suhu dan Kelembapan ke dalam kad SD kami. Dengan bantuan perpustakaan DS3231 dan perpustakaan DHT11, Arduino kami akan dapat membaca keempat-empat parameter ini dan menyimpannya ke dalam parameter berikut seperti yang ditunjukkan dalam jadual di bawah
Tarikh |
rtc.getDateStr ()); |
Masa |
rtc.getTimeStr ()); |
Suhu |
Suhu DHT |
Kelembapan |
DHT. Kelembapan |
Sekarang kita boleh menggunakan parameter ini secara langsung untuk menyimpannya pada kad SD menggunakan garis cetak
dataFile.print (parameter);
Anda dapat melihat bahawa setiap parameter dipisahkan dengan koma untuk menjadikannya kelihatan mudah dibaca dan dataFile.println (); digunakan untuk menunjukkan hujung garisan.
5. Menulis Data ke PLX-DAQ
PLX-DAQ adalah perisian Microsoft Excel Plug-in yang membantu kami menulis nilai dari Arduino untuk terus ke fail Excel pada Komputer riba atau PC kami. Ini adalah kegemaran peribadi saya kerana dua sebab:
1. Anda boleh menulis dan memantau data pada masa yang sama dan memberi kami cara untuk memplotnya sebagai grafik.
2. Anda tidak memerlukan Modul RTC seperti DS3231 untuk mengesan tarikh dan masa. Anda hanya boleh menggunakan tarikh dan masa yang berjalan di Komputer riba / komputer anda dan menyimpannya terus di Excel.
Untuk menggunakan perisian ini dengan Arduino, kita harus mengirim data secara bersiri dalam pola tertentu seperti menampilkan nilai pada monitor bersiri. Garis utama dijelaskan di bawah:
batal Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // membersihkan sebarang data yang tersisa dari projek sebelumnya Serial.println ("LABEL, Tarikh, Masa, Suhu, Kelembapan"); // selalu tulis LABEL, untuk menunjukkannya sebagai baris pertama} batal Write_PlxDaq () {Serial.print ("DATA"); // selalu tulis "DATA" untuk Menyatakan perkara berikut sebagai Data Serial.print (","); // Pindah ke lajur seterusnya menggunakan "," Serial.print ("DATE"); // Tarikh penyimpanan di Excel Serial.print (","); // Pindah ke lajur seterusnya menggunakan "," Serial.print ("TIME"); // Tarikh penyimpanan di Excel Serial.print (","); // Pindah ke lajur seterusnya menggunakan "," Serial.print (DHT.temperature); // Tarikh penyimpanan di Excel Serial.print (","); // Pindah ke lajur seterusnya menggunakan "," Serial.print (DHT.humidity);// Tarikh penyimpanan di Excel Serial.print (","); // Pindah ke lajur seterusnya menggunakan "," Serial.println (); // Akhir Baris beralih ke baris seterusnya}
Perisian ini dapat mengenali kata kunci seperti LABEL, DATA, TIME, DATE dll. Seperti yang ditunjukkan dalam fungsi Initialize kata kunci "LABEL" digunakan untuk menulis ROW pertama lembaran Excel. Kemudian dalam fungsi Tulis kita menggunakan kata kunci "DATA" untuk menunjukkan bahawa maklumat berikut harus dianggap sebagai DATA. Untuk menunjukkan bahawa kita harus beralih ke baris berikutnya kita harus menggunakan koma (“,”). Untuk menunjukkan akhir baris kita perlu menghantar Serial.println ();.
Seperti yang dinyatakan sebelumnya, kita dapat menulis tarikh dan waktu sistem dengan mengirimkan kata kunci "DATE" dan "TIME" masing-masing seperti yang ditunjukkan di atas.
Catatan: Jangan gunakan monitor bersiri semasa menggunakan perisian PLX_DAQ ini.
Penjelasan Kerja:
Cara kerja Arduino Data Logger adalah mudah. Setelah perkakasan dan perisian siap, inilah masanya untuk memasukkan program ke Arduino Board anda. Sebaik sahaja program anda dimuat naik, nilai suhu dan kelembapan anda akan mula disimpan dalam kad SD anda. Anda mesti mengikuti langkah-langkah di bawah ini untuk membolehkan PLX-DAQ log masuk ke lembaran Excel di komputer.
Langkah 1: Buka fail "Plx-Daq Spreadsheet" yang dibuat di desktop anda semasa pemasangan.
Langkah 2: Sekiranya terdapat sekatan Keselamatan, klik pada Pilihan-> Aktifkan kandungan -> Selesai -> OK untuk mendapatkan skrin berikut.
Langkah 3: Sekarang pilih baud rate sebagai "9600" dan port yang menghubungkan Arduino anda dan klik pada Connect. Nilai anda harus mula dicatatkan seperti yang ditunjukkan dalam gambar di bawah.
Anda boleh membiarkan lembaran excel ini terbuka dan memantau nilainya semasa mereka log. Kerana ini berlaku kad SD kami juga akan menyimpan nilai yang sama. Untuk memeriksa adakah itu berfungsi, cukup keluarkan kad SD dan buka di Komputer anda. Anda harus mencari fail teks bernama "LoggerCD.txt" di dalamnya. Apabila dibuka akan kelihatan seperti ini.
Fail ini mempunyai data, tetapi sukar untuk menganalisisnya di notepad. Oleh itu kita dapat membukanya di Excel sebagai fail CSV (Comma separated values), sehingga menjadikannya lebih berkesan. Untuk membuka di excel
1. Buka Excel. Klik pada File-> Buka dan pilih "Semua fail" di sudut kanan bawah dan pilih fail "LoggerCD" dari kad SD. Ini akan membuka wizard import teks.
2. Klik "Next" dan pilih koma sebagai pembatas. Klik “Next” sekali lagi. Kemudian Selesaikan.
3. Sekarang nilai anda akan dibuka dalam fail Excel seperti gambar di bawah
Saya telah mencatatkan nilai setiap 5 saat; anda boleh mencatatnya pada bila-bila masa yang dikehendaki dengan mengubah fungsi kelewatan dalam program. Untuk pemahaman terperinci mengenai kerja, sila tonton video di bawah.
Harap anda menyukai projek ini, sekiranya anda mempunyai keraguan, tulislah di bahagian komen di bawah dan saya akan membantu anda.
Peningkatan Bonus- Log Data Tanpa Wayar Menggunakan Arduino:
Setelah anda berjaya hingga ke tahap ini, maka dengan beberapa kemajuan dan hanya menambahkan beberapa baris kod, anda boleh log data tanpa wayar.
Cukup sambungkan Peranti Bluetooth seperti HC-05 dan tulis data ke PLX-DAQ melalui Bluetooth dan bukannya Serial. Iaitu menggantikan Serial.print (parameter); dengan BluetoothName.print (parameter); dan sambungkan Laptop anda ke Modul Bluetooth anda dan pilih port COM ke mana Bluetooth Laptop anda disambungkan dan Taadaaa…… Anda mempunyai Sistem Log Data Tanpa Wayar yang berfungsi dalam masa yang singkat.