فهرست مطالب
آموزش نصب کلید لمسی در خانه هوشمند
ارتباط آردوئینو و کلید لمسی، با پروتکل مدباس
کلید لمسی از پروتکل مدباس پشتیبانی میکند. به عنوان گره Slave با آدرس پیشفرض 4 روی گذرگاه مدباس قرار میگیرد. فانکشنهای خواندن و نوشتن Holding Register در دسترس است. برای خواندن وضعیت کلید از فانکشن خواندن Read Registers (0x03) استفاده شود. برای نوشتن و تغییر وضعیت کلید از فانکشن Write Multiple Register (0x10) استفاده شود. تنظیمات پورت سریال RS-485 دستگاه کلید برابر با 115200,N,8,1 است.
سختافزار
- برد آردوئینو
- شیلد RS-485 یا تراشه MAX485 (یا مشابه)
- منبع تغذیه یا کابل پاور USB
- کلید لمسی آلفا
برنامهنویسی آردوئینو
نرمافزار آردوئینو نصب شود. کتابخانه SimpleModbusMaster از آدرس زیر دانلود و مطابق تصویر زیر، در آردوئینو نصب شود.
https://github.com/angeloc/simplemodbusng
سپس فایل ModbusMasterAlphaKey.ino در داخل دایرکتوری ModbusMasterAlphaKey اجرا شود. نرمافزار آردوئینو باز خواهد شد و برنامه آماده کامپایل شدن و برنامهریزی روی برد آردوئینو است.
برد آردوئینو توسط کابل USB به کامپیوتر متصل شود. مدل برد آردوئینوی مورد نظر و پورت سریال مربوطه، در منوی Tools تنظیم شود. گزینه Upload در منوی Sketch (یا کلید میانبر Ctrl + U) انتخاب شود. پس از برنامهریزی آردوئینو، شیلد RS-485 یا یک تراشه MAX485 (یا مشابه) به برد آردوئینو متصل شود. اتصالات الکتریکی در بالا ذکر شده است.
پس از برقراری اتصالات آردوئینو و اتصال پینهای A و B واسط RS-485، به ترمینال A و B کلید لمسی آلفا متصل شود و سپس مدار روشن شود. نشانگرهای TX و RX روی مدار آردوئینو شروع به چشمک زدن میکند که به معنی ارسال و دریافت دادههای مدباس است.
با فشردن هر کلید روی کلید لمسی، نشانگر متناظر با آن روی مدار آردوئینو تغییر وضعیت میدهد. با فشردن کلیدهای متصل به آردوئینو، پل متناظر با آن روی کلید لمسی تغییر وضعیت میدهد.
توضیحات برنامه
عبارت #define TxEnablePin 2 برای تعیین پین آردوئینو متصل به ورودیهای RE و DE تراشه 485 است.
آدرس Slave کلید لمسی توسط دستورات زیر تعیین میشود (در اینجا برابر با 4 است).
packet1->id = 4;
packet2->id = 4;
پین های 4، 5، 6، و 7 به 4 عدد LED (نشانگر وضعیت پلهای کلید) متصل شود.
پینهای 8، 9، 10، و 11 به 4 عدد کلید فشاری متصل شود. این کلیدها برای روشن/خاموش کردن پلهای کلید لمسی (توسط آردوئینو) است.
دو packet برای رجیسترهای خواندنی و رجیسترهای نوشتنی تعریف شده است. هر packet شامل 11 رجیستر 16 بیتی است. تعداد رجیسترها توسط دستورات زیر تعیین میشود.
packet1->no_of_registers = 11;
packet2->no_of_registers = 11;
تابع modbus_update در حلقه بینهایت برنامه فراخوانی میشود. عملیات نوشتن و خواندن مدباس، توسط فراخوانی این تابع انجام میشود. اگر خطایی در ارتباط مدباس نباشد، مقدار برگشتی این تابع برابر با TOTAL_NO_OF_PACKETS است.
دستتکانی (handshaking)
با اعمال هر تغییر در رجیسترهای (قابل خواندن از) کلید لمسی، مقدار آدرس 0x0000 برابر با 50 خواهد شد. بنابراین عدد 50 در این رجیستر، به معنی وجود داده جدید و یا تغییر در مقدار رجیسترهای قابل خواندن از کلید لمسی است.
گره Master (در اینجا مدار آردوئینو) پس از دریافت دادههای جدید، مقدار 60 را در آدرس 0x0000 رجیسترهای قابل نوشتن در کلید لمسی قرار میدهد و ارسال میکند. کلید لمسی با دریافت مقدار 60 در این آدرس، مقدار 50 در رجیسترهای قابل خواندن را به 0 تغییر میدهد.