در بخش اول موفق شدیم به پروژه Firebase رو ایجاد کنیم و روش های احراز هویت رو تنظیم کنیم. در مرحله بعد کلید API پروژه رو دریافت کردیم. همچنین یک دیتابیس Realtime ساختیم و قوانین دیتابیس رو برای پروژه تعریف کردیم. در این بخش به کد نویسی میکروکنترلر ESP32 می پردازیم تا احراز هویت به عنوان کاربری با ایمیل و پسورد و همچنین جست و جو و شناسایی تغییرات گره های دیتابیس و تغییر حالت های GPIO را باهم بررسی کنیم.
کنترل تغییرات GPIOها با ESP32
در این قسمت، بورد ESP32 رو طوری برنامهنویسی میکنیم تا این مسائل رو انجام بده:
1) احراز هویت به عنوان کاربری با ایمیل و پسورد.
2) جستوجوی تغییرات گرههای دیتابیس و تغییر حالت GPIO بر اون اساس.
وسایل موردنیاز
لیست قطعاتی که برای انجام این پروژه به آنها نیاز دارید
-
ESP32
-
LED (3 عدد)
-
رزیستور 220 اهمی (3 عدد)
-
بردبورد (Breadboard)
-
سیم جامپر (Jumper Wires)
نمای کلی از مراحل پروژه
تو این پروژه میخوایم سه تا LED که به GPIOهای 12، 13 و 14 متصل هستن رو کنترل کنیم. پس سه تا LED رو به ESP32 وصل کنید. برای کمک میتونید از شکل زیر استفاده کنید. اگر میخواید از GPIO های دیگه ESP32 استفاده کنید، به خاطر داشته باشید که تغییرات لازم رو توی گرههای دیتابیس اعمال کنید.
سلام من کدو همون طور که گفته بودید تغییر دادم ولی سریال مانیتور بعد از وصل شدن به وایفای فقط Refresh token
رو نشون میداد
سلام امیررضا عزیز. برای رفع “خطای refresh token” مراحل زیر را امتحان کنید:
1- مطمئن شوید که دستگاه ESP32 شما به اینترنت متصل است و می تواند به خدمات Firebase دسترسی داشته باشد. ممکنه با توجه به محدودیت های فعلی دسترسی Firebase امکانپذیر نباشه و فقط با ابزار های تغییر IP بتونید وصل بشید.
2- بررسی کنید که آیا “refresh token” منقضی شده است. اگر چنین است، باید یک refresh token جدید از Firebase Authentication دریافت کنید.
3- در کد خود، از تابع ()FirebaseAuth.refreshToken برای به ایجاد کردن یک refresh token جدید استفاده کنید، سپس آن را به صورت ایمن ذخیره کنید.
4- هنگامی که یک refresh token جدید ایجاد کردید، از آن برای ورود به سیستم یا احراز هویت با خدمات Firebase استفاده کنید.
5- مطمئن شوید که زمان دستگاه ESP32 شما دقیق است. زمان نادرست می تواند منجر به خطاهای احراز هویت شود.
دوباره بررسی کنید که client ID و secret استفاده شده توسط دستگاه ESP32 شما با مواردی که در Firebase تنظیم کرده اید مطابقت داشته باشد.
6- اگر همه چیز ناموفق بود، سعی کنید اطلاعات کاربری Firebase را از دستگاه ESP32 خود حذف کرده و دوباره آنها را تازه اضافه کنید.
7- اگر هیچ یک از این مراحل کار نکرد، دستور زیر رو در انتهای کد اصلی (داخل حلقه) اضافه کنید. احتمالا مشکلتون حل میشه.
if(Firebase.isTokenExpired())
firebase.ready()
اگر همچنان مشکل داشتید میتونید از دوتا لینک زیر کمک بگیرید.
https://github.com/mobizt/Firebase-ESP-Client/discussions/62
https://github.com/mobizt/Firebase-ESP-Client/discussions/83#discussioncomment-866941