پروژه ها, سنسورها

پروژه سنسور نور TSL25721 با سری میکروکنترلر STM32F303

TSL25721 gebrabit project

هدف ما از انجام این پروژه چیست؟

در این بخش قصد داریم سنسور TSL25721را به وسیله میکروکنترلر آرم، سری STM32F راه اندازی کنیم. به منظور استفاده راحت تر و بهینه تر در این پروژه از دو ماژول آماده GB613EN و GebraBit STM32F303 استفاده میکنیم.

این دو ماژول شامل مینیمم قطعات لازم سنسور TSL25721و میکروکنترلر STM32F میباشند که توسط تیم جبرابیت جهت آسان سازی کار فراهم شده اند.

در این آموزش چه چیزهایی یاد میگیریم؟

شما در این بخش ضمن راه اندازی و استفاده از سنسورTSL25721، به طور خلاصه با تمامی رجیسترهای سنسور TSL25721، نحوه تنظیم بخش های مختلف میکروکنترلر STM32 برای راه اندازی این سنسور با استفاده از پروتکل I2C، چگونگی استفاده از فایل کتابخانه و درایور مختص ماژول GB613EN، نحوه فراخوانی توابع و در نهایت دریافت داده های سنسور در کامپایلر Keil  نیز آشنا خواهید شد.

برای انجام این پروژه به چه چیزهایی نیاز داریم؟

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

سخت افزارهای مورد نیاز نرم افزارهای مورد نیاز

GebraBit TSL25721 module
Keil compiler

GebraBit STM32F303 module
 STM32CubeMX program
 ST-LINK/V2 programmer

بدین منظور مانند تصویر زیر ماژولGebraBit TSL25721 را به صورت زیر به ماژول GebraBit STM32F303 متصل می کنیم:

توجه : با توجه به اینکه پین PA14 ماژول میکروکنترلرGebraBit STM32F303 برای پروگرام کردن میکروکنترلر استفاده میشود،تنظیم I2C بر روی پین های PA14 و PA15 در این ورژن مقدور نمی باشد،لذا در اتصال I2C به ماژول میکروکنترلرGebraBit STM32F303 در این ورژن ، ماژول GebraBit TSL25721 نمی تواند به صورت Pin to Pin  بر روی آن قرار گیرد.

در نهایت مقادیر  CH1 , CH0و ALS را به صورت Real Time در پنجره Watch1 کامپایلر Keil در حالت Debug Session مشاهده خواهیم کرد.

تنظیمات STM32CubeMX

در ادامه تنظیمات مربوط به هریک از بخش های I2C , RCC , Debug , Clock را در میکروکنترلر STM32F303 برای راه اندازی ماژول GebraBit TSL25721  را مرور می کنیم.

تنظیمات RCC

با توجه به وجود کریستال 8Mhz در ماژول GebraBit STM32F303 ، کلاک خارجی را در بخش RCC انتخاب می کنیم:

تنظیمات Debug&Programming

با توجه به دسترسی به پین های SWCLK و SWDIO در ماژول GebraBit STM32F303 ، برای کاهش تعداد پین هنگام  Debug&Programming در بلوک SYS گزینه Serial Wire را در بخش Debug انتخاب می کنیم:

تنظیمات I2C

برای ارتباط از طریق I2C با ماژول GebraBit STM32F303 حالت Standard Mode  با سرعت 100khz  را انتخاب کرده و پین های PB8 و PB9 را به عنوان SCL و SDA انتخاب می کنیم :

با توجه به دیتاشیت سنسور ، تنظیمات پارامتر های I2C  در بخش Parameter Settings همانند تصویر بالا مقدار دهی خواهد شد.

تنظیمات Clock

تنظیمات کلاک مربوط به هریک از بخش های میکروکنترلر STM32F303 در این کد به شرح ذیل می باشد:

تنظیمات Project Manager

تنظیمات Project Manager به صورت زیر بوده که در اینجا ما از کامپایلر MDK-ARM ورژن 5.32 استفاده کرده ایم:

بعد از اتمام تمام تنظیمات فوق ، بر روی GENERATE CODE  کلیک کرده و با اضافه کردن کتابخانه و درایور(تهیه شده توسط GebraBit) TSL25721، کد خود را به راحتی توسعه می دهیم.فایل STM32CubeMX , کتابخانه و درایور و پروژه KEIL را می توانید از انتهای این آموزش دانلود کنید.

کتابخانه و درایور TSL25721

GebraBit علاوه بر طراحی ماژولار سنسورها و آی سی های مختلف ، پیشرو در ارائه انواع کتابخانه های ساختاریافته و مستقل از سخت افزار به زبان  C، جهت سهولت کاربران در راه اندازی و توسعه نرم افزاری آنها نیز بوده است.

بدین منظور پس از تهیه هر یک از ماژول های  GebraBit  ، کاربر می تواند با مراجعه به بخش آموزش ماژول مربوطه، کتابخانه مختص به آن ماژول که حاوی فایل .h و .c (Header and Source) و یک برنامه نمونه آموزشی تحت سخت افزار های GebraBit STM32F303, GebraBit ATMEGA32A یا Arduino می باشد را دانلود کند.

تمامی توابع و Structure های تعریف شده در کتابخانه ، با جزئیات کامل، کامنت گذاری شده و تمامی پارامتر های دریافتی در آرگومان توابع و مقادیر بازگشتی از آنها ، به اختصار توضیح داده شده است.با توجه به مستقل از سخت افزار بودن کتابخانه ها،کاربر به راحتی می تواند آن را در هر یک از کامپایلر های دلخواه اضافه کرده و با میکروکنترلر و برد توسعه مورد علاقه خود، آن را توسعه دهد.

فایل هدر GebraBit_TSL25721 .h

در این فایل بر اساس دیتاشیت سنسور یا ای سی ، تمامی آدرس رجیسترها، مقادیر هریک از رجیسترها به صورت Enumeration تعریف شده است.همچنین بدنه سنسور TSL25721  و کانفیگ های مربوط به هریک از بلوک های داخلی سنسور  TSL25721  به صورت STRUCT  با نام  GebraBit_TSL25721  نیز تعریف شده است.که نهایتا در محیط  Debug Session تمامی کانفیگ های مربوط به هر بلوک به صورت Real Time قابل مشاهده است.

USER REGISTER MAP

نقشه رجیستری یا Command های سنسور در این بخش تعریف شده است :


					
				

enum TSL25721 _Ability

برای فعال و غیر فعال کردن بخش های مختلف سنسوراز این enum  استفاده میشود :


					
				

enum TSL25721 _Reset_Status

با استفاده از این enum وضعیت ریست سنسورمشخص می شود:


					
				

enum TSL25721 _ ALS_Mode

با استفاده از این enum حالت کاری سنسور نتخاب می شود:


					
				

enum TSL25721 _ ALS_Gain

برای تنظیم گین سنسور از مقادیر این enum استفاده می شود:


					
				

enum TSL25721_ Integration_Time

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


					
				

enum TSL25721 _ Measurement_Rate

نرخ اندازه گیری مقادیر داده توسط سنسور از مقادیر این enum استفاده می شود:


					
				

enum TSL25721 _ Data_Status

مقادیر این enum مشخص می کند دیتای خوانده شده مقادیر جدید می باشد یا قدیمی:


					
				

enum TSL25721_ Interrupt_Status

برای اگاهی از انجام شدن وقفه در سنسور از مقادیر این Enum استفاده می شود :


					
				

enum TSL25721_Data_Valid

صحت و درستی دیتای سنسور با استفاده از مقادیر این enum مشخص می شود:


					
				

enum TSL25721_Interrupt_Persist

با استفاده از این enum مشخص می شود که بعد از تکرار چند بار از یک حالت وقفه انجام شود:


					
				

struct TSL25721

تمام ویژگی های سنسور، ضرایب کالیبراسیون و داده های سنسور در این Struct  تعریف شده است و تمامی اطلاعات و کانفیگ اجرا شده بر روی سنسور در این Structure ذخیره شده و می توان تغییرات در هر بخش از سنسور را در محیط Debug Session مشاهده نمود:


					
				

اعلان توابع

در پایان این فایل تمامی توابع جهت خواندن و نوشتن در رجیستر های TSL25721  ، کانفیک سنسور و دریافت داده از سنسور اعلان شده است:


					
				

فایل سورس GebraBit_TSL25721.c

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

برنامه نمونه در Keil

بعد از تولید پروژه Keil با استفاده از STM32CubeMX و اضافه کردن کتابخانه GebraBit_TSL25721 .c ارائه شده توسط GebraBit ، به بررسی قسمت اصلی برنامه آموزشی نمونه، فایل main.c و مشاهده خروجی ماژول GebraBit TSL25721  در قسمت watch در محیط Debugging برنامه Keil می پردازیم.

شرح فایل main.c

به ساختار ها ، Enum ها و توابع مورد نیاز ماژول GebraBit TSL25721  ، اضافه شده است.در قسمت بعدی متغیری به نام TSL25721 _Module از نوع ساختار GebraBit_TSL25721  (این ساختار در هدر GebraBit_TSL25721  بوده و در بخش توضیحات کتابخانه GebraBit_TSL25721 توضیح داده شد) که برای پیکربندی ماژول GebraBit TSL25721  می باشد،تعریف شده است:


					
				

در بخش بعدی کد نوشته شده، با استفاده از تابع GB_TSL25721 _initialize(&TSL25721 _Module) و GB_TSL25721 _Configuration(&TSL25721 _Module) ماژول GebraBit TSL25721  را مقدار دهی می کنیم و در نهایت در قسمت while برنامه ،داده را از سنسور خوانده و مقادیر ALS  و CLEAR به طور پیوسته دریافت میشود:


					
				

متن کد فایل main.c


					
				

خروجی برنامه

بعد از تولید پروژه Keil با استفاده از STM32CubeMX و اضافه کردن کتابخانه ، ح پروگرامر STLINK V2 را با استفاده از آداپتور تبدیل STLINKV2 به GebraBit STM32F303 متصل می کنیم:


آداپتور تبدیل STLINKV2


با اتصال پروگرامر STLINK V2 به GebraBit STM32F303 دیگر نیازی به اعمال تغذیه به  ماژول های GebraBit STM32F303 و GebraBit TSL25721  نمی باشد، زیرا ولتاژ کاری خود را مستقیما از پروگرامر STLINK V2 دریافت میکنند.

در نهایت وارد حالت Debug شده و با اضافه کردن TSL25721 _Module به پنجره  watch و اجرای برنامه ، تغییرات مقادیر CLEAR و ALS ماژول GebraBit TSL25721  را مشاهده می کنیم:

در ادامه می توانید پروژه راه اندازی ماژول GebraBit TSL25721  را با استفاده از ماژول GebraBit STM32F303 در محیط Keil و فایل STM32CubeMX ، شماتیک ماژول ها و دیتاشیت TSL25721  را دانلود کنید.

ویدیو خروجی برنامه

دیتاشیت TSL25721  

شماتیک TSL25721 

دیتاشیت STM32F303 

شماتیک STM32F303 

پروژه Keil 

STM32CUBEMX 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *