طراح

طراح

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

طراح

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

توابع کتابخانه ای استاندارد 2

کتابخانه string.h:

1- char *strcat(char *str1,char *str2):

رشته str2 را به انتهای str1  وصل میکند.

2- char *strcatf(char *str1,char  flash *str2):

رشته str2 را که در حافظه فلش قرار دارد به انتهای رشته str1 وصل میکند.

3- char *strncat(char *str1,char *str2, unsigned char n):

رشته str2 را به طول n کارکتر به انتهای رشته str1 وصل میکند.

4- char *strncatf(char *str1,char flash *str2, unsigned char n):

رشته str2 را که در حافظه فلش قرار دارد به طول n کارکتر به انتهای رشته str1 وصل میکند.

5- char *strchr(char *str,char c):

موقعیت اولین کارکتر برابر با c را که در رشته str قرار داشته باشد برمیگرداند.

6- char *strrchr(char *str,char c):

موقعیت آخرین کارکتر برابر با c را که در رشته str قرار داشته باشد برمیگرداند.

7- signed char strcmp(char *str1,char *str2):

دو رشته str1  با str2 را مقایسه میکند و اگر دو رشته با هم برابر باشند خروجی تابع صفر خواهد بود و  در غیر این صورت غیر صفر.

8- signed char strcmpf(char *str1,char flash *str2):

دورشته str1 را که در حافظه فلش قرار دارد را با رشته str2 مقایسه میکند، در صورتی که دو رشته با هم برابر باشند خروجی تابع صفر خواهد بود و در غیر این صورت غیر صفر.

9- signed char strncmp(char *str1,char *str2, unsigned char n):

دورشته str1  را با رشته str2 به تعداد کارکتر مقایسه میکند، در صورتی که دو رشته با هم برابر باشند خروجی تابع صفر خواهد بود و در غیر این صورت غیر صفر.

10- char *strcpy(char *dest,char *src):
رشته src را در رشته dest کپی میکند.
11- char *strcpyf(char *dest,char *src):
رشته src را که در حافظه فلش قرار دارد را در رشته dest کپی میکند.
12- char *strncpy(char *dest,char *src):
رشته src را به طول کارکتر در رشته dest کپی میکند.

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

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

کتابخانه stdlib.h :

1- int atoi(char *STR):

تبدیل رشته str به عدد اینتجر


2- long int atol (char *STR):

تبدیل رشته str به عدد لانگ اینتجر


3- void itoa (int n,char *STR):

تبدیل عدد اینتجر(n) به رشته عددی


4- void ltoa (long int n,char *STR):

تبدیل عدد لانگ اینتجر (n) به رشته عددی


5- int rand (void)

تولید عدد رندم بین 0 تا 32767



کتابخانه math.h :

1- unsigned char cabs(signed char x):

برگرداندن قدر مطلق عدد از نوع بایت


2- unsigned int abs(int x):

برگرداندن قدر مطلق عدد از نوع اینتجر


3- float fabs(float x):

برگرداندن قدر مطلق عدد از نوع اعشاری



4- signed char cmax(signed char a, signed char b):

برگرداندن بزرگترین عدد بین a و b - عدد از نوع بایت


5- int max(int a,int b):

برگرداندن بزرگتزین عدد بین a و b - عدد از نوع اینتجر


6- long int lmax(long int a,long int b):

برگرداندن بزرگتزین عدد بین a و b - عدد از نوع لانگ اینتجر


7- float fmax(float a,float b):

برگرداندن بزرگتزین عدد بین a و b - عدد از نوع اعشاری


8- signed char cmin(signed char a,signed char b):

برگرداندن کوچکترین عدد بین a و b - عدد از نوع بایت


8- int min(int a,int b):

برگرداندن کوچکترین عدد بین a و b - عدد از نوع اینتجر


9- float fmin(float a,float b):

برگرداندن کوچکترین عدد بین a و b - عدد از نوع اعشاری


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

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


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

تغذیه: 4.3v - 6v

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

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

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

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


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


لینک دانلود

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

تبدیل خروجی GPS از DM به DD

روش تبدیل خروجی GPS از DM به DD




قالب دیتا خروجی ماژول GPS  از نوع DDMM.MMMMMM میباشد که برای نمایش آن در گوگل مپ:

1-روش اول: باید دیتا را به فرم زیر وارد کنید:

3621.737076,5929.229825 -->>>  36°21.737076'N,59°29.229825'E


یا

2-روش دوم: باید دیتا را از قالب DDMM.MMMMMM به قالب DD تبدیل کنید و سپس وارد گوگل مپ کنید.


روش تبدیل قالب دیتا از DDMM.MMMMMM به DD:

DD = DD + (MM.MMMMMM/60);
DD = 36 + (21.737076/60) = 36.3622846
DD = 59 + (29.229825/60) = 59.48716375
------------------------>>>36.3622846,59.48716375
به همین راحتی.

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

کتابخانه استفاده از 74HC595

کتابخانه استفاده از 74HC595





نسخه ATMEGA


نسخه ATXMEGA


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

کتابخانه استفاده از 74HC166

کتابخانه استفاده از 74HC166


با استفاده از این کتابخانه و شیفت رجیستر 74HC166 می توانید با 4 پایه از میکرو وضعیت 8 پین ورودی را بخوانید



نسخه ATMEGA


نسخه ATXMEGA

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

کتابخانه راه اندازی ال سی دی کارکتری با سه پایه میکروکنترلر - (74hc164)

کتابخانه راه اندازی ال سی دی کارکتری با سه پایه میکروکنترلر - (74hc164)

سلام

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


نسخه ATMEGA 


نسخه ATXMEGA



1- تابع  LCDinit: این تابع رو که همه میدونن چی هست.

2- تابع LCDclr: تابع پاک کردن LCD

3- LCDGotoXY: تابع تعیین موقعیت اشاره گر LCD

4- تابع(LCDstring(uint8_t*, uint8_t: تابع نمایش یک رشته روی LCD به طول آرگومان ورودی دوم LCD

EX: LCDstring("HELLO",5)
در این صورت تمام حروف رشته مورد نظر روی ال سی دی نشان داده میشوند

EX: LCDstring("HELLO",2)

در این صورت فقط دو حرف اول رشته مورد نظر نشان داده میشود

5- تابع(LCDshiftRight(n: تابع شیفت دادن تمام LCD به سمت راست به تعداد n کارکتر.


سایر توابع هم به همین راحتی میباشند.


فقط در فایل هدر پایه های ال سی دی رو مشخص کنید.



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

نمایش شماره ی تماس گیرنده در GSM

در حالت پیشفرض اگر با سیم کارت ماژول تماس بگیرید، ماژول فقط عبارت "RING" را ارسال میکند. برای فعال سازی نمایش شماره تماس گیرنده باید دستور زیر به ماژول ارسال کنید.


AT+CLIP=1


با این دستور بعد از عبارت "RING" عبارت "CLIP: 0939XXX1522+"  ظاهر میشود. 


RING

+CLIP:0939XXX1522,132

OK


شاکری

هدر برد GSM & AVR

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


ویژگی ها:

1- FULL SMD

2- MCU: ATMEGA128

3- I2C EEPROM

4- SIM900

5- امکان تغییر فریمور ماژول

6- پروگرم شدن میکرو بدون پروگرمر

7- LCD 2X16

8- FT232RL برای اتصال مستقم پورت سریال میکرو به پورت USB

9- در دسترس بودن تمام پایه های میکروکنترلر

10- POWER LED

11- دارای 3 LED نشانگر








خرید فایل های PCB



شماتیک برد



شماتیک بهینه شده


designer2100@outlook.com

شاکری

کار با ماژول های GSM - sim900 - sim908


بسم الله الرحمن الرحیم

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

نکته: مهم هست که بدونید انتهای هر رشته را یک کد اینتر (13) مشخص میکند.

نکته: خودتان به راحتی میتواندید ماژول را با یک هویه 40 وات ساده روی برد مونتاژ کنید(اگر می خواهید پیشرفت کنید از انجام کارهایی که تا حالا انجام ندادید نترسید)


اولین استفاده از ماژول ارسال پیامک :

مرحله به مرحله:

1- باید چک کنید که ماژول آماده دریافت دستور هست یا نه - روش: ارسال AT به ماژول، در صورت دریافت OK، ماژول آماده می باشد.

2- فرستادن دستور ارسال پیامک به ماژول:

AT+CMGS="TEL NUMBER"

3- یک تاخیر کوتاه در حد 700 میلی ثانیه

4- فرستادن متن پیامک به ماژول

5- فرستاده کد Ctrl+Z  - کد = 26

Exam:

sprintf(buffer1,"AT+CMGS=\"009893989315xx\"%c",13);
uart_mini_printf(buffer1);
_delay_ms(700);
uart_mini_printf(tex_send);
uart_putchar(26);

به همین راحتی


دومین استفاده از ماژول خواندن متن پیامک دریافت شده :

مرحله به مرحله:

1- در صورتی که از پورت سریال عبارت زیر را دریافت کردید به معنی دریافت پیامک می باشد:

+CMTI: "SM",x

x آدرسی از حافظه ماژول است که پیامک دریافت شده در آن ذخیره شده است.

2- در صورتی که مرحله یک اتفاق افتاد، چک کنید ماژول آماده دریافت دستور است یا خیر.(توضیح داده شد)

3- فرستادن دستور خواندن متن پیامک ذخیره شده به ماژول:

AT+CMGR=x

توضیح: ماژول بعد از دریافت فرمان خواندن متن پیامک سه رشته را رسال می کند: رشته اول دیتای مربوط به پیامک میباشد. رشته دوم، متن پیامک دریافت شده است. رشته سوم عبارت OK میباشد. بنابراین باید دو رشته اول را حتما دریافت کنید که رشته دوم متن پیامک است و شماره و ساعت و تاریخ پیامک دریافت شده در دیتا مربوط به پیامک می باشد.

(در توضیحات ارائه شده فرض بر این است که شما به کار با رشته ها  و ارتباط سریال مسلط هستید)


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

نکته: با دستور ATD میتونید یک شماره یا یک کد دستوری را شماره گیری کنید.

روش: کد شارژ را با کد دستوری آن به سیم کارت روی ماژول پیامک کنید. برای پردازنده تعریف کنید که اگر کارکتر اول "*" بود متن دریافت شده را با استفاده از دستور ATD شماره گیری کند.

Exam:

if (recive_sms_txt[0] == 42)
                    {  
                        repet_ch:
                        uart_mini_printf("AT%c",13);
                        uart_getstring();
                        if ((strcmp(chs,ok)) != 0){goto repet_ch;}
                           
                        uart_mini_printf("ATD");
                        uart_mini_printf(recive_sms_txt,"%c",13);
                        uart_getstring();
                    }



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

با استفاده از دستور ATD کد دستوری دریافت شارژ را شاره گیری کنید. برای ایرانسل #1*140*

منتظر جواب اپراتور بمانید....

مقدار شارژ را از رشته دریافت شده خارج کنید.

Exam:
uart_mini_printf("ATD*140*1#%c",13);
        uart_getstring();
        uart_getstring();
        for (temp5=0;temp5<20;temp5++){compar[temp5] = 0;}
        for (temp5=0;temp5<6;temp5++){compar[temp5] = chs[temp5];}
        temp=0;
        temp5=0;
        temp = strlen(chs);
        for (temp2=0;temp2<temp;temp2++)
        {
            if (chs[temp2] == 115)
            {
                if ((chs[temp2+1]==104) && (chs[temp2+2]==111) && (chs[temp2+3]==109) && (temp5==0))
                {
                    temp3=0;
                    for (temp4=0;temp4<20;temp4++){compar[temp4] = 0;}
                    for (temp4=(temp2+6);temp4<temp;temp4++)
                    {
                        if (chs[temp4]!=32){compar[temp3]=chs[temp4];}
                        if (chs[temp4]==32){break;}
                        temp3++;
                    }
                    temp5=10;
                    for (temp=0;temp<15;temp++){charj_mony[temp]=0;}
                    strcpy(charj_mony,compar);
                }
            }
        }


پنجمین استفاده از ماژول حالت آماده به کار (sleep) :

چرا از حالت بیکاری استفاده کنبم؟ برای کاهش چشم گیر جریان مصرفی مدار

دو حالت بیکاری در Hardware Design بیان شده است:

الف- با ارسال دستور AT+CSCLK=1 فعال میشود. در این حالت ارتباط سریال کار نمی کند. بیرون آمدن از حالت SLEEP به سه روش زیر انجام می شود:

1- PULL DOWN کردن پایه DTR از ماژول. ارتباط سریال 50ms بعد از pull down شدن فعال می شود.

2- دریافت پیامک از شبکه

3- دریافت تماس یا دیتا از شبکه


ب- با ارسال دستور AT+CSCLK=2 فعال میشود. در این حالت ارتباط سریال فعال می باشد. بیرون آمدن از حالت SLEEP به سه روش زیر انجام می شود:

1- ارسال دیتا به پورت سریال ماژول. اولین بایت توسط ماژول خوانده نمی شود. فقط ماژول را از حالت SLEEP خارج میکند.

2- دریافت پیامک از شبکه

3- دریافت تماس یا دیتا از شبکه


نکته: در صورتی که ماژول 5 ثانیه از پورن سریال دیتا دریافت نکند به حالت SLEEP می رود.

نکته: برای غیر فعال کردن حالتهای SLEEP باید دستور AT+CSCLK=0 را به ماژول ارسال کرد.


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