طراح

طراح

زندگی یعنی پژوهش و فهمیدن چیز جدید ( پروفسور حسابی)
طراح

طراح

زندگی یعنی پژوهش و فهمیدن چیز جدید ( پروفسور حسابی)

کد نویسی ESP8266 در ویژوال استودیو

اگر به دنبال برنامه نویسی برای ESP8266 هستید و  مثل بنده از IDE ساده و ضعیف آردینو رنج میبرید. میتوانید اکستنشن آردینو را برای ویژوال استودیو نصب کنید و در محیط قدرتمند  ویژوال استودیو برنامه نویسی ESP8266 و یا آردینو را انجام بدهید و از برنامه نویسی لذت ببرید.

فایل افزونه آردینو برای ویژوال استودیو:

 دانلود


سورس برنامه و PCB ربات مسیریاب + اپلیکیشن اندروید

سلام به دوست داران الکترونیک و دنیای برنامه نویسی.

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


1 - مدار و شماتیک

لیست قطعات: 

AMS1117 - ,MC34063 - LM324 - ATXMEGA32A4U - SRF05 - ESP8266 - L293

1-1 : واحد تغذیه: برای مدار نیاز به ولتاژ 3.3 ولت و 5 میباشد. رگولاتور 3.3 ولت AMS1117  تغذیه میکرو و ماژول WIFI  را تامین میکند. رگولاتور MC34063 نیز ولتاژ 5 ولت سایر قطعات را تامین میکند. که به دلیل کوچک بودن سایز این رگولاتور و سلفش انتخاب شده است.


1-2 : پردازنده: برای این مورد هم از پردازنده محبوبم یعنی ATXMEGA32A4U استفاده کردم.


1-3: ESP8266: ارزان ترین و در دسترس ترین و کوچکترین و محبوب ترین ماژول وای فای موجود در دنیا میباشند.


1-4: SRF05: ماژول فاصله سنج آلتراسونیک با حداکثر اندازه گیری 5 متر

1-5: LM324: خروجی آنالوگ سنسورهای مادون قرمز TCRT5000 با استفاده از حالت مقایسگر آپ امپ تبدیل به دیجیتال شده و به میکرو منتقل میشود. از سه سنسور برای حالت مسیریاب استفاده شده است. و سنسور چهارمی هم پیش بینی شده که بتوان کنار چرخ نصب کرد و تعداد چرخیدن چرخ را شمرد که فعلا از آن استفاده نشده است.


1-6: L293 : راه اندازی موتورها به عهده درایور L293D  میباشد. که امکان کنترل دو موتور را به صورت چپ-گرد / راست-گرد با جریان خروجی برای هر موتور 600 میلی آمپر را دارد.



شماتیک کل مدار:


2- PCB: برد ربات با استفاده از نرم افزار EAGLE و به صورت یک رو طراحی شده است. آموزش های این نرم افزار را از اینجا میتوانید دانلود کنید.



دانلود سورس PCB


3 -توضیحات برنامه:

برنامه به زبان C و نرم افزار اتمل استودیو نوشته شده است. با فرض بر اینکه دوستان با برنامه نویسی زبان C آشنا هستند، قسمتهایی که بیشتر مربوط به تنظیمات سخت افزاری ATXMEGA میباشد را شرح میدهم. 

3-1: در ابتدای برنامه تابع init فراخوانی شده و فرکانس میکروکنترلر با اجرای تابع osc_extclk_pll_init از کتابخانه osilator config.h در حالت اسیلاتور متصل به کریستال خارجی تنظیم میشود و با استفاده از واحدد PLL فرکانس 8 مگاهرتز ضربدر 4 شده و به 32 مگاهرتز میرسد و با توجه به این که ضرایب Prescaler A و Prescaler B و Prescaler C  بدون تغییر با مقدار پیش فرض 1 میباشند فرکانس کاری CPU هم 32 مگاهرتز خواهد بود.


void osc_extclk_pll_init(void)
{
OSC.XOSCCTRL = OSC_FRQRANGE_12TO16_gc | OSC_XOSCSEL_XTAL_16KCLK_gc;
OSC.CTRL |= OSC_XOSCEN_bm; // enable External Oscillator
while(!(OSC.STATUS & OSC_XOSCRDY_bm)); // wait for oscillator to be ready
OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | 4;
OSC.CTRL |= OSC_PLLEN_bm;
while(!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for oscillator to be ready
CCP = CCP_IOREG_gc; // disable register security for clock update
CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL clock
}









3-2: کنترل دور موتور: برای کنترل دور موتورها تایمر/کانتر 1 از پورت C در حالت Single-slop PWM Generation قرار داده شده و فرکانس خروجی PWM با قرار دادن مقدار 800 در رجیستر پریود تایمر بر روی 156 هرتز تنظیم شده ، خروجی PWM بر روی پایه های OC1A و OC1B فعال و تایمر با Prescaler 256 شروع به کار کرده است.


TCC1.CNT = 0;
TCC1.PER = 800; //FOR FRQ PWM
TCC1.CTRLB = TC_TC1_WGMODE_SINGLESLOPE_gc | TC1_CCAEN_bm | TC1_CCBEN_bm;
TCC1.CTRLA = TC_TC1_CLKSEL_DIV256_gc; //START TIMER WITH PS256
EN_L = motor.l_min; //SET DIUTY CYCLE OC1A
EN_R = motor.r_min; //SET DIUTY CYCLE OC1B





3-3: اندازه گیری فاصله با استفاده از ماژول SRF05: به صورت خلاصه با تحریک کردن پایه Trigger و اندازه گیری مدت زمان تغییر وضعیت پایه echo می توان فاصله تا مانع را بدست آورد. با تحریک پایه تریگر؛ پایه اکو به وضعیت یک تغییر میکند و بعد از دریافت برگشت امواج فراصوت وضعیت پایه به صفر برمی‌گردد. با توجه به اینکه اندازه گیری فاصله با مانع؛ برای جلوگیری از برخورد با مانع؛ باید پشت سر هم تکرار شود در صورتی که اندازه گیری طول پالس را CPU انجام دهد باعث مشغول شدن CPU و کاهش استفاده مفید از آن میشود. به این خاطر اندازه گیری طول پالس به قابلیت  Pulse Width Capture از تایمر صفر پورت C واگذار میشود. برای این کار باید وقفه بر روی پایه میکرو که به خروجی اکو ماژول متصل است در حالت both edges فعال شود و از طریق Event به عنوان ورودی واحد کپچر تایمر متصل شود.  نحوه کار تایمر در حالت اندازه گیری عرض پالس به این شکل است که با لبه بالا رونده پالس، تایمر ریست شده و از مقدار صفر شروع به شمارش میکند و با لبه پایین رونده پالس، مقداری که در شمارنده تایمر قرار دارد در رجیستر کپچر(CCX) ذخیره میشود.

در اینجا کانال صفر ایونت به PIN2 از PORTA متصل و وقفه خارجی پایه در حالت both edges به عنوان تریگر ایونت انتخاب میشود.


EVSYS.CH0MUX = EVSYS_CHMUX_PORTA_PIN2_gc; //ENABLE EVENT CHANEL 0 ON PIN2 FROM PORTA
PORTA.PIN2CTRL = PORT_ISC_BOTHEDGES_gc;//ENABLE Sense both edges ON PORTA2 FOR TRIGER







EVENT CHANEL 0



تنظیم تایمر در حالت کپچر:


TCC0.CNT = 0;
TCC0.CTRLB = TC_TC0_WGMODE_NORMAL_gc | TC0_CCAEN_bm;//ENABLE CAPTURE CHANEL A(CCA)-
TIMER IN NORMAL MODE
TCC0.CTRLD = TC_TC0_EVACT_PW_gc | TC_TC0_EVSEL_CH0_gc;//ENABLE TIMER EVENT FOR Pulse width
capture - CHANEL 0 EVENT
TCC0.INTCTRLB = TC_TC0_CCAINTLVL_LO_gc; //ENABLE LO LEVEL INTERRUPT FOR CAPTURE CHANEL A
TCC0.CTRLA = TC_TC0_CLKSEL_DIV64_gc; //START TIMER WITH PS64





3-4:مدیریت مصرف: با توجه به اینکه تغذیه ربات از باتری تامین میشود بنابراین باید مصرف جریان را به حداقل برسانیم به این منظور از طریق رجیستر کنترلی Power Reduction کلاک قسمتهای سخت افزاری میکرو که استفاده نمیشوند را قطع میکنیم.

PR.PRGEN = PR_USB_bm | PR_AES_bm | PR_RTC_bm | PR_DMA_bm; PR.PRPA = PR_AC_bm | PR_ADC_bm | PR_DAC_bm; PR.PRPB = PR_AC_bm | PR_ADC_bm | PR_DAC_bm; PR.PRPC = PR_TWI_bm | PR_USART1_bm | PR_USART0_bm | PR_SPI_bm; PR.PRPD = PR_TWI_bm | PR_USART1_bm | PR_USART0_bm | PR_SPI_bm;









باز طراحی ربات قدیمی

ربات مسیریاب

کنترل با گوشی از طریق وای فای و اپ اندروید

اندازه گیری فاصله تا مانع با استفاده از سنسور آلتراسونیک و قابلیت Event System میکروی ATXmega32A4u بدون درگیر شدن CPU







تایمر

تایمر دو رنگ 

زمان 5 دقیقه تا 60 دقیقه، با تفکیک 5 دقیقه قابل انتخاب میباشد. (بنا به خواست سفارش دهنده)

تغییر زمان ها از طریق ریموت و کلیدهای روی برد امکان پذیر است.

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




کنترل دمای گلخانه های کوچک


دارای نمایشگر 3 رقمی -دورنگ

اتصال سه سنسور دمای دیجیتال DS18B20 با رنج اندازه گیر 55- تا 125+ درجه سانتی گراد

دقت اندازه گیری دما = 0.5 درجه سانتیگراد

حد تفکیک (رزولوشن) دما = 0.1

دارای خروجی کنترل بخاری

دارای خروجی کنترل فن



درایور RGB بدون محدودیت در تعداد خروجی

دارای اپلیکیشن اندروید جهت انتخاب رنگ، انتخاب افکت، روشن و خاموش کردن

مجهز به WI-FI














جوجه کشی



ویژگی های سیستم:

1-      استفاده از سنسور SHT20

2-      تعداد سنسور 2 عدد

3-      خروجی های سیستم:

1-           رله موتور چپ گرد

2-           رله موتور راست گرد

3-           رله فرمان هیتر

4-           رله فرمان فن (جهت کاهش رطوبت یا دما)

5-           رله فرمان رطوبت ساز

6-           رله فرمان فن تهویه هوا

7-           نشانگر انتخاب پرنده (مرغ – بلدر چین – کبک)

8-           نشانگر دوره (ستر/هچر)

9-           یک خروجی رزرو

4-      امکان تنظیم دما ؛ رطوبت و زمان گردش موتور ها به صورت تفکیک شده برای هر پرنده. (اطلاعات با قطع برق پاک نمیشوند)

5-      امکان تنظیم دما ؛ رطوبت و زمان گردش موتور ها به صورت تفکیک شده برای دوره ستر/هچر

6-      دارای مد اتومات (که با توجه به مدت دوره ستر و هچر وارد شده. زمان شروع ؛ پایان دوره ستر و پایان دوره هچر محاسبه شده و در طی این مدت میزان دما و .... با توجه به نوع پرنده و دوره آن کنترل میشود و در پایان دوره سیستم متوقف میشود)

7-      دارای مد دستی (کنترل دما و رطوبت و چرخش موتورها انجام میشود اما دوره ستر/هچر در نظر گرفته نمیشود)

8-      پخش آلارم در صورتی که بعد از گذشت مدت زمان تعیین شده میزان دما یا رطوبت از مقدار تعیین شده کمتر/بیشتر شود.

9-      امکان غیرفعال کردن آلارم.

10-  دارای نمایشگر رنگی 3.2 اینچ با وضوح مناسب

11-  دو زبانه (دارای منوی فارسی و انگلیسی)

12-  پخش آلارم در صورتی که سنسورها از سیستم قطع یا به هر دلیلی خراب شوند.(در این حالت سیستم STOP میشود)

 


امکان شخصی سازی :

امکان اضافه کردن Wi-Fi به سیستم و ساخت اپلیکیشن اندروید.

امکان اضافه کردن سیستم پیامکی.

راه اندازی LCD رنگی 3.2 اینچ با درایور SSD1289 - اتمل استدیو

راه اندازی LCD رنگی 3.2 اینچ با درایور SSD1289 - در اتمل استدیو



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

خواندن کدهای ریموت مادون قرمز سونی read Sony IR remote code - AVR


The SIRC protocol uses a pulse width encoding of the bits. The pulse representing a logical "1" is a 1.2ms long burst of the 40kHz carrier, while the burst width for a logical "0" is 0.6ms long. All bursts are separated by a 0.6ms long space interval. The recommended carrier duty-cycle is 1/4 or 1/3


The picture above shows a typical pulse train of the SIRC protocol. With this protocol the LSB is transmitted first. The start burst is always 2.4ms wide, followed by a standard space of 0.6ms. Apart from signalling the start of a SIRC message this start burst is also used to adjust the gain of the IR receiver. Then the 7-bit Command is transmitted, followed by the 5-bit Device address. In this case Address 1 and Command 19 is transmitted

Commands are repeated every 45ms(measured from start to start) for as long as the key on the remote control is held down

The table below lists some messages sent by Sony remote controls in the 12-bit protocol. This list is by no means meant to be complete, as the assignment of functions is probably quite dynamic

AddressDevice
1TV
2VCR 1
3VCR 2
6Laser Disc Unit
12Surround Sound
16Cassette deck / Tuner
17CD Player
18Equalizer
 

CommandFunction
0Digit key 1
1Digit key 2
2Digit key 3
3Digit key 4
4Digit key 5
5Digit key 6
6Digit key 7
7Digit key 8
8Digit key 9
9Digit key 0
16Channel +
17Channel -
18Volume +
19Volume -
20Mute
21Power
22Reset
23Audio Mode
24Contrast +
25Contrast -
26Colour +
27Colour -
30Brightness +
31Brightness -
38Balance Left
39Balance Right
47Standby

مرجع: http://www.sbprojects.com/knowledge/ir/sirc.php

دانلود برنامه نوشته شده برای atmel studio

WATER LEVEL CONTROL


شیربرقی




SRF05


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

PCB با نرم افزار EAGLE  طراحی شده است.

برنامه با نرم افزار ATMEL STUDIO و به زبان C نوشته شده است.

mcu: mega16

lcd2x16

keypad= 4X4

valve = 24V AC که من با 12V DC بوبینش را تحریک میکنم

ultrasonic module= SRF05


AVR

سنسور اثر انگشت sm630


نوع ارتباط با میکرو: سریال - 57600bps

تغذیه: 4.3v - 6v

قادر به ذخیره 768 اثر انگشت.

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

برنامه نمونه ای برای راه اندازی و استفاده از این سنسور برای Mega AVR و Xmega AVR نوشته شده است. برای تهیه آن تماس بگیرید.(09398931522 - شاکری)

سورس برنامه به زبان C و کامپایلر(Atmel Studio) میباشد.


نرم افزار دمو برای خواندن سنسور با کامپیوتر:


لینک دانلود

ابوالفضل شاکری