VEX Beyin/Sensörler ile Veri Kaydı (Python Versiyonu)

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.

    resim5.png

  • 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çin polling_delay_msec değişkenini bildirin ve depolamak için boş bir dize değişkeni data_buffer oluşturun. sensörden okunan veriler.

    image9.png

  • 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.

    image13.png

  • 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ğerini data_buffer değişkenine belirli bir formatta ekler.

    image14.png

    “%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.

    image7.png

    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çin data_buffer değişkenine eklemek için döngü için kullanabiliriz. Stratejimiz yineleme sayısını belirlemek için numOfDataEntries değişkeninin değerini kullanmaktır.

    image12.png

  • Ş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çin polling_delay_msec değişkeninin değerini kullanıyoruz.

    image8.png

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.

resim1.png




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.

IQ Kart Okuyucu Açıklama (1).png

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.

    image17.png


    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çin csvHeaderText değişkenini bildirmek için kodu ekleyin ve üzerine yazılacak CSV dosyasının adını tutacak sd_file_name değişkenini bildirin. Hafıza kartı.

    image10.png

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ü önce data_buffer dizesine ekleyin.

    image15.png

  • SD karttaki bir dosyaya veri yazmadan önce brain.sdcard.savefile() fonksiyonunun nasıl kullanılacağını öğrenelim.

    image4.png


    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çin brain.sdcard.savefile() işlevini kullanın. Ek olarak, verilerin dosyaya başarılı bir şekilde yazılıp yazılmadığını doğrulamak için brain.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.

    image6.png


    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. Yani brain.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. 

image16.png

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.

    image11.png

  • (İ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.

    image3.png


    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.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: