Mündəricat:

Arduino Datalogger: 8 addım (şəkillərlə)
Arduino Datalogger: 8 addım (şəkillərlə)

Video: Arduino Datalogger: 8 addım (şəkillərlə)

Video: Arduino Datalogger: 8 addım (şəkillərlə)
Video: Arduino serial порт. Как сохранить файл. Ардуино проекты. 2024, Iyul
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

Bu təlimatda, Arduino istifadə edərək sadə bir məlumat qeydçisi edəcəyik. Məqsəd, məlumat almaq və terminalda çap etmək üçün Arduinodan istifadə etməyin əsaslarını öyrənməkdir. Bir sıra vəzifələri yerinə yetirmək üçün bu əsas qurğudan istifadə edə bilərik.

Başlamaq üçün:

Bir Tinkercad (www.tinkercad.com) hesabına ehtiyacınız olacaq. E -poçt və ya sosial media hesabınıza baş çəkin və qeydiyyatdan keçin.

Daxil olmaq sizi Tinkercad Tablosuna aparır. Soldakı "Dövrlər" düyməsini basın və "Yeni Dövrə Yarat" ı seçin. Gəlin başlayaq!

Tam faylı TInkercad Circuits -də tapa bilərsiniz - Yoxladığınız üçün təşəkkürlər!

Addım 1: Bəzi komponentlər əlavə edin

Bəzi komponentlər əlavə edin
Bəzi komponentlər əlavə edin
Bəzi komponentlər əlavə edin
Bəzi komponentlər əlavə edin
Bəzi komponentlər əlavə edin
Bəzi komponentlər əlavə edin

Bir neçə əsas komponentə ehtiyacınız olacaq. Bunlara daxildir:

  • Arduino lövhəsi
  • Çörək lövhəsi

Onları axtararaq və orta sahəyə sürükləyərək bunları əlavə edin.

Çörək taxtasını Arduinonun üzərinə qoyun. Daha sonra əlaqələrə baxmağı asanlaşdırır.

Addım 2: Breadboards haqqında bir qeyd

Breadboards haqqında bir qeyd
Breadboards haqqında bir qeyd

Çörək taxtası sürətli prototip yaratmaq üçün çox faydalı bir cihazdır. Komponentləri birləşdirmək üçün istifadə edirik. Qeyd etmək lazım olan bəzi şeylər.

  1. Nöqtələr şaquli olaraq bağlanır, ancaq ortadakı xətt bu əlaqəni yuxarı və aşağı sütunlardan ayırır.
  2. Sütunlar, sıradakı kimi soldan sağa bağlanmır. Bu o deməkdir ki, bütün komponentlər şaquli olaraq yox, sütunlar arasında bağlanmalıdır.
  3. Düymələrdən və ya açarlardan istifadə etməlisinizsə, onları ortadakı fasilə boyunca birləşdirin. Bunu daha sonrakı bir dərsdə ziyarət edəcəyik.

Addım 3: İki Sensor əlavə edin

İki Sensor əlavə edin
İki Sensor əlavə edin

İstifadə etdiyimiz iki sensora Fotosensitiv Sensor və Temperatur sensoru daxildir.

Bu sensorlar işığı və temperaturu qiymətləndirir. Dəyəri oxumaq və Arduino'da Serial monitorda göstərmək üçün Arduinodan istifadə edirik.

İki sensoru axtarın və əlavə edin. Çörək taxtasındakı sütunların arasında yerləşdiklərindən əmin olun. Görməyi asanlaşdırmaq üçün aralarına kifayət qədər boşluq qoyun.

Addım 4: Fotosensitiv Sensor

Fotosensitiv Sensor
Fotosensitiv Sensor
Fotosensitiv Sensor
Fotosensitiv Sensor
Fotosensitiv Sensor
Fotosensitiv Sensor
Fotosensitiv Sensor
Fotosensitiv Sensor
  1. İşığa həssas sensor üçün, Arduino üzərindəki 5V pinindən bir çörək taxtasındakı hissənin sağ ayağı ilə eyni sütuna əlavə edin. Telin rəngini qırmızıya dəyişin.
  2. Sol ayağı eyni sütundakı pin vasitəsilə Arduino üzərindəki A0 (A-sıfır) pininə bağlayın. Bu, sensordan dəyəri oxumaq üçün istifadə edəcəyimiz analoq pindir. Bu teli sarı və ya qırmızı və ya qara rəngdən başqa bir şeylə rəngləyin.
  3. Lövhəyə bir rezistor qoyun (axtarın və vurun). Bu dövrəni tamamlayır və sensoru və pimi qoruyur.

    • Sütunların üstündən keçməsi üçün onu çevirin.
    • Bir ayağınızı çörək taxtasındakı sağ ayaq sütununa bağlayın
    • Rezistorun digər ucundan yerə tel qoyun

      Telin rəngini qara rəngə dəyişin

  4. Bütün əlaqələri iki dəfə yoxlayın. Bir şey doğru yerdə deyilsə, bu düzgün işləməyəcək.

Addım 5: Kodu başladın

Kodu Başlayın
Kodu Başlayın
Kodu Başlayın
Kodu Başlayın
Kodu Başlayın
Kodu Başlayın

Bu komponentin koduna baxaq.

Əvvəlcə bu addımdakı üçüncü görüntüyə baxın. İki funksiyalı bir neçə kodu ehtiva edir:

boş quraşdırma ()

boşluq döngəsi ()

C ++ - da bütün funksiyalar öz qayıdış növünü, sonra adını, sonra da arqumentləri ötürmək üçün istifadə edilə bilən iki yuvarlaq mötərizəni, ümumiyyətlə dəyişən olaraq təmin edir. Bu halda, qaytarma növü etibarsızdır və ya heç bir şey deyil. Adı quruluşdur və funksiya heç bir arqument tələb etmir.

Quraşdırma funksiyası Arduino çəkildikdə bir dəfə işləyir (onu bağladığınızda və ya batareyaları bağladığınızda).

Döngü funksiyası, quraşdırma funksiyasını tamamlayan millisaniyədən sabit bir döngədə çalışır.

Döngü funksiyasına qoyduğunuz hər şey Arduino işləyərkən işləyəcək. Xaricdəki hər şey yalnız çağırıldıqda işləyəcək. Dövrün xaricində başqa bir funksiyanı təyin edib çağırdığımız kimi.

Tapşırıq

Tinkercaddakı düymə ilə Kod panelini açın. Bloklar açılan siyahısını Mətn olaraq dəyişdirin. Açılan xəbərdarlıq qutusunu qəbul edin. İndi, bu addımdakı üçüncü şəkildəki mətndən başqa gördüyünüz hər şeyi silin.

Dəyişənlər

Başlamaq üçün kodumuzu həqiqətən səmərəli etmək üçün bəzi dəyişənlər təyin etməliyik.

Dəyişənlər yalnız bir obyekt tuta bilən kovalara bənzəyir (C ++, obyekt yönümlü adlandırdığımız şeydir). Bəli, seriallarımız var, amma bunlar xüsusi dəyişənlərdir və onlar haqqında daha sonra danışacağıq. Bir dəyişən təyin edərkən, bunun hansı növ olduğunu söyləməliyik, sonra dəyər verməliyik. Bu belə görünür:

int someVar = A0;

Beləliklə, bir dəyişən təyin etdik və int tipini verdik. İnt, tam və ya tam ədəddir.

"Ancaq tam bir rəqəm istifadə etmədiniz!", Dediyinizi eşidirəm. Düzdür.

Arduino bizim üçün xüsusi bir şey edir, buna görə də A0 -u tam ədəd kimi istifadə edə bilərik, çünki başqa bir sənəddə A0 -u tamsayı olaraq təyin edir, buna görə də bunun nə olduğunu bilmədən bu tam ədədə istinad etmək üçün A0 sabitindən istifadə edə bilərik. Yalnız 0 yazsaydıq, işləməyən 0 mövqedəki rəqəmsal pinə müraciət edərdik.

Beləliklə, kodumuz üçün əlavə etdiyimiz sensor üçün bir dəyişən yazacağıq. Sadə bir ad verməyi məsləhət görsəm də, bu sizə bağlıdır.

Kodunuz belə görünməlidir:

int lightSensor = A0;

void setup () {} void loop () {}

İndi Arduinoya o pimin üzərindəki sensoru necə idarə edəcəyini izah edək. Pin rejimini təyin etmək və Arduino -ya harada axtarmağı söyləmək üçün quraşdırma daxilində bir funksiya işlədəcəyik.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } boşluq döngəsi () {}

pinMode funksiyası Arduino -ya pin (A0) INPUT pin kimi istifadə ediləcəyini bildirir. Dəyişənlər və funksiya adları üçün camelCaseUsed -a diqqət yetirin (hər bir hərfin böyük olduğu, buna görə də dəvələr olduğu üçün… dəvə…!). Bu bir ənənədir və buna alışmaq yaxşıdır.

Nəhayət, bəzi məlumatlar əldə etmək üçün analogRead funksiyasından istifadə edək.

int lightSensor = A0;

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

Oxumanı dəyişən bir şəkildə saxladığımızı görəcəksiniz. Çap etməyimiz lazım olduğu üçün bu vacibdir. Bunu serial monitoruna çap etmək üçün Serial kitabxanadan istifadə edək (kitabxana, hər şeyi daha sürətli yazmağımız üçün kodumuza əlavə edə biləcəyimiz koddur).

int lightSensor = A0;

void setup () {// PinMode pin modunu təyin edin (lightSensor, INPUT); // Serial.begin (9600) serial kitabxanasını əlavə edin; } void loop () {// Sensor oxu int reading = analogRead (lightSensor); // Dəyəri monitora yazdır Serial.print ("İşıq:"); Serial.println (oxu); // növbəti döngəni 3 saniyə gecikdir (3000); }

Bir neçə yeni şey! Əvvəlcə bunları görəcəksiniz:

// Bu bir şərhdir

Kodumuzun nə etdiyini başqalarına izah etmək üçün şərhlərdən istifadə edirik. Bunlardan tez -tez istifadə etməlisiniz. Tərtibçi bunları oxuyub koda çevirməyəcək.

İndi, Seriya kitabxanasını da xətlə əlavə etdik

Serial.başla (9600)

Bu, mübahisə edən bir funksiyaya nümunədir. Kitabxananı Serial adlandırdınız, sonra bir funksiya işlədin (yuvarlaq mötərizələr səbəbiylə bir funksiya olduğunu bilirik) və arqument olaraq tam ədədlə ötürüldükdən sonra Serial funksiyasını 9600baud -da işlədirik. Niyə narahat olmayın - bilin ki, indi işləyir.

Növbəti işimiz serial monitorda çap etmək idi. İki funksiyadan istifadə etdik:

// Bu, seriala heç bir xətt kəsilmədən yazdırır (sonunda bir giriş)

Serial.print ("İşıq:"); // Bu satır fasiləsi qoyur, buna görə hər oxuduqda və yazanda yeni bir sətirdə gedir Serial.println (oxu);

Görməli olduğumuz şey, hər birinin ayrı bir məqsədinin olmasıdır. Stringlərinizin iki tırnak işarəsi istifadə etdiyinə və iki nöqtədən sonra boşluğu tərk etdiyinizə əmin olun. İstifadəçinin oxunmasını asanlaşdırır.

Nəhayət, gecikmə funksiyasından istifadə edərək döngəmizi yavaşlatdıq və hər üç saniyədə yalnız bir dəfə oxumaq üçün istifadə etdik. Bu minlərlə saniyədə yazılır. Hər 5 saniyədə yalnız bir dəfə oxumaq üçün dəyişdirin.

Əla! Gedək!

Addım 6: Simulyasiya

Simulyasiya
Simulyasiya
Simulyasiya
Simulyasiya
Simulyasiya
Simulyasiya

Həmişə işin simulyasiyasını işlədərək yoxlayın. Bu dövrə üçün, işlədiyini yoxlamaq və dəyərlərinizi yoxlamaq üçün simulyatoru açmalısınız.

Simulyasiyanı başladın və serial monitorunu yoxlayın. İşıq sensörünün dəyərini tıklayaraq və kaydırıcıyı istifadə edərək dəyərini dəyişdirin. Serial monitorda da dəyər dəyişikliyini görməlisiniz. Əgər belə deyilsə və ya Simulyasiyanı Başlat düyməsini basdığınız zaman səhvlər alsanız, diqqətlə geri qayıdın və bütün kodlarınızı yoxlayın.

  • Sizə təqdim ediləcək qırmızı ayıklama pəncərəsində göstərilən xətlərə diqqət yetirin.
  • Kodunuz düzgündürsə və simulyasiya hələ də işləmirsə, kabellərinizi yoxlayın.
  • Səhifəni yenidən yükləyin - əlaqəsi olmayan bir sistem/server xətası ola bilər.
  • Yumruğunu kompüterə çırpın və yenidən yoxlayın. Bütün proqramçılar bunu edir. Hamısı.. Zaman.

Addım 7: Temp Sensorunu bağlayın

Temp Sensorunu bağlayın
Temp Sensorunu bağlayın

Düşünürəm ki, indi doğru yoldasan. Davam edin və şəkildən göründüyü kimi temperatur sensörünü bağlayın. 5V və GND tellərinin işıq üçün olanlarla eyni məkanda yerləşdirilməsinə diqqət yetirin. Bu tamamdır. Paralel bir dövrə bənzəyir və simulyatorda problem yaratmayacaq. Həqiqi bir dövrədə daha yaxşı güc idarəçiliyi və əlaqələr təmin etmək üçün bir qırılma taxtası və ya qalxan istifadə etməlisiniz.

İndi kodu yeniləyək.

İstilik sensoru kodu

Bu bir az daha çətindir, ancaq oxunuşu çevirmək üçün bəzi riyazi hesablamalar aparmalı olduğumuz üçün. Çox da pis deyil.

int lightSensor = A0;

int tempSensor = A1; void setup () {// PinMode pin modunu təyin edin (lightSensor, INPUT); // Serial.begin (9600) serial kitabxanasını əlavə edin; } void loop () {// Temp sensoru // Bir sətirdə iki dəyişən yaratmaq - oh səmərəlilik! // Ondalık float gərginliyi, dərəcəC saxlamaq üçün Float var; // Pinin dəyərini oxuyun və 0 - 5 arası oxunuşa çevirin // Əsasən gərginlik = (5/1023 = 0.004882814); gərginlik = (analogRead (tempSensor) * 0.004882814); // Dərəcəyə çevirmək C dərəcəC = (gərginlik - 0.5) * 100; // Serial.print ("Temp:") serial monitoruna çap edin; Serial çap (dərəcə C); Serial.println ("oC"); // sensoru oxuyun int reading = analogRead (lightSensor); // Dəyəri monitora yazdır Serial.print ("İşıq:"); Serial.println (oxu); // növbəti döngəni 3 saniyə gecikdir (3000); }

Kodda bəzi yeniliklər etdim. Gəlin ayrı -ayrılıqda onlardan keçək.

Əvvəlcə xətti əlavə etdim

int tempSensor = A1;

LightSensor kimi, dəyəri daha sonra asanlaşdırmaq üçün dəyişəndə saxlamalıyam. Bu sensorun yerini dəyişdirməli olsaydım (lövhəni yenidən bağlamaq kimi), A0 və ya A1 və s.

Sonra, oxunuşu və tempi bir şamandırada saxlamaq üçün bir xətt əlavə etdik. Bir sətirdə iki dəyişənə diqqət yetirin.

üzmə gərginliyi, dərəcəC;

Bu həqiqətən faydalıdır, çünki yazmalı olduğum sətirlərin sayını azaldır və kodu sürətləndirir. Səhvləri tapmaq daha çətin ola bilər.

İndi oxuyub saxlayacağıq, sonra çıxış dəyərimizə çevirəcəyik.

gərginlik = (analogRead (tempSensor) * 0.004882814);

dərəcəC = (gərginlik - 0,5) * 100;

Bu iki sətir çətin görünür, amma birincisində oxunuşu alırıq və 0.004 ilə vururuq … çünki 1023 -ü (analoji oxu bu dəyəri qaytarır) 5 -dən oxuya çevirir.

Oradakı ikinci sətir, oxu 100 -ə vuraraq ondalık nöqtəni köçürür. Bu bizə temperatur verir. Səliqəli!

Addım 8: Test və yoxlama

Test və yoxlama
Test və yoxlama

Planlaşdıracağınız hər şey, bir iş sxeminiz olmalıdır. Simulyasiyanı işlədən və serial monitordan istifadə edərək sınayın. Səhvləriniz varsa, yoxlayın, yenidən yoxlayın və yumruğunuzu silkələyin.

Bacardınmı? Hekayənizi paylaşın və bizə deyin!

Bu, son yaradıcılığı oynaya/sınaya biləcəyiniz üçün quraşdırılmış son dövrədir. Təlimatı tamamladığınız üçün təşəkkür edirik!

Tövsiyə: