بررسی ماژول ESP8266 دو رله 12 ولت محصول ایرانیک

اگه حوصله خوندن کل متن رو ندارید فقط پاراگراف آخر رو بخونید.
چند وقت پیش برای کنترل پمپ آب از طریق Home Assistant و با کمک ESP01 یدونه ماژول ESP8266 دو رله 12 ولت محصول ایرانیک رو خریدم. عکسش رو بالاتر دیدید. مشکل از اینجا شروع شد که وقتی ESPHome پروگرام شد و به ماژول متصل شد، قبل از بوت شدن ESP01-S رله ها روشن میشن و بعد از اینکه ESP بوت و کدش اجرا شد، رله ها خاموش میشن بهش میگن Realy Flicker
ولی من میخوام برق اومد و همه چی روشن شد رله ها از اول تا آخر خاموش بمونن تا من بگم. ولی مشکل دقیقا قبل از بوت شدن ESP هست، در حد شاید 150 میلی ثانیه یا کمتر (میگن بوت شدن ESP 110 میلی ثانیه است)، رله ها نباید روشن بشن. وقتی خود ماژول رو بدون ESP به برق میزنید، رله ها به صورت پیش فرض روشن هستن. اما مشکل کجاست؟
1- برای اینکه ESP به حالت پروگرام نره و به درستی بوت بشه، جفت پینهای GPIO0 و GPIO2 باید High باشن، یعنی با یک مقاومت که به مقاومت Pull-up معروفه به 3.3 ولت وصل بشن.
2- ولی مشکل اینه که این پین ها دقیقا همون پینهای کنترل رله هستن. یعنی اگه High باشن رله ها پیش فرض فعال میشن، اگه Low باشن ESP بوت نمیشه. شماتیکش رو پایین ببنید. منظورم مقاومتهای R1 و R3 هست.
شاید واسه کارای دیگه این ماژول عالی باشه ولی برای من خوب نیست. طراحی چینی این ماژول هم همین مشکلات رو داره ولی چندتا راهحل براش هست.
1- میشه یه خازن بین GND و بیس ترانزیستور قرار بگیره. چون بیش از 150 میلی ثانیه طول میکشه شارژ بشه، همون تاخیر باعث میشه که رله ها فعال نشن وقتی هم که ESP بوت شد، پین رو LOW میکنه و مشکل حل میشه. 10uf و 22uf و یکم بالاتر امتحان کردم و جواب نداد. در نهایت همینجوری یه 220uf گذاشتم . کار کرد. حالا موقع بوت شدن رله روشن نمیشه تا موقعی که دستورش از ESP بیاد. البته اگه برق سریع قطع و وصل بشه چون خازن از قبل شارژ داره بازم مشکل برمیگرده. توی برد چینی چون اپتوکوپلر داره، راه حلش اضافه کردن خازن 470uf بین دو پایه اپتوکوپلر هست.
2- راه دیگه اینه که بیایم و منطق سخت افزار رو برعکس کنیم. یعنی اگه 3.3 ولت روی اون پینها بود. ترانزیستور خاموش باشه و برعکس. استفاده از گیت منطقی یا معکوسکننده (NOT Gate) مثل 74HC04 دردسره و ارزش نداره.
3- راه حل دیگه این بود که به جای ترانزیستور NPN، ترانزیستور PNP بذارم، هدفم این بود که چون همیشه برق به ترانزیستور میرسه، پس با PNP روشن نمیشه و من میام منطق کدم توی ESPHome رو برعکس میکنم، اگه برد این شکلی کار میکرد و این شکلی تولید میشد، عوض کردن یه خط کد خیلی راحت تر از این همه دردسر بود. اما مشکل بزرگ اینه که PNP برای خاموشبودن نیاز داره که بیساش نزدیک به امیتر باشه (یعنی 12 ولت تقریبا)، ولی ESP همچین چیزی رو نمیتونه تامین کنه.
شماتیکی که شرکت گذاشته مال نسخه 5 ولتی هست و بذارید یه گریزی بزنم به نسخه 5 ولتی همین ماژول. استفاده از PNP با یه کلکی، روی ماژول 5 ولتی جواب میده. چون ولتاژ مدار 5 ولته، پس ترانزیستور رله رو روشن میکنه اگه ورودی بیس حداقل 0.7 زیر ولتاژ 5 ولت باشه (یعنی از 4.3 ولت تا 5 ولت ترانزیستور خاموشه). چون ESP با 3.3 ولت کار میکنه و اون دوتا پین مشکلدار، 3.3 ولت خروجی میدن پس ترانزیستور روشنه و پس رله روشنه. همچنین اگه توی ESP دستور خاموش شدن یا LOW کردن پینها رو بدیم بازم خود ESP یه 0.5 ولت خروجی میده و بازم ترانزیستور روشن میمونه. (یعنی در هر حال ترانزیستور روشن میمونه، دستور ESP تفاوتی براش نداره) راهحل اینه که دوتا دیود مثلا 1N4007 بذاریم که چون هرکدوم 0.7 افت ولتاژ دارن، میشه 1.4 ولت. حالا توی وضعیت HIGH ولتاژ بیس نسبیت به زمین حدود 4.7 ولت میشه که ترانزیستور خاموشه و رله خاموشه. توی LOW هم که رله روشنه.
4- چون برد من 12 ولتیه میتونم از همون راه حل 3 استفاده کنم ولی با چندتا دیود (تقریبا 12 تا) که منطقی نیست. میشه یه دیود زنر 8.5 یا 8.7 گذاشت که جواب میده اما چون برد بیرونه، ممکنه توی تغییرات دمای هوا، ولتاژ زنر تغییر کنه و بگیر نگیر داشته باشه.
5- راه حل 3 روی برد 12 ولتی و P-Mosfet جواب نمیده. چون باید گیت ماسفت رو به 12 ولت وصل کرد و همزمان هم به یکی از GPIO های ESP. در نتیجه برد میسوزه. میگن یه راهی هست که زمین رو مشترک نگیری و 12 ولت رو مشترک بگیری ولی دردسره اصلاهم معلوم نیست توی ESP شدنی باشه یا نه، پیگیری نکردم.
6- راه حل آخر این بود که خودم یه برد تک کاناله با GPIO3 ساختم و جواب داد.
در هر حال، بعدا نه تنها از این ماژول بلکه هیچوقت با ESP01 کار نمیکنم. قیمتش خوبه ولی ارزش این همه دردسر رو نداشت. برند رلههای بردی که به دستم رسید Sanyou چین! بود ولی طراحی بردش بنظرم جالب و استاندارد نبود. میشد یه لایه رو GND کرد و کل GND مدار رو فقط بهش Via زد. البته دلایل اقتصادی احتمالا باعث شده چنین کاری نکنن. در کل تولیدات این شرکت تا الان که باکیفیت نبوده. یه برد محافظ هم قبلتر با مارک Azbin خریده بودم که کمتر از یه سال عمر کرد. مقایسه کنید با محافظ یخچالی که ده سال پیش خریداری شده و هنوز داره کار میکنه. الانم همون طراحی Azbin رو با مارک اعتماد دیدم. کلا تو آشغال درست کردن از چینی هم جلو میزنیم.