فهرست مطالب:
- تدارکات
- مرحله 1: ویژگی ها
- مرحله 2: PCB
- مرحله 3: مونتاژ
- مرحله 4: مرور برنامه نویسی
- مرحله 5: ورودی ها
- مرحله 6: خروجی ها
- مرحله 7: ورود به سیستم
- مرحله 8: وزوز
- مرحله 9: ادغام خارجی IoT
- مرحله 10: استفاده
- مرحله 11: برنامه های آینده
تصویری: هاب خانه هوشمند ESP32: 11 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
ایجاد سیستمی که بتواند حجم زیادی از داده های حسگر را اداره کند ، چندین خروجی داشته باشد و به اینترنت یا شبکه محلی متصل شود ، زمان زیادی می طلبد و تلاش زیادی می طلبد. اغلب اوقات ، افرادی که مایل به ایجاد شبکه های هوشمند خانگی خود هستند ، قادر به یافتن و جمع آوری اجزای سفارشی در یک سیستم بزرگتر هستند. به همین دلیل من می خواستم یک پلت فرم مدولار و غنی از ویژگی ها بسازم که ساخت سنسورها و خروجی های متصل به اینترنت اشیا را آسان کند.
با تشکر از DFRobot و PCBGOGO.com برای حمایت از این پروژه!
برای کسب اطلاعات بیشتر ، به repo Github مراجعه کنید:
تدارکات
-
DFRobot ESP32 FireBetetle
www.dfrobot.com/product-1590.html
-
سنسور DHT22
www.dfrobot.com/product-1102.html
-
سنسور نور و حرکت APDS9960
www.dfrobot.com/product-1361.html
-
ماژول LCD I2C 20x4
www.dfrobot.com/product-590.html
-
نوار LED RGB آنالوگ
www.dfrobot.com/product-1829.html
- DRV8825 درایورهای موتور پله ای
- کارت خوان SD
- استپر موتور NEMA17
مرحله 1: ویژگی ها
ویژگی اصلی این برد یک برد توسعه ESP32 FireBeetle است که تمام ارتباطات ، خوانش سنسورها و خروجی ها را کنترل می کند. دو درایور موتور پله ای وجود دارد که دو موتور پله ای دوقطبی را کنترل می کنند.
گذرگاه I2C نیز برای استفاده با قطعاتی مانند APDS9960 یا LCD شکسته شده است. برای خواندن دما ، پین هایی برای اتصال به سنسور DHT22 و همچنین مقاومت در برابر عکس برای خواندن سطوح نور محیط وجود دارد.
پشتیبانی از نوار نور آنالوگ روی برد ، که دارای سه MOSFET برای هدایت چراغ های LED است.
مرحله 2: PCB
من فرآیند طراحی PCB را با ایجاد یک طرح کلی در Eagle آغاز کردم. از آنجا که نتوانستم کتابخانه ESP32 FireBeetle را پیدا کنم ، فقط از دو سرآیند پین 1x18 پین استفاده کردم. سپس ، من یک مدار مدیریت قدرت ایجاد کردم که می توانست 12 ولت را از طریق جک بشکه DC پذیرفته و آن را برای تغذیه سنسورها و ESP32 به 5 ولت تبدیل کند.
پس از اتمام طرح کلی ، به طراحی خود PCB روی آوردم.
من می دانستم که شمع بشکه DC باید در قسمت جلویی صفحه باشد و خازن های صاف کننده منبع تغذیه 100uF باید به ورودی های قدرت راننده پله ای نزدیک باشد. بعد از اینکه همه چیز مشخص شد ، شروع به تعیین مسیر کردم.
در حالی که Oshpark PCB های با کیفیت عالی می سازد ، قیمت آنها بسیار بالا است. خوشبختانه ، PCBGOGO.com همچنین PCB های عالی با قیمت مناسب تولید می کند. من توانستم ده PCB را فقط با 5 دلار خریداری کنم ، به جای پرداخت 52 دلار فقط برای سه تخته از Oshpark.com.
مرحله 3: مونتاژ
به طور کلی ، مونتاژ تخته بسیار آسان بود. من با لحیم کاری اجزای نصب شده روی سطح ، و سپس اتصال کانکتور و تنظیم کننده جک بشکه شروع کردم. بعد ، من در سربرگ های پین برای اجزایی مانند درایورهای موتور و FireBeetle لحیم کردم.
پس از اتمام لحیم کاری ، با قرار دادن مولتی متر در حالت اندازه گیری مقاومت و بررسی اینکه آیا مقاومت بیش از مقدار مشخص شده است ، برد را برای اتصال کوتاه آزمایش کردم. برد از بین رفت ، بنابراین من سپس توانستم هر جزء را وصل کنم.
مرحله 4: مرور برنامه نویسی
من می خواستم کد این برد مدولار و آسان برای استفاده باشد. این به معنای داشتن چندین کلاس است که عملکردهای خاصی را اداره می کند ، به همراه یک کلاس بزرگتر که شامل عملکردهای کوچکتر است.
مرحله 5: ورودی ها
برای مدیریت ورودی ها ، یک کلاس به نام "Hub_Inputs" ایجاد کردم ، که به هاب خانه اجازه می دهد با APDS9960 ارتباط برقرار کند ، همراه با ایجاد و مدیریت دکمه ها و رابط های لمسی خازنی. این شامل توابع زیر است:
دکمه ایجاد کنید
دریافت کنید اگر دکمه فشار داده شده است
دریافت تعداد فشار دکمه ها
دریافت آخرین ژست
مقدار لمس خازنی را دریافت کنید
دکمه ها به عنوان یک ساختار ذخیره می شوند و دارای سه ویژگی هستند: is_pressed ، numberPresses و pin. هنگام ایجاد ، هر دکمه به یک وقفه متصل می شود. هنگامی که وقفه ایجاد می شود ، روال سرویس وقفه (ISR) از نشانگر آن دکمه (به عنوان آدرس حافظه آن در آرایه دکمه نشان داده می شود) می گذرد و تعداد فشارهای دکمه را افزایش می دهد ، به همراه به روز رسانی مقدار is_pressed Boolean.
مقادیر لمس خازنی بسیار ساده تر است. با انتقال پین لمسی به عملکرد () touchRead بازیابی می شوند.
آخرین ژست با نظرسنجی از APDS9960 و بررسی اینکه آیا ژست جدیدی شناسایی شده است ، بررسی می شود و اگر یکی از آنها تشخیص داده شد ، متغیر اشاره خصوصی را بر روی آن حرکت تنظیم کنید.
مرحله 6: خروجی ها
هاب خانه هوشمند دارای چندین روش برای خروج اطلاعات و تغییر چراغ است. پین هایی وجود دارد که گذرگاه I2C را از بین می برد و به کاربران اجازه می دهد تا یک LCD را وصل کنند. تا کنون ، تنها یک اندازه LCD پشتیبانی می شود: 20 * 4. با استفاده از عملکرد "hub.display_message ()" ، کاربران می توانند با عبور از یک شیء رشته ای پیام ها را روی LCD نمایش دهند.
همچنین یک سرآیند پین برای اتصال رشته ای از LED های آنالوگ وجود دارد. فراخوانی تابع "hub.set_led_strip (r، g، b)" ، رنگ نوار را تعیین می کند.
دو موتور پله ای با استفاده از یک جفت برد راننده DRV8825 حرکت می کنند. تصمیم گرفتم از کتابخانه BasicStepper برای کنترل موتور استفاده کنم. هنگامی که برد بوت می شود ، دو شیء پله ای ایجاد می شود و هر دو موتور فعال می شوند. برای حرکت هر موتور ، از تابع "hub.step_motor (motor_id، steps)" استفاده می شود ، که در آن شناسه موتور 0 یا 1 است.
مرحله 7: ورود به سیستم
از آنجا که این برد دارای چندین سنسور است ، من می خواستم توانایی جمع آوری و ثبت اطلاعات محلی را داشته باشم.
برای شروع ثبت نام ، یک فایل جدید با "hub.create_log (نام فایل ، سرصفحه)" ایجاد می شود ، جایی که از سربرگ برای ایجاد یک ردیف فایل CSV که ستون ها را نشان می دهد استفاده می شود. ستون اول همیشه یک زمان بندی در ساعت ماه روز سال است: فرمت حداقل: ثانیه. برای بدست آوردن زمان ، تابع hub.log_to_file () با تابع basic_functions.get_time () زمان می گیرد. سپس ساختار زمان tm با ارجاع به تابع ورود به سیستم ، همراه با داده و نام فایل منتقل می شود.
مرحله 8: وزوز
اگر نمی توانید موسیقی پخش کنید ، تخته اینترنت اشیا چه فایده ای دارد؟ به همین دلیل من یک زنگ با عملکرد پخش صداها را وارد کردم. فراخوانی "hub.play_sounds (ملودی ، مدت زمان ، طول)" شروع به پخش آهنگ می کند ، با ملودی آرایه ای از فرکانس های نت ، مدت زمان به عنوان یک آرایه از مدت زمان نت ها و طول به عنوان تعداد نت ها.
مرحله 9: ادغام خارجی IoT
این هاب در حال حاضر از webhook های IFTTT پشتیبانی می کند. آنها را می توان با فراخوانی تابع Hub_IoT.publish_webhook (url ، داده ، رویداد ، کلید) یا Hub_IoT.publish_webhook (url ، داده) فعال کرد. این یک درخواست POST به آدرس داده شده با داده های پیوست شده به همراه نام رویداد در صورت لزوم ارسال می کند. برای راه اندازی یکپارچه سازی IFTTT ، ابتدا یک برنامه کاربردی جدید ایجاد کنید. سپس سرویس webhook که هنگام دریافت درخواست فعال می شود را انتخاب کنید.
در مرحله بعد ، رویداد را "high_temp" صدا کنید و آن را ذخیره کنید. سپس ، سرویس Gmail را برای قسمت "That" انتخاب کرده و گزینه "Send a email to my" را انتخاب کنید. در تنظیمات سرویس ، "درجه حرارت بالا است!" را قرار دهید. برای موضوع ، و سپس "اندازه گیری دمای {{ارزش 1}} را در {{OccurredAt}}" قرار می دهم ، که دمای اندازه گیری شده و زمان شروع رویداد را نشان می دهد.
پس از راه اندازی آن ، به سادگی آدرس webhook را که توسط IFTTT ایجاد شده است بچسبانید و "high_temp" را در قسمت رویداد قرار دهید.
مرحله 10: استفاده
برای استفاده از Smart Home Hub ، کافی است هرگونه عملکرد مورد نیاز را در setup () یا loop () فراخوانی کنید. من قبلاً نمونه ای از فراخوانی های عملکردی ، مانند چاپ زمان فعلی و فراخوانی رویداد IFTTT را قرار داده ام.
مرحله 11: برنامه های آینده
سیستم Smart Home Hub برای اتوماسیون ساده خانه و کارهای جمع آوری داده ها بسیار خوب عمل می کند. تقریباً می تواند برای هر چیزی استفاده شود ، مانند تنظیم رنگ نوار LED ، نظارت بر دمای اتاق ، بررسی روشن بودن چراغ و تعداد زیادی از پروژه های احتمالی دیگر. در آینده ، من می خواهم عملکرد را بیشتر گسترش دهم. این می تواند شامل افزودن یک وب سرور قوی تر ، میزبانی فایل محلی و حتی بلوتوث یا mqtt باشد.
توصیه شده:
خانه هوشمند توسط تمشک پای: 5 مرحله (همراه با تصاویر)
خانه هوشمند توسط رزبری پای: در حال حاضر چندین محصول وجود دارد که باعث می شود خانه شما هوشمندتر شود ، اما اکثر آنها راه حل های اختصاصی هستند. اما چرا برای تعویض چراغ با تلفن هوشمند خود به اینترنت نیاز دارید؟ این یکی از دلایلی بود که من Smar خودم را ساختم
LCD STONE با خانه هوشمند: 5 مرحله
LCD STONE With Smart Home: امروز صفحه نمایش درایو سریال STONE را دریافت کردم که می تواند از طریق پورت سریال MCU ارتباط برقرار کند و طراحی منطقی UI این صفحه را می توان مستقیماً با استفاده از نرم افزار VGUS ارائه شده در وب سایت رسمی STONE طراحی کرد ، که بسیار راحتی
ایجاد یک سیستم کنترل خانه هوشمند در STONE HMI Disp: 23 مرحله
ایجاد یک سیستم کنترل خانه هوشمند در STONE HMI Disp: معرفی پروژه آموزش زیر نحوه استفاده از ماژول صفحه لمسی STONE STVC050WT-01 را برای ساخت یک سیستم کنترل ساده لوازم خانگی به شما نشان می دهد
خانه هوشمند از راه دور: 5 مرحله
خانه هوشمند از راه دور: مواد: dunne gelamineerde hout platen. 1 x grondplaat met een diameter van 1 cmkleine nagels2 x breadbords plakbandveel kabels با قطر 0.3 cmveel jumper kabels gereedschap: boormachinelijmpistoolsoldeerboutschroevendra
باغبانی هوشمند مبتنی بر اینترنت اشیا و کشاورزی هوشمند با استفاده از ESP32: 7 مرحله
باغبانی هوشمند مبتنی بر اینترنت اشیا و کشاورزی هوشمند با استفاده از ESP32: جهان با گذشت زمان و کشاورزی تغییر می کند. امروزه مردم در همه زمینه ها لوازم الکترونیکی را ادغام می کنند و کشاورزی نیز از این امر مستثنی نیست. این ادغام الکترونیک در کشاورزی به کشاورزان و افرادی که باغات را مدیریت می کنند کمک می کند. در این