فهرست مطالب:

آردوینو Datalogger: 8 مرحله (همراه با تصاویر)
آردوینو Datalogger: 8 مرحله (همراه با تصاویر)

تصویری: آردوینو Datalogger: 8 مرحله (همراه با تصاویر)

تصویری: آردوینو Datalogger: 8 مرحله (همراه با تصاویر)
تصویری: How to use MPU-6050 Accelerometer and Gyroscope with Arduino code 2024, نوامبر
Anonim
فهرستنگار آردوینو
فهرستنگار آردوینو
فهرستنگار آردوینو
فهرستنگار آردوینو

در این آموزش ، ما قصد داریم یک دیتا لاگر ساده با استفاده از آردوینو بسازیم. نکته این است که اصول اولیه استفاده از آردوینو برای گرفتن اطلاعات و چاپ در ترمینال را بیاموزید. ما می توانیم از این تنظیمات اساسی برای انجام طیف وسیعی از کارها استفاده کنیم.

برای شروع:

شما به یک حساب Tinkercad (www.tinkercad.com) نیاز دارید. سر بزنید و با ایمیل یا حساب رسانه اجتماعی خود ثبت نام کنید.

ورود به سیستم شما را به داشبورد Tinkercad می برد. روی "Circuits" در سمت چپ کلیک کنید و "Create Circuit new" را انتخاب کنید. بیایید شروع کنیم!

می توانید فایل کامل را در مدارات TInkercad بیابید - ممنون که آن را بررسی کردید!

مرحله 1: برخی از اجزاء را اضافه کنید

برخی از اجزا را اضافه کنید
برخی از اجزا را اضافه کنید
برخی از اجزا را اضافه کنید
برخی از اجزا را اضافه کنید
برخی از اجزاء را اضافه کنید
برخی از اجزاء را اضافه کنید

شما به چند جزء اساسی نیاز دارید. این شامل:

  • برد آردوینو
  • تخته نان

با جستجوی آنها و کشیدن آنها به ناحیه میانی ، آنها را اضافه کنید.

تخته نان را روی آردوینو قرار دهید. مشاهده ارتباطات بعداً آسان تر می شود.

مرحله 2: نکته ای در مورد Breadboards

نکته ای در مورد تخته نان
نکته ای در مورد تخته نان

تخته نان یک وسیله فوق العاده مفید برای نمونه سازی سریع است. ما از آن برای اتصال اجزا استفاده می کنیم. برخی از نکات قابل توجه است.

  1. نقاط به صورت عمودی به هم متصل می شوند ، اما خط وسط این اتصال را از ستون های بالا و پایین جدا می کند.
  2. ستون ها از چپ به راست متصل نیستند ، همانطور که در سراسر ردیف است. این بدان معناست که همه اجزاء باید در ستونها به جای عمودی به هم متصل شوند.
  3. اگر نیاز به استفاده از دکمه ها یا سوئیچ ها دارید ، آنها را در وسط شکاف وسط وصل کنید. ما این را در آموزش بعدی مشاهده می کنیم.

مرحله 3: دو سنسور اضافه کنید

دو سنسور اضافه کنید
دو سنسور اضافه کنید

دو حسگر مورد استفاده ما سنسور حساس به نور و سنسور دما هستند.

این سنسورها نور و دما را ارزیابی می کنند. ما از Arduino برای خواندن مقدار و نمایش آن در مانیتور سریال در Arduino استفاده می کنیم.

دو سنسور را جستجو و اضافه کنید. مطمئن شوید که آنها در ستون های روی تخته نان قرار گرفته اند. فضای کافی بین آنها بگذارید تا دیدن آنها راحت تر شود.

مرحله 4: سنسور حساس به نور

سنسور حساس به نور
سنسور حساس به نور
سنسور حساس به نور
سنسور حساس به نور
سنسور حساس به نور
سنسور حساس به نور
سنسور حساس به نور
سنسور حساس به نور
  1. برای سنسور حساس به نور ، سیم را از پین 5 ولت روی آردوینو به همان ستون پای راست در قسمتی از ورق نان اضافه کنید. رنگ سیم را به قرمز تغییر دهید.
  2. پای چپ را از طریق پین در همان ستون به پین A0 (A-zero) در آردوینو وصل کنید. این پین آنالوگ است که از آن برای خواندن مقدار سنسور استفاده می کنیم. این سیم را زرد یا چیزی غیر از قرمز یا سیاه رنگ کنید.
  3. یک مقاومت (جستجو و کشیدن کلیک) را روی برد قرار دهید. این مدار را تکمیل می کند و از سنسور و پین محافظت می کند.

    • آن را بچرخانید تا از ستون ها عبور کند.
    • یک پا را به ستون پای راست روی تخته نان متصل کنید
    • سیم را از انتهای دیگر مقاومت تا زمین قرار دهید

      رنگ سیم را به سیاه تغییر دهید

  4. همه اتصالات را دوبار بررسی کنید. اگر چیزی در مکان مناسب نباشد ، این به درستی کار نخواهد کرد.

مرحله 5: کد را شروع کنید

کد را شروع کنید
کد را شروع کنید
کد را شروع کنید
کد را شروع کنید
کد را شروع کنید
کد را شروع کنید

اجازه دهید کد این جزء را بررسی کنیم.

ابتدا به تصویر سوم در این مرحله نگاه کنید. این شامل تعدادی کد با دو عملکرد است:

void setup ()

حلقه خالی ()

در C ++ ، همه توابع نوع بازگشت خود را ارائه می دهند ، سپس نام ، و سپس دو براکت گرد که می توان از آنها برای انتقال در آرگومان ها استفاده کرد ، معمولاً به عنوان متغیر. در این حالت ، نوع بازگشت باطل است ، یا چیزی نیست. نام تنظیم شده است و تابع هیچ آرگومانی نمی گیرد.

هنگام راه اندازی Arduino (هنگامی که آن را به برق وصل می کنید یا باتری ها را متصل می کنید) عملکرد راه اندازی یکبار اجرا می شود.

تابع حلقه در یک حلقه ثابت از میلی ثانیه اجرا می شود و تابع راه اندازی کامل می شود.

هر چیزی که در تابع حلقه قرار می دهید هنگام اجرای آردوینو اجرا می شود. همه چیز در خارج که فقط در صورت تماس اجرا می شود. مانند اگر تابع دیگری را خارج از حلقه تعریف کرده و فراخوانی کنیم.

وظیفه

پنل Code را با دکمه در Tinkercad باز کنید. منوی کشویی Blocks را به Text تغییر دهید. با کادر هشدار ظاهر شده موافقت کنید. اکنون ، در این مرحله همه مواردی را که مشاهده می کنید به جز متن تصویر سوم حذف کنید.

متغیرها

برای شروع ، ما باید برخی متغیرها را اختصاص دهیم تا بتوانیم کد خود را واقعا کارآمد کنیم.

متغیرها مانند سطل هایی هستند که فقط می توانند یک شی را نگه دارند (C ++ چیزی است که ما آن را شی گرا می نامیم). بله ، ما آرایه هایی داریم ، اما این متغیرهای خاص هستند و بعداً در مورد آنها صحبت خواهیم کرد. وقتی متغیری را تعیین می کنیم ، باید به آن بگوییم که نوع آن چیست ، سپس به آن مقدار می دهیم. به نظر می رسد اینطور است:

int someVar = A0؛

بنابراین ، ما یک متغیر را اختصاص دادیم و نوع int را به آن دادیم. int یک عدد صحیح یا یک عدد کامل است.

"اما شما از یک عدد کامل استفاده نکرده اید!" ، می شنوم که می گویید. درست است.

آردوینو کار خاصی برای ما انجام می دهد تا بتوانیم از A0 به عنوان یک عدد صحیح استفاده کنیم ، زیرا در یک فایل دیگر A0 را به عنوان یک عدد صحیح تعریف می کند ، بنابراین می توانیم از ثابت A0 برای ارجاع به این عدد صحیح بدون نیاز به اینکه بدانیم چیست استفاده کنیم. اگر فقط 0 را تایپ کنیم ، به پین دیجیتال در موقعیت 0 اشاره می کنیم ، که کار نمی کند.

بنابراین ، برای کد ما یک متغیر برای سنسوری که وصل کرده ایم می نویسیم. در حالی که توصیه می کنم نام ساده ای برای آن بگذارید ، این به شما بستگی دارد.

کد شما باید به این شکل باشد:

int lightSensor = A0؛

void setup () {} حلقه void () {}

حالا ، بیایید به آردوینو بگوییم که چگونه سنسور را روی آن پین کار کند. ما یک تابع را در داخل تنظیمات برای تنظیم حالت پین اجرا می کنیم و به آردوینو می گوییم کجا باید آن را جستجو کند.

int lightSensor = A0؛

void setup () {pinMode (lightSensor، INPUT)؛ } void loop () {}

عملکرد pinMode به آردوینو می گوید که از پین (A0) به عنوان یک پین ورودی استفاده می شود. برای متغیرها و نام تابع به camelCaseUsed توجه کنید (ببینید که هر حرف اول یک حرف بزرگ است ، زیرا در آن قوز دارد ، بنابراین … شتر …!) این یک قرارداد است و خوب است که به آن عادت کنید.

در نهایت ، بیایید از تابع analogRead برای بدست آوردن برخی داده ها استفاده کنیم.

int lightSensor = A0؛

void setup () {pinMode (lightSensor، INPUT)؛ } void loop () {int reading = analogRead (lightSensor) ؛ }

خواهید دید که ما خواندن را در یک متغیر ذخیره کرده ایم. این مهم است زیرا ما باید آن را چاپ کنیم. بیایید از کتابخانه سریال (کتابخانه کدی است که می توانیم به کد خود اضافه کنیم تا نوشتن را برای ما سریعتر کند ، فقط با تعریف آن تماس بگیرید) را برای چاپ روی مانیتور سریال استفاده کنیم.

int lightSensor = A0؛

void setup () {// تنظیم حالت های pin pinMode (lightSensor ، INPUT) ؛ // افزودن کتابخانه سریال Serial.begin (9600) ؛ } void loop () {// سنسور را بخوانید int reading = analogRead (lightSensor) ؛ // چاپ مقدار روی مانیتور Serial.print ("Light:") ؛ Serial.println (خواندن) ؛ // تاخیر حلقه بعدی را با 3 ثانیه تأخیر (3000) ؛ }

چند مورد جدید! ابتدا موارد زیر را مشاهده خواهید کرد:

// این یک نظر است

ما از نظرات استفاده می کنیم تا به دیگران بگوییم کد ما چه کار می کند. شما باید اغلب از اینها استفاده کنید. کامپایلر اینها را نمی خواند و آنها را به کد تبدیل می کند.

اکنون ، کتابخانه سریال را نیز با خط اضافه کردیم

Serial.begin (9600)

این نمونه ای از تابع است که آرگومان می گیرد. شما کتابخانه را Serial نامیدید و سپس یک تابع را اجرا کرد (ما می دانیم که این تابع به دلیل مهاربند گرد است) و در یک عدد صحیح به عنوان یک آرگومان ارسال شد و عملکرد سریال را در 9600baud تنظیم کرد. نگران نباشید چرا - فقط بدانید که در حال حاضر کار می کند.

کار بعدی ما چاپ روی مانیتور سریال بود. ما از دو عملکرد استفاده کردیم:

// این مورد بدون خرابی خط روی سریال چاپ می شود (در انتها یک ورودی وارد کنید)

Serial.print ("نور:") ؛ // این یکی در وقفه خط قرار می دهد ، بنابراین هر بار که می خوانیم و می نویسیم ، خط جدیدی Serial.println (خواندن) می رود.

آنچه مهم است که ببینیم این است که هر کدام هدف جداگانه ای دارند. مطمئن شوید که سیم های شما از علامت نقل قول دوگانه استفاده می کنند و بعد از کولون فاصله می اندازید. این به خوانایی کاربر کمک می کند.

در نهایت ، ما از تابع تأخیر استفاده کردیم ، تا حلقه خود را کند کرده و آن را فقط سه ثانیه یک بار بخوانیم. این در هزاران ثانیه نوشته شده است. هر 5 ثانیه یکبار آن را به حالت خواندن تغییر دهید.

عالی! برویم!

مرحله 6: شبیه سازی

شبیه سازی
شبیه سازی
شبیه سازی
شبیه سازی
شبیه سازی
شبیه سازی

همیشه با اجرای شبیه سازی ، کارها را بررسی کنید. برای این مدار ، شما همچنین باید شبیه ساز را باز کنید تا عملکرد آن بررسی شود و مقادیر خود را بررسی کنید.

شبیه سازی را شروع کرده و مانیتور سریال را بررسی کنید. مقدار سنسور نور را با کلیک روی آن و تغییر مقدار با استفاده از نوار لغزنده تغییر دهید. شما باید تغییر مقدار را در مانیتور سریال نیز مشاهده کنید. اگر این کار را نکرد ، یا اگر دکمه شروع شبیه سازی را فشار دهید خطاهایی دریافت کردید ، با دقت به عقب برگردید و تمام کد خود را بررسی کنید.

  • روی خطوط مشخص شده در پنجره اشکال زدایی قرمز که به شما ارائه می شود تمرکز کنید.
  • اگر کد شما درست است و شبیه سازی هنوز کار نمی کند ، سیم کشی خود را بررسی کنید.
  • بارگیری مجدد صفحه - ممکن است خطای سیستم/سرور غیر مرتبط داشته باشید.
  • مشت خود را به کامپیوتر تکان دهید و دوباره بررسی کنید. همه برنامه نویسان این کار را انجام می دهند. همه.. زمان.

مرحله 7: حسگر Temp را سیم کشی کنید

Wire Up the Temp sensor
Wire Up the Temp sensor

من فرض می کنم شما در حال حاضر در مسیر درستی هستید. همانطور که در تصویر نشان داده شده است ، سنسور دما را سیم کشی کنید. به محل قرارگیری سیم های 5V و GND در فضای مشابه سیم های نور توجه کنید. این خوب است مانند یک مدار موازی است و مشکلی در شبیه ساز ایجاد نمی کند. در یک مدار واقعی ، شما باید از یک برد یا سپر شکست برای مدیریت بهتر برق و اتصالات استفاده کنید.

حالا ، اجازه دهید کد را به روز کنیم.

کد سنسور دما

این کمی پیچیده تر است ، اما فقط به این دلیل که ما باید ریاضی را برای تبدیل خواندن انجام دهیم. خیلی هم بد نیست.

int lightSensor = A0؛

int tempSensor = A1؛ void setup () {// تنظیم حالت های پین pinMode (lightSensor ، INPUT) ؛ // افزودن کتابخانه سریال Serial.begin (9600) ؛ } void loop () {// سنسور دما // ایجاد دو متغیر در یک خط - آه کارآیی! // Float var برای ذخیره ولتاژ شناور اعشاری ، درجه C ؛ // مقدار پین را بخوانید و آن را به عدد 0 - 5 تبدیل کنید // اساساً ولتاژ = (5/1023 = 0.004882814) ؛ ولتاژ = (analogRead (tempSensor) * 0.004882814) ؛ // تبدیل به درجه C درجه C = (ولتاژ - 0.5) * 100 ؛ // چاپ روی مانیتور سریال Serial.print ("Temp:") ؛ Serial.print (درجه C) ؛ Serial.println ("oC") ؛ // سنسور را بخوانید int reading = analogRead (lightSensor) ؛ // چاپ مقدار روی مانیتور Serial.print ("Light:") ؛ Serial.println (خواندن) ؛ // تاخیر حلقه بعدی را با 3 ثانیه تأخیر (3000) ؛ }

من برخی از تغییرات را در کد انجام داده ام. بیایید به صورت جداگانه از طریق آنها عبور کنیم.

ابتدا خط را اضافه کردم

int tempSensor = A1؛

درست مانند lightSensor ، من باید مقدار را در یک متغیر ذخیره کنم تا بعداً راحت تر شود. اگر مجبور شدم مکان این سنسور را تغییر دهم (مانند اتصال مجدد صفحه) ، فقط باید یک خط کد را تغییر دهم ، نه برای تغییر در A0 یا A1 در کل پایگاه کد ، و غیره.

سپس ، یک خط برای ذخیره خواندن و دما در یک شناور اضافه کردیم. به دو متغیر در یک خط توجه کنید.

ولتاژ شناور ، درجه سانتیگراد ؛

این واقعاً مفید است زیرا تعداد خطوطی را که باید بنویسم کاهش می دهد و سرعت کد را افزایش می دهد. هرچند یافتن خطاها دشوارتر است.

اکنون ، ما خواندن را انجام داده و ذخیره می کنیم ، سپس آن را به مقدار خروجی خود تبدیل می کنیم.

ولتاژ = (analogRead (tempSensor) * 0.004882814) ؛

درجه C = (ولتاژ - 0.5) * 100 ؛

این دو خط دشوار به نظر می رسند ، اما در خط اول ما قرائت را گرفته و آن را در 0.004 ضرب می کنیم … زیرا 1023 (خواندن آنالوگ این مقدار را برمی گرداند) را به خواندن از 5 تبدیل می کند.

خط دوم در آنجا این خواندن را در 100 ضرب می کند تا نقطه اعشار حرکت کند. این به ما دما می دهد. مرتب!

مرحله 8: آزمایش و بررسی

آزمایش و بررسی
آزمایش و بررسی

همه چیز برای برنامه ریزی ، شما باید یک مدار کار داشته باشید. با اجرای شبیه سازی و استفاده از مانیتور سریال تست کنید. اگر خطایی دارید ، بررسی کنید ، دوباره بررسی کنید و مشت خود را تکان دهید.

موفق شدی؟ به اشتراک بگذارید و داستان خود را برای ما بگویید!

این آخرین مدار است که برای شما تعبیه شده است تا بتوانید خلقت نهایی را پخش/آزمایش کنید. ممنون از تکمیل آموزش!

توصیه شده: