Sonoff Basic үшін визуалды бағдарламалау

Sonoff Basic үшін визуалды бағдарламалау
Арзан қытай құрылғысынан бағдарламаланатын логикалық контроллерді жасау туралы мақала. Мұндай құрылғы үйді автоматтандыруда да, мектептегі информатикада практикалық сабақтар ретінде де қолданылады.
Анықтама үшін, әдепкі бойынша Sonoff Basic бағдарламасы қытайлық бұлттық сервис арқылы мобильді қосымшамен жұмыс істейді; ұсынылған өзгертуден кейін бұл құрылғымен одан әрі әрекеттесу браузерде мүмкін болады.

I бөлім. Sonoff құрылғысын MGT24 қызметіне қосу

1-қадам: Басқару тақтасын жасаңыз

Сайтқа тіркеліңіз мгт24 (егер тіркелмеген болса) және тіркелгіңізді пайдаланып жүйеге кіріңіз.
Жүйеге кіруSonoff Basic үшін визуалды бағдарламалау

Жаңа құрылғының басқару тақтасын жасау үшін «+» түймесін басыңыз.
Панельді құру мысалыSonoff Basic үшін визуалды бағдарламалау

Панель жасалғаннан кейін ол панельдер тізімінде пайда болады.

Жасалған панельдің «Орнату» қойындысында «Құрылғы идентификаторы» және «Авторизация кілті» өрістерін табыңыз, болашақта бұл ақпарат Sonoff құрылғысын орнату кезінде қажет болады.
Қойынды мысалыSonoff Basic үшін визуалды бағдарламалау

2-қадам. Құрылғыны қайта жарқылдаңыз

Утилитаны пайдалану XTCOM_UTIL микробағдарламаны жүктеп алыңыз PLC Sonoff Basic құрылғыға, ол үшін сізге USB-TTL түрлендіргіші қажет. Мұнда нұсқаулық и бейне нұсқаулық.

3-қадам. Құрылғыны орнату

Құрылғыға қуат беріңіз, жарық диоды жанғаннан кейін түймені басып, жарық диоды біркелкі жыпылықтай бастағанша басып тұрыңыз.
Осы сәтте «PLC Sonoff Basic» деп аталатын жаңа Wi-Fi желісі пайда болады, компьютерді осы желіге қосыңыз.
Жарық диодты индикацияны түсіндіру

Жарықдиодты көрсеткіш
Құрылғы күйі

мерзімді қос жыпылықтау
маршрутизаторға қосылым жоқ

үздіксіз жарқырайды
маршрутизатормен байланыс орнатылды

мерзімді біркелкі жыпылықтау
Wi-Fi кіру нүктесі режимі

қояды
Қуат көзі жоқ

Интернет-шолғышты ашып, мекенжай жолағына «192.168.4.1» мәтінін енгізіңіз, құрылғының желі параметрлерінің параметрлері бетіне өтіңіз.

Жолдарды келесідей толтырыңыз:

  • «Желі аты» және «Құпия сөз» (құрылғыны үйдегі Wi-Fi маршрутизаторымен байланыстыру үшін).
  • «Құрылғы идентификаторы» және «Авторизация кілті» (құрылғыны MGT24 қызметінде авторизациялау үшін).

Құрылғының желі параметрлерін орнату мысалыSonoff Basic үшін визуалды бағдарламалау

Параметрлерді сақтап, құрылғыны қайта жүктеңіз.
Бұл бейне нұсқаулық.

4-қадам. Датчиктерді қосу (міндетті емес)

Ағымдағы микробағдарлама төрт ds18b20 температура сенсорына дейін қолдайды. Мұнда бейне нұсқаулық сенсорларды орнату үшін. Шамасы, бұл қадам ең қиын болады, өйткені ол түзу қолдар мен дәнекерлеу үтіктерін қажет етеді.

II бөлім. Визуалды бағдарламалау

1-қадам: Сценарийлер жасау

Бағдарламалау ортасы ретінде пайдаланылады Бөгеу, ортаны үйрену оңай, сондықтан қарапайым сценарийлерді жасау үшін бағдарламашы болудың қажеті жоқ.

Мен құрылғы параметрлерін жазу және оқу үшін арнайы блоктарды қостым. Кез келген параметрге аты бойынша қол жеткізуге болады. Қашықтағы құрылғылардың параметрлері үшін құрама атаулар пайдаланылады: “parameter@device”.
Параметрлердің ашылмалы тізіміSonoff Basic үшін визуалды бағдарламалау

Жүктемені (1Гц) циклдік қосу және өшіруге арналған мысал сценарийі:
Sonoff Basic үшін визуалды бағдарламалау

Екі бөлек құрылғының жұмысын синхрондайтын сценарийдің мысалы. Атап айтқанда, мақсатты құрылғының релесі қашықтағы құрылғының релесі жұмысын қайталайды.
Sonoff Basic үшін визуалды бағдарламалау

Термостаттың сценарийі (гистерезиссіз):
Sonoff Basic үшін визуалды бағдарламалау

Күрделі сценарийлерді жасау үшін айнымалыларды, циклдарды, функцияларды (аргументтермен) және басқа конструкцияларды пайдалануға болады. Мен мұның бәрін мұнда егжей-тегжейлі сипаттамаймын; желіде қазірдің өзінде көп нәрсе бар. Блокли туралы оқу материалы.

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

Егер ұсынудың құрастыру формасының практикалық мәні болмаса, онда «javascrit» қойындысы, керісінше, көрнекі блоктарға қарағанда көбірек таныс көрініс береді:

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

window.alert(factorial(10));

Өнімділікке қатысты. Мен ең қарапайым жарқыл сценарийін орындаған кезде осциллограф экранында 47 кГц шаршы толқынды алдым (процессордың 80 МГц тактілік жиілігінде).
Sonoff Basic үшін визуалды бағдарламалауSonoff Basic үшін визуалды бағдарламалау
Менің ойымша, бұл жақсы нәтиже, кем дегенде, бұл жылдамдық қарағанда он есе жылдамырақ Lua и Эспруино.

Қорытынды бөлім

Қорытындылай келе, сценарийлерді пайдалану бізге жеке құрылғының жұмысының логикасын бағдарламалауға ғана емес, сонымен қатар бірнеше құрылғыларды бір механизмге қосуға мүмкіндік береді, мұнда кейбір құрылғылар басқалардың әрекетіне әсер етеді.
Сондай-ақ, сценарийлерді сақтаудың таңдалған әдісі (серверде емес, құрылғылардың өзінде) қазірдің өзінде жұмыс істейтін құрылғыларды басқа серверге, мысалы, үй таңқурайына ауыстыруды жеңілдететінін ескеремін. нұсқаулық.

Бар болғаны, кеңес пен сындарлы сынды қуана тыңдаймын.

Ақпарат көзі: www.habr.com

пікір қалдыру