کتابخانه 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 به تعداد n کارکتر مقایسه میکند، در صورتی که دو رشته با هم برابر باشند خروجی تابع صفر خواهد بود و در غیر این صورت غیر صفر.
کتابخانه 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 - عدد از نوع اعشاری
ابوالفضل شاکری
نوع ارتباط با میکرو: سریال - 57600bps
تغذیه: 4.3v - 6v
قادر به ذخیره 768 اثر انگشت.
این سنسور از طریق ارسال داده های دستوری در یک پاکت دیتا به فرم هگز با میکرو ارتباط برقرار میکند.
برنامه نمونه ای برای راه اندازی و استفاده از این سنسور برای Mega AVR و Xmega AVR نوشته شده است. برای تهیه آن تماس بگیرید.(09398931522 - شاکری)
سورس برنامه به زبان C و کامپایلر(Atmel Studio) میباشد.
نرم افزار دمو برای خواندن سنسور با کامپیوتر:
ابوالفضل شاکری
روش تبدیل خروجی GPS از DM به DD
کتابخانه استفاده از 74HC166
با استفاده از این کتابخانه و شیفت رجیستر 74HC166 می توانید با 4 پایه از میکرو وضعیت 8 پین ورودی را بخوانید
ابوالفضل شاکری
کتابخانه راه اندازی ال سی دی کارکتری با سه پایه میکروکنترلر - (74hc164)
سلام
با این کتابخانه میتونید فقط با سه تا از پایه های میکروکنترلر، ال سی دی کارکتری را راه اندازی کنید.
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 کارکتر.
سایر توابع هم به همین راحتی میباشند.
فقط در فایل هدر پایه های ال سی دی رو مشخص کنید.
ابوالفضل شاکری
در حالت پیشفرض اگر با سیم کارت ماژول تماس بگیرید، ماژول فقط عبارت "RING" را ارسال میکند. برای فعال سازی نمایش شماره تماس گیرنده باید دستور زیر به ماژول ارسال کنید.
AT+CLIP=1
با این دستور بعد از عبارت "RING" عبارت "CLIP: 0939XXX1522+" ظاهر میشود.
RING
+CLIP:0939XXX1522,132
OK
شاکری
نیاز به یک برد که هم میکروکنترلر و هم ماژول 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 نشانگر
شماتیک برد
designer2100@outlook.com
شاکری
بسم الله الرحمن الرحیم
آموزش کار با ماژول های 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*
منتظر جواب اپراتور بمانید....
مقدار شارژ را از رشته دریافت شده خارج کنید.
پنجمین استفاده از ماژول حالت آماده به کار (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 را به ماژول ارسال کرد.
ابوالفضل شاکری