Mühendisler / Geliştiriciler olarak, bir sistemi tasarlamak veya iyileştirmek için her zaman toplanan verilere güveniriz. Verileri kaydetmek ve analiz etmek çoğu endüstride yaygın bir uygulamadır, burada verileri belirli bir zaman aralığında nasıl günlüğe kaydedebileceğimizi öğreneceğimiz Arduino Veri Kaydedici Projesi oluşturuyoruz. Bazı verileri (burada sıcaklık, nem, tarih ve saat) okumak ve bunları aynı anda bir SD karta ve bilgisayara kaydetmek için bir Arduino kartı kullanacağız.
Kaydedilen veriler, daha ileri analizler için bir Excel Sayfasında kolayca açılabilir. Tarih ve saati korumak için ünlü RTC modülü DS3231'i kullanacağız ve Sıcaklık ve Nemi elde etmek için DHT11 Sensörünü kullanacağız. Projenin sonunda öğreneceksin
- Tarih, Saat ve sensör değerleri ile SD karta veri nasıl kaydedilir.
- Veriler, seri iletişim yoluyla PC'deki Excel Sayfasına doğrudan nasıl yazılır.
Gerekli malzemeler:
- Breadboard
- Arduino UNO (herhangi bir Arduino kartı)
- DHT11 Sıcaklık sensörü
- DS3231 RTC modülü
- SD kart modülü
- hafıza kartı
- Bağlantı telleri
- Dizüstü bilgisayar
Devre şeması:
Bu Arduino Sıcaklık Kaydedici Projesi için devre şeması aşağıda gösterilmiştir.
Devre şemasında gösterildiği gibi, bunları modüller olarak kullandığımız için bağlantılar çok basittir, bunları doğrudan devre tahtası üzerine inşa edebiliriz. Bağlantılar aşağıdaki tabloda ayrıca sınıflandırılmıştır.
Arduino Pimi |
Modül Pimi |
Sıcaklık Sensörü - DHT11 |
|
Vcc |
5V |
Gnd |
Gnd |
Nc |
Nc |
Dışarı |
Toplu iğne 7 |
RTC modülü DS3231 |
|
Vcc |
5V |
Gnd |
Gnd |
SCL |
Pin A5 |
SDA |
Pin A4 |
SD kart Modülü |
|
Vcc |
5V |
Gnd |
Gnd |
MİSO |
Toplu iğne 12 |
MOSI |
Toplu iğne 11 |
SCK |
Toplu iğne 13 |
CS |
Pin 4 |
DHT11 sıcaklık sensörünü, değerleri kaydetmeniz gereken herhangi bir sensörle değiştirebilirsiniz. Sıcaklığı okumak için LM35'i Arduino ile kontrol edebilirsiniz.
RTC modülü DS3231, I2C iletişimi (SCL, SDA) kullanılarak Arduino ile arayüzlenir ve SD kart modülü, SPI İletişimi (MISO, MOSI, SCK, CS) kullanılarak arabirimlenir. 4 ve 7 numaralı pinler Arduino programı tarafından CS pin ve çıkış pinleri olarak tanımlanır, gerekirse başka pinlerle değiştirebilirsiniz. Daha önce Müzik çalar projesinde Arduino ile SD kart arayüzünü kurmuştuk.
Arduino Program Açıklaması:
Aşağıdakileri yapabilecek Arduino programını yazmamız gerekiyor.
- DTH11 Sensöründen (veya kaydetmek istediğiniz diğer herhangi bir veriden) veri okuyun.
- RTC modülünden veri okumak için I2C veriyolunu başlatın.
- SD kart modülünü Arduino ile arayüzlemek için SPI veriyolunu başlatın.
- Tarihi, Saati, Sıcaklığı ve Nemi SD karta kaydedin.
- Bir bilgisayarda / Dizüstü bilgisayarda çalışan bir Excel Sayfasında Tarih, Saat, Sıcaklık ve Nemi saklayın.
Yukarıdaki adımlar karmaşık gelebilir, ancak bizim için zor işi yapacak kütüphanelere sahip olduğumuz için çok kolaydır. Aşağıdaki iki kitaplığı indirmelisiniz
- GitHub'dan DHT11 Sensör Kitaplığı
- Rinky-Dink Electronics'ten DS3231 RTC modül kitaplığı
Kitaplığı indirdikten sonra, bunları takip ederek Arduino IDE'nize ekleyin
Eskiz-> Kitaplığı Dahil Et ->.ZIP Kitaplığı Ekle
Verileri Arduino'dan canlı bir şekilde bilgisayardaki bir Excel sayfasına beslemek için Parallax Inc. tarafından sağlanan PLX-DAQ adlı yazılımı da yüklememiz gerekir. Dosyayı indirmek ve işletim sisteminize bağlı olarak yüklemek için bağlantıyı izleyin. Bu, masaüstünüzde PLS-DAQ adlı bir klasör oluşturmalıydı. Bununla daha sonra çalışma bölümümüzde ilgileneceğiz.
Şimdi her iki kitaplığı da ekledikten ve yazılımı kurduktan sonra, Tam Kodu (eğitimin altında verilmiştir) kullanabilir ve bunları Arduino'nuza yükleyebilirsiniz. Kodu olabildiğince basit tutmak için elimden gelenin en iyisini yaptım ve açıklamalar da yorum bölümlerinde verildi. Ayrıca, aşağıda önemli bölümleri açıklayacağım.
1. DS3231'den Veri Okuma:
DS3231, bir RTC (Gerçek Zamanlı Saat) modülüdür. Elektronik projelerinin çoğu için tarih ve saati korumak için kullanılır. Bu modül, ana güç kesildiğinde veya MCU donanımdan sıfırlamadan sonra gittiğinde bile tarih ve saati koruyan kendi düğme pil güç kaynağına sahiptir. Bu modülde tarih ve saati bir kez belirlediğimizde, her zaman takip edecektir.
Arduino'nun sağladığı kütüphane sayesinde bu modülü kullanmak çok kolaydır.
// DS3231 donanım arayüzünü kullanarak DS3231'i başlatın rtc (SDA, SCL); void Initialize_RTC () {// rtc nesnesini başlatın rtc.begin (); // #### Aşağıdaki satırlar ilk kez tarih ve saati ayarlamak için yorumlanamaz ### / * rtc.setDOW (CUMA); // Haftanın Gününü SUNDAY olarak ayarlayın rtc.setTime (18, 46, 45); // Saati 12:00:00 (24 saatlik format) olarak ayarlayın rtc.setDate (6, 30, 2017); // Tarihi 1 Ocak 2014 olarak ayarlayın * /}
Not: Bu modülü ilk kez kullanırken tarih ve saati ayarlamanız gerekir. Yukarıda belirtildiği gibi yorumları kaldırıp tarih ve saati yazarak basitçe yapılabilir. Onları tekrar yorumladığınızdan ve yüklediğinizden emin olun, aksi takdirde panoyu her çalıştırdığınızda tarih ve saat yeniden ayarlanacaktır. Arduino ile zamanı okumak için RTC IC DS1307'yi de kullanabilirsiniz.
2. DHT11'den Verilerin Okunması:
DHT11, bir Sıcaklık gelen Nem sensörüdür. Modülün çıkış pini üzerinden 8 bitlik veri olarak sıcaklık ve nem değerlerini seri olarak gönderir. Kütüphane bu verileri Arduino'nun yazılım seri fonksiyonunu kullanarak okur.
#define DHT11_PIN 7 // Sensör çıkış pini, pim 7 dht DHT'ye bağlıdır; // DHT void Read_DHT11 () {int chk = DHT.read11 (DHT11_PIN) olarak adlandırılan sensör nesnesi; }
Burada çıkış pinini pim 7'ye bağladım örnek olarak Yazılım Serisini destekleyen herhangi bir pini seçebilirsiniz. Arayan DHT.read (pin numarası); sıcaklık ve nem değerini okuyacak ve sırasıyla DHT . sıcaklık ve DHT Nemlilik parametresinde saklayacaktır . Ayrıca bu DHT11 tabanlı Arduino Sıcaklık Ölçümünü kontrol edin.
3. SC kart modülünü başlatma:
void Initialize_SDcard () {// kartın mevcut olup olmadığına bakın ve başlatılabilir: if (! SD.begin (chipSelect)) {Serial.println ("Kart başarısız oldu veya mevcut değil"); // daha fazla bir şey yapmayın: return; } // dosyayı aç. bir seferde yalnızca bir dosyanın açılabileceğini unutmayın, // bu nedenle başka bir dosyayı açmadan önce bu dosyayı kapatmanız gerekir. Dosya dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // dosya mevcutsa ona yazın: if (dataFile) {dataFile.println ("Tarih, Saat, Sıcaklık, Nem"); // Excel dosyasının ilk satırını yazın dataFile.close (); }}
Arduino ile bir SD kart kullanmak, varsayılan olarak Arduino IDE'ye eklenecek olan SD kart kitaplığı nedeniyle kolaydır. SD kart başlatma fonksiyonunda "LoggerCD.txt" adlı bir metin dosyası oluşturacağız ve içeriğimizin ilk satırını yazacağız. Burada değerleri ayırıcı olarak "," kullanarak ayırıyoruz. Yani, bir virgül yerleştirildiğinde, Excel sayfasındaki bir sonraki hücreye gitmemiz gerektiği anlamına gelir.
4. SD karta Veri Yazma
void Write_SDcard () {// dosyayı açın. bir seferde yalnızca bir dosyanın açılabileceğini unutmayın, // bu nedenle başka bir dosyayı açmadan önce bu dosyayı kapatmanız gerekir. Dosya dataFile = SD.open ("LoggerCD.txt", FILE_WRITE); // dosya mevcutsa ona yazın: if (dataFile) {dataFile.print (rtc.getDateStr ()); // Tarihi SD kartta dataFile.print (","); // Bir "," dataFile.print (rtc.getTimeStr ()) kullanarak sonraki sütuna git; // Tarihi SD kartta sakla dataFile.print (","); // Bir "," dataFile.print (DHT.temperature) kullanarak sonraki sütuna git; // Tarihi SD kartta dataFile.print (","); // Bir "," dataFile.print (DHT.humidity) kullanarak sonraki sütuna git; // Tarihi SD kartta dataFile.print (","); // Bir "," dataFile.println () kullanarak sonraki sütuna git; // Satır Sonu sonraki satıra taşınır dataFile.close ();// Dosyayı kapatın} else Serial.println ("OOPS !! SD kart yazma başarısız"); }
Daha önce de belirtildiği gibi, niyetimiz Tarih, Saat, Sıcaklık ve Nemi SD kartımıza kaydetmektir. DS3231 kütüphanesi ve DHT11 kütüphanesi yardımıyla Arduino'muz bu dört parametrenin tamamını okuyabilecek ve aşağıdaki tabloda gösterildiği gibi aşağıdaki parametrelere kaydedebilecektir.
Tarih |
rtc.getDateStr ()); |
Zaman |
rtc.getTimeStr ()); |
Sıcaklık |
DHT. Sıcaklık |
Nem |
DHT. Nem |
Artık bu parametreleri doğrudan baskı hattını kullanarak SD kartta saklamak için kullanabiliriz.
dataFile.print (parametre);
Okunaklı görünmesi için her parametrenin virgülle ayrıldığını ve dataFile.println (); satırın sonunu belirtmek için kullanılır.
5. PLX-DAQ'ya Veri Yazma
PLX-DAQ, Arduino'dan değerleri doğrudan Dizüstü veya PC'mizdeki bir Excel dosyasına yazmamıza yardımcı olan Microsoft Excel Eklenti yazılımıdır. Bu, iki nedenden dolayı kişisel favorim:
1. Verileri aynı anda yazabilir ve izleyebilirsiniz ve bunları grafik olarak çizmemiz için bize yol sağlar.
2. Tarih ve saati takip etmek için DS3231 gibi bir RTC Modülüne ihtiyacınız yoktur. Sadece Dizüstü bilgisayarınızda / bilgisayarınızda çalışan tarih ve saati kullanabilir ve bunları doğrudan Excel'e kaydedebilirsiniz.
Bu yazılımı Arduino ile kullanmak için, verileri seri olarak, seri monitördeki değeri gösterir gibi belirli bir düzende seri olarak göndermemiz gerekir. Temel satırlar aşağıda açıklanmıştır:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // önceki projelerden kalan verileri temizler Serial.println ("LABEL, Date, Time, Temperature, Humidity"); // ilk satır olarak belirtmek için her zaman LABEL yazın} void Write_PlxDaq () {Serial.print ("DATA"); // Aşağıdakileri Data Serial.print (",") olarak incelemek için her zaman "DATA" yazın; // Bir "," Serial.print ("DATE") kullanarak sonraki sütuna git; // Tarihi Excel'de Serial.print (","); // Bir "," Serial.print ("TIME") kullanarak sonraki sütuna git; // Tarihi Excel'de Serial.print (","); // Bir "," Serial.print (DHT.temperature) kullanarak sonraki sütuna git; // Tarihi Excel'de Serial.print (","); // Bir "," Serial.print (DHT.humidity) kullanarak sonraki sütuna git;// Tarihi Excel'de Serial.print (","); // Bir "," Serial.println () kullanarak sonraki sütuna git; // Satır Sonu sonraki satıra taşınır}
Yazılım ETİKET, VERİ, SAAT, TARİH vb. Gibi anahtar kelimeleri tanıyabilir. Başlatma işlevinde gösterildiği gibi, Excel sayfasının ilk SATIRINI yazmak için "ETİKET" anahtar sözcüğü kullanılır. Daha sonra Yazma işlevinde, aşağıdaki bilgilerin DATA olarak değerlendirilmesi gerektiğini belirtmek için "VERİ" anahtar kelimesini kullanırız. Bir sonraki satıra geçmemiz gerektiğini belirtmek için virgül (",") kullanmalıyız. Satırın sonunu belirtmek için bir Serial.println (); göndermemiz gerekiyor.
Daha önce de belirtildiği gibi, sistem tarihini ve saatini yukarıda gösterildiği gibi sırasıyla "TARİH" ve "SAAT" anahtar kelimelerini göndererek yazabiliriz.
Not: Bu PLX_DAQ yazılımını kullanırken seri monitörü kullanmayın.
Çalışma Açıklaması:
Çalışma Arduino Arşivleyicisi basittir. Donanım ve yazılım hazır olduğunda programı Arduino Board'unuza yazma zamanı gelmiştir. Programınız yüklenir yüklenmez, sıcaklık ve nem değerleriniz SD kartınızda saklanmaya başlayacaktır. PLX-DAQ'nun bilgisayardaki Excel sayfasında oturum açmasını sağlamak için aşağıdaki adımları izlemelisiniz.
Adım 1: Kurulum sırasında masaüstünüzde oluşturulan "Plx-Daq Elektronik Tablo" dosyasını açın.
Adım 2: Bir Güvenlik bloğu varsa, aşağıdaki ekranı almak için Seçenekler-> İçeriği etkinleştir -> Bitir -> Tamam'a tıklayın .
Adım 3: Şimdi baud hızını "9600" olarak ve Arduino'nuzun bağlı olduğu portu seçin ve Bağlan'a tıklayın. Değerleriniz aşağıdaki resimde gösterildiği gibi günlüğe kaydedilmeye başlamalıdır.
Bu excel sayfasını açık bırakabilir ve değerleri günlüğe kaydedilirken izleyebilirsiniz. Bu olurken SD kartımız da aynı değerleri kaydetmiş olacaktı. Bunun işe yarayıp yaramadığını kontrol etmek için SD kartı çıkarmanız ve Bilgisayarınızda açmanız yeterlidir. İçinde “LoggerCD.txt” adlı bir metin dosyası bulmalısınız . Açıldığında böyle bir şeye benzeyecekti.
Bu dosyada veriler var, ancak bunları bir not defterinde analiz etmek zor. Dolayısıyla Excel'de CSV (Virgülle ayrılmış değerler) dosyası olarak açıp daha etkili hale getirebiliriz. Excel'de açmak için
1. Excel'i açın. Dosya-> Aç'a tıklayın ve sağ alt köşedeki "Tüm dosya" yı seçin ve SD karttan "LoggerCD" dosyasını seçin. Bu, bir metin içe aktarma sihirbazı açacaktır.
2. "İleri" ye tıklayın ve ayırıcı olarak virgül seçin. Tekrar "İleri" ye tıklayın. Sonra Bitir.
3. Şimdi değerleriniz aşağıda gösterildiği gibi bir Excel dosyasında açılacaktır.
Değerleri her 5 saniyede bir günlüğe kaydettim; programdaki gecikme işlevini değiştirerek bunları istediğiniz zaman kaydedebilirsiniz. Çalışmanın ayrıntılı anlaşılması için lütfen aşağıdaki videoyu izleyin.
Umarım projeyi beğenmişsinizdir, herhangi bir şüpheniz varsa bunları aşağıdaki yorum bölümüne yazın, size yardımcı olacağım.
Bonus Geliştirme - Arduino Kullanarak Kablosuz Veri Kaydı:
Bu noktaya kadar başarılı olduktan sonra, birkaç ilerleme ile ve sadece birkaç satır kod ekleyerek verileri kablosuz olarak kaydedebilirsiniz.
Sadece HC-05 gibi bir Bluetooth Cihazı bağlayın ve verileri Seri yerine Bluetooth aracılığıyla PLX-DAQ'ya yazın. Yani Serial.print'i (parametre) değiştirir ; ile BluetoothName.print (parametre); ve Dizüstü Bilgisayarınızı Bluetooth Modülünüze bağlayın ve Dizüstü Bilgisayarınızın Bluetooth'unun bağlı olduğu COM bağlantı noktasını seçin ve Taadaaa…… Çalışan bir Kablosuz Veri Günlük Sistemine hemen sahip olursunuz.