با سلام خدمت همه دوستان
چند روز پیش یه دونه sim800L خریدم و کلی مشکل باهاش داشتم. تقریبا تمام مشکلاتی که توی این فروم بحث شده بود. اما بالاخره یه جورایی حل شد
sim800L بر خلاف ماژول های این گروه ماژول، احتیاج به رگولاتور نداره و مستقیم به ولتاژ 5 ولت وصل میشه و مشکلی پیدا نمی کنه. اگه دیود سر راهش بذارید(همون کاری که می گن ولتاژ 5 ولت رو به 4.3 کاهش میده باعث کار نکردنش میشه)
خروجی و ورودی هاش جوری هستن که مستقیم به میکرو وصل میشه و احتیاج به تقسیم ولتاژ نداره
(اینا همه توی مشخصات این ماژول نوشته شده بود)
اما مشکلی که داره. برای کار کردن باهاش حتما باید باودریت روی 115200 باشه. غیر از این باشه اصلا کار نمیکنه. اگه خروجی ماژول رو به کامپیوتر وصل کردین(با باودریت 115200) و با میکرو یا آردوینو بهش فرمان میدین و توی خروجی(یا همون مانیتور کامپیوتر) یه سری نوشته های قابل خواندن مثل ok یا RDY و یه سری نوشته های عجیب غریب می بینین به این خاطره که ماژول وقتی روشن میشه یه سری پیغام با باودریت 115200 به کامپیوتر می فرسته (که درست خونده میشه) اما فرمان های ورودی که از میکرو یا آردوینو دریافت میکنه چون با باودریت مناسب نمیاد، ماژول به عنوان فرمان تلقی نمی کنه و با نوشته های عجیب غریب روی خروجی ماژول ظاهر میشه
حالا چاره چیه؟چاره اینه که میکرو یا آردوینو روی باودریت 115200 تنظیم بشه تا فرمان ها با این سرعت به ماژول ارسال بشه. اما میکرو یا آردوینو اگه با کلاک 4 یا 8 مگاهرتز کار کنه باودریت روی 115200 نمیره. توی همه سرعت ها، حتی سرعت های بالاتر کار میکنه اما روی 115200 نمیره. نمی دونم چرا!!!!
کاری که من کردم اینه که یه میکروی مگا 128 با یه کرستال 18 مگاهرتز راه انداختم و باودریت رو روی 115200 تنظیم کردم تا تونستم به ماژول فرمان بدم. یه برنامه کوچیک برای مگا128 نوشتم که اطلاعات سریال رو با باودریت مثلا 4800 از ورودی می خونه(که ورودی میکروی دیگه یا آردوینو هست) و با باودریت 115200 روی خروجی (که ماژول sim800 هست) ارسال می کنه. اینجوری ماژول جواب داد. البته سرعت باودریت ماژول رو میشه کم کرد، اما این مستلزم اینه که با همون باودریت 115200 بهش فرمان داد که اونم مکافاته
یه نکته دیگه: میکرو ها وقتی با سرعت 4 مگاهرتز کار می کنن، زمان بندی و سرعت هاشون درسته، یعنی وقتی دستور waitms2000 میدین 2000 میلی ثانیه یا دو ثانیه مکس میکنه. حالا اگه سرعت رو بذارین روی 8 مگاهرتز waitms2000 به اندازه 1000 میلی ثانیه مکس میکنه. و وقتی باودریت روی 4800 تنظیم میشه (در سرعت 8 مگاهرتز) با سرعت 9600 اطلاعات ارسال میشه. حالا اگه میکرو رو به کریستال 18 مگاهرتز وصل کردین، چون 18 تقسیم بر 4 میشه 4.5 بنابراین برای اینکه باودریت 115200 رو به دست بیارید باید 115200 رو تقسیم بر 4.5 کنین که میشه 25600. البته این اتفاقات توی bascom می افته. شاید بقیه کامپایلر ها اینجوری نباشن