giriiş
Bu yazımızda VEX Robotuna VEX Brain ile veri toplaması ve veri analizi için SD karttaki CSV dosyasına kaydetmesi talimatını veren bir veri kayıt projesinin nasıl oluşturulacağını tartışacağız.
Veri kaydı, bilimsel araştırmalara yardımcı olmak, kendi deneylerimizi yürütmek ve belirli sorunları çözmek için kullanabileceğimiz güçlü bir araçtır. Veri kaydıyla VEX Robotunu gerçekleştirmeye yönlendirebileceğimiz çeşitli eğlenceli ve heyecan verici görevler vardır. Aşağıda bazı örnekler verilmiştir:
- Robotun hızını hesaplamak için Mesafe Sensörü ile veri toplama
- Robotu sınıfta gezdirmek ve çeşitli konumlardaki ışık değişikliklerini gözlemlemek için Optik Sensör ile veri toplamak.
- Robotu bir maceraya çıkarmak ve bir harita oluşturmak için GPS koordinat verilerini kaydetmek.
Veri Günlüğü Projesi geliştirmek için gereken kodlama becerileri
- VEX Brain/Sensors ile veri toplamak ve bunu bir veri yapısına eklemek için çeşitli komutları kullanın.
- Verileri SD karttaki Virgülle Ayrılmış Değerler (CSV) dosyasına yazın.
Veri Kaydı için Gerekli Donanım:
- VEX Beyin (IQ, V5, EXP)
- Bir SD kart
- Bir Sensör veya birden fazla Sensör (Gerekli verilere göre isteğe bağlı)
Sensörden Veri Alma
VEX Robotunu (IQ, V5, EXP) aşağıdaki sensörlerden veri alacak şekilde programlayabiliriz:
- Atalet Sensörü
- Mesafe Sensörü
- Optik sensör
- Görüş Sensörü
- Dönüş Sensörü (V5, EXP)
- GPS Sensörü (V5)
Not: VEX IQ (2. nesil) Beyin ve VEX EXP Beyinde yerleşik bir Atalet Sensörü bulunur. Atalet Sensörü verilerini bu VEX Brian'larla toplayabiliyoruz.
Bu yazımızda VEX IQ Brain (2.) ile hızlanma verilerini toplayan ve SD karta saklayan bir veri kayıt projesi geliştireceğiz.
Öncelikle VEX IQ Beyinde (2.) yerleşik Zamanlayıcı ve Atalet Sensöründen okumalar almak için kısa bir program yazmamız gerekiyor.
- Bu programın başlangıcında VEX IQ Brain'i (2.) kontrol etmek ve verileri ondan almak için Python modüllerini içe aktarmamız gerekecek. Bu nedenle, bu talimatları projeye ekleyerek başlayın.
- Daha sonra, kayıt için veri girişi sayısını depolamak üzere
numOfDataEntries
değişkenini bildirmek için kodu ekleyin, verileri okumak için zaman aralığı değerini depolamak içinpolling_delay_msec
değişkenini bildirin ve depolamak için boş bir dize değişkenidata_buffer
oluşturun. sensörden okunan veriler. - Zaman Damgasını verilere eklemek için Timer’ın mevcut değerini kullanacağımız için veri toplamaya başlamadan önce timer değerini 0 saniyeye sıfırlamamız gerekiyor.
- VEX IQ Brain'den (2.) veriyi alıp tampon belleğe kaydeden komutu kullanmadan önce öncelikle onu anlamamız gerekiyor.
Aşağıdaki talimat geçerli zamanlayıcı değerinidata_buffer
değişkenine belirli bir formatta ekler.“%1.3f”
biçim dizesini parçalayalım:- “%”: Dönüşüm belirtecini tanıtır.
- “1”: String içerisinde bulunabilecek minimum rakam sayısını belirtir.
- “.3”: Biçimlendirilmiş sayıya dahil edilecek ondalık basamak sayısını belirtir.
- “f”: Formatlanacak değerin kayan noktalı sayı olduğunu belirtir.
Böylece, minimum 1 basamak genişliğinde ve 3 ondalık basamak hassasiyetinde kayan noktalı bir sayıyı biçimlendirmek için “%1.3f” biçim dizesini kullanabiliriz.
- Artık VEX IQ Brain'de (2.) yerleşik olan Atalet Sensörünün Zamanlayıcısını ve hızlanma değerini okuyabilir ve ardından verileri belirtilen formatta
data_buffer
değişkenine ekleyebiliriz.Not: “\n” Yeni Satır karakteridir. Satırın burada bittiğini ve yeni bir satırın başladığını belirtir.
- Daha sonra,
data_buffer
değişkenine belirli sayıda veri girişini kaydetmek için, verileri getiren talimatları tekrar tekrar yürütmek ve verileri bir dizi yineleme içindata_buffer
değişkenine eklemek için döngü içinkullanabiliriz. Stratejimiz yineleme sayısını belirlemek için
numOfDataEntries
değişkeninin değerini kullanmaktır.
- Şu ana kadar programımız verileri olabildiğince hızlı kaydediyor. Ancak belirli zaman aralıklarında veri kaydetmek istiyoruz. Bu nedenle, iki okuma arasına belirli bir zaman aralığı eklemek amacıyla programı duraklatmak için
for döngüsü
wait()
fonksiyonunu kullanabiliriz. Zaman aralığının değerini belirlemek içinpolling_delay_msec
değişkeninin değerini kullanıyoruz.
Tebrikler! VEX Brain'de yerleşik Atalet Sensöründen okumalar (hızlanma verileri) almak için programı tamamladık. Daha sonra, verileri SD karttaki bir CSV dosyasına nasıl yazacağımızı keşfedeceğiz.
SD Kartı VEX Brain'e Takma
Verileri SD kartındaki bir dosyaya yazmadan önce SD kartını VEX Brain'in SD kart yuvasına takın.
Not: Veri yazmak için SD kartı FAT32 olarak biçimlendirin. Boyutu 32 GB veya daha küçük olan SD kartları kullanmanızı öneririz.
SD karttaki bir dosyaya veri yazmanın uygun koşullar altında gerçekleştirilebildiğinden emin olmak için SD kartın VEX IQ Brain'e (2.) düzgün şekilde takılıp takılmadığını kontrol etmek üzere kod eklememiz gerekecek.
- SD kartın takılı olup olmadığını kontrol etmek için
brain.sdcard.is_inserted()
işlevini kullanın. SD kart takılı değilse VEX IQ Brain Screen'de ilgili mesajı görüntüleyin ve programı basılı tutun.
Not:brain.sdcard.is_inserted()
işlevi, Beyne bir SD kart takılırsa True değerini döndürür.
Verileri SD Karttaki bir CSV dosyasına yazma
Şu ana kadar programımız VEX IQ Brain (2.) ile veri toplayabilmektedir. Veri kaydı projesini tamamlamak için, gelecekte inceleme ve analiz amacıyla verileri SD karttaki Virgülle Ayrılmış Değerler (CSV) dosyasına yazmamız gerekir.
- Bir CSV dosyasına farklı türde veriler yazarken, her sütunun hangi tür verileri içerdiğini bilmek isteriz. Bunu yapmak için verileri kaydetmeden önce CSV başlık metnini
data_buffer
değişkenine ekleyebiliriz.
Böylece, CSV dosyası için sütun adlarını belirtmek üzere CSV başlık metnini saklamak içincsvHeaderText
değişkenini bildirmek için kodu ekleyin ve üzerine yazılacak CSV dosyasının adını tutacaksd_file_name
değişkenini bildirin. Hafıza kartı.
Not: Başlıkların, data_buffer
değişkeninde saklanan verilerle aynı sırada olduğundan emin olun.
- Daha sonra, veri toplama için CSV başlık metnini
for döngüsü
öncedata_buffer
dizesine ekleyin.
- SD karttaki bir dosyaya veri yazmadan önce
brain.sdcard.savefile()
fonksiyonunun nasıl kullanılacağını öğrenelim.
Bu komut,data_buffer
değişkeninde saklanan verileri SD karttaki adlandırılmış bir CSV dosyasına yazar.
Şimdi bunu parçalara ayıralım:-
brain.sdcard.savefile(): İşlev, bir bytearray'i SD karttaki adlandırılmış bir dosyaya kaydeder. İşlev, dosyaya yazılan bayt sayısını döndürür.
-
sd_file_name: Fonksiyonun ilk parametresi. Yazılacak dosyanın adını belirtir. Bu projede dosya adı
sd_file_name değişkeninde saklanır.
-
bytearray(datat_buffer,'utf-8'): Fonksiyonun ikinci parametresi. Dosyaya yazılacak bayt dizisini temsil eder.
-
- bytearray(): Yöntem, değiştirilebilir bir bytearray oluşturur. Bu talimatta, kodlamayı belirterek bir dizeyi bytearray'e dönüştürmek için bunu kullanıyoruz.
- data_buffer: Yöntemin ilk parametresi. Bytearray'e dönüştürülecek kaynağı belirtir. Bu projede kaynak,
data_buffer değişkeninde saklanan verilerdir.
- 'utf-8': Yöntemin ikinci parametresi. Dizeyi kodlamak için kullanılan belirtilen kodlamayı gösterir. Bu talimattaki kodlama 'utf-8'dir.
-
-
- Veri toplama için
for döngüsü
sonra,data_buffer
değişkeninde saklanan verileri SD karttaki CSV dosyasına yazmak içinbrain.sdcard.savefile()
işlevini kullanın. Ek olarak, verilerin dosyaya başarılı bir şekilde yazılıp yazılmadığını doğrulamak içinbrain.sdcard.savefile()
işlevinden dönen değeri kontrol etmek için kodu ekleyin ve gerçek verileri elde etmek için VEX IQ Brain Screen'de ilgili mesajı görüntüleyin. zaman geri bildirimi.
Not:brain.sdcard.savefile()
işlevi, dosyaya yazılan bayt sayısını döndürür. Bu projede, toplanan verileri bir CSV dosyasına yazmak için kullanıyoruz, bu nedenle dosyaya yazılan bayt sayısı sıfırdan büyük olmalıdır. Yanibrain.sdcard.savefile()
fonksiyonu 0 değerini döndürüyorsa verinin dosyaya başarıyla yazılamadığı sonucuna varabiliriz. Aksi takdirde veriler dosyaya yazılmıştır.
Tebrikler! VEX IQ Brain (2.) ile hızlanma verilerini toplayan ve bunları SD karttaki bir CSV dosyasına saklayan bir veri kayıt projesi geliştirdik. Daha sonra, veri analizi için CSV dosyasının nasıl açılacağını keşfedeceğiz.
Veri Analizi için CSV Dosyasını Açma
Veriler SD karttaki CSV dosyasına yazıldıktan sonra, verileri okumak ve analiz etmek amacıyla dosyayı açmak için bir elektronik tablo uygulaması kullanabiliriz.
Not: En yaygın elektronik tablo uygulamalarından ikisi Google E-Tablolar ve Microsoft Excel'dir. Bu yazımızda SD karttaki CSV dosyasını açmak için Google E-Tablolar (Web Tabanlı) kullanacağız. Diğer uygulamaları kullanma süreci benzerdir.
- SD kartı VEX IQ Brain'in SD kart yuvasından çıkarın. Eğer bilgisayarda yerleşik bir Micro SD kart yuvası varsa, SD kartı doğrudan o yuvaya takabiliriz. Aksi takdirde, SD kartını bir SD kart adaptörüne takın ve ardından adaptörü bilgisayara bağlayın.
- Google hesabımıza giriş yapın ve Google E-Tablolar'ı açın. Yeni bir e-tablo oluşturun.
- Elektronik tabloda “Dosya” menüsünü açın, “İçe Aktar” -> “Yükle” -> “Gözat” düğmesini seçin, ardından bilgisayardaki CSV dosyasını seçin. CSV dosyasını yükledikten sonra “Verileri İçe Aktar” butonuna tıklayın. Verileri içe aktardıktan sonra, toplanan verileri CSV dosyasında görmek için “Şimdi aç” öğesine tıklayın.
- (İsteğe bağlı) Verileri analiz etmenin kolay bir yolu, bir grafik çizip verilerdeki eğilimleri aramaktır. Elektronik tabloda “Ekle” menüsünü açın ve CSV dosyasındaki verileri kullanarak bir grafik çizmek için “Grafik” seçin. Aşağıdaki grafik VEX IQ Brain (2.) ile toplanan ivme verilerinin sonucudur.
Not: Farklı bir Grafik Türü seçmek veya grafiği ihtiyaçlarımıza göre düzenlemek için Grafik düzenleyicisini kullanabiliriz.
Bu noktaya kadar VEX IQ Brain (2.) ile veri toplayan ve SD karttaki CSV dosyasına kaydeden veri kayıt projesini tamamladık. Ayrıca SD karttaki CSV dosyasını Google E-Tablolar'ı kullanarak nasıl okuyacağımızı ve hatta daha fazla analiz için bir grafik oluşturmayı da öğrendik. Sırada ne var? Veri kaydı için VEX Robotunu kullanarak daha heyecan verici deneyler planlamaya çalışalım, değişen çevresel faktörlerin çeşitli veri türlerini nasıl etkilediğini gözlemleyelim ve etrafımızdaki dünyayı daha derinlemesine anlayalım.