İçindekiler:

Arduino Datalogger: 8 Adım (Resimli)
Arduino Datalogger: 8 Adım (Resimli)

Video: Arduino Datalogger: 8 Adım (Resimli)

Video: Arduino Datalogger: 8 Adım (Resimli)
Video: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, Kasım
Anonim
Arduino Veri Kaydedici
Arduino Veri Kaydedici
Arduino Veri Kaydedici
Arduino Veri Kaydedici

Bu eğitimde Arduino kullanarak basit bir veri kaydedici yapacağız. Buradaki nokta, bilgi toplamak ve terminale yazdırmak için Arduino kullanmanın temellerini öğrenmektir. Bir dizi görevi tamamlamak için bu temel kurulumu kullanabiliriz.

Başlamak:

Bir Tinkercad (www.tinkercad.com) hesabına ihtiyacınız olacak. Başlayın ve e-postanız veya sosyal medya hesabınızla kaydolun.

Giriş yapmak sizi Tinkercad Dashboard'a götürür. Soldaki "Devreler"e tıklayın ve "Yeni Devre Oluştur"u seçin. Başlayalım!

Dosyanın tamamını TInkercad Circuits'te bulabilirsiniz - İncelediğiniz için teşekkürler!

Adım 1: Bazı Bileşenler Ekleyin

Bazı Bileşenler Ekleyin
Bazı Bileşenler Ekleyin
Bazı Bileşenler Ekleyin
Bazı Bileşenler Ekleyin
Bazı Bileşenler Ekleyin
Bazı Bileşenler Ekleyin

Bazı temel bileşenlere ihtiyacınız olacak. Bunlar şunları içerir:

  • Arduino kurulu
  • ekmek tahtası

Bunları arayarak ekleyin ve orta alana tıklayıp sürükleyin.

Breadboard'u Arduino'nun üzerine yerleştirin. Bağlantıları daha sonra görmeyi kolaylaştırır.

2. Adım: Breadboard'lar Hakkında Bir Not

Breadboard'lar Hakkında Bir Not
Breadboard'lar Hakkında Bir Not

Bir breadboard, hızlı prototipleme için süper yardımcı bir cihazdır. Bileşenleri bağlamak için kullanıyoruz. Dikkat edilmesi gereken bazı şeyler.

  1. Noktalar dikey olarak bağlanır, ancak ortadaki çizgi bu bağlantıyı üst ve alt sütunlardan ayırır.
  2. Sütunlar, satır boyunca olduğu gibi soldan sağa bağlı değildir. Bu, tüm bileşenlerin dikey olarak aşağıya değil sütunlara bağlanması gerektiği anlamına gelir.
  3. Düğmeleri veya anahtarları kullanmanız gerekiyorsa, bunları ortadaki devre arasına bağlayın. Bunu daha sonraki bir eğitimde ziyaret edeceğiz.

Adım 3: İki Sensör Ekleyin

İki Sensör Ekleyin
İki Sensör Ekleyin

Kullandığımız iki sensör, bir Işığa Duyarlı sensör ve Sıcaklık sensörüdür.

Bu sensörler ışığı ve sıcaklığı değerlendirir. Değeri okumak ve Arduino üzerindeki Seri monitörde görüntülemek için Arduino kullanıyoruz.

İki sensörü arayın ve ekleyin. Breadboard'daki sütunlar boyunca yerleştirildiklerinden emin olun. Onları daha kolay görebilmek için aralarında yeterli boşluk bırakın.

Adım 4: Işığa Duyarlı Sensör

Işığa Duyarlı Sensör
Işığa Duyarlı Sensör
Işığa Duyarlı Sensör
Işığa Duyarlı Sensör
Işığa Duyarlı Sensör
Işığa Duyarlı Sensör
Işığa Duyarlı Sensör
Işığa Duyarlı Sensör
  1. Işığa duyarlı sensör için Arduino üzerinde bulunan 5V pinden breadboard üzerindeki kısımda sağ bacak ile aynı kolona bir tel ekleyiniz. Tel rengini kırmızı olarak değiştirin.
  2. Sol ayağı aynı sütundaki pin üzerinden Arduino üzerindeki A0 (A-sıfır) pinine bağlayın. Bu, sensörden değeri okumak için kullanacağımız analog pindir. Bu kabloyu sarıya veya kırmızı veya siyahtan başka bir renge boyayın.
  3. Tahtaya bir direnç yerleştirin (arayın ve tıklayın ve sürükleyin). Bu, devreyi tamamlar ve sensörü ve pimi korur.

    • Sütunların üzerinden geçecek şekilde çevirin.
    • Bir bacağı breadboard üzerindeki sağ bacak sütununa bağlayın
    • Direncin diğer ucundan toprağa bir tel yerleştirin

      Tel rengini siyah olarak değiştirin

  4. Tüm bağlantıları iki kez kontrol edin. Bir şey doğru yerde değilse, bu düzgün çalışmayacaktır.

Adım 5: Kodu Başlatın

Kodu Başlat
Kodu Başlat
Kodu Başlat
Kodu Başlat
Kodu Başlat
Kodu Başlat

Şimdi bu bileşenin koduna bakalım.

İlk olarak, bu adımdaki üçüncü resme bakın. İki işlevli bazı kodlar içerir:

geçersiz kurulum()

boşluk döngüsü()

C++'da, tüm işlevler dönüş türlerini, ardından adlarını, ardından argümanları genellikle değişkenler olarak iletmek için kullanılabilecek iki yuvarlak ayraç sağlar. Bu durumda, dönüş türü void veya hiçbir şey değildir. Ad kurulumdur ve işlev hiçbir argüman almaz.

Kurulum işlevi, Arduino önyüklendiğinde (fiş taktığınızda veya pil taktığınızda) bir kez çalışır.

Döngü işlevi, kurulum işlevinin tamamladığı milisaniyeden itibaren sabit bir döngüde çalışır.

Arduino çalıştığında döngü işlevine koyduğunuz her şey çalışacaktır. Bunun dışındaki her şey yalnızca çağrıldığında çalışır. Sanki döngü dışında başka bir fonksiyon tanımlamış ve çağırmışız gibi.

Görev

Tinkercad'deki düğmeyle Kod panelini açın. Bloklar açılır menüsünü Metin olarak değiştirin. Açılan uyarı kutusunu kabul edin. Şimdi, bu adımda üçüncü resimdeki metin dışında gördüğünüz her şeyi silin.

Değişkenler

Başlamak için, kodumuzu gerçekten verimli hale getirmek için bazı değişkenler atamamız gerekiyor.

Değişkenler, yalnızca bir nesne tutabilen kovalar gibidir (C++, nesne yönelimli dediğimiz şeydir). Evet, dizilerimiz var ama bunlar özel değişkenler ve onlardan daha sonra bahsedeceğiz. Bir değişken atadığımızda, ona ne tür olduğunu söylememiz ve ardından ona bir değer vermemiz gerekiyor. Şuna benziyor:

int bazıVar = A0;

Böylece bir değişken atadık ve ona int tipini verdik. Bir int, bir tam sayı veya tam sayıdır.

"Ama tam sayı kullanmamışsın!" dediğinizi duyar gibiyim. Bu doğru.

Arduino bizim için özel bir şey yapar, böylece A0'ı bir tamsayı olarak kullanabiliriz, çünkü başka bir dosyada A0'ı bir tamsayı olarak tanımlar, böylece ne olduğunu bilmeden bu tamsayıya atıfta bulunmak için A0 sabitini kullanabiliriz. Sadece 0 yazsaydık, 0 konumundaki dijital pime atıfta bulunurduk ve bu işe yaramazdı.

Bu yüzden kodumuz için eklediğimiz sensör için bir değişken yazacağız. Ben basit bir isim vermenizi tavsiye etsem de, bu size kalmış.

Kodunuz şöyle görünmelidir:

int lightSensor = A0;

geçersiz kurulum() { } geçersiz döngü() { }

Şimdi Arduino'ya o pin üzerindeki sensörü nasıl kullanacağını anlatalım. Pin modunu ayarlamak ve Arduino'ya onu nerede arayacağını söylemek için kurulum içinde bir fonksiyon çalıştıracağız.

int lightSensor = A0;

void setup() { pinMode(lightSensor, INPUT); } boşluk döngüsü() { }

pinMode işlevi, Arduino'ya (A0) pininin bir INPUT pini olarak kullanılacağını söyler. Değişkenler ve işlev adları için camelCaseUsed'e dikkat edin (bakınız her ilk harf büyük harftir, içinde tümsekler vardır, dolayısıyla… camel…!). Bu bir kongre ve alışmak güzel.

Son olarak, biraz veri almak için analogRead işlevini kullanalım.

int lightSensor = A0;

void setup() { pinMode(lightSensor, INPUT); } void loop() { int okuma = analogRead(lightSensor); }

Okumayı bir değişkende sakladığımızı göreceksiniz. Yazdırmamız gerektiğinden bu önemlidir. Bunu seri monitöre yazdırmak için Seri kitaplığını (bir kitaplık, yalnızca tanımıyla çağırarak işleri daha hızlı yazmamızı sağlamak için kodumuza ekleyebileceğimiz koddur) kullanalım.

int lightSensor = A0;

void setup() { // Pin modlarını ayarla pinMode(lightSensor, INPUT); // Serial.begin(9600) seri kitaplığını ekleyin; } void loop() { // Sensörü oku int okuma = analogRead(lightSensor); // Değeri monitöre yazdırın Serial.print("Light: "); Serial.println(okuma); // sonraki döngüyü 3 saniye geciktir (3000); }

Birkaç yeni şey! İlk önce şunları göreceksiniz:

// Bu bir yorumdur

Diğer insanlara kodumuzun ne yaptığını anlatmak için yorumları kullanırız. Bunları sık sık kullanmalısınız. Derleyici bunları okumaz ve koda dönüştürmez.

Şimdi, Seri kütüphanesini de satırı ile ekledik.

Seri.başlangıç(9600)

Bu, bir argüman alan bir fonksiyon örneğidir. Serial kütüphanesini çağırdınız, sonra bir fonksiyon çalıştırdınız (yuvarlak ayraçlar nedeniyle bir fonksiyon olduğunu biliyoruz) ve bir tamsayıyı argüman olarak ileterek Seri fonksiyonunu 9600baud'da çalışacak şekilde ayarladınız. Nedenini merak etmeyin - şimdilik sadece işe yaradığını bilin.

Bir sonraki yaptığımız şey seri monitöre yazdırmaktı. İki fonksiyon kullandık:

// Bu, satır sonu olmadan seriye yazdırır (sonunda bir giriş)

Serial.print("Işık: "); // Bu satır sonunu koyar, böylece her okuyup yazdığımızda yeni bir satıra geçer Serial.println(reading);

Önemli olan, her birinin ayrı bir amacı olduğudur. Dizelerinizin çift tırnak işareti kullandığından ve iki nokta üst üste işaretinden sonra boşluk bıraktığınızdan emin olun. Bu, kullanıcı için okunabilirliğe yardımcı olur.

Son olarak, döngüyü yavaşlatmak ve her üç saniyede bir okumasını sağlamak için gecikme işlevini kullandık. Bu binlerce saniyede yazılmıştır. Her 5 saniyede bir okuyacak şekilde değiştirin.

Harika! Gidiyoruz!

Adım 6: Simülasyon

simülasyon
simülasyon
simülasyon
simülasyon
simülasyon
simülasyon

Simülasyonu çalıştırarak her zaman işlerin çalıştığını kontrol edin. Bu devre için, çalışıp çalışmadığını kontrol etmek ve değerlerinizi kontrol etmek için simülatörü de açmanız gerekir.

Simülasyonu başlatın ve seri monitörü kontrol edin. Işık sensörünün değerini üzerine tıklayarak ve kaydırıcıyı kullanarak değeri değiştirin. Seri monitörde de değer değişimini görmelisiniz. Olmazsa veya Simülasyonu Başlat düğmesine bastığınızda hata alırsanız, dikkatlice geri dönün ve tüm kodunuzu kontrol edin.

  • Size sunulacak olan kırmızı hata ayıklama penceresinde gösterilen satırlara odaklanın.
  • Kodunuz doğruysa ve simülasyon hala çalışmıyorsa, kablolamanızı kontrol edin.
  • Sayfayı yeniden yükleyin - alakasız bir sistem/sunucu hatasıyla karşılaşabilirsiniz.
  • Bilgisayarda yumruğunu salla ve tekrar kontrol et. Tüm programcılar bunu yapar. Tüm. NS. Zaman.

7. Adım: Sıcaklık Sensörünü Bağlayın

Sıcaklık Sensörünü Bağlayın
Sıcaklık Sensörünü Bağlayın

Şimdi doğru yolda olduğunuzu varsayacağım. Devam edin ve resimde önerildiği gibi sıcaklık sensörünü bağlayın. 5V ve GND kablolarının ışık için olanlarla aynı alana yerleştirilmesine dikkat edin. Tamamdır. Paralel devre gibidir ve simülatörde sorun yaratmaz. Gerçek bir devrede, daha iyi güç yönetimi ve bağlantılar sağlamak için bir devre kartı veya ekran kullanmalısınız.

Şimdi kodu güncelleyelim.

sıcaklık sensörü kodu

Bu biraz daha zor, ama sadece okumayı dönüştürmek için biraz matematik yapmamız gerektiğinden. Çok kötü değil.

int lightSensor = A0;

int tempSensor = A1; void setup() { // Pin modlarını ayarla pinMode(lightSensor, INPUT); // Serial.begin(9600) seri kitaplığını ekleyin; } void loop() { // Sıcaklık sensörü // Bir satırda iki değişken yaratmak - oh verimlilik! // Float değişken ondalık bir kayan nokta voltajı depolamak için, dereceC; // Pimin değerini okuyun ve 0 - 5 arasında bir okumaya dönüştürün // Esasen voltaj = (5/1023 = 0.004882814); voltaj = (analogRead(tempSensor) * 0.004882814); // Dereceye Dönüştür C dereceC = (voltaj - 0,5) * 100; // Seri monitöre yazdırın Serial.print("Temp: "); Seri.print(dereceC); Serial.println("oC"); // Sensörü oku int okuma = analogRead(lightSensor); // Değeri monitöre yazdırın Serial.print("Light: "); Serial.println(okuma); // sonraki döngüyü 3 saniye geciktir (3000); }

Kodda bazı güncellemeler yaptım. Bunları tek tek inceleyelim.

İlk önce satırı ekledim

int tempSensor = A1;

LightSensor gibi, daha sonra kolaylaştırmak için değeri bir değişkende saklamam gerekiyor. Bu sensörün yerini değiştirmek zorunda kalırsam (kartı yeniden kablolamak gibi), o zaman sadece bir kod satırını değiştirmem gerekir, A0 veya A1'i değiştirmek için tüm kod tabanını aramam, vb.

Ardından, okuma ve sıcaklığı bir şamandırada saklamak için bir satır ekledik. Bir satırda iki değişkeni not edin.

şamandıra gerilimi, dereceC;

Bu gerçekten yardımcı oluyor çünkü yazmam gereken satır sayısını azaltıyor ve kodu hızlandırıyor. Yine de hataları bulmak daha zor olabilir.

Şimdi, okumayı yapacağız ve saklayacağız, sonra onu çıktı değerimize dönüştüreceğiz.

voltaj = (analogRead(tempSensor) * 0.004882814);

dereceC = (voltaj - 0,5) * 100;

Bu iki satır zor görünüyor, ancak ilkinde okumayı alıp 0.004 ile çarpıyoruz… çünkü 1023'ü (analog okuma bu değeri döndürür) 5 üzerinden bir okumaya dönüştürür.

Oradaki ikinci satır, ondalık noktayı taşımak için bu okumayı 100 ile çarpar. Bu bize sıcaklığı verir. Düzenli!

8. Adım: Test Etme ve Kontrol Etme

Test ve Kontrol
Test ve Kontrol

Her şey planlanacak, çalışan bir devreniz olmalı. Simülasyonu çalıştırarak ve seri monitörü kullanarak test edin. Hatalarınız varsa kontrol edin, tekrar kontrol edin ve yumruğunuzu sallayın.

Onu sen mi yaptın? Paylaşın ve bize hikayenizi anlatın!

Bu sizin için gömülü olan son devredir, böylece son yaratımı oynayabilir/test edebilirsiniz. Eğitimi tamamladığınız için teşekkürler!

Önerilen: