کویکتل, آموزش کار با ماژول M66, توصیه شده

ساخت کنترل رله پیامکی با ماژول M66 کوییکتل

sms-control

کنترل وسایل از راه دور همیشه جزو جذابیت های الکترونیک بوده، نمونه ای از این کار هم که متداول تر هست با کمک ماژول های gsm و پیامک انجام میشه، حالا ما توی این آموزش می خوایم با کمک ماژول M66 شرکت کوییتل یک کنترل رله پیامکی بسازیم، البته نه به همراه یک پردازنده خارجی (مثل آردوینو)، بلکه به صورت OpenCpu استفاده از این روش باعث میشه تا هزینه سخت افزار ما پایین تر بیاد و برد کوچیک تری هم داشته باشیم، پس با سیسوگ همراه باشید تا به سراغ این پروژه محبوب بریم.

 

در ابتدا باید بگم که شما برای انجام این پروژه باید با کار با OpenCpu توی ماژول M66 آشنا باشید برای اینکار میتونید این قسمت آمورش رو بررسی کنید:
کار با ماژول M66 – قسمت اول – کار با OpenCpu

سخت افزار

برای سخت افزار ما از برد توسعه ماژول M66 استفاده کردیم و برای اون یک مین برد زدیم تا وارد بحث طراحی برد برای خود ماژول نشیم در ادامه تصویر این برد رو مشاهده میکنید:
ساخت کنترل رله پیامکی با ماژول M66 کوییکتل

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

تغذیه

ساخت کنترل رله پیامکی با ماژول M66 کوییکتل

ورودی برد ما 12 ولت هست و این 12 ولت مستقیم میره سر سیم پیچ های رله، غیر از اون یه رگولاتور L7805 هم اینجا داریم تا ولتاژ مورد نیاز برای هدر برد M66 رو تامین کنه، همچنین یه رگولاتور 3.3 ولت برای تامین تغذیه آیسی های PCF8574 و 7HC04 که در ادامه کاربرد اونها گفته میشه.

بخش کنترل

ساخت کنترل رله پیامکی با ماژول M66 کوییکتل

قسمت اصلی ما اینجا خروجی I2C ماژول M66 هست که به آیسی PCF8574 میره تا از طریق اون خروجی های ما کنترل بشه ، هر چند بدون این آیسی هم ما میتونستیم خروجی ها رو کنترل کنیم (حداقل الان چون فقط 4 تا خروجی داریم) اما یه مزیت مهم داره استفاده از این آیسی ، مسئله اینجاست که این ماژول های GSM ممکنه برخی اوقات ریست بشند که دلایل مختلفی میتونه داشته باشه و میشه گفت طبیعی هست توی این ماژول ها ، اما نکته اینه که اگر ما مستقیم خروجی ها رو به پایه های ماژول متصل کنیم هنگام ریست شدن وضعیت پایه ها از دست میره یا دست کم یه بار قطع و وصل میشه که اتفاق جالبی نیست! بعد از اون خروجی آیسی PCF8574 رو به یک آیسی NOT میدیم که استفاده ازش دوتا دلیل داره ، یکی همون NOT کردن خروجی های PCF (چون برعکس هست خروجیش) و دیگری بافر کردن خروجی PCF که بتونیم به کمک اون ترانزیستور ها رو فعال کنیم.

کنترل خروجی ها

ساخت کنترل رله پیامکی با ماژول M66 کوییکتل

قسمت آخر هم اینجاست که خروجی آیسی NOT به یک ترانزیستور رفته و از اونجا رله رو فعال میکنه، همچنین اینجا یک دیود هرزگرد و یک LED برای هر رله داریم.

کدنویسی

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

اولین بار که ماژول روشن میشه از هیچ شماره ای دستور نمیگیره.

بعد باید دکمه btn که روی برد هست رو 2 ثانیه نگه دارید تا سه تا led روی برد شروع به چشمک زدن بکنند.

حالا شماره اصلی که میخواید برد رو کنترل کنه باهاش یه پیام با محتوای “admin” بدید.
اگر پیام درست ارسال بشه چراغ ها از حالت چشمک زن در میاد.

و اون شماره به عنوان ادمین ذخیره میشه.

حالا چهار تا خروجی داریم.
با دستور
on out x
که به جای x از 1 تا 4 شماره خروجی رو مشخص میکنید.
با دستور
off out x
هم خاموش میشه
و با دستور
pulse out x
خروجی لحظه ای فعال میشه.

برای اضافه کردن کاربر هم از این دستور استفاده میشه.
add user +989100000000

فقط فرمت شماره باید به همین صورت باشه.

با دستور
user list
هم شماره کاربران برگردونده میشه.

چهار تا شماره هم جمعا ذخیره میتونید بکنید.

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

این قسمت کار خاصی انجام نمیده فقط میاد I2C رو راه اندازی میکنه و یک بار ال ای دی های روی خود برد توسعه رو خاموش روشن میکنه، در آخر تابع check_file صدا زده میشه این تابع میاد و بررسی میکنه که فایلی داخل UFS داخلی ماژول با نام data.txt موجود هست یا نه، در واقع ما از این فایل برای ذخیره شماره هایی که امکان دسترسی دارند رو مشخص میکنیم.

اگر که این فایل وجود داشت اطلاعات اون رو پردازش میکنه و در آرایه users میریزه.

دوباره به تابع proc_main_task  بر میگردیم، در ادامه یک حلقه while داریم که پیام های دریافتی از هسته ماژول رو دریافت میکنه که یکی از اونها دریافت SMS جدید هست، توی خط 758 این اتفاق میوفته.

اگر که پیام جدیدی دریافت شده بود تابع Hdlr_RecvNewSMS صدا زده میشه و اطاعات پیام هم به تابع ارسال میشه، با قسمت های اول این تابع کاری نداریم و به خط 292 میرسیم.

در اینجا بررسی میشه که آیا داخل حالت تنظیم admin هست یا نه (که این در 521 مشخص میشه و در صورتی که دکمه روی برد بیشتر از 2 ثانیه نگه داشته بشه )، اگر در این وضعیت بود شماره ای که از اون پیامک دریافت شده رو توی فایل data.txt ذخیره میکنه و فقط از اون دستور میگیره.

در ادامه محتویات متن دریافتی از طریق پیامک بررسی میشه تا عمل مرتبط با اون انجام بشه، توی خط 326 بررسی میشه که اگر پیامک با متن “add user” شروع شده بود شماره ای که وارد شده رو به لیست کاربر ها اضافه کنه.

در ادامه در خط 368 بررسی میشه که اگر دستور “user list” اومد لیست شماره هایی که میتونند دستور ارسال کنند رو برگردونه.

بعد از اون میرسیم به قسمت اصلی کارمون یعنی اگر دستور با “on out” شروع شد.

ابتدا در خط 380 بررسی میشه که بعد از دستور “on out” حتما یه عدد اومده باشه و نه کاراکتر یا چیز دیگه ای

بعد از اون هم اگر مثلا عدد 1 اومده بود، بیت اول متغیر all رو برابر 1 میکنه و در انتها تابع update_IO صدا زده میشه که دیتا ها رو برای PCF میفرسته تا اعمال بشند.

 

 

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

m66 sms relay

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

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

9 دیدگاه در “ساخت کنترل رله پیامکی با ماژول M66 کوییکتل

  1. Avatar for الکترونیکی الکترونیکی گفت:

    سلام وقت بخیر
    این برنامه روی کدام 4 پایه برد m66 عمل میکند؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

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

  2. Avatar for حامد حامد گفت:

    سلام
    وقت بخیر
    برای راه اندازی این پروژه با اردینو یا esp32 و ماژول رله و ماژول gsm اموزشی دارید؟
    روال کار با این روش فرق داره؟

  3. Avatar for Masoud Masoud گفت:

    با سلام و خسته نباشید
    ممنون بابت آموزش، سوالم اینکه آیا سنسوری مثل ds18b20 و پروتکل onewire رو میشه با opencpu خوند؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      خواهش میکنم
      به صورت مستقیم خیر ، اما میتونید از مبدل های one wire to i2c استفاده کنید و از طریق i2c با این سنسور ارتباط بگیرید

      1. Avatar for sisoog user sisoog user گفت:

        یعنی کلا نمیشه پروتکل oneWire رو روی MC60 به صورت openCPU اجرا کرد؟

        1. Avatar for Mahdi.h   Mahdi.h   گفت:

          خیر. چراکه شما نمیتونید io ها رو با سرعت بالا صفر و یک کنید

  4. Avatar for َََAmirAli َََAmirAli گفت:

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

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      ممنون از لطفتون🙏🙏

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

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