در این آموزش قصد داریم تا ماژول Lora E32-TTL-1W را راه اندازی کنیم. این ماژول دارای خروجی آنتن قوی 1 وات و برد مسافتی بسیار زیادی است که برای ارسال بی سیم بهصورت اطلاعات بسیار مناسب است.
با وجود لایبری های آماده آردوینو برای این ماژول، اما در این مقاله سعی میکنیم تا آن را از طریق دیتاشیت راه اندازی کنیم. میکروکنترلر مورد استفاده AVR بوده، اما به راحتی و با تغییراتی کوچک، میتوانید آن را برای STM و دیگر میکروکنترلر ها نیز استفاده کنید.
پس در این مقاله، یاد میگیرید که چگونه یک ماژول را از طریق دیتاشیت راه اندازی کنید و ترسی که معمولاً از خواندن دیتاشیت وجود دارد را از خود دور کنید!
بزن بریم!
دیتاشیت
قبلاً در مقاله “چگونه دیتاشیت بخوانیم؟ قسمت اول: قطعات آنالوگ” منتشر شده است که توصیه میکنم حتماً آن را مطالعه کنید. دیتاشیت شامل اطلاعاتی درباره شرایط کارکرد درست ماژول و نحوه راه اندازی آن هست. این اطلاعات برای یک طراح الکترونیک بسیار مفید هستند، اما ممکن است همهی آنها هم برای کاری که میخواهید انجام دهید، لازم نباشد و صرفاً در حد اطلاع برای شما کافی باشد. بنابراین، نگرانی از بابت خواندن تمام تمام اطلاعات و جدولهای آن، برای راه اندازی اولیه نخواهد بود. با همدیگر نگاهی به دیتاشیت ماژول Lora E32-TTL-1W میاندازیم. ابتدا دیتاشیت را از اینجا دانلود کنید.
معرفی ماژول E32-TTL-1W
در صفحه اول لوگوی شرکت سازنده (EBYTE) را مشاهده میکنید و در صفحه بعد، معرفی ماژول شروع میشود:
توجه داشته باشید که این دیتاشیت صرفاً برای مدل E32-TTL-1W نبوده و تمام سری E32 این شرکت (شامل E32-TTL-100, E32-TTL-100S1, E32-T100S2 و…) را نیز شامل میباشد. در این قسمت توضیح مختصری در باره خصوصیات و ویژگیهای این سری از ماژولها توضیح داده شده است. برای مثال فرکانس رادیویی آن از 410 تا 441 مگاهرتز است که به صورت پیش فرض 433 مگاهرتز فعال میباشد. همچنین از قابلیتهای رمزگذاری و فشرده سازی اطلاعات توسط این ماژول یاد شده است.
ویژگی های ماژول E32-TTL-1W
صفحه سوم دیتاشیت، فهرست بوده که به شما به دسترسی سریعتر اطلاعات کمک میکند. پس از فهرست، در صفحه چهارم، ویژگی ماژولهای سری E32 و E32-TTL-1W نوشته شده است.
برای مثال، نوشته شده که ماژول دارای قابلیت LoRa spread-spectrum است که میتواند اطلاعات را تا مسافت بیشتری ارسال کند و احتمال رهگیری نیز کمتر شده است، همچنین از انواع تداخل نیز جلوگیری به عمل آمده است و…
قابلیتهای دیگری مثل FEC نیز برای بازسازی اطلاعاتی که به درستی دریافت نشدهاند، مد sleep برای مصرف برق کمتر ماژول، watchdog برای جلوگیری از هنگی و… نیز توضیح داده شدهاند.
اطلاعات این صفحه، در حد آشنایی کلی از امکانات و معرفی ویژگیهای ماژول به شما کمک خواهد کرد.
شاخص های فنی
در صفحه پنجم دیتاشیت، شاخصهای فنی ماژول E32-TTL-1W را مشاهده خواهید کرد. در این صفحه چند جدول وجود دارد که اطلاعات خوبی به شما میدهد، برای مثال، به کمک جدول General parameters شما میتوانید متوجه شوید که ماژول در چه شرایط محیطی و آب و هوایی، مثل دما، رطوبت قادر است به فعالیت خود ادامه دهد، وزن و ابعاد ماژول به چه صورت است و…
همچنین در بخش Electrical Parameters میزان جریان و ولتاژ مورد نیاز ماژول در حالتهای مختلف، مثل ارسال، دریافت و… نوشته شده است. شما در طراحی مدار خود، باید به این نکات توجه داشته باشید و مدار را به گونه ای طراحی کنید که توانایی تأمین این میزان از جریان را داشته باشد.
خوب، تا اینجای کار، اطلاعاتی کلی درباره قابلیتهای ماژول، شرایط محیطی و الکترونیکی مدار کسب کردیم. در حالت عادی، ولتاژ تغذیه ماژول ما میتواند از 2.3 تا 5.2 ولت باشد، در این آموزش جریان ماژول فرستنده از طریق یک شارژر موبایل 5 ولت یک آمپر و برق ماژول گیرنده نیز از طریق کابل USB تأمین میشود.
مشخصات مکانیکی
بخش سوم دیتاشیت، درباره مشخصات مکانیکی ماژولهای سری E32 توضیح میدهد. مشخصات مکانیکی، منظور شکل ظاهری، ابعاد، محل قرار گیری پینهای ماژول، نام و کاربرد هر پین میباشد. همان طور که در بالاتر نیز اشاره شد، این دیتاشیت، برای تمام ماژولهای سری E32 نوشته شده است. بنابراین، به صفحه یازده میرویم تا مشخصات مکانیکی مختص E32-TTL-1W را مشاهده کنیم و به اطلاعات دیگر ماژولها نیازی نداریم.
همان طور که در تصویر نیز مشخص است، ابعاد و اندازههای واقعی ماژول برای شما رسم شده است. در طراحی مدار و کشیدن فوت پرینت در نرم افزاری مثل آلتیوم، این ابعاد به کمک شما خواهند آمد. معمولاً سازندگان قطعات الکترونیکی، فایلی با نام Hardware Design نیز همراه با محصول خود ارائه میدهند که در آن فایل، اطلاعات کاملتری برای طراحی PCB در اختیار شما قرار میدهند. نمونهای از فایل Hardware Design را میتوانیدپیدا کنید. همچنین در صفحات آخر دیتاشیت برخی قطعات دیگر نیز، اندازهها، فوت پرینت و… برای شما قرار داده شده است.
اتصالات
در جدول تصویر بالا، پینهای مورد نیاز برای کار با ماژول معرفی شدهاند. طبق این جدول، پایههای M0 و M1 مد کاری ماژول را تعیین میکنند. پس وضعیت منطقی این دو پایه برای ما اهمیت دارد. در توضیحات این دو پایه، همچنین نوشته شده “Floating is not allowed, can be ground.” یعنی اینکه شما نمیتوانید این پایهها را بدون اتصال رها کنید و بجای این کار، مجاز هستید آنها را به زمین متصل کنید. (جدول مربوط به مقادیر این دو پایه را نیز در ادامه خواهیم دید)
پایههای Rx و Tx نیز برای ارتباط سریال میکروکنترلر با ماژول ما هستند، دو پایه VCC و GND نیز بدیهی است که برای تأمین تغذیه ماژول نیاز است. پایه AUX نیز خروجی ماژول است که برای بیدار کردن میکروکنترلر ما بکار میرود. فرض کنید مدار گیرنده ما منتظر دریافت اطلاعات از طریق ماژول است و این انتظار، ممکن است زمان بسیار زیادی طول بکشد، در این مدت شما میتوانید برای مصرف کمتر انرژی، میکروکنترلر خود را به حالت sleep برده و هنگامی که اطلاعاتی برای دریافت وجود داشته باشد، ماژول میکروکنترلر ما را به کمک این پایه، بیدار میکند. “Floating is allowed” به معنی این است که این پایه میتواند بدون آنکه به جایی متصل باشد، رها باشد. رها بودن یک پایه، لزوماً به معنی این نیست که استفاده از آن اختیاری است، اما با توجه به کاربرد این پایه، ما هم فعلاً نیازی به آن نخواهیم داشت. پایههای 8 تا 11 نیز استفاده کاربردی ندارد.
مدار پیشنهادی E32-TTL-1W
معمولاً در دیتاشیت ها، مدار پیشنهادی نیز برای نحوه اتصالات ارائه میشود، این مدار پیشنهادی، در راه اندازی اولیه آن به شما کمک بسیار خوبی خواهد کرد. شما با استفاده از مدار پیشنهادی دیتاشیت، ممکن است حتی به پاسخ بسیاری از سؤالات خود نیز برسید.
مد های عملیاتی
در ادامه همین صفحه، توضیحاتی درباره نحوه ارسال اطلاعات در فضا توسط ماژول و همچنین نکاتی نیز در رابطه با پین AUX داده شده است. اینکه ماژول چگونه اطلاعات را در فضا منتشر میکند، برای راه اندازی، به آن احتیاجی نداریم، اما اگر به این موضوع علاقه داشته باشید، میتوانید آن را مطالعه کنید. همچنین همانطور که بالاتر هم اشاره شد، به پایه AUX هم نیازی نداریم، پس میتوانیم از این قسمتها عبور کنیم! همانطور که در ابتدای مقاله نیز اشاره شد، لزوماً برای راه اندازی یک ماژول نیازی نیست تا در گام اول تمام اطلاعات دیتاشیت را مطالعه کنیم!
تا صفحه پانزدهم پیش میرویم، در اینجا جدول مربوط به پایههای M0 و M1 آورده شده است که ما برای راه اندازی به آن احتیاج داریم.
خوب، همان طور که میبینید، با توجه به وضعیت پایههای M0 و M1 ماژول میتواند در چهار حالت قرار بگیرد. از بین این چهار حالت، ما تنها به Mode 0 و Mode 3 احتیاج داریم. زیرا در Mode 0 ارتباط سریال با ماژول برقرار میشود و هر اطلاعاتی که ما برای ماژول میفرستیم (پایه Rx)، بهصورت بی سیم ارسال میشوند و همچنین اطلاعات دریافتی نیز از طریق پایه Tx ماژول برای میکروکنترلر ما ارسال میشود.
در Mode 3 نیز، میتوانید تنظیمات مربوط به ماژول را انجام دهید. برای این که دو ماژول بتوانند با یکدیگر ارتباط برقرار نمایند، باید تنظیمات هر دو ماژول با یکدیگر مشابه باشند. حتی میتوانید یک بار ماژول را در حالت Mode 3 برده و تنظیمات را انجام دهید، این تنظیمات در ماژول ذخیره میشوند و با قطع برق نیز پاک نمیشوند. بنابراین، دفعات بعدی برای استفاده از ماژول، فقط پایههای M0 و M1 را به زمین متصل کنید تا در حالت Normal قرار گیرد و عملیات ارسال و دریافت را انجام دهد. اگر بعداً نمیخواهید تغییراتی در تنظیمات ماژول انجام دهید، نیازی نیست این دو پایه را به میکروکنترلر متصل کنید و پایههای GPIO آن را اشغال کنید.
تنظیمات ماژول
خوب، به طور خلاصه، تا اینجا متوجه شدیم که ماژول E32-TTL-1W به جز پایههای VCC و GND دو پایه Tx و Rx برای ارتباط سریال دارد. با استفاده از پایههای M0 و M1 نیز میتوانیم انتخاب کنیم که ماژول در حالتی باشد که به وسیله پورت سریال تنظیمات آن را تغییر دهیم (Mode 3 = sleepMode = Parameter Setting) و یا در حالتی باشد که هر چه از طریق Tx به آن فرستادیم، ارسال کند و هر آنچه دریافت کرد، از طریق پایه Rx برای ماژول ما ارسال کند (Mode 0 = Normal). طبق جدول، برای حالت ارسال و دریافت، باید هر دو پایه M0 و M1 به زمین متصل شوند و برای تنظیمات، هر دو پایه به Vcc متصل هستند.
راه سادهتری نیز برای تغییر تنظیمات ماژول، بدون نیاز به برنامه نویسی وجود دارد! برای این کار، شما میتوانید ماژول را در Mode 3 برده و پایههای Tx و Rx را به کمک یک ماژول USB2TTL به نرم افزار RF setting وصل کنید. این نرم افزار به سادگی تنظیمات را اعمال میکند. هر دو ماژول را یکبار به این صورت تنظیم کرده و به راحتی از آن استفاده کنید!
برای تنظیم ماژول به کمک برنامه نویسی، به صفحه 18 و قسمت Instruction format میرویم.
خوب، در این قسمت نوشته شده که برای ست کردن تنظیمات، هنگامی که ماژول در Mode 3 است، ابتدا باید بایت C0 را به همراه دیگر پارامترها، از طریق ارتباط سریال ارسال کنیم. این پارامترها را در صفحه بعد، قسمت Parameter setting instruction میبینید:
طبق این جدول، میبایست یک رشته 6 بایتی برای ماژول ارسال کنیم. بایت صفرم، همانطور که در جدول قبل هم دیدیم، باید C0 باشد، زیرا قصد اعمال تنظیمات را داریم. بایت یک و دو، با هم دیگر یک عدد 16 بیتی را تشکیل میدهند که آدرس کانال میباشد. (از آنجایی که آدرس کانال میتواند بزرگتر از یک بایت (255) باشد، از دو بایت استفاده شده است.) مقدار کانال می تواند از 00H تا FFH مقدار بگیرد و مقدار پیش فرض آن هم 00H می باشد.
بایت سوم، برای تنظیم کردن سرعت ماژول میباشد. این بایت، خود به چند قسمت تقسیم شده و هر چند بیت آن، یکی از تنظیمات مربوط به را تغییر میدهد. برای مثال، همان طور که در تصویر بالا هم میبینید، بیت ششم و هفتم، برای تعیین توازن یا Parity در ارتباط سریال است.
بیت 3 تا 5 از این بایت برای سرعت baud rate و بیت 0 تا 2 هم Air data rate میباشد.
بایت چهارم کانال ارتباط را تعیین میکند و مقدار آن میتواند از صفر تا 1F هگز باشد.
بایت پنجم نیز برای تنظیم دیگر پارامترهای ارتباطی ماژول مثل FEC switch و… است. این بایت نیز، همانند بایت سوم چند قسمت می شود.
شما بسته به نیاز خود، می توانید آن ها را به دلخواه تنظیم کنید. دقت داشته باشید که هر تنظیماتی که استفاده می کنید، باید هم در فرستنده و هم در گیرنده یکی باشد.
عملیات بیتی
همان طور که مشاهده کردید، بعضی بایت ها، خود به چند قسمت تقسیم شده و هر قسمت آن (یعنی هر چند بیت آن) تنظیمات مختلفی را نگه داری می کند. مقادیر این بیت ها ثابت هستند و در جدول بالا هم می توانید آن ها را مشاهده کنید. برای مثال، در جدول بالا مقادیر 000 تا 111 می تواند برای بیت های 0،1 و 2 از بایت چهارم در نظر بگیریم. برای ساختن یک بایت کامل، به کمک بیت ها، می توانیم از عملیات بیتی در زبان C استفاده کنیم و برای راحتی نیز، مقدار های ثابت را درون enum نگه داری کنیم تا یک نام برای هر کدام را بتوانیم با یک نام اختصاصی صدا بزنیم. همچنین با کمک عملیات شیفت، این مقدار های ثابت را به مکانی که باید باشند، منتقل میکنیم. (با دانلود و مشاهده کدها، بیشتر متوجه خواهید شد.)
برای مثال، در کد زیر، مقادیر ثابت مربوط به parity، باوردریت و دیتاریت را که در جدول به ما داده شده بود، درون enum ذخیره کرده ایم. همچنین باز اگر دقت کنید، به عنوان نمونه تنظیمات parity بیت ششم و هفتم بود، به همین دلیل مقدار آن را 6 خانه به سمت راست شیفت کردیم تا بعدا در عملیات بیتی و ساختن بایت راحت تر باشیم …
typedef enum { U_8N1 = (0<<6), U_8O1 = (1<<6), U_8E1 = (2<<6) }UParery_t; typedef enum { U_1200 = (0<<3), U_2400 = (1<<3), U_4800 = (2<<3), U_9600 = (3<<3), U_19200 = (4<<3), U_38400 = (5<<3), U_57600 = (6<<3), U_115200 = (7<<3) }Ubaud_t; typedef enum { U_0_3Kbps = 0, U_1_2Kbps = 1, U_2_4Kbps = 2, U_4_8Kbps = 3, U_9_6Kbps = 4, U_19_2Kbps = 5 }Ubitrate_t;
حال، فرض کنید میخواهیم بایت سوم را با تنظیمات دلخواه بسازیم، به کمک عملیات بیتی (OR کردن) این کار را انجام می دهیم:
char Byte3 = U_8N1 | U_1200 | U_1_2Kbps;
در نهایت، از آن جایی که چندین پارامتر و بایت مختلف با همدیگر برای تنظیم ماژول نیاز است، همه آن ها را درون یک struct جمع میکنیم و یک تابع Dosetting هم برای محاسبه عملیات بیتی و اعمال تنظیمات مینویسیم.
// Lora Setting Uconfig config; config.address = 0; config.baud = U_9600; config.parety = U_8N1; config.bitrate = U_2_4Kbps; config.Transmittion_Power = T_30dBm; config.FEC_SWITCH = FEC_ON; config.mode = M_Transparent_Mode; config.WOR_Timing = W_250ms; config.IO_Mode = IO_PushPull; config.channel = 23; Dosetting(M0, M1, &config);
کتابخانه و برنامه کامل را میتوانید از اینجا و همین طور در انتهای مطلب دانلود کنید. در برنامه فرستنده، بطور مداوم کاراکتر هایی که از طریق پنجره سریال مانیتور آردوینو برای آن ارسال می کنید، خوانده میشود و توسط ماژول ارسال می شود. در برنامه گیرنده، آردوینو اطلاعات را از ماژول دریافت می کند و در پنجره سریال مانیتور آردوینو نمایش می دهد. از آنجایی که به دو پورت سریال در آردوینو احتیاج دایم (یکی برای ارتباط با ماژول و دیگری برای ارتباط با کامپیوتر)، ماژول به سریال 2 آردوینو متصل میباشد.
پایههای M0، M1 را نیز میتوانید در ابتدای فایل آردوینو تغییر دهید.
int M0 = 21, M1 = 13;
نکته:
حتماً از آردوینویی استفاده کنید که USART2 داشته باشد و اگر از آردوینویی استفاده میکنید که تنها یک یوزارت دارد، (مثل UNO و NANO) از Soft Serial و کد را تغییر دهید. در فایل پیوست، کد مربوط به راه اندازی E32-TTL-1W هم برای ماژول فرستنده و هم گیرنده قرار داده شده است.
همچنین دقت داشته باشید که ماژول تنها با باودریت 9600 تنظیمات را قبول میکند و اگر سرعت باودریت را تغییر دادید، این سرعت را فقط در حالت ارسال و دریافت تنظیم کنید.
اتصالات مدار
نیازی به اتصال پایه AUX نمی باشد.
تصویری از مدار ساخته شده
برد Heltec ESP32 LORA که در تصویر بالا میبینید، با آردوینو برنامه ریزی میشود و خود این برد هم مجهز به ارتباط LORA هست، اما از آنجایی که قدرت ماژول E32-TTL-1W بسیار بیشتر از LORA داخلی این برد است، از ماژول خارجی برای ارتباط استفاده شده است.
در این مقاله، بیشتر سعی بر این بود که یک ماژول را از طریق دیتاشیت بهصورت ابتدایی و ساده راه اندازی کنیم. اگر شما نحوه کار یک ماژول را متوجه شوید، با هر زبان و هر میکروکنترلری که به آن مسلط باشید، میتوانید آن ماژول را راه اندازی کنید. بنابراین، به جهت سادگی و خوانا بودن بیشتر کد، از پلت فرم آردوینو استفاده شده است. عملیات بیتی که ما در اینجا با آردوینو و به زبان CPP نوشتهایم، در زبان C هم به همین روش استفاده میشود. با تغییراتی کوچک، میتوانید آن را برای AVR و با زبان C باز نویسی کنید. همچنین توصیه میکنم مقاله تبدیل کتابخانه های CPP آردوینو به C برای AVR را هم مطالعه کنید تا بتوانید کتابخانههای مختلف آردوینو را برای زبان C و AVR تبدیل کنید!
شما هم با ارسال دیدگاههای خود، در بهبود و تکمیل این مقاله سهیم باشید!
لینکهای دانلود
لینک دانلود مستقیم “کتابخانه و کد آردوینو E32-TTL-1w (گیرنده + فرستنده)” – حجم 2.8 کیلوبایت
اسم فایل Final.zip
منبع:سیسوگ
عاااالی بود برای آشنایی اولیه