آموزش کار با ماژول بلوتوث_قسمت سوم

آموزش کار با ماژول بلوتوث_قسمت سوم

آموزش کار با ماژول بلوتوث_قسمت سوم

 

بسم الله

آموزش کار با ماژول بلوتوث رو در دو قسمت پیشین با ارتباط بلوتوث و پروژه ها و ایده های عملی توسط بلوتوث دنبال کردیم و مطالب را با شناخت ماژول های موجود در بازار ادامه خواهیم داد.

ماژول های بلوتوث موجود در بازار به تعدادی انگشت شمار محدود میشوند. تفاوت آنها معمولاًدر نوع تولید، ولتاژ کاری، برد مفید و قیمت آنها و البته نرم افزار پروگرام شده در چیپ آن خواهد بود.  شکل ظاهری ماژول های بلوتوث بسیار شبیه و گاهاً کاملا مشابه یکدیگرند و بصورت شهودی معمولا قابل تشخیص نیستند و تفاوت آنها اکثراً در نرم افزار (firmware) بکار رفته درون آنها میباشد.

ماژول های موجود در بازار ایران HC-05 ، HC-06، HC-07، BC-04B، HC-08، SD200، AUBTM20، AUBTM22 و AUBTM23 هستند که از این مدلها HC-05 از محبوبیت بیشتری در بین طراحان برخوردار است که دلیل آن را میتوان کامل بودن نرم افزار داخلی چیپ و پشتیبانی کامل از مدهای Master و Slave و دستورات AT آنها دانست.

 

جدول پایین به مقایسه اجمالی سه ماژول محبوب و پرکاربرد بلوتوث می پردازد.

HC-05 BC-04 HC-06 نام ماژول
صنعتی نظامی عمومی نوع تولید (سطح تولید)
tick_pic tick_pic tick_pic پشتیبانی از AT-COMMAND
tick_pic tick_pic cross_pic قابلیت تنظیم نرم افزاری master و slave
cross_pic tick_pic cross_pic قابلیت تنظیم سخت افزاری master و slave
3.3 الی 3.6 3 الی 4.3 3.3 الی 3.6 ولتاژ کاری (ولت)
30 الی 40 2 الی 10 30 الی 40 جریان مصرفی (میلی آمپر)
17.500 22.000 18.000 قیمت در بازار ایران (تومان)

 

ماژول ها میتوانند در دو مد Master یا Slave کار کنند، که معمولاً تفاوت این دو مد برای کاربران روشن نیست. در مد Slave هر وسیله ای مثل گوشی میتواند به ماژول متصل شود و پس از متصل شدن ماژول میتواند ارتباط دوطرفه داشته باشد اما در مد Master ماژول میتواند انتخاب کند که به چه دیوایسی متصل شود.

  • هسته نرم افزاری با پشتیبانی تنها بخشی از دستورات AT
  • پشتیبانی از بلوتوث نسخه 2.0
  • پشتیبانی از مد Slave
  •  آنتن روی بردی
HC-06
  • هسته نرم افزاری British CSR BlueCore4
  • پشتیبانی از بلوتوث نسخه 2.1
  • پشتیبانی از دو مد Master و Slave
  • آنتن روی بردی
BC-04
  • هسته نرم افزاری با پشتیبانی از تمام دستورات AT
  • پشتیبانی از بلوتوث نسخه 2.0
  • پشتیبانی از دو مد Master و Slave
  • آنتن روی بردی
HC-05

 

در قسمت بعدی در مورد سخت افزار و ترتیب چینش پایه های ماژول صحبت خواهیم کرد.

موفق باشید

راه اندازی FAT با AVR

راه اندازی FATوکار با حافظه های MMC و SDCباAVR – قسمت5

به نام خدا

راه اندازی FAT با AVR قسمت 5 : بررسی توابع  FAT –  خواندن و نوشتن در حافظه های MMC و SDC

در ادامه بحث راه اندازی FAT با AVR پس از آنکه یک فایل را برای با تابع f_open باز کردیم، با توجه به mode انتخاب شده می توانیم روی آن فایل بنویسیم و از آن بخوانیم. برای این منظور می بایست از توابعی که در زیر به توضیح آن ها می پردازیم استفاده نمود.

تابع نوشتن در فایل:

FRESULT f_write(FIL* fp, const void* buff, unsigned int btw, unsigned int* bw);

این تابع دارای چهار ورودی و یک مقدار برگشتی می باشد، در ادامه به برسی ورودی ها و مقدار برگشتی می پردازیم.

پارامتر های ورودی:

  • fp* : یک متغییر پوینتری به استراکچری از جنس FIL می باشد. این استراکچر حاوی اطلاعتی از قبیل اطلاعات FATFS فایل، ID ، آدرس سکتور در کلاستر، مسیر فایل،… می باشد. این استراکچر را در جلسه قبل در تابع f_open توضیح دادیم، در تابع f_write دیتای مورد نظر ما روی این استراکچر نوشته می شود.
  • buff* : اشاره گر به یک بافر آرایه ای از جنس بایت است که در RAM قرار دارد. در اصل محتوایی را که می خواهیم بنویسیم در این متغییر باید قرار گیرد.
  • Btw : یک متغییر از جنس unsigned int می باشد. این متغییر تعداد بایت ها یا کاراکترهایی از بافر را که می خواهیم در فایل بنویسیم تعیین می کند.
  • bw* : یک متغییر پوینتری از جنس unsigned int می باشد که اشاره گر به تعداد بایت هایی از آرایه است که بتواند داخل فایل بنویسد.

مقدار برگشتی:

  • این تابع دارای مقدار برگشتی نیز می باشد که مقدار برگشتی از جنس FRESULT که از نوع enum تعریف شده است می باشد این نوع مقادیر را در جلسات گذشته بررسی کردیم. این تابع یکی از مقدار های زیر را بر می گرداند:
    1. FR_OK : در صورت موفقیت آمیز بودن عملیات این تابع این مقدار را بر می گرداند.
    2. FR_DENIED: دسترسی به فایل مورد نظر به دلیل آن که فایل به صورت Read_only باز شده است، ممکن نیست.
    3. FR_NOT_READY : دسترسی به دیسک امکان پذیر نمی باشد، ممکن است به دلیل گم کردن اطلاعات یا چیزی دیگر باشد.
    4. FR_DISK_ERR : عملیات ناموفق بوده است ،زیرا دسترسی فیزیکی به دیسک از دست رفته است.
    5. FR_INT_ERR : عملیات به علت اشتباه بودن استراکچر FAT و یا خطای داخلی ناموفق بوده است.
    6. FR_INVALID_OBJECT : فایل با تابع f_open باز نشده است.

تابع خواندن از فایل:

FRESULT f_read(FIL* fp, void* buff, unsigned int btr, unsigned int* br);

این تابع نیز دارای چهار ورودی و یک مقدار برگشتی می باشد.

پارامتر های ورودی:

  • fp*: یک متغییر پوینتری به استراکچری از جنس FIL می باشد. این استراکچر حاوی اطلاعتی از قبیل اطلاعات FATFS فایل، ID ، آدرس سکتور در کلاستر، مسیر فایل،… می باشد. این استراکچر را در جلسه قبل در تابع f_open توضیح دادیم، در تابع f_read دیتای مورد نظر از روی این استراکچر خوانده می شود.
  • buff* : اشاره گر به یک بافر آرایه ای از جنس بایت است که در RAM قرار دارد. در اصل محتوایی را که از فایل می خوانیم در این متغییر قرار می گیرد. طول این آرایه باید به اندازه کافی بزرگ باشد، حداقل طول این آرایه باید به اندازه بزرگترین عددی باشد که جای btr قرار می گیرد.
  • Btr : یک متغییر از جنس unsigned int می باشد. این متغییر تعداد بایت ها یا کاراکترهایی را که از فایل می خواهیم بخوانیم را تعیین می کند.
  • br* : یک متغییر پوینتری از جنس unsigned int می باشد که اشاره گر به تعداد بایت هایی است که از آرایه می خوانیم. در حالتب که تابع موفقیت آمیز کار خود را به پایان برساند و عدد داخل br کمتر از btr باشد، یا به عبارتی از تعداد کاراکترهایی که قصد خواندن آن ها را داشتیم کمتر باشد، به این معنی است که به انتهای فایل رسیده ایم.

مقدار برگشتی:

  • این تابع دارای مقدار برگشتی نیز می باشد که مقدار برگشتی از جنس FRESULT که از نوع enum تعریف شده است می باشد همان طور که در بالا گفتیم این نوع مقادیر را در جلسات گذشته بررسی کردیم. این تابع یکی از مقدار های زیر را بر می گرداند:
    1. FR_OK : در صورت موفقیت آمیز بودن عملیات این تابع این مقدار را بر می گرداند.
    2. FR_DENIED: دسترسی به فایل مورد نظر به دلیل آن که فایل به صورت write_only باز شده است، ممکن نیست.
    3. FR_NOT_READY : دسترسی به دیسک امکان پذیر نمی باشد، ممکن است به دلیل گم کردن اطلاعات یا چیزی دیگر باشد.
    4. FR_DISK_ERR : عملیات ناموفق بوده است ،زیرا دسترسی فیزیکی به دیسک از دست رفته است.
    5. FR_INT_ERR : عملیات به علت اشتباه بودن استراکچر FAT و یا خطای داخلی ناموفق بوده است.
    6. FR_INVALID_OBJECT : فایل با تابع f_open باز نشده است.

در جلسه بعد به بررسی یک برنامه عملی می پردازیم.

 

راه اندازی FAT با AVR

راه اندازی FAT و کار با حافظه های MMC و SDC با AVR – قسمت 4

به نام خدا

راه اندازی FAT با AVR قسمت 4 : بررسی توابع FAT – آماده سازی کارت های حافظه MMC و SDC برای خواندن، نوشتن و یا ایجاد فایل

در ادامه مبحث راه اندازی FAT با AVR پس از آنکه با نحوه فضا سازی برای کار با سیستم FAT آشنا شدیم حال می خواهیم به نحوه آماده سازی کارت های حافظه برای خواندن، نوشتن و ایجاد فایل در حافظه های MMC و SDC بپردازیم.

قبل از هرگونه عملیات روی فایل (خواندن، نوشتن، اضافه کردن و …) ابتدا باید فایل مورد نظر را باز کنیم، برای این کار از تابع زیر استفاده می کنیم:

FRESULT f_open(FIL* fp, const char* path, unsigned char mode);

این تابع فایل مورد نظر را برای اجرای عملیات آماده می کند، اما این تابع چه عملیات هایی را می تواند انجام دهد را در ادامه بیان می کنیم.

تابع فوق دارای سه ورودی و یک مقدار بازگشتی می باشد که در زیر آن ها را توضیح می دهیم.

پارامتر های ورودی:

  • fp* : یک متغییر پوینتری به استراکچری از جنس FIL می باشد. در صورت موفقیت آمیز بودن عملیات f_open این استراکچر توسط سایر توابع قابل استفاده می باشد. این استراکچر حاوی اطلاعتی از قبیل اطلاعات FATFS فایل، ID ، آدرس سکتور در کلاستر، مسیر فایل،… می باشد. در ادامه اطلاعات کامی این استراکچر آورده شده است.
  • path* : آدرس فایلی است که تابع f_open می خواهد آن را باز و آماده سازی کند.
  • Mode : با استفاده از این پارامتر تعیین می شود که چه دسترسی هایی به فایل باز شده داشته باشیم در زیر لیست این دسترسی ها بررسی می شود.

لیست Mode هایی که می توان استفاده نمود:

  1. FA_READ : این حالت فقط دسترسی خواندن از فایل را به ما می دهد. اگر فایل تنها در این حالت باز گردد امکان نوشتن در آن وجود ندارد.
  2. FA_WRITE : این حالت فقط دسترسی نوشتن در فایل را به ما می دهد. اگر فایل تنها در این حالت باز گردد امکان خواندن از آن وجود ندارد.
  3. FA_OPEN_EXISTING : فایل با آدرس خواسته شده را باز می کند. اگر فایل وجود نداشته باشد تابع با شکست روبرو می شود.
  4. FA_OPEN_ALWAYS : فایل با آدرس خواسته شده را اگر وجود داشته باشد باز می کند، اگر وجود نداشته باشد ابتدا آن را ایجاد می کند و سپس باز می کند.
  5. FA_CREATE_NEW : یک فایل جدید ایجاد می کند، اگر فایل از قبل وجود داشته باشد عملیات با شکست مواجه می شود.
  6. FA_CREATE_ALWAYS : یک فایل جدید ایجاد می کند ، اگر فایل از قبل وجود داشته باشد روی آن از اول می نویسد و حجم فایل را صفر می کند.

محتویات اسراکچر FIL :

typedef struct _FIL_

      {

      FATFS*   fs;                  /* Pointer to the owner file system object */

      unsigned short    id;         /* Owner file system mount ID */

      unsigned char     flag;       /* File status flags */

      unsigned char     csect;      /* Sector address in the cluster */

      unsigned long     fptr;       /* File R/W pointer */

      unsigned long     fsize;      /* File size */

      unsigned long     org_clust;  /* File start cluster */

      unsigned long     curr_clust; /* Current cluster */

      unsigned long     dsect;      /* Current data sector */

      unsigned long     dir_sect;   /* Sector containing the directory entry */

      unsigned char*    dir_ptr;    /* Pointer to the directory entry in the window */

      unsigned char     buf[512];   /* File R/W buffer */

      } FIL;

 

مقدار برگشتی:

  • این تابع دارای مقدار برگشتی نیز می باشد که مقدار برگشتی ما نیز از جنس FRESULT که از نوع enum تعریف شده است می باشد این نوع مقادیر در جلسه گذشته بررسی کردیم. این تابع یکی از مقدار های زیر را بر می گرداند:
    1. FR_OK : در صورت موفقیت آمیز بودن عملیات این تابع این مقدار را بر می گرداند.
    2. FR_NO_FILE: در صورت پیدا نکردن فایل با آدرس مورد نظر این مقدار را بر می گرداند.
    3. FR_NO_PATH : در صورت پیدا نکردن مسیر فایل این مقدار را برمی گرداند.
    4. FR_INVALID_NAME: در صورت نامعتبر بودن نام فایل این مقدار را برمی گرداند.
    5. FR_INVALID_DRIVE : در صورت نامعتبر بودن شماره درایو این پیغام را برمی گرداند.
    6. FR_EXIST: در صورت وجود فایل از قبل این پیغام را برمی گرداند.
    7. FR_DENIED: دسترسی به فایل مورد نظر به علت یکی از دلایل زیر ممکن نیست:
      1. تلاش برای باز کردن فایلی در حالت نوشتن است در حالی که این فایل Read_Only تنظیم شده است.
      2. فایل نمی تواند ایجاد شود، چراکه یک فایل به همین اسم از قبل وجود دارد و یا این که فایل به صورت Read_only است.
      3. فایل نمی تواند ایجاد گردد، چراکه دایرکتوری و یا فضای دیسک پر شده است.
    8. FR_NOT_READY : دسترسی به دیسک امکان پذیر نمی باشد، ممکن است به دلیل گم کردن اطلاعات یا چیزی دیگر باشد.
    9. FR_WRITE_PROTECTED : باز کردن فایل در حالت نوشتن و یا اسجاد فایل امکان پذیر نمی باشد، زیرا دیسک محافظت از نشتن (Write Protect) شده است.
    10. FR_DISK_ERR : عملیات ناموفق بوده است ،زیرا دسترسی فیزیکی به دیسک از دست رفته است.
    11. FR_INT_ERR : عملیاتبه علت اشتباه بودن استراکچر FAT و یا خطای داخلی ناموفق بوده است.
    12. FR_NOT_ENABLED : فضای درایو در RAM با تابع f_mount پیاده سازی نشده است.
    13. FR_NO_FILESYSTEM : فضای فت (FAT Partition) معتبر روی دیسک وجود ندارد.

نکته ای که در مورد تابع f_open لازم است بدان توجه شود این است برای باز کردن فایل می توان از مد های ترکیبی با ستفاده از OR استفاده کرد. برای نمونه می تواین یک فایل را هم خواند هم روی آن نوشت برای این منظور mode را باید به فرم زیر اعمال کرد:

Result = f_open(&file,path,FA_READ |FA_WRITE);

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

bluetooth_session-1

آموزش کار با ماژول بلوتوث_قسمت اول

آموزش کار با ماژول بلوتوث_قسمت اول

در این سری آموزشی قصد داریم، راه اندازی ماژول بلوتوث و آموزش کار با ماژول بلوتوث رو از A تا Z ارائه کنیم در آموزش کار با ماژول بلوتوث یک سری اهداف مشخص کردیم که انشالله تمام سعی بر این هست که محقق بشن.

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

 

در انتهای این سری آموزشی قادر خواهید بود:

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

 

ماژول های بلوتوث از استانداردی تحت عنوان  Bluetooth  بعنوان بستر ارتباطی استفاده میکنند. بلوتوث یک استاندارد برای ارتباط برد کوتاه، مصرف انرژی کم، کم هزینه و بیسیم می‌باشد، که از تکنولوژی رادیویی استفاده می‌کند.  بلوتوث یا دندان آبی، نام تجاری اتصال بی‌سیمی با فاصله‌های نزدیک برای ارسال پیام، عکس یا هر اطلاعات دیگر است که از نام یک پادشاه منطقه اسکاندیناوی (پادشاه دانمارک بنام هارالد بلوتوث) الهام گرفته شده است.

بلوتوث هردو نوع داده و صوت را پشتیبانی می‌کند که آن را به یک تکنولوژی ایده‌آل تبدیل نموده‌است که بسیاری از وسایل را قادر به ارتباط کرده‌است. بلوتوث از فرکانس غیر منظم استفاده می‌کند و در هرجایی از دنیا قابل استفاده است. ارتباط رادیویی تکنولوژی بلوتوث در باند فرکانسی 2.4 تا 2.48  گیگاهرتز است، که انتخاب این فرکانس بدلیل آزاد و رایگان بودن آن در سراسر جهان بوده است. ذکر این نکته نیز خالی از لطف نیست که بعلت شعاع برد محدود و امواج کم قدرت ایجاد تداخل در این باند تقریبا منتفی است.

 

در آموزش دوم درباره موارد کاربرد ماژول بلوتوث صحبت میکنیم که میتواند زمینه ساز ایده های جدید در این حوزه باشد.

موفق باشید

 

رادار بلوتوث

رادار بلوتوث

 

codevisionavrFAT3

راه اندازی FAT و کار با حافظه های MMC و SDC با AVR – قسمت 3

به نام خدا

راه اندازی FAT با AVR قسمت3 : بررسی توابع FAT – بخش اول

در ادامه بحث راه اندازی FAT با AVR پس از تنظیمات نرم افزار CodeVision این قابلیت برای برنامه ما ایجاد می شود که بتوانیم از توابع FAT در برنامه خود استفاده کنیم. برای استفاده از این توابع لازم می باشد که ابتدا هدر فایل های لازم را به پروژه اضافه کنیم. برای این منظور ابتدا هر فایل زیر را به پروژه اضافه می کنیم:

<include    <ff.h#

بعد از اضافه کردن هدر فایل فوق دسترسی به توابع FAT ممکن می گردد.

اولین تابع مورد نیاز:

FRESULT f_mount(unsigned char vol, FATFS *fs);

این تابع مقداری از حجم حافظه SRAM را برای کار با فایل هایی به فرمت FAT برای ما آماده سازی می کند. نکته مهم این تابع این است که این تابع ربطی به وجود و عدم وجود کارت حافظه ندارد و فقط فضای کاری را آماده سازی می کند.

این تابع دارای دو ورودی و مقدار برگشتی می باشد که در زیر آن ها را معرفی می کنیم.

پارمترهای ورودی:

  • Vol : از جنس unsigned char می باشد و شماره درایوی است که فضا را برای آن می خواهیم آماده سازی کنیم. این مقدار می تواند بین 0 تا 9 باشد. به عبارتی با استفاده از توابع FAT که در اختیار داریم حداکثر 10 درایو را می توانیم پشتیبانی کنیم. بدیهی است که تمام چیپ این قابلیت را دارا نمی باشند و با توجه به حجم SRAM هر چیپ تعداد محدودی درایو را می تواند پشتیبانی کند.
  • fs* : از جنس FATFS که این پارامتر استراکچر می باشد و به صورت پوینتری می باشد و اطلاعاتی از قبیل سکتور ها ،کلاستر ها ، ID ، شماره شروع سکتورها و … را در این استراکچر ذخیره می کند.

مقدار برگشتی:

  • این تابع دارای مقدار برگشتی نیز می باشد که مقدار برگشتی ما نیز از جنس FRESULT که از نوع enum تعریف شده است می باشد. این تابع یکی از دو مقدار زیر را بر می گرداند:
    1. FR_OK : در صورت موفقیت آمیز بودن عملیات این مقدار را برمی گرداند.
    2. FR_INVALID_DRIVE: در صورتی که شماره درایو نامعتبر باشد این مقدار را برمی گرداند.

نکته این تابع:

  • در صورتی که از مولتی درایو استفاده نمی کنید فقط باید شماره 0 را برای درایو وارد کنید.

مفاهیم مورد نیاز در این تابع و ادامه بحث:

  • سوال استراکچر چیست؟
    • استراکچر به بیان ساده دسته ای از متغییر ها هستند در یک type قرار گرفته اند. اگر بخواهیم در قالب یک مثال برای بحث FAT توضیح دهیم باید به استراکچر FATFS اشاره کنیم. نحو تعریف و عضو های آن را در زیر می بینید:

typedef struct _FATFS_

      {

      unsigned char     fs_type;    /* FAT sub type */

      unsigned char     drive;      /* Physical drive number */

      unsigned char     csize;      /* Number of sectors per cluster */

      unsigned char     n_fats;     /* Number of FAT copies */

      unsigned char     wflag;      /* win[] dirty flag (1:must be written back) */

      unsigned short    id;         /* File system mount ID */

      unsigned short    n_rootdir;  /* Number of root directory entries (0 on FAT32) */

      unsigned char     fsi_flag;   /* fsinfo dirty flag (1:must be written back) */

      unsigned long     last_clust; /* Last allocated cluster */

      unsigned long     free_clust; /* Number of free clusters */

      unsigned long     fsi_sector; /* fsinfo sector */

      unsigned long     cdir;       /* Current directory (0:root)*/

      unsigned long     sects_fat;  /* Sectors per fat */

      unsigned long     max_clust;  /* Maximum cluster# + 1. Number of clusters is max_clust – 2 */

      unsigned long     fatbase;    /* FAT start sector */

      unsigned long     dirbase;    /* Root directory start sector (Cluster# on FAT32) */

      unsigned long     database;   /* Data start sector */

      unsigned long     winsect;    /* Current sector appearing in the win[] */

      unsigned char     win[512];   /* Disk access window for Directory/FAT */

      } FATFS;

  • Enum چیست؟
    • يک نوع داده ای تعريف شده توسط برنامه نويس را که به آن نوع داده شمارش می گويند، ايجاد می کند. و مقدایر داخل آن از مقدار اولیه یکی یکی اضافه می شود، همچنین اگر مقدار اولیه ندهیم آن را صفر لحاظ می کند. در زیر نحوه تعریف FRESULT که به صورت enum می باشد را می بینید:

typedef enum

      {

      FR_OK = 0,          /* (0) Succeeded */

      FR_DISK_ERR,        /* (1) A hard error occured in the low level disk I/O layer */

      FR_INT_ERR,         /* (2) Assertion failed */

      FR_NOT_READY,       /* (3) The physical drive doesn’t work */

      FR_NO_FILE,         /* (4) Could not find the file */

      FR_NO_PATH,         /* (5) Could not find the path */

      FR_INVALID_NAME,    /* (6) The path name format is invalid */

      FR_DENIED,          /* (7) Acces denied due to prohibited access or directory full */

      FR_EXIST,           /* (8) Acces denied due to prohibited access */

      FR_INVALID_OBJECT,  /* (9) The file/directory object is invalid */

      FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */

      FR_INVALID_DRIVE,   /* (11) The logical drive number is invalid */

      FR_NOT_ENABLED,     /* (12) The volume has no work area */

      FR_NO_FILESYSTEM,   /* (13) There is no valid FAT volume */

      FR_MKFS_ABORTED,    /* (14) f_mkfs() aborted due to a parameter error */

      FR_TIMEOUT,         /* (15) Could not access the volume within the defined period */

      FR_INVALID_PARAMETER=19 /* (19) Given parameter is invalid */

      } FRESULT;

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

 

codevisionavrFAT2

راه اندازی FAT و کار با حافظه های MMC و SDC با AVR – قسمت 2

به نام خدا

راه اندازی FAT با AVR قسمت 2 : تنظیمات MMC و SDC در CodeVision

در قسمت قبل با تعاریف اولیه FAT آشنا شدیم،در ادامه بحهث راه اندازی FAT با AVR در این قسمت می خواهیم به تنظیمات کارت های حافظه MMC و SDC در نرم افزار CodeVision بپردازیم.

بعد از آن که پروژه خود را در نرم افزار CodeVision ساختیم برای فعال کردن کتابخانه های FAT و استفاده از کارت های حافظه به مسیر زیر می رویم:

Project / Configure

سپس در پنجره باز شده به Tab های زیر می رویم :

C Compiler / Libraries / MMC/SD/SD HC Card

و پنجره زیر را مشاهده می نماییم:

Configure

 

برای مشاهده تنظیمات فوق ابتدا باید تیک گزینه Enable MMC/SD/SD HC Card and FAT Support را بزنیم و سپس تنظیمات بالا را مشاهده می کنیم.

این تنظیمات به دو دسته قابل تنظیم و غیر قابل تنظیم تقسیم می شود. تنظیمات غیر قابل تنظیم شامل پین های است که برای پروتکل SPI استفاده می شود که آن ها را همان گونه که تنظیم شده باید استفاده کنیم و تنظیمات قابل تغییر مربوط به پایه های است که کاربرد های Optional (انتخابی) دارند. این پایه ها نیز دودسته می باشند یک دسته از آنها حتما باید استفاده گردند و گروه دیگر را می توان استفاده نکرد.

پایه CS همان پایه Chip Select پروتکل SPI است و لازم است که استفاده گردد، اما پایه های CD و WP به ترتیب Card Detector و Write Protect می باشد که می توان از آن ها بسته به کاربرد ها استفاده شود و یا استفاده نشود.

نکته ای را که این تنظیمات باید بدانیم آن است که پایه هایی را که کنار آن ها “/” قرار داده شده به معنی Active Low بودن آن پایه ها می باشد.

در قسمت بعد به برسی توابع FAT در CodeVision می پردازیم.

 

codevisionavrFAT1

راه اندازی FAT و کار با حافظه های MMC و SDC با AVR – قسمت 1

به نام خدا

در این سری مقالات آموزشی قصد راه اندازی راه اندازی FAT با AVR با نرم افزار CodeVision را داریم.

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

  • آشنایی با مفاهیمی که در FAT استفاده می شود.
  • راه اندازی FAT با AVR (تنظیمات CodeVision برای استفاده از FAT)
  • راه اندازی MMC و SDC با میکروکنترلر AVR
  • آشنایی با دستورات لازم جهت کار با فایل ها

برای شروع کار ابتدا به این سوال پاسخ دهیم:

FAT چیست ؟

قبل از پاسخ به این سوال ابتدا باید با مفهموم File System آشنا شویم. در یک سیستم عامل به ساختار کلی نام گذاری ،ذخیره سازی و سازماندهی فایل ها File System گفته می شود. فایل سیستم فایل ها و داده ها را به واحد هایی به نام Cluster تقسیم بندی می کند، هر کلاستر فقط قسمتی از فایل را در خود نگه می دارد.

حال به پردازیم به این مفهوم که FAT چیست؟!

FAT مخفف کلمه File Allocation Table که به معنی جدول تخصیص فضا به فایل است. این جدول وظیفه نگه داری فضاهای موجود در دیسک را به عهده دارد و این فضا ها را مدیریت می کند. در هنگام برداشت اطلاعات از فضای حافظه قسمت های مختلف یک فایل را به هم ارتباط می دهد و هنگام ذخیره اطلاعات روی فضای حافظه فایل سیستم جهت دست یابی به کلاستر های خالی از FAT کمک می گیرد.

به طور کلی دو نوع FAT اصلی وجود دارد، FAT16 و FAT32 ، در FAT16 ، فایل سیستم 16 بیتی است و کلاستر هایی که مقدار دهی می کند 16 بیت طول دارند و همچنین آدرس ها نیز 16 بیتی می باشند؛ یعنی حد اکثر 65536 آدرس در کلاستر را پشتیبانی می کند و حداکثر همین تعداد کلاستر را می تواند آدرس دهی کند. به عبارت دیگر ما 65536 کلاستر 64 کیلو بایتی را در FAT16 می توانیم دسترسی داشته باشیم که می شود یک حافظه با حجم 4 گیگا بایت.

اما در FAT32 طول کلاستر ها 32 بیتی و آدرس دهی نیز 32 بیتی است با محاسبات مشابه می بینیم که در FAT32 می توان یک حافظه حداکثر 8 ترابایتی را پشتیبانی کرد.

در قسمت بعد به نحوه تنظیم FAT در CodeVision می پردازیم.

bitscope-Micro

معرفی پروژه های انجام شده با برد رزبری پای (Raspberry Pi) بخش بیست و پنجم: ساخت اسیلوسکوپ واسپکتروم آنالایزر

معرفی پروژه های انجام شده با برد رزبری پای (Raspberry Pi) بخش بیست و پنجم: ساخت اسیلوسکوپ واسپکتروم آنالایزر

در این قسمت قصد داریم نحوه ساخت یک اسیلوسکوپ را با رزبری پای بررسی کنیم.

برای این کار ما به یک برد bitscop نیاز داریم .کافی است این برد را به رزبری پای متصل کنیم تا یک اسیلوسکوپ با اسپکتروم آنالایزر را باهم داشته باشیم.

نحوه اتصال به صورت زیر نشان داده شده است:

05

سیگنال نمایش داده شده در نمایشگر به صورت زیر می باشد:

 

2015-07-29 09-09-07 ب-ظ

 

اما bitscop چیست وچه امکانات وقابلیت هایی را دارد؟

برد bitscop یک اسیلوسکپ دو کاناله با پهنای باند 20MHz و نیز یک اسپکتروم آنالایزر(spectrum Analyzer )،  شش کاناله می باشد.این برد قادر می باشد از طریق در گاه USB به برد رزبری پای ارتباط برقرار کند. در زیر یک نمای کلی از برد bitscop نمایش داده شده است:

 

Bitscope-Micro-02

 

ویژگی های این برد عبارت اند از:

2015-07-29 10-05-32 ب-ظ

 

 

 

 

 

 

 

 

 

اما قسمت signal I/O دارا 2 ورودی سیگنال آنالوگ به نام های CHB و CHA می باشد.L5 برای خروجی CLOCK بوده و L1خروجی یک خروجی سیگنال ژنراتور می باشد. شما می توانید ترتیب این پایه ها را در شکل زیر ملاحظه بفرمایید:

 

02

 

اما برای این که پراب اسکوپ را به برد bitscop متصل کنیم نیاز به یک برد مبدل BNC داریم. برای رفع این مشکل نیز طرحی داریم :

01

01207

 

 

 

 

 

برای آن که بتوان اطلاعات ارسالی توسط bitscope  را تجزیه تحلیل ونمایش داد ، از نرم افزاری استفاده می شود که محیط کاری آن به صورت زیر می باشد واز سایت bitscope.com می توان دانلود کرد.

لطفا روی عکس زیر کلیک نمایید.

10

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

2015-07-16 11-57-42 ب-ظ

معرفی پروژه های انجام شده با برد رزبری پای (Raspberry Pi) بخش بیست و چهارم: آینه تمام LED با رزبری پای

معرفی پروژه های انجام شده با برد رزبری پای (Raspberry Pi) بخش بیست و چهارم: آینه تمام LED با رزبری پای

شده خودتان را درون یک آینه ای که از LED درست شده است ببینید؟

مثل این است که به گذشته رفته باشید و خود را در قاب یک تلویزیون سیاه و سفید ببینید .

شما با متصل کردن رزبری پای به یک  دوربین کوچک وتعداد زیادی بلوک  LED می توانید این آینه را بسازید.

با استفاده از قسمت ارتباط SPI رزبری پای می توان همچون قسمت مرکزی تابلو های روان ، بلوک های LED را کنترل نمود.

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

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

اگر هم خواستید می توانید از LED های رنگی استفاده کنید تا تصویرتان جذاب تر بشود.

 

2015-07-16 11-58-31 ب-ظهمچنین اگر علاقمند به شرکت در کلاس آموزشی رزبری پای هستید

ازاین لینک ثبت نام نمایید.

2015-07-16 11-44-09 ب-ظ

معرفی پروژه های انجام شده با برد رزبری پای (Raspberry Pi) بخش بیست و سوم: ایستگاه هواشناسی با رزبری پای

معرفی پروژه های انجام شده با برد رزبری پای (Raspberry Pi) بخش بیست و سوم: ایستگاه هواشناسی با رزبری پای

تا حالا  زیاد شده که به اخبار هواشناسی گوش داده ایم ولی عکس آن موضوعی که گفته شده رخ داده .

اما دیگر نگران این موضوع نباشید، چرا که رزبری پای این مشکل را حل کرده است.

شما با تکیه بر رزبری پای می توانید یک ایستگاه هواشناسی محلی را با کمترین هزینه ممکن بهره برداری کنید.

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

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

شما با استفاده از برد رزبری پای وهمچنین تعدادی سنسور مثل سنسور سرعت برای باد ، سنسور رطوبت  ونیز یک یک فرستنده ی بدون سیم برای مخابره کردن اطلاعات ، می توانید آن را راه اندازی کنید.

2015-07-16 11-39-10 ب-ظ2015-07-16 11-44-53 ب-ظ

تبریک میگویم.

حالا شما دانش ساخت یک ایستگاه هواشناسی را بومی سازی کرده اید.

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