ثبت و ذخیره داده ها، امری مهم در طراحی سیستم های دیتالاگر به شمار می رود. سیستم های ثبت کننده داده و یا دیتالاگر، داده های مختلف نظیر دما، رطوبت، فشار و…. را بر روی کارت های حافظه ذخیره کرده تا دسترسی به آن ها در زمان های آتی جهت تجزیه و تحلیل، فراهم شود. به کمک ماژول کارت SD، می توانید داده های اندازه گیری شده توسط آردوینو را به سادگی بر روی کارت های حافظه SD، ذخیره کنید. به عنوان مثال، به کمک این ماژول می توان یک دیتالاگر دما و رطوبت را به گونه ای ساخت که تغییرات پارامترهای فیزیکی محیط را به همراه زمان، ثبت کند. از آنجاییکه به کمک این ماژول می توان داده ها را به صورت فایل اکسل هم ذخیره نمود، بنابراین به سادگی می توانید داده ها را به صورت نموداری تحلیل نمایید. در این آموزش به معرفی و بررسی ماژول کارت SD می پردازیم. سپس با یک نمونه برنامه که در آن مقادیر خوانده شده از پایه های آنالوگ در کارت SD ذخیره می شود، نحوه ذخیره داده بر روی کارت حافظه را مورد بررسی قرار خواهیم داد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
برد آردوینو UNO
هر پروژه الکترونیکی جهت تجزیه و تحلیل داده ها و اجرای فرامین کاربر، نیازمند یک پردازنده مرکزی است. در این پروژه، جهت ذخیره داده ها بر روی کارت SD، از برد آردوینو UNO استفاده می نماییم. برد آردوینو UNO، در حقیقت یک برد توسعه برای میکروکنترلر است. به کمک این برد می توان به سادگی به پایه های GPIO، دسترسی داشت. از آنجاییکه این برد بر روی خود کریستال خارجی جهت تامین منبع کلاک پردازنده را دارد، لذا راه اندازی و کار با آن، بسیار ساده خواهد شد.
بر روی برد آردوینو جک آداپتور جهت تغذیه آن وجود دارد. این آداپتور می تواند بازه ولتاژی ۶ الی ۱۲ را داشته باشد. از طرفی دیگر، بر روی برد آردوینو، رگولاتورهای ۵ و ۳٫۳ جهت تامین تغذیه ماژول مختلف وجود دارد. برای برنامه نویسی بردهای آردوینو، محیط مخصوص آن توسعه یافته است. دستورات برنامه نویسی آردوینو بر مبنای زبان ++C شکل گرفته است. اما پلتفرم آردوینو، سعی بر ساده سازی دستورات و استفاده تمام افراد، از مبتدی تا حرفه ای را در دستور کار خود قرار داده است.
انتقال(آپلود) برنامه بر روی برد آردوینو به سادگی از طریق کابل USB صورت می پذیرد. به همین منظور کافیست برد را از طریق کابل به رایانه متصل کرده و برنامه را بر روی آن منتقل نمایید. شایان ذکر است که برد آردوینو از طریق همین کابل نیز، تغذیه می گردد.
ماژول کارت SD
همانطور که پیشتر بیان شد، در این آموزش قصد داریم تا داده های برد آردوینو را بر روی کارت SD ذخیره نماییم. جهت اجرای این مورد، به ماژول کارت SD نیاز خواهیم داشت. به کمک این ماژول و با قرار دادن کارت SD در درگاه ماژول، می توانید داده ها را به سادگی در کارت SD ذخیره نمایید.
ماژول کارت SD از پروتکل SPI جهت برقراری ارتباط با آردوینو استفاده می نماید. جهت راه اندازی و کار با این ماژول، کتابخانه تحت آردوینو توسعه یافته است. بنابراین به کمک این ماژول و به سادگی، می توانید داده ها را بر روی آن، ذخیره نمایید.
اتصالات ماژول کارت حافظه SD Card
پس از معرفی برد آردوینو و ماژول SD، نوبت به سیم کشی مدار می رسد. جهت اتصال ماژول کارت SD به برد آردوینو، لطفا سیم کشی را به صورت زیر انجام دهید.
جهت اتصال ماژول کارت SD به آردوینو UNO، مطابق تصویر فوق، اتصالات را به شرح زیر، انجام دهید.
اتصال پین ۱۱ آردوینو به پایه MOSI
اتصال پین ۱۲ آردوینو به پایه MISO
اتصال پین ۱۳ آردوینو به پایه SCK
اتصال پین ۴ آردوینو به پایه CS
همچنین پایه VCC ماژول SD را به پایه ۵ و پایه GND آن را به پایه GND آردوینو، متصل نمایید.
توجه: پیش از قرار دادن کارت SD درون ماژول، لطفا آن را به طور کامل، فرمت نمایید. برای این منظور در سیستم عامل ویندوز، پس از اتصال کارت SD به رایانه، بر روی آن کلیک راست کرده و گزینه complete format را انتخاب نمایید.
کد پروژه ذخیره سازی بر روی کارت SD
در این قسمت کدهای پروژه را مشاهده می نمایید. در این پروژه مقادیر خوانده شده از پین های آنالوگ A0، A1 و A2 بر روی کارت SD به صورت یک فایل اکسل ذخیره می گردند. این کد برای برد آردوینو UNO نیز توسعه یافته اند. بنابراین در منوی Tools->Board، گزینه آردوینو UNO را انتخاب و کدهای زیر را بر روی برد آپلود کنید.
#include <SPI.h> //فراخوانی کتابخانه SPI #include <SD.h> //فراخوانی کتابخانه SD const int chipSelect = 4; //انتخاب پایه ۴ به عنوان پایه CHIP SELECT ماژول void setup() { Serial.begin(9600); while (!Serial) { //انتظار برای راه اندازی پورت سریال } Serial.print("Initializing SD card..."); if (!SD.begin(chipSelect)) { //راه اندازی کارت SD Serial.println("Card failed, or not present"); while (1); } Serial.println("card initialized."); } void loop() { String dataString = ""; //مقادیر خوانده شده از پایه های A0 و A1 A2 در این رشته ذخیره می گردد. for (int analogPin = 0; analogPin < 3; analogPin++) { //خواندن مقادیر آنالوگ ۰ الی ۳ int sensor = analogRead(analogPin); // خواندن مقدار آنالوگ dataString += String(sensor); //مقدار را از ورودی خوانده و در این رشته قرار می دهیم. if (analogPin < 2) { dataString += ","; //جداسازی مقدار خوانده شده از هر کانال آنالوگ به وسیله ویرگول، جهت ایجاد فرمت فایل اکسل } } File dataFile = SD.open("datalog.CSV", FILE_WRITE); //ایجاد و باز کردن یک فایل در کارت SD با پسوند .CSV، این پسوند برای فایل اکسل به کار می رود. if (dataFile) { dataFile.println(dataString); //هرداده در یک سطر قرار گرفته و داده های بعدی در سطرهای بعدی قرار م یگیرند dataFile.close(); //بستن فایل برای استفاده در دفعات بعدی // print to the serial port too: Serial.println(dataString); } // if the file isn't open, pop up an error: else { Serial.println("error opening datalog.txt"); } }
پروژه ذخیره بر روی کارت SD با آردوینو
پس از آپلود کدها، نوبت به اجرای پروژه می رسد. همانطور که پیشتر گفته شد، در این پروژه مقادیر خوانده شده از پایه های A0 و A1 و A2 (پایه های مبدل آنالوگ به دیجیتال) را در کارت SD ذخیره می نماییم. چنانچه به اطلاعات بیشتری در رابطه با مبدل آنالوگ به دیجیتال نیاز دارید، می توانید با کلیک بر روی این لینک، آموزش آن را مطالعه نمایید. در ابتدای اجرای برنامه، تصویر زیر را می توانید در سریال مانیتور آردوینو، مشاهده کنید.
در ادامه، نوبت به مشاهده داده های ذخیره شده بر روی کارت SD می رسد. به همین منظور، پس از اتصال کارت SD به رایانه، با فایل اکسل داده ها با نام datalog.csv رو به رو می شویم. با کلیک و باز نمودن فایل، تصویر زیر را مشاهده می نماییم.
در فایل فوق، سه ستون به ازای داده های خوانده شده از هر ورودی آنالوگ وجود دارد. ستون نخست مقادیر خوانده شده از A0، ستون دوم مقادیر A1 و ستون سوم مقادیر خوانده شده از پایه A2 را شامل می شود. در نهایت، با توجه به قابلیت ترسیم نمودار در اکسل، نمودار تغییرات ستون نخست را ترسیم می کنیم.
تحلیل کد پروژه ذخیره داده روی کارت SD
در این قسمت به تحلیل و بررسی کدهای برنامه می پردازیم. پیش از هر چیز، در نظر داشته باشید که درون کدهای برنامه، به صورت خط به خط به ازای هر دستور، کامنت و توضیح به فارسی درج شده است. از این رو، در اینجا به صورت خلاصه به عملکرد برنامه می پردازیم. همانطور که پیشتر بیان شد، ماژول کارت SD از پروتکل SPI جهت ارتباط با آردوینو استفاده می نماید. در طرف دیگر، جهت برقراری ارتباط آسان و سریع با ماژول کارت SD و ذخیره داده بر روی آن، از کتابخانه SD که به همین منظور توسعه یافته است، بهره می بریم. بنابراین، این دو کتابخانه در ابتدای برنامه به صورت زیر، فراخوانی می شوند.
#include <SPI.h> //فراخوانی کتابخانه SPI #include <SD.h> //فراخوانی کتابخانه SD
در ادامه، پس از راه اندازی و تنظیمات اولیه در تابع SETUP، در بدنه اصلی برنامه، به کمک یک حلقه تکرار، مقادیر پایه های A0 الی A2 را خوانده و درون یک رشته، ذخیره می نماییم. این مقادیر به کمک یک ویرگول در رشته ذخیره می شوند. وجود ویرگول بین داده های هر سطر، در فرمت فایل اکسل ضروری است. در نهایت با بازگشایی فایلی با نام datalog.csv، داده ها را ذخیره می کنیم. توجه داشته باشید که در فایل اکسل، داده ها می بایست در هر سطر ذخیره شوند. لذا تابع زیر، این عمل را برای ما میسر می نماید.
dataFile.println(dataString)
در نهایت پس از ذخیره، فایل را می بندیم تا در دفعات بعدی، امکان نوشتن نیز میسر باشد.
وسایل مورد نیاز
جمع بندی
در این آموزش به بررسی نحوه ذخیره داده بر روی ماژول کارت SD به کمک آردوینو پرداختیم. کارت های حافظه SD که حتما با آن آشنایی دارید، دارای حافظه هایی با حجم بالا هستند. از طرفی دیگر از این کارت ها در سیستم عامل های مختلف نظیر ویندوز، اندروید، لینوکس و…. پشتیبانی می شود. با شرحی که در این آموزش تشریح شد، شما قادر خواهید بود تا داده های مختلفی که توسط آردوینو نظیر دما، رطوبت، فشار و…. اندازه گیری می شود را بر روی کارت SD ذخیره نمایید. یکی از مهم ترین کاربردهای ذخیره داده بر روی SD، طراحی و پیاده سازی سیستم های دیتالاگر است. در این آموزش مقادیر خوانده شده از ورودی های آنالوگ A0 الی A2 آردوینو را بر روی کارت SD و با فرمت اکسل ذخیره می نماییم. سپس با قرار دادن کارت SD در رایانه، می توانیم داده ها را به کمک قابلیت ترسیم نمودار اکسل، تحلیل و بررسی نماییم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام وقت بخیر.
یه وسالی چطور به اطلاعات داخل SD از طریق بیسیم با ماژول esp8266 دسترسی داشته باشم و اطلاعات فایل های اونو برای خودم دانلود کنم؟
مرسی لطفا خبرم کنید
سلام
منظورتون را ذقیق تر بیان کنین
سلام من یک دستگاه cnc ساختم می خواستم با یک اردوینو دیگر از روی SDکارت جی کد ارسال کنم ایا امکان داره
با سلام
کاربر گرامی این مورد بررسی نشده است. از دیگر کاربرانی که در این زمینه تجربه دارند،تقاضا میکنم در بحث شرکت کنند.
فراموش کردم این برد SD و es8266 رو چطور به نسخه arduino pro mini وصل کنیم با منیع تغذیه یا همون یه usb هاب
سلام.ممنون بابت مطالب.
من با پروتئوس مدار رو بستم اما SD card شناسایی نمیشه اصلن! چیکار کنم؟
با عرض سلام و خسته نباشید پروژه ی من ذخیره ی پیامک های کنترل کننده ی دو عدد رله هست.من تا جایی پیش
رفتم که پیامک ها با شماره ی خاصی کنترل می شوند .مشکل اینجاست که میخوام چند شماره که در یک فایل و در میکرو اس دی موجود است از طریق این شماره ها فقط امکان کنترل رله ها باشد چه طور باید از اس دی اطلاعات خوانده شده و دوباره فرستاده شود؟
با سلام
بابت تاخیر در پاسخگویی عذرخواهی میکنم. در حال یافتن راه حل مناسب برای پروژه شما بودم. اینطور که من متوجه شدم، شما پروژه را به صورت ترکیبی از ماژول GSM و ماژول SD کارت دارید. از این رو میخواهید بر اساس لاگ ذخیره شده در SD کارت و شمارههای تماس یکتا آدرس دهی کنید؟
لطفا توضیحات دقیق ارایه دهید تا راه حل مناسب ارسال شود.
سلام
اگه بخوایم از این ماژول در اردوینو pro mini استفاده کنیم کدام پایه ها به کدام پایه یه pro mini وصل می شود؟
با سلام
ضمن تشکر از توجه شما، برای این منظور باید اتصالات SPI برد Pro mini را بدانید. پایههای ۱۳=SCK و ۱۲=MISO و ۱۱=MosI هستند. انجام دهید و سوالات احتمالی را ازهمین طریق مطرح کنید.
سلام
چطور میشه از این ماژول هم زمان با ماژول RFID در uno استفاده کرد.(به دلیل پایه های مشترک)
با سلام و تشکر از شما
شما میتوانید ماژول RC522 را از پایههای I2c ، SPI و UART مدیریت کنید.
سلام ممنون از اموزش و سایت خوبتون
این ماژول ک استفاده کردین قابلیت خواندن محتویات بعضی فایل ها مثل اکس در داخل اردوینو برای پردازش را دارد؟؟؟؟
با سلام و تشکر از شما
لطفا سوالتان را دقیقتر بیان کنید. بنده متوجه منظورتان نشدهام.
سلام خسته نباشید
ببخشید من اگه بخام خروجی یک سنسور mpu6050روی میکرو اس دی ذخیره بکنم باید چی کار کرد؟؟
ممنون میشم سریع پاسخ بدید….
با سلام
برای این منظور میبایست از کتابخانه SD.h استفاده بفرمایید تا بتوانید یک دیتالاگر با سنسور MPU6050 بسازید.
باسلام خسته نباشید می خوام با آرینوبرا اولین بار کار کنم .که برای روشن خاموش کردن مداوم وسایل استفاده کنم با مازول رله مثلا رله ۱نیم ساعت روشن ونیم ساعت بعد خاموش ومداوم این عمل تکرار شود .ورله های بعدی هم همینطور … (ویا ازطریق پیامک مثلافرستادن پیامک ۱روشن ویا بافرستادن پیامک۰۱خاموش شودوبقیه هم همین طور)
سلام ، از توجه شما ممنونم.
آموزش های متنوعی در دیجی اسپارک منتشر شده است و از آن ها میتوانید ایده بگیرید. توصیه بنده شروع با آموزشهای کیت آردوینو میباشد. تنها کافیست آموزش ها را انجام داده و سپس با دانش برنامه نویسی کدها را تعمیم دهید. در صورت نداشتن اطلاعات کافی از آردوینو و کدنویسی در محیط آردوینو، میتوانید در کارگاه های آموزشی آردوینو شرکت کنید.
سلام خسته نباشین
بشدت نیاز به راهنماییتون دارم تورو خدا کمکم کنین 🙁
کد زیر یه رله رو به وسیله ی ماژول بلوتوث روشن و خاموش میکنه و باید وقتی که رله روشن و خاموش میشه تایم و تاریخ این اتفاق رو در کارت SD ذخیره کنه ! الان تایم و تاریخ رو به وسیله ی ماژول DS1307 میگیرم و نشون هم میدم فقط نمیتونم تو کارت SD ذخیره اش کنم
توی کد اونجایی که (*******) این رو گذاشتم مشکلم هست که بجای ستاره باید چی بنویسم ؟
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define DS1307_ADDRESS 0x68
File myFile;
int relay = 13;
void setup() {
Wire.begin();
pinMode(13, OUTPUT);
Serial.begin(9600);
pinMode(8, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
int dat = Serial.read() – ‘0’;
if(dat == 0 || dat == 1){
Serial.println(dat);
digitalWrite(relay, dat);
delay(100);
printDate();
delay(1000);
myFile = SD.open(“test.txt”, FILE_WRITE);
if (myFile) {
myFile.print(***********);
myFile.close();
Serial.println(“Done.”);
}
else
Serial.println(“Error Opening”);
}}
}
byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val%16) );
}
void printDate(){
// Reset the register pointer
Wire.beginTransmission(DS1307_ADDRESS);
byte zero = 0x00;
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday – Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());
//print the date EG 3/1/11 23:59:59
Serial.print(monthDay);
Serial.print(“/”);
Serial.print(month);
Serial.print(“/”);
Serial.print(year);
Serial.print(” “);
Serial.print(hour);
Serial.print(“:”);
Serial.print(minute);
Serial.print(“:”);
Serial.println(second);
}
با سلام
کاربر گرامی جهت رفع این مشکل میبایست به واحد پرسش و پاسخ مراجعه کنید.
سلام. بنده یه سوالی داشتم لطفا راهنماییم کنید
بنده میخوام با کمک برد آردوینو محتوای یه فایل txt رو درون یه متغیر مثلا MyText بریزم. چجوری میتونم این کار رو بکنم؟ آیا از طریق یه لینک هم میشه اینکار رو کرد؟
مثلا به این شکل باشه
String MyText = LoadString(“Good/New/matn.txt”); // zzzzzz
با سلام
کاربر گرامی لطفا متن آموزش را خوانده و سپس سوالات خود را بپرسید.
منظور شما از فایل چیست و قرار است محتوا کجا نمایش داده شود؟
بنده فقط میخوام مقدار یه فایل رو داخل یه متغیر ذخیره کنم و بعدش از خود متغیر در داخل برنامه استفاده کنم
اگر دیتا از sd card خوانده شود، یایستی آن را در متغیر String ذخیره کنید. همانند زیر:
;String filename = “files.txt”
میخوام اطلاعات یه فایل txt رو از یجایی بخونه و داخل یه متغیر ذخیره کنه و بعدش از اون مقدار ذخیره شده در متغیر در جاهای دیگه برنامه استفاده کنم
با سلام
در کامنت قبل پاسخ داده شد. بررسی و نتیجه را اعلام کنید.
آیا از لینک هم میشه؟
مثلا فایل txt روی سرور باشه
سلام
بله امکان پذیر است و باید از دستورات EthernetClient و get و متغیر ReadString استفاده کنید.
میشه لطفا یه کد خیلی کوچولو برای اینکار بنویسید؟
مثلا محتویات یه فایل txt رو از روی یه لینک فایل در سرور بخونه و بریزه توی یه متغیر
با سلام
امکان نوشتن کد در کامنت ها نیست و نیاز به یک آموزش جداگانه خواهد داشت. موارد را پیش ببرید و در صورت سوال از همین طریق بپرسید تا راهنمایی گردد.
واقعا به ین آموزش نیاز دارم. لطفا یه برنامه خیلی کوچولو برای این کار بنویسید و برای ایمیلم ارسال بفرمایید. بنده هم جبران میکنم و هزینه اش رو میدم بهتون.
یه برنامه خیلی کوچولو در این حد که مقدار یه فایل .txt رو از روی هاست بخونه و بریزه داخل یه متغیر. والسلام
سلام مجدد
همانطور که گفته شد، امکان پیگیری این موضوع از طریق کامنت وجود ندارد.
سلام. واقعا خیلی لازمش دارم . لطفا از طریق ایمیل راهنماییم کنید. جبران میکنم
با سلام
کاربر گرامی پرداختن به موضوع مورد نظر شما نیاز به یک آموزش مجزا دارد. نه اینکه اگر از کامنت نشد، از طریق ایمیل وقت نویسندههای سایت برای شما اختصاص داده شود. جهت اجرا بایستی دانش کدنویسی را تقویت کنید. سپس از طریق این بخش نسبت به دریافت راهنمایی اقدام بفرمایید.
اینکه توی اینتر هم هیچ آموزشی برای این مورد پیدا نکردم هم دلیل منطقی هست. بنده یکساله با آردوینو کار میکمنم. بی سواد نیستم. فقط برای همچین چیزی آموزشی پیدا نکردم. خواستم که اگر شما بلدید یه آموزش برای این تهیه بفرمایید بنده هزینه اش رو هم پرداخت میکنم. و نمیشه که بخاطر این سوال در دوره آنلاین و یا کارگاهی با هزینه خیلی بالا ثبت نام کنم ولی مثلا یه آموزش مثلا ۱۰ دقیقه ای برای این کار تهیه کنید بنده میتونم به اندازه وسع ام جبران کنم
در این خصوص از طریق بخش تیکت در فروشگاه اقدام نمایید.
سلام
برای من اسم فایل دارای محدودیت ۸ کاراکتری هست چه جوری میتونم برای اسم فایلم رو بلند تر کنم؟
با سلام
در کتابخانه اشاره ای به محدودیت اسم نشده است. لطفا ارور دریافتی را ارسال کنید تا بررسی شود.
فراموش کردم این برد SD و es8266 رو چطور به نسخه arduino pro mini وصل کنیم با منیع تغذیه یا همون یه usb هاب
با سلام
اتصالات ماژول SD که در این آموزش توضیح داده شده است. کافیست با همین الگو پیش بروید. در خصوص ESp8266 هم به آموزش مربوط به خودش مراجعه کنید.
سلام خسته نباشید
چندتا سوال داشتم
۱٫ امکان وصل کردن این ماژول به esp8266 هست؟
۲٫میخوام یک صفحه وب روی esp8266 باگذاری کنم که برای این کار لازم هست فونت ، عکس وفایل های صفحه وب رو در esp ذخیره کنم تا صفحه بالا بیاد ، میخوام بدونم اگر از این ماژول sd card استفاده کنم امکان ذخیره این اطلاعات ذکر شده روی رم هست ؟
سلام
البته که امکان دارد. این آموزش مخصوص شماست:
https://digispark.ir/temperature-data-logger-with-dht22-arduino-and-sd-card-module/
سلام ببخشید من میخوام دستگاه حضور غیاب بسازم اموزششو توی یوتیوب دیدم وقتی کارت درست ببری جلو ال ای دی سبز روشن وقتی کارت اشتباه ببری جلو قرمز روشن میشه صدا میده تا اینجا همه چی درسته خوب من میخوام که روی رم اطلاعات ورود خروج بنویسه ۱۵ سالمه تازه کد نویسی شروع کردم اینم کد توی یوتیوب
//Viral Science
//RFID
#include
#include
#include
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 4 //define green LED pin
#define LED_R 5 //define red LED
#define BUZZER 2 //buzzer pin
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
Servo myServo; //define servo name
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
myServo.attach(3); //servo pin
myServo.write(0); //servo start position
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
Serial.println(“Put your card to the reader…”);
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print(“UID tag :”);
String content= “”;
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "43 8E 1D 19") //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
myServo.write(180);
delay(5000);
myServo.write(0);
digitalWrite(LED_G, LOW);
}
else {
Serial.println(" Access denied");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(1000);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
}
}
لطفا مطابق کدها عمل کنید و داده ها را مطابق آنچه که در آموزش گفته شده، عمل کنید. همچنین اگر می خواهید در زمینه برنامه نویسی آردوینو مسلط شوید، می توانید دوره ای آنلاین آن را شرکت کنید. برای اطلاعات بیشتر به اینستاگرام دانشجوکیت دایرکت بدهید:
https://www.instagram.com/daneshjookit/
سلام. آیا میشه اطلاعات سنسور را در فایل access ذخیره کرد تا بشه بعدا از طریق asp.net این اطلاعات رو از طریق esp در مکانی دیگر دسترسی پیدا کرد؟
سلام
اکسس را اطلاعی ندارم ولی می توانید با اضافه نمودن پسوند csv. به فایل و جداکردن هر فیل با ویرگول، یک فایل اکسل بسازید
سلام من میخام یک فایل TXT رو ک داخلش کد باینری هستش رو بریزم داخل SD Card و SD Card رو وصلش کنم به آردوینو نانو میخام طوری باشه ک اون کد باینری رو از داخل SD Card بخونه و توسط سه سیم از آردوینو خروجی داده بشه ک این سه سیم وصل هستن ب یک سری شیفت ریجستر ها و خروجی شیف ریجستر ها هم وصله ب ال ای دی ها آیا این کار شدنی هست ؟؟
لطفا کمکم کنید
سلام
بله کاملا
کافیست است به کمک تابع read دیتای موجود در کارت را بخوانید. فقط دقت کنید که چون ممکن است حجم داده کارت SD از حافظه رم آردوینو بیار بیشتر باشد، بنابراین فایل باید به صورت قسمت به قسمت خوانده شود.
سلام، من میخوام هر بار که اردوینو ریست میشه و یا دوباره راه اندازی میشه یک فایل جدید ایجاد بشه و اطلاعات داخل اون ذخیره بشه (مثلا test1 , test2 , ..). آیا ممکنه؟ لطفا راهنمایی بفرمایید
با سلام
در این خصوص این مورد تست نشده است. از دیگر کاربرانی که در این پروژه تجربه ای دارند، تقاضا میکنیم در بحث شرکت کنند.
سلام، من میخوام هر بار که اردوینو ریست میشه و یا دوباره راه اندازی میشه یک فایل جدید ایجاد بشه و اطلاعات داخل اون ذخیره بشه (مثلا test1 , test2 , ..). آیا ممکنه؟ لطفا راهنمایی بفرمایید
با سلام
در این خصوص این مورد تست نشده است. از دیگر کاربرانی که در این پروژه تجربه ای دارند، تقاضا میکنیم در بحث شرکت کنند.
سلام
من میخام با برد اردوینو یک ولتاژ را از ADC بخونم و بر حسب زمانش ذخیره کنم تا بتونم نمودارش را تو اکسل رسم کنم. فقط کافیه با گرفتن اولین داده تایمر را استارت کنه و بعد با گرفتن هر داده جدید مقدار و زمان اونا روی sd ذخیره کنه. ممکنه راهنماییم کنید.
ممنون
سلام
باید از تابع millis استفاده کنید تا زمان را داشته باشید. روال کار دقیقا همانند همین آموزش است.
با سلام ، آیا ذخیره کدهای اردینو مثل blink امکان دارد ذخیره شوند
سلام
وقتی چند بار اطلاعات در کارت SD می ریزم دیگر خطا میده که نمی تونه sdCard را شناسایی کنه ماژول را تعویض کردم و کارت را فرمت کردم ولی باز بعد از یکی دو بار اتصال موفق پیام داد که کارت را نمی تونه بشناسه .
لطفا راهنمایی کنید مشکل از کجاست
با سلام
احتمالا مشکل کمبود جریان در مدارتان دارید. اتصالات را بررسی کنید که همگی محکم باشند و جریان منبع تغذیه را هم بررسی کنید.