Mundarija:

Arduino Datalogger: 8 qadam (rasmlar bilan)
Arduino Datalogger: 8 qadam (rasmlar bilan)

Video: Arduino Datalogger: 8 qadam (rasmlar bilan)

Video: Arduino Datalogger: 8 qadam (rasmlar bilan)
Video: Arduino Temperature Data Logger with SD Card Module|| JLCPCB 2024, Noyabr
Anonim
Arduino ma'lumotlar katalogi
Arduino ma'lumotlar katalogi
Arduino ma'lumotlar katalogi
Arduino ma'lumotlar katalogi

Ushbu qo'llanmada biz Arduino -dan foydalangan holda ma'lumotlarni ro'yxatga oluvchini yaratamiz. Gap shundaki, Arduino -dan ma'lumot olish va terminalda chop etish uchun foydalanish asoslarini o'rganish. Biz ushbu asosiy sozlamadan foydalanib, bir qator vazifalarni bajarishimiz mumkin.

Boshlash uchun:

Sizga Tinkercad (www.tinkercad.com) hisobi kerak bo'ladi. O'zingizning elektron pochta yoki ijtimoiy media hisobingiz bilan ro'yxatdan o'ting.

Kirish sizni Tinkercad boshqaruv paneliga olib boradi. Chapdagi "O'chirish" ni bosing va "Yangi davr yaratish" -ni tanlang. Qani boshladik!

Siz to'liq faylni TInkercad Circuits -da topishingiz mumkin - tekshirganingiz uchun tashakkur!

1 -qadam: Ba'zi komponentlarni qo'shing

Ba'zi komponentlarni qo'shing
Ba'zi komponentlarni qo'shing
Ba'zi komponentlarni qo'shing
Ba'zi komponentlarni qo'shing
Ba'zi komponentlarni qo'shing
Ba'zi komponentlarni qo'shing

Sizga ba'zi asosiy komponentlar kerak bo'ladi. Bularga quyidagilar kiradi:

  • Arduino taxtasi
  • Non paneli

Ularni qidirish va ularni o'rta maydonga sichqonchani bosib qo'shish.

Non panelini Arduino ustiga qo'ying. Bu ulanishlarni keyinroq ko'rishni osonlashtiradi.

2 -qadam: Breadboards haqida eslatma

Breadboards haqida eslatma
Breadboards haqida eslatma

Non paneli - bu tezkor prototip yaratish uchun juda foydali qurilma. Biz komponentlarni ulash uchun foydalanamiz. E'tibor qilish kerak bo'lgan ba'zi narsalar.

  1. Nuqtalar vertikal ravishda bog'langan, lekin o'rtadagi chiziq bu aloqani yuqori va pastki ustunlardan ajratib turadi.
  2. Ustunlar qator bo'ylab bo'lgani kabi chapdan o'ngga ulanmagan. Bu shuni anglatadiki, barcha komponentlar vertikal pastga emas, balki ustunlar bo'ylab ulanishi kerak.
  3. Agar siz tugmachalarni yoki kalitlarni ishlatishingiz kerak bo'lsa, ularni o'rtadagi tanaffus bo'ylab ulang. Biz buni keyingi darslikda ko'rib chiqamiz.

3 -qadam: ikkita sensorni qo'shing

Ikkita sensorni qo'shing
Ikkita sensorni qo'shing

Biz foydalanadigan ikkita sensor - bu fotosensitiv va harorat sensori.

Bu sensorlar yorug'lik va haroratni baholaydi. Biz qiymatni o'qish va Arduino -dagi ketma -ket monitorda ko'rsatish uchun Arduino -dan foydalanamiz.

Ikkita sensorni qidiring va qo'shing. Ular non panelidagi ustunlar bo'ylab joylashtirilganligiga ishonch hosil qiling. Ko'rishni osonlashtirish uchun ular orasiga etarlicha bo'sh joy qo'ying.

4 -qadam: fotosensitiv sensor

Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
Fotosensitiv sensor
  1. Fotosensitiv sezgich uchun Arduino -dagi 5V -pinli simni non panelidagi o'ng oyog'i bilan bir ustunga qo'shing. Tel rangini qizil rangga o'zgartiring.
  2. Chap oyoqni xuddi shu ustundagi pin orqali Arduino-dagi A0 (A-nol) piniga ulang. Bu analog pin, biz sensordan qiymatni o'qish uchun foydalanamiz. Bu simni sariq yoki qizil yoki qora rangdan boshqasini ranglang.
  3. Rezistorni taxtaga joylashtiring (qidirish va bosish). Bu kontaktlarning zanglashiga olib keladi va sensor va pinni himoya qiladi.

    • Uni aylantiring, shunda u ustunlar bo'ylab o'tadi.
    • Bir oyog'ingizni non panelidagi o'ng oyoq ustuniga ulang
    • Rezistorning boshqa uchidan erga sim qo'ying

      Tel rangini qora rangga o'zgartiring

  4. Barcha ulanishlarni ikki marta tekshiring. Agar biror narsa to'g'ri joyda bo'lmasa, bu to'g'ri ishlamaydi.

5 -qadam: Kodni ishga tushiring

Kodni ishga tushiring
Kodni ishga tushiring
Kodni ishga tushiring
Kodni ishga tushiring
Kodni ishga tushiring
Kodni ishga tushiring

Keling, ushbu komponentning kodini ko'rib chiqaylik.

Birinchidan, bu bosqichdagi uchinchi rasmga qarang. U ikkita funktsiyali ba'zi kodlarni o'z ichiga oladi:

bo'sh o'rnatish ()

bo'sh halqa ()

C ++ da barcha funktsiyalar qaytariladigan turini, so'ngra nomini, so'ngra argumentlarni uzatishda ishlatilishi mumkin bo'lgan ikkita dumaloq qavsni beradi, odatda o'zgaruvchilar sifatida. Bunday holda, qaytarish turi bekor yoki hech narsa emas. Ism sozlangan va funktsiya hech qanday dalil keltirmaydi.

O'rnatish funktsiyasi Arduino yuklanganda bir marta ishlaydi (batareyani ulash yoki ulashda).

Loop funktsiyasi millisekunddan so'ng doimiy tsiklda ishlaydi.

Loop funktsiyasiga kiritilgan hamma narsa Arduino ishga tushganda ishlaydi. Tashqarida hamma narsa faqat chaqirilganda ishlaydi. Agar biz boshqa funktsiyani pastadir tashqarisida aniqlagan va chaqirgan bo'lsak.

Vazifa

Kod panelini Tinkercad tugmasi bilan oching. Bloklar ochiladigan ro'yxatini matnga o'zgartiring. Ochilgan ogohlantirish qutisiga rozilik bildiring. Endi, bu qadamda uchinchi rasmdagi matndan boshqa hamma narsani o'chirib tashlang.

O'zgaruvchilar

Boshlash uchun biz ba'zi o'zgaruvchilarni belgilashimiz kerak, shuning uchun biz kodimizni haqiqatan ham samarali qilamiz.

O'zgaruvchilar faqat bitta ob'ektni ushlab turadigan chelaklarga o'xshaydi (C ++-biz ob'ektga yo'naltirilgan deb ataymiz). Ha, bizda massivlar bor, lekin bu maxsus o'zgaruvchilar va ular haqida keyinroq gaplashamiz. O'zgaruvchini tayinlaganimizda, biz uning qaysi turini aytishimiz kerak, keyin unga qiymat berishimiz kerak. Bu shunday ko'rinadi:

int someVar = A0;

Shunday qilib, biz o'zgaruvchini tayinladik va unga int turini berdik. Int - butun son yoki butun son.

"Lekin siz butun raqamni ishlatmadingiz!", Deb aytayotganingizni eshitaman. Bu haqiqat.

Arduino biz uchun alohida bir narsa qiladi, shuning uchun biz A0ni tamsayı sifatida ishlatishimiz mumkin, chunki boshqa faylda u A0ni butun son sifatida belgilaydi, shuning uchun biz bu tamsayıga nima ekanligini bilmasdan turib A0 konstantasidan foydalanishimiz mumkin. Agar biz faqat 0 yozgan bo'lsak, biz 0 pozitsiyasidagi raqamli pinni ishlatamiz, bu ishlamaydi.

Shunday qilib, bizning kodimiz uchun biz biriktirilgan sensor uchun o'zgaruvchini yozamiz. Men unga oddiy ism berishni maslahat beraman, bu sizga bog'liq.

Sizning kodingiz shunday bo'lishi kerak:

int lightSensor = A0;

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

Keling, Arduino -ga bu pimdagi sensorni qanday boshqarishni aytaylik. Biz pin rejimini o'rnatish va Arduino -ga uni qaerdan qidirish kerakligini aytib berish uchun funktsiyani ishga tushiramiz.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {}

pinMode funktsiyasi Arduino -ga pin (A0) INPUT pin sifatida ishlatilishini aytadi. O'zgaruvchilar va funktsiya nomlari uchun camelCaseUsed (har bir birinchi harf katta harf bilan yozilgan, shuning uchun tepada, shuning uchun … tuya …!) Ga e'tibor bering. Bu an'ana va bunga ko'nikish yaxshidir.

Nihoyat, ba'zi ma'lumotlarni olish uchun analogRead funktsiyasidan foydalanamiz.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int o'qish = analogRead (lightSensor); }

Siz o'qishni o'zgaruvchida saqlaganimizni ko'rasiz. Bu juda muhim, chunki biz uni chop etishimiz kerak. Buni ketma -ket monitorga chop etish uchun ketma -ket kutubxonadan foydalanamiz (kutubxona - bu biz yozadigan narsalarni tezroq qilish uchun o'z kodimizga qo'sha oladigan kod).

int lightSensor = A0;

void setup () {// pinMode (lightSensor, INPUT) pin rejimlarini o'rnatish; // Serial.begin (9600) ketma -ket kutubxonasini qo'shing; } void loop () {// Sensorni o'qing int reading = analogRead (lightSensor); // Qiymatni monitorga chop etish Serial.print ("Light:"); Serial.println (o'qish); // keyingi tsiklni 3 soniya kechiktirish bilan kechiktirish (3000); }

Bir nechta yangi narsalar! Birinchidan, siz quyidagilarni ko'rasiz:

// Bu sharh

Biz boshqalarga bizning kodimiz nima qilayotganini aytib berish uchun sharhlardan foydalanamiz. Siz ularni tez -tez ishlatishingiz kerak. Derleyici ularni o'qimaydi va ularni kodga o'zgartirmaydi.

Endi biz qatorli seriyali kutubxonani ham qo'shdik

Serial.begin (9600)

Bu argumentni qabul qiladigan funktsiyaga misol. Siz kutubxonani Serial deb nomladingiz, keyin biz funktsiyani ishga tushirdik (biz bilamizki, bu dumaloq qavslar tufayli funktsiya) va argument sifatida butun sonni o'tkazib, Serial funktsiyasini 9600baudda ishlashga o'rnatdingiz. Nega xavotir olmang - bilingki, u hozircha ishlaydi.

Keyingi ishimiz ketma -ket monitorga chop etish edi. Biz ikkita funktsiyani ishlatdik:

// Bu ketma -ket chiziqsiz kesiladi (oxirida kirish)

Serial.print ("Nur:"); // Bu satr tanaffusini qo'yadi, shuning uchun har o'qish va yozishimizda u yangi qatorga o'tadi Serial.println (o'qish);

Muhimi, har birining alohida maqsadi bor. Sizning satrlaringiz ikki tirnoqli belgilarni ishlatganligiga va yo'g'on ichakdan keyin bo'sh joy qoldirganingizga ishonch hosil qiling. Bu foydalanuvchi uchun o'qishni osonlashtiradi.

Nihoyat, biz kechikish funktsiyasidan foydalanib, pastadirni sekinlashtirdik va uni har uch soniyada bir marta o'qishga majbur qildik. Bu ming soniyalarda yozilgan. Har 5 soniyada bir marta o'qish uchun o'zgartiring.

Ajoyib! Ketamiz!

6 -qadam: Simulyatsiya

Simulyatsiya
Simulyatsiya
Simulyatsiya
Simulyatsiya
Simulyatsiya
Simulyatsiya

Har doim simulyatsiya yordamida ishlarning ishlashini tekshiring. Ushbu sxema uchun siz simulyatorni ishga tushirishingiz va uning qiymatlarini tekshirishingiz kerak.

Simulyatsiyani boshlang va ketma -ket monitorni tekshiring. Yorug'lik sensori qiymatini sichqoncha yordamida bosish va o'zgartirish orqali o'zgartiring. Siz ketma -ket monitorda qiymat o'zgarishini ko'rishingiz kerak. Agar bunday bo'lmasa yoki simulyatsiyani boshlash tugmachasini bosganingizda xatolarga yo'l qo'yilsa, diqqat bilan orqaga qayting va barcha kodingizni tekshiring.

  • Sizga taqdim etiladigan qizil disk raskadrovka oynasida ko'rsatilgan satrlarga e'tibor qarating.
  • Agar sizning kodingiz to'g'ri bo'lsa va simulyatsiya hali ham ishlamasa, simlaringizni tekshiring.
  • Sahifani qayta yuklang - sizda tizim/server bilan bog'liq bo'lmagan xato bo'lishi mumkin.
  • Kompyuterga mushtingizni silkitib, yana tekshiring. Barcha dasturchilar buni qilishadi. Hammasi. The. Vaqt.

7 -qadam: Harorat sensori simini ulang

Harorat sensori simini ulang
Harorat sensori simini ulang

Siz hozir to'g'ri yo'ldasiz deb o'ylayman. Davom eting va rasmda ko'rsatilgandek harorat sensori simini ulang. 5V va GND simlarining yorug'lik bilan bir xil bo'shliqqa joylashishiga e'tibor bering. Bu yaxshi. Bu parallel elektronga o'xshaydi va simulyatorda muammo tug'dirmaydi. Haqiqiy sxemada, quvvatni yaxshiroq boshqarish va ulanishlarni ta'minlash uchun uzilish taxtasi yoki qalqondan foydalanish kerak.

Endi kodni yangilaymiz.

Harorat sensori kodi

Bu biroz murakkabroq, lekin biz o'qishni o'zgartirish uchun matematikani bajarishimiz kerak. Juda ham yomon emas.

int lightSensor = A0;

int tempSensor = A1; void setup () {// pinMode pin rejimini o'rnatish (lightSensor, INPUT); // Serial.begin (9600) ketma -ket kutubxonasini qo'shing; } void loop () {// Harorat sensori // Bir qatorda ikkita o'zgaruvchini yaratish - oh samaradorlik! // Float var o'nlik float kuchlanishini saqlash uchun, gradusC; // PIN qiymatini o'qing va uni 0 - 5 gacha o'qishga aylantiring // Asosan kuchlanish = (5/1023 = 0,004882814); kuchlanish = (analogRead (tempSensor) * 0.004882814); // C gradusga aylantirish C darajaC = (kuchlanish - 0,5) * 100; // Serial.print ketma -ket monitoriga chop etish ("Temp:"); Seriyali bosma (daraja C); Serial.println ("oC"); // Sensorni o'qing int reading = analogRead (lightSensor); // Qiymatni monitorga chop etish Serial.print ("Light:"); Serial.println (o'qish); // keyingi tsiklni 3 soniya kechiktirish bilan kechiktirish (3000); }

Men kodga ba'zi yangilanishlarni kiritdim. Keling, ularni alohida -alohida ko'rib chiqaylik.

Birinchidan, men qatorni qo'shdim

int tempSensor = A1;

Xuddi lightSensor singari, keyinroq oson bo'lishi uchun qiymatni o'zgaruvchiga saqlashim kerak. Agar men bu sensorning joyini o'zgartirishim kerak bo'lsa (masalan, taxtani qayta ulash), men faqat bitta kod satrini o'zgartirishim kerak, A0 yoki A1 ni o'zgartirish uchun butun kod bazasini qidirmayman va hokazo.

Keyin, biz o'qish va haroratni o'zgaruvchan saqlash uchun qator qo'shdik. Bir satrda ikkita o'zgaruvchiga e'tibor bering.

suzuvchi kuchlanish, daraja C;

Bu juda foydali, chunki u yozishim kerak bo'lgan qatorlar sonini kamaytiradi va kodni tezlashtiradi. Xatolarni topish qiyinroq bo'lishi mumkin.

Endi biz o'qiymiz va saqlaymiz, keyin uni chiqish qiymatiga o'zgartiramiz.

kuchlanish = (analogRead (tempSensor) * 0.004882814);

darajaC = (kuchlanish - 0,5) * 100;

Bu ikki satr qiyin ko'rinadi, lekin biz birinchisida o'qishni olamiz va uni 0,004 ga ko'paytiramiz, chunki u 1023 ni (analog o'qish bu qiymatni qaytaradi) 5dan o'qishga aylantiradi.

Ikkinchi satr o'qishni 100 ga ko'paytirib, kasrli nuqtani siljitadi. Bu bizga haroratni beradi. Pokiza!

8 -qadam: tekshirish va tekshirish

Sinov va tekshirish
Sinov va tekshirish

Hamma narsa rejalashtirilsa, sizda ishchi sxemasi bo'lishi kerak. Simulyatsiyani ishga tushirish va ketma -ket monitor yordamida tekshirish. Agar sizda xatolar bo'lsa, tekshiring, yana tekshiring va mushtingizni silkiting.

Siz erishdingizmi? O'zingizning hikoyangizni baham ko'ring va aytib bering!

Bu siz uchun o'rnatilgan yakuniy sxema, shuning uchun siz oxirgi yaratilishni o'ynashingiz/sinab ko'rishingiz mumkin. Qo'llanmani to'ldirganingiz uchun tashakkur!

Tavsiya: