فهرست مطالب:

Super Simple Raspberry Pi 433 مگاهرتز اتوماسیون خانگی: 7 مرحله
Super Simple Raspberry Pi 433 مگاهرتز اتوماسیون خانگی: 7 مرحله

تصویری: Super Simple Raspberry Pi 433 مگاهرتز اتوماسیون خانگی: 7 مرحله

تصویری: Super Simple Raspberry Pi 433 مگاهرتز اتوماسیون خانگی: 7 مرحله
تصویری: Как передавать голос с помощью модуля приемопередатчика 433 МГц 2024, نوامبر
Anonim
Super Simple Raspberry Pi 433 مگاهرتز اتوماسیون خانگی
Super Simple Raspberry Pi 433 مگاهرتز اتوماسیون خانگی

این آموزش هنگام استفاده از Raspberry Pi برای کنترل دستگاه های بی سیم در خانه یکی از موارد بسیاری است. مانند بسیاری از موارد دیگر ، نحوه استفاده از یک جفت فرستنده/گیرنده ارزان قیمت که به Pi شما متصل شده است را به شما نشان می دهد تا با دستگاههایی که در باند فرکانس رادیویی رایج 433 مگاهرتز کار می کنند ، تعامل داشته باشید. این به طور خاص به شما نشان می دهد که چگونه هر وسیله برقی را با استفاده از Pi خود با انتقال دستورات به مجموعه ای از سوکت های برق کنترل از راه دور 433 مگاهرتز روشن یا خاموش کنید.

اگر این تعداد زیادی از قبل وجود داشته است ، چرا این آموزش را ایجاد کردم؟ عمدتا به این دلیل که تقریباً تمام آموزشهای دیگر که با آنها برخورد کردم ، موارد را بیش از حد پیچیده می کردند ، به ویژه در مورد نرم افزار. متوجه شدم که آنها برای انجام همه کارها به کتابخانه های شخص ثالث ، اسکریپت ها یا قطعات کد متکی هستند. بسیاری حتی توضیح نمی دهند که کد زیر چه می کند - آنها فقط از شما می خواهند که دو یا سه قطعه نرم افزار را روی Pi خود قرار دهید و دسته ای از دستورات را اجرا کنید ، بدون هیچ سوالی. من واقعاً می خواستم از Pi خود برای خاموش و روشن کردن وسایل برقی در اطراف خانه خود با استفاده از مجموعه ای از سوکت های کنترل از راه دور 433 مگاهرتز استفاده کنم ، اما می خواستم نسخه ای از سیستم خود را ایجاد کنم که بتوانم آن را درک کنم ، امیدوارم که نیازی به از کتابخانه ها یا اسکریپت های دیگران استفاده کنید.

این آموزش درباره این است. قسمت نرم افزاری این سیستم شامل دو اسکریپت بسیار ساده پایتون است - یکی برای دریافت و ضبط سیگنال ها ، و دیگری برای انتقال این سیگنال ها به سوکت های برق بی سیم. دریافت/انتقال واقعی سیگنال فقط به کتابخانه RPi. GPIO با کاربری آسان متکی است که حداقل برای من از قبل با Raspbian نصب شده است. این کتابخانه همچنین می تواند مستقیماً به پایتون وارد شود.

برای این پروژه به موارد زیر نیاز دارید:

تمشک پای. هر مدلی باید کار کند ، من از یک کیت شروع کننده همه کاره استفاده کردم ، اما شاید شما فقط به واحد مرکزی نیاز دارید

یک جفت فرستنده/گیرنده 433 مگاهرتز. به نظر می رسد مواردی که بیشتر در این نوع پروژه ها استفاده می شود اینها هستند. خرید یک بسته پنج تایی مانند بسته پیوست تضمین می کند که چند یدک دارید

مجموعه ای از پریزهای قدرت کنترل از راه دور 433 مگاهرتز. من از اینهایی که به شدت توصیه می کنم استفاده کردم ، اما مدلهای بی شماری در دسترس هستند. فقط مطمئن شوید که آنها با این فرکانس کار می کنند

برخی از لوازم جانبی برای ساخت مدار. توصیه می کنم از تخته نان و برخی از کابل های بلوز استفاده کنید تا روند ساخت مدار تا حد ممکن آسان شود.

[اگر تصمیم به خرید هر یک از این محصولات دارید ، اگر از طریق پیوندهای بالا به لیست دسترسی داشته باشید ، بسیار قدردانی می کنم - به این ترتیب ، من سهم کوچکی از سود را بدون هیچ هزینه اضافی برای شما دریافت می کنم!]

مرحله 1: راه اندازی واحد گیرنده

راه اندازی واحد گیرنده
راه اندازی واحد گیرنده

قبل از اینکه بتوانید از Pi خود برای ارسال فرمان به سوکت های کنترل از راه دور استفاده کنید ، باید بدانید که آنها به چه سیگنال های خاصی پاسخ می دهند. اکثر سوکت های کنترل از راه دور دارای یک گوشی هستند که می تواند برای روشن یا خاموش کردن واحدهای خاص استفاده شود. در مورد مواردی که خریدم ، این گوشی دارای چهار ردیف دکمه ON/OFF است که هریک از آنها یک سیگنال ON یا OFF به یک واحد سوکت خاص ارسال می کند.

این س aالی را ایجاد می کند - چگونه می دانیم کدام دکمه ها با کدام سوکت مطابقت دارند؟ این در واقع بستگی به مدل شما دارد. یکی از اصلی ترین دلایلی که من سبک خاص سوکت خود را انتخاب کردم (در مقدمه پیوند داده شده است) این است که می توان واحدها را با یک سوئیچ فیزیکی پیکربندی کرد تا سوکت خاصی به مجموعه خاصی از دکمه های ON/OFF روی گوشی پاسخ دهد. این بدان معناست که می توانید پریزها را جدا کرده و در اطراف خانه حرکت دهید و بدانید که هر واحد همیشه به سیگنال های روشن/خاموش یکسانی پاسخ می دهد.

هنگامی که نحوه ارتباط سوکت های خود با گوشی را فهمیدید ، باید از گیرنده 433 مگاهرتز (تصویر بالا) برای "بوییدن" کدهای ارسال شده توسط گوشی استفاده کنید. پس از ثبت شکل موج این کدها ، می توانید آنها را با استفاده از پایتون تکرار کرده و با استفاده از واحد فرستنده ارسال کنید.

اولین کاری که باید در اینجا انجام دهید این است که پین های گیرنده خود را به پین های صحیح GPIO روی Pi وصل کنید. واحد گیرنده دارای چهار پین است ، اما فقط سه پین مورد نیاز است. من فکر می کنم هر دو پین مرکزی خروجی یکسانی دارند ، بنابراین فقط باید به یکی از آنها وصل شوید (مگر اینکه بخواهید سیگنالهای دریافتی را به دو پین GPIO جداگانه منتقل کنید).

تصویر بالا تقریباً سیم کشی را خلاصه می کند. هر پین روی گیرنده می تواند مستقیماً به پین مربوطه در Pi متصل شود. من از تخته نان و کابل های بلوز استفاده می کنم تا روند کمی شیک تر شود. توجه داشته باشید که می توانید هر پین داده GPIO را برای اتصال به هر یک از پین های گیرنده مرکزی انتخاب کنید. من از پین مشخص شده با عنوان "23" در سربرگ Pi خود استفاده کردم.

مهم: اگر پین مشخص شده با "3v3" در تصویر بالا را به پین ولتاژ بالاتر در Pi وصل کنید (به عنوان مثال 5v) ، احتمالاً به Pi آسیب می رسانید زیرا پین های GPIO نمی توانند ولتاژهای بالای 3v3 را تحمل کنند. روش دیگر ، می توانید آن را با 5 ولت تغذیه کرده و تقسیم ولتاژ را تنظیم کنید تا ولتاژ ایمن به پین DATA ارسال شود.

محدوده گیرنده در این ولتاژ زیاد نخواهد بود ، به خصوص اگر آنتن متصل نباشد. با این حال ، شما نیازی به یک برد طولانی ندارید - تا زمانی که گیرنده بتواند سیگنال های گوشی را هنگامی که در کنار یکدیگر قرار گرفته اند دریافت کند ، این تنها چیزی است که ما نیاز داریم.

مرحله 2: بو کردن کدهای گوشی

بو کردن کدهای گوشی
بو کردن کدهای گوشی

اکنون که گیرنده شما به Pi متصل شده است ، می توانید اولین مرحله هیجان انگیز این پروژه را شروع کنید. این شامل استفاده از اسکریپت پایتون پیوست شده برای ضبط سیگنال منتقل شده توسط گوشی هنگام فشردن هر دکمه است. اسکریپت بسیار ساده است ، و من به شدت توصیه می کنم قبل از اجرا به آن نگاهی بیندازید - به هر حال ، نکته این پروژه این است که شما فقط کورکورانه کد دیگران را اجرا نمی کنید!

قبل از شروع این فرآیند ، باید مطمئن شوید که کتابخانه های پایتون مورد نیاز برای اجرای اسکریپت sniffer را دارید. آنها در بالای اسکریپت ذکر شده اند:

از datetime وارد کردن datetime

واردات matplotlib.pyplot به عنوان pyplot وارد کردن RPi. GPIO به عنوان GPIO

کتابخانه های RPi. GPIO و datetime شامل توزیع Raspbian من بودند ، اما من مجبور شدم کتابخانه matplotlib را به شرح زیر نصب کنم:

sudo apt-get python-matplotlib را نصب کنید

این کتابخانه یک کتابخانه نمودار معمولی است که حتی در خارج از این پروژه نیز بسیار مفید است ، بنابراین نصب آن قطعاً آسیبی نمی رساند! هنگامی که کتابخانه های شما به روز می شوند ، آماده شروع به ضبط داده ها هستید. نحوه عملکرد اسکریپت به شرح زیر است:

وقتی اجرا می شود (با استفاده از دستور python ReceiveRF.py) ، پین GPIO تعریف شده را به عنوان ورودی داده پیکربندی می کند (پایه 23 به طور پیش فرض). سپس به طور مداوم پین را نمونه گیری می کند و ثبت می کند که آیا 1 یا 0 دیجیتال دریافت می کند. این مدت زمان مشخصی (5 ثانیه به طور پیش فرض) ادامه می یابد. با رسیدن به این محدودیت زمانی ، اسکریپت ضبط داده ها را متوقف می کند و ورودی GPIO را می بندد. سپس کمی پس پردازش انجام می دهد و مقدار ورودی دریافتی را در برابر زمان ترسیم می کند. مجدداً ، اگر در مورد کارکرد فیلمنامه س questionsال دارید ، احتمالاً می توانید پس از مشاهده نحوه عملکرد آن ، به آنها پاسخ دهید. من سعی کرده ام تا جایی که ممکن است کد را ساده و خوانا کنم.

کاری که باید انجام دهید این است که وقتی اسکریپت نشان می دهد که ** شروع به ضبط کرده است ، مراقب باشید. هنگامی که این پیام ظاهر شد ، باید یکی از دکمه های گوشی را برای یک ثانیه فشار داده و نگه دارید. حتما آن را نزدیک گیرنده نگه دارید. پس از اتمام ضبط اسکریپت ، از matplotlib برای ترسیم شکل موج گرافیکی سیگنالی که در طول فاصله ضبط دریافت کرده است ، استفاده خواهد کرد. لطفاً توجه داشته باشید ، اگر از طریق یک سرویس گیرنده SSH مانند PuTTY به Pi خود متصل هستید ، همچنین باید برنامه X11 را باز کنید تا شکل موج نمایش داده شود. من از xMing برای این کار استفاده می کنم (و برای موارد دیگر مانند رومیزی از راه دور در Pi من). برای نمایش نمودار ، کافی است قبل از اجرای اسکریپت xMing را شروع کرده و منتظر ظاهر شدن نتایج باشید.

هنگامی که پنجره matplotlib شما ظاهر می شود ، منطقه مورد نظر در طرح باید کاملاً آشکار باشد. برای بزرگنمایی می توانید از کنترل های پایین پنجره استفاده کنید تا زمانی که دکمه را نگه داشته اید بتوانید بالاترین و پایین ترین سیگنال منتقل شده توسط گوشی را انتخاب کنید. برای مشاهده یک کد کامل به تصویر بالا مراجعه کنید. سیگنال احتمالاً شامل پالس های بسیار کوتاهی است که در دوره های زمانی مشابهی که هیچ سیگنالی دریافت نمی شود ، از هم جدا شده اند. این بلوک از پالس های کوتاه احتمالاً دوره طولانی تری را دنبال می کند که هیچ چیزی دریافت نمی شود ، و پس از آن الگو تکرار می شود. هنگامی که الگوی مربوط به یک نمونه کد را مشخص کردید ، اسکرین شاتی مانند آن را در بالای این صفحه بگیرید و برای تفسیر آن به مرحله بعدی بروید.

مرحله 3: رونویسی سیگنال نتیجه

رونویسی سیگنال نتیجه
رونویسی سیگنال نتیجه

اکنون که بلوک های بالا و پایین دوره ای مربوط به سیگنال یک دکمه خاص را شناسایی کرده اید ، به راهی برای ذخیره و تفسیر آن نیاز خواهید داشت. در مثال سیگنال بالا ، متوجه خواهید شد که تنها دو الگوی منحصر به فرد وجود دارد که کل بلوک سیگنال را تشکیل می دهند. گاهی اوقات یک ارتفاع کوتاه به دنبال یک پایین بلند می بینید و گاهی اوقات عکس آن است - یک بلند بلند و سپس یک پایین کوتاه. هنگامی که سیگنال های خود را رونویسی می کردم ، تصمیم گرفتم از نامگذاری زیر استفاده کنم:

1 = short_on + long_off0 = long_on + short_off

دوباره به شکل موج برچسب زده نگاه کنید ، متوجه منظور من خواهید شد. هنگامی که الگوهای معادل در سیگنال خود را مشخص کردید ، تنها کاری که باید انجام دهید این است که 1 و 0 را برای ایجاد توالی شمارش کنید. هنگام رونویسی ، سیگنال فوق را می توان به شرح زیر نوشت:

1111111111111010101011101

حالا شما فقط باید این فرایند را برای ضبط و رونویسی سیگنال های مربوط به سایر دکمه های گوشی خود تکرار کنید و بخش اول این فرآیند را به پایان رسانده اید!

قبل از اینکه بتوانید مجدداً سیگنال ها را با استفاده از فرستنده ارسال کنید ، کارهای بیشتری برای انجام دادن وجود دارد. زمان بندی بین بالا و پایین مربوط به 1 یا 0 بسیار مهم است ، و شما باید مطمئن شوید که می دانید یک "short_on" یا "long_off" در واقع چقدر طول می کشد. برای کدهای من ، سه قطعه اطلاعات زمانبندی وجود داشت که باید برای تکرار سیگنال ها استخراج کنم:

  • مدت زمان "کوتاه" ، یعنی شروع 1 یا پایان 0.
  • مدت زمان یک "طولانی" ، یعنی پایان 1 یا شروع 0.
  • مدت زمان بازه "تمدید شده" من متوجه شدم که وقتی یک دکمه را روی گوشی نگه داشتم ، بین هر نمونه تکراری بلوک سیگنال ، یک دوره 'expand_off' وجود داشت. این تاخیر برای همگام سازی استفاده می شود و مدت زمان ثابتی دارد.

برای تعیین این مقادیر زمان بندی ، می توانید از تابع بزرگنمایی در پنجره matplotlib برای بزرگنمایی تا انتها استفاده کرده و مکان نما را روی قسمت های مربوطه سیگنال قرار دهید. بازخوانی مکان مکان نما در پایین پنجره باید به شما این امکان را بدهد که تعیین کنید هر قسمت سیگنال چقدر مطابق با یک فاصله طولانی ، کوتاه یا طولانی است. توجه داشته باشید که محور x نمودار نشان دهنده زمان است و جزء x خوانش مکان نما بر حسب واحد ثانیه است. برای من ، عرض ها به شرح زیر بود (در ثانیه):

  • تاخیر_کوتاه = 0.00045
  • long_delay = 0.00090 (دو برابر "کوتاه")
  • تمدید_دل = 0.0096

مرحله 4: راه اندازی واحد فرستنده

راه اندازی واحد فرستنده
راه اندازی واحد فرستنده

هنگامی که کدها و داده های زمان بندی خود را جمع آوری کردید ، می توانید دستگاه گیرنده خود را جدا کنید زیرا دیگر به آن نیازی نخواهید داشت. سپس می توانید فرستنده را مستقیماً به پین های Pi Pi GPIO مربوطه وصل کنید ، همانطور که در تصویر بالا نشان داده شده است. من دریافتم که پین های واحدهای فرستنده برچسب گذاری شده اند ، که این کار را آسان تر می کند.

در این حالت ، خوب است که واحد را با استفاده از منبع تغذیه 5 ولت از Pi تغذیه کنید زیرا پین DATA سیگنال هایی را به Pi ارسال نمی کند ، فقط آنها را دریافت می کند. همچنین منبع تغذیه 5 ولت محدوده انتقال بیشتری را نسبت به استفاده از منبع 3v3 ارائه می دهد. دوباره ، می توانید پین DATA را به هر پین مناسب در Pi متصل کنید. من از پین 23 استفاده کردم (مشابه گیرنده).

کار دیگری که توصیه می کنم انجام دهم اضافه کردن آنتن به سوراخ کوچک بالای سمت راست فرستنده است. من از یک قطعه سیم مستقیم به طول 17 سانتی متر استفاده کردم. برخی منابع سیم پیچ دار با طول مشابه را توصیه می کنند. من مطمئن نیستم کدام بهتر است ، اما سیم مستقیم محدوده کافی را برای من فراهم می کند تا سوکت ها را از هر مکانی در آپارتمان کوچکم روشن یا خاموش کنم. بهتر است آنتن را لحیم کنید ، اما من مقداری پلاستیک را از سیم جدا کردم و مس را در سوراخ پیچیدم.

هنگامی که فرستنده وصل شد ، تمام تنظیمات سخت افزاری انجام شده است! تنها کاری که باید انجام دهید این است که سوکت های خود را در اطراف خانه قرار دهید و به برنامه فرستنده نگاهی بیندازید.

مرحله 5: انتقال سیگنال ها با استفاده از Pi

این جایی است که دومین اسکریپت پایتون وارد می شود. طراحی شده است که به همان سادگی اول باشد ، اگر نه بیشتر. دوباره ، لطفاً آن را بارگیری کرده و کد را بررسی کنید. برای انتقال سیگنال های صحیح با توجه به داده هایی که در مرحله 3 ثبت کرده اید ، باید اسکریپت را ویرایش کنید ، بنابراین اکنون زمان خوبی است که یک نگاه سریع به آن داشته باشید.

کتابخانه های مورد نیاز برای اجرای این اسکریپت همه از قبل روی Pi من نصب شده بودند ، بنابراین نیازی به نصب بیشتر نبود. آنها در بالای اسکریپت ذکر شده اند:

زمان واردات

import sys وارد کردن RPi. GPIO به عنوان GPIO

در زیر واردات کتابخانه اطلاعاتی وجود دارد که باید ویرایش کنید. در اینجا به طور پیش فرض ظاهر می شود (این اطلاعات مربوط به سوکت های من است که با استفاده از مرحله 3 تعیین شده است):

a_on = '111111111111101010101011101'

a_off = '1111111111111010101010111، b_on =' 1111111111101110101011101، b_off = '1111111111101110101010111، c_on =' 1111111111101011101011101، c_off = '1111111111101011101010111، d_on =' 1111111111101010111011101، d_off = '1111111111101010111010111، short_delay = 0.00045 0.00090 = long_delay extended_delay = 0.0096

در اینجا ما هشت رشته کد داریم (دو عدد برای هر جفت دکمه روشن/خاموش در گوشی من - ممکن است تعداد کدهای شما بیشتر یا کمتر باشد) و به دنبال آن سه قسمت اطلاعات زمان بندی نیز در مرحله 3 مشخص شده است. این اطلاعات را به درستی وارد کرده اید

هنگامی که از کدها/تاخیرهایی که در اسکریپت وارد کرده اید راضی هستید (در صورت تمایل می توانید متغیرهای رشته کد را تغییر نام دهید) ، تقریباً آماده آزمایش سیستم هستید! قبل از انجام این کار ، به عملکرد () transmit_code در اسکریپت نگاهی بیندازید. اینجاست که تعامل واقعی با فرستنده اتفاق می افتد. این تابع انتظار دارد یکی از رشته های کد به عنوان آرگومان ارسال شود. سپس پین تعریف شده را به عنوان یک خروجی GPIO باز می کند و هر کاراکتر رشته کد را حلقه می کند. سپس فرستنده را با توجه به اطلاعات زمانی که وارد کرده اید روشن یا خاموش می کند تا شکل موجی متناسب با رشته کد ایجاد شود. هر کد را چندین بار (به طور پیش فرض 10) ارسال می کند تا احتمال از دست رفتن آن را کاهش دهد ، و بین هر بلوک کد ، درست مانند گوشی ، یک تاخیر طولانی مدت باقی می گذارد.

برای اجرای اسکریپت ، می توانید از دستور دستور زیر استفاده کنید:

python TransmitRF.py code_1 code_2…

می توانید چندین رشته کد را با یک اجرا از اسکریپت منتقل کنید. به عنوان مثال ، برای روشن کردن سوکت های (a) و (b) و سوکت (c) ، اسکریپت را با دستور زیر اجرا کنید:

python TransmitRF.py a_on b_on c_off

مرحله 6: نکته ای در مورد دقت زمان بندی

همانطور که گفته شد ، زمان بندی بین پالس های روشن/خاموش منتقل شده بسیار مهم است. اسکریپت TransmitRF.py از تابع time.sleep () پایتون برای ایجاد شکل موج با فواصل پالس مناسب استفاده می کند ، اما باید توجه داشت که این تابع کاملاً دقیق نیست. مدت زمان منتظر ماندن اسکریپت قبل از اجرای عملیات بعدی می تواند به بار پردازنده در آن لحظه بستگی داشته باشد. این دلیل دیگری است که چرا TransmitRF.py هر کد را چندین بار ارسال می کند - فقط در صورتی که تابع time.sleep () نتواند یک نمونه از کد را به درستی بسازد.

من شخصاً هیچ وقت در مورد ارسال کدها با time.sleep () مشکلی نداشته ام. با این وجود ، می دانم که time.sleep () دارای خطای حدود 0.1 میلی ثانیه است. من این را با استفاده از اسکریپت پیوست SleepTest.py تعیین کردم که می تواند برای برآورد میزان دقیق عملکرد Pi.sleep () Pi شما استفاده شود. برای سوکت های کنترل از راه دور خاص من ، کوتاهترین تاخیری که برای اجرای آن نیاز داشتم 0.45 میلی ثانیه بود. همانطور که گفتم ، من در مورد سوکت های بدون پاسخ مشکلی نداشتم ، بنابراین به نظر می رسد 0.45 ± 0.1 میلی ثانیه به اندازه کافی خوب است.

روشهای دیگری نیز برای اطمینان از دقت بیشتر تاخیر وجود دارد. به عنوان مثال ، می توانید از یک تراشه PIC اختصاصی برای تولید کدها استفاده کنید ، اما مواردی از این قبیل خارج از محدوده این آموزش است.

مرحله 7: نتیجه گیری

نتیجه
نتیجه

این پروژه روشی را برای کنترل هر وسیله برقی با استفاده از رزبری پای و مجموعه ای از سوکت های کنترل از راه دور 433 مگاهرتز با تمرکز بر سادگی و شفافیت ارائه کرده است. این هیجان انگیزترین و انعطاف پذیرترین پروژه ای است که من از Pi خود برای آن استفاده کرده ام و برنامه های کاربردی نامحدودی برای آن وجود دارد. در اینجا چند کار وجود دارد که می توانم به لطف Pi خودم انجام دهم:

  • نیم ساعت قبل از خاموش شدن زنگ هشدار ، بخاری برقی را در کنار تخت خواب من روشن کنید.
  • یک ساعت بعد از اینکه بخوابم بخاری را خاموش کنید.
  • وقتی زنگ ساعت من روشن می شود چراغ خواب را روشن کنید تا دوباره به خواب نروم.
  • و خیلی بیشتر…

برای اکثر این وظایف ، من از عملکرد crontab درون لینوکس استفاده می کنم. این به شما امکان می دهد تا وظایف برنامه ریزی شده خودکار را برای اجرای اسکریپت TransmitRF.py در زمانهای خاص تنظیم کنید. همچنین می توانید از لینوکس به منظور اجرای وظایف یکبار استفاده کنید (که برای من لازم بود جداگانه با استفاده از "sudo apt-get install at" نصب شود). به عنوان مثال ، برای روشن کردن بخاری نیم ساعت قبل از خاموش شدن زنگ ساعت صبح ، تنها کاری که باید انجام دهم این است:

ساعت 05:30

پایتون TransmitRF.py c_on

همچنین می توانید از این پروژه در ارتباط با سیستم مانیتورینگ من در Dropbox برای کنترل وسایل بر روی اینترنت استفاده کنید! با تشکر از شما برای خواندن ، و اگر می خواهید چیزی را روشن کنید یا نظر خود را به اشتراک بگذارید ، لطفاً نظر دهید!

توصیه شده: