Sonoff Basic үчүн визуалдык программалоо

Sonoff Basic үчүн визуалдык программалоо
Арзан кытай аппаратынан программалоочу логикалык контроллерди кантип түзүү жөнүндө макала. Мындай түзүлүш үйдү автоматташтырууда да, мектептик информатика боюнча практикалык сабактар ​​катары да колдонулат.
Маалымат үчүн, демейки боюнча Sonoff Basic программасы мобилдик тиркеме менен кытайлык булут кызматы аркылуу иштейт; сунушталган өзгөртүүдөн кийин бул түзмөк менен мындан аркы бардык өз ара аракеттенүү браузерде мүмкүн болот.

I бөлүм. Sonoffти MGT24 кызматына туташтыруу

1-кадам: башкаруу панелин түзүү

Сайтка катталыңыз mgt24 (эгер каттала элек болсо) жана аккаунтуңуз менен кириңиз.
колдонуучу КирүүSonoff Basic үчүн визуалдык программалоо

Жаңы түзмөк үчүн башкаруу панелин түзүү үчүн "+" баскычын басыңыз.
Панелди түзүүнүн мисалыSonoff Basic үчүн визуалдык программалоо

Панел түзүлгөндөн кийин, ал панелдердин тизмесинде пайда болот.

Түзүлгөн панелдин "Орнотуу" өтмөгүнөн "Түзмөктүн ID" жана "Авторизация ачкычы" талааларын табыңыз, келечекте бул маалымат Sonoff түзмөгүн орнотууда талап кылынат.
Өтмөк мисалSonoff Basic үчүн визуалдык программалоо

2-кадам. Аппаратты кайра жандырыңыз

Утилитаны колдонуу XTCOM_UTIL микропрограмманы жүктөп алыңыз PLC Sonoff Basic түзмөккө, бул үчүн сизге USB-TTL конвертер керек болот. Мына нускама и Видео нускама.

Кадам 3. Түзмөктү орнотуу

Түзмөккө кубат бериңиз, LED күйгөндөн кийин, баскычты басып, светодиод мезгил-мезгили менен бирдей күйүп баштаганга чейин басып туруңуз.
Бул учурда, "PLC Sonoff Basic" деп аталган жаңы Wi-Fi тармагы пайда болот, бул тармакка компьютериңизди туташтырыңыз.
LED индикациясынын түшүндүрмөсү

LED көрсөткүчү
Түзмөктүн абалы

мезгил-мезгили менен кош жаркылдоо
роутерге байланыш жок

үзгүлтүксүз жаркырап турат
роутер менен орнотулган байланыш

мезгил-мезгили менен бирдиктүү жаркылдоо
wi-fi кирүү чекити режими

өчө
Электр энергиясы жок

Интернет браузерин ачып, дарек тилкесине "192.168.4.1" текстин киргизиңиз, аппараттын тармак жөндөөлөрүнүн бетине өтүңүз.

Талааларды төмөнкүдөй толтуруңуз:

  • "Тармактын аты" жана "Сырсөз" (түзмөктү үйүңүздөгү Wi-Fi роутериңизге туташтыруу үчүн).
  • "Түзмөктүн ID" жана "Авторизация ачкычы" (MGT24 кызматында түзмөктү авторизациялоо үчүн).

Түзмөктүн тармак параметрлерин орнотуунун мисалыSonoff Basic үчүн визуалдык программалоо

Орнотууларды сактап, аппаратты өчүрүп күйгүзүңүз.
бул Видео нускама.

4-кадам. Сенсорлорду туташтыруу (милдеттүү эмес)

Учурдагы микропрограмма төрт ds18b20 температура сенсорлорун колдойт. Мына Видео нускама сенсорлорду орнотуу үчүн. Сыягы, бул кадам эң кыйын болот, анткени ал түз колдор жана паяны керек.

II бөлүм. Визуалдык программалоо

1-кадам: Скрипттерди түзүңүз

Программалоо чөйрөсү катары колдонулат Blockly, чөйрөнү үйрөнүү оңой, андыктан жөнөкөй скрипттерди түзүү үчүн программист болуунун кереги жок.

Мен аппараттын параметрлерин жазуу жана окуу үчүн атайын блокторду коштум. Каалаган параметр аты менен жеткиликтүү. Алыскы түзүлүштөрдүн параметрлери үчүн татаал аталыштар колдонулат: “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

Эгерде өкүлчүлүктүн монтаждык формасы эч кандай практикалык мааниге ээ болбосо, анда “javascrit” кошумча барагы, тескерисинче, визуалдык блокторго караганда көбүрөөк тааныш көрүнүштү берет:

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

window.alert(factorial(10));

аткарууга карата. Мен эң жөнөкөй жаркырагыч сценарийди иштеткенде, мен осциллографтын экранында 47 кГц чарчы толкунду алдым (процессордун тактык ылдамдыгы 80 МГц).
Sonoff Basic үчүн визуалдык программалооSonoff Basic үчүн визуалдык программалоо
Мен бул жакшы натыйжа деп ойлойм, жок дегенде бул ылдамдык караганда дээрлик он эсе тез А и Espruino.

акыркы бөлүгү

Жыйынтыктап айтканда, мен скрипттерди колдонуу өзүнчө түзүлүштүн иштөө логикасын программалоого гана эмес, ошондой эле бир нече түзмөктөрдү бир механизмге туташтырууга мүмкүндүк берет, мында кээ бир түзүлүштөр башкалардын жүрүм-турумуна таасир этет.
Мен ошондой эле скрипттерди сактоонун тандалган ыкмасы (түз эле түзмөктөрдүн өзүндө, серверде эмес) мурунтан эле иштеп жаткан түзмөктөрдү башка серверге, мисалы, үй Raspberryге которууну жеңилдетет. нускама.

Болгону, кеп-кеңештерди жана конструктивдүү сынды укканда кубанам.

Source: www.habr.com

Комментарий кошуу