برنامه نویسی بصری برای Sonoff Basic

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

بخش I. اتصال Sonoff به سرویس MGT24

مرحله 1: یک کنترل پنل ایجاد کنید

در سایت ثبت نام کنید mgt24 (اگر قبلا ثبت نام نکرده اید) و با استفاده از حساب کاربری خود وارد شوید.
ورودبرنامه نویسی بصری برای Sonoff Basic

برای ایجاد یک کنترل پنل برای یک دستگاه جدید، روی دکمه "+" کلیک کنید.
نمونه ای از ایجاد پنلبرنامه نویسی بصری برای Sonoff Basic

پس از ایجاد پنل، در لیست پنل های شما ظاهر می شود.

در برگه «تنظیم» پانل ایجاد شده، فیلدهای «شناسه دستگاه» و «کلید مجوز» را بیابید؛ در آینده، این اطلاعات هنگام راه‌اندازی دستگاه Sonoff مورد نیاز خواهد بود.
نمونه برگهبرنامه نویسی بصری برای Sonoff Basic

مرحله 2. دستگاه را دوباره فلش کنید

با استفاده از ابزار XTCOM_UTIL فریمور را دانلود کنید PLC Sonoff Basic به دستگاه، برای این به یک مبدل USB-TTL نیاز دارید. اینجا دستور العمل и آموزش تصویری.

مرحله 3. راه اندازی دستگاه

برق را به دستگاه بدهید، پس از روشن شدن LED، دکمه را فشار دهید و آن را فشار دهید تا زمانی که LED شروع به چشمک زدن دوره ای به طور یکنواخت کند.
در این لحظه، یک شبکه وای فای جدید به نام "PLC Sonoff Basic" ظاهر می شود، رایانه خود را به این شبکه متصل کنید.
توضیح نشانگر LED

نشانگر LED
وضعیت دستگاه

چشمک زن دوره ای دوبل
بدون اتصال به روتر

پیوسته می درخشد
اتصال با روتر برقرار شد

چشمک زن دوره ای یکنواخت
حالت نقطه دسترسی وای فای

خاموش شد
بدون منبع تغذیه

یک مرورگر اینترنت را باز کنید و متن "192.168.4.1" را در نوار آدرس وارد کنید، به صفحه تنظیمات شبکه دستگاه بروید.

فیلدها را به صورت زیر پر کنید:

  • «نام شبکه» و «رمز عبور» (برای پیوند دادن دستگاه به روتر وای فای خانگی).
  • "شناسه دستگاه" و "کلید مجوز" (برای مجوز دادن به دستگاه در سرویس MGT24).

نمونه ای از تنظیم پارامترهای شبکه دستگاهبرنامه نویسی بصری برای Sonoff Basic

تنظیمات را ذخیره کرده و دستگاه را راه اندازی مجدد کنید.
اینجا آموزش تصویری.

مرحله 4. اتصال سنسورها (اختیاری)

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

بخش دوم. برنامه نویسی بصری

مرحله 1: ایجاد اسکریپت

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

بلوک های تخصصی برای نوشتن و خواندن پارامترهای دستگاه اضافه کردم. هر پارامتر با نام قابل دسترسی است. برای پارامترهای دستگاه های راه دور، از نام های ترکیبی استفاده می شود: "parameter@device".
لیست کشویی گزینه هابرنامه نویسی بصری برای Sonoff Basic

سناریوی مثال برای روشن و خاموش کردن چرخه بار (1 هرتز):
برنامه نویسی بصری برای Sonoff Basic

نمونه ای از یک اسکریپت که عملکرد دو دستگاه جداگانه را همگام می کند. یعنی رله دستگاه هدف عملیات رله دستگاه راه دور را تکرار می کند.
برنامه نویسی بصری برای Sonoff Basic

سناریو برای ترموستات (بدون هیسترزیس):
برنامه نویسی بصری برای Sonoff Basic

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

مرحله 2: ترتیب اسکریپت ها

فیلمنامه به طور مداوم اجرا می شود و به محض اینکه به پایان رسید، دوباره شروع می شود. در این حالت، دو بلوک وجود دارد که می توانند به طور موقت اسکریپت را متوقف کنند، "تاخیر" و "مکث".
بلوک "تاخیر" برای تاخیرهای میلی ثانیه یا میکروثانیه استفاده می شود. این بلوک به شدت فاصله زمانی را حفظ می کند و عملکرد کل دستگاه را مسدود می کند.
بلوک "مکث" برای تاخیرهای دوم (یا کمتر) استفاده می شود و اجرای سایر فرآیندها را در دستگاه مسدود نمی کند.
اگر خود اسکریپت حاوی یک حلقه بی نهایت باشد که بدنه آن حاوی "مکث" نباشد، مفسر به طور مستقل یک مکث کوتاه را آغاز می کند.
اگر پشته حافظه اختصاص داده شده تمام شود، مفسر اجرای چنین اسکریپت پر انرژی را متوقف می کند (مراقب توابع بازگشتی باشید).

مرحله 3: اشکال زدایی اسکریپت ها

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

سناریوی محاسبه فاکتوریل در حالت اشکال زدایی:
برنامه نویسی بصری برای Sonoff Basic

ابزار اشکال زدایی بسیار ساده است و از سه دکمه اصلی تشکیل شده است: «شروع»، «یک قدم به جلو» و «توقف» (حالت «ورود» و «خروج» را نیز فراموش نکنیم. علاوه بر ردیابی گام به گام، می توانید بر روی هر بلوکی (با کلیک بر روی بلوک) یک نقطه شکست تعیین کنید.
برای نمایش مقادیر فعلی پارامترها (حسگرها، رله ها) در مانیتور، از بلوک "چاپ" استفاده کنید.
اینجا ویدئوی مروری در مورد استفاده از دیباگر

بخش برای کنجکاوها زیر کاپوت چیه؟

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

بایت کد حاصل کاملا فشرده است. به عنوان مثال، بایت کد برای محاسبه همان فاکتوریل تنها 49 بایت است. این شکل بصری آن است:
برنامه نویسی بصری برای Sonoff Basic

و این هم برنامه اسمبلر او:

shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret

اگر فرم اسمبلی نمایش هیچ ارزش عملی نداشته باشد، برعکس، برگه "جاوااسکریت" ظاهری آشناتر از بلوک های بصری می دهد:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

در مورد عملکرد. وقتی ساده ترین اسکریپت فلاشر را اجرا کردم، یک موج مربعی با فرکانس 47 کیلوهرتز روی صفحه اسیلوسکوپ دریافت کردم (با سرعت کلاک پردازنده 80 مگاهرتز).
برنامه نویسی بصری برای Sonoff Basicبرنامه نویسی بصری برای Sonoff Basic
من فکر می کنم این یک نتیجه خوب است، حداقل این سرعت تقریبا ده برابر سریعتر از آن است لوا и اسپروینو.

بخش نهایی

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

این همه، من خوشحال خواهم شد که توصیه ها و انتقادات سازنده را بشنوم.

منبع: www.habr.com

اضافه کردن نظر