Арзан кытай аппаратынан программалоочу логикалык контроллерди кантип түзүү жөнүндө макала. Мындай түзүлүш үйдү автоматташтырууда да, мектептик информатика боюнча практикалык сабактар катары да колдонулат.
Маалымат үчүн, демейки боюнча Sonoff Basic программасы мобилдик тиркеме менен кытайлык булут кызматы аркылуу иштейт; сунушталган өзгөртүүдөн кийин бул түзмөк менен мындан аркы бардык өз ара аракеттенүү браузерде мүмкүн болот.
I бөлүм. Sonoffти MGT24 кызматына туташтыруу
1-кадам: башкаруу панелин түзүү
Сайтка катталыңыз
колдонуучу Кирүү
Жаңы түзмөк үчүн башкаруу панелин түзүү үчүн "+" баскычын басыңыз.
Панелди түзүүнүн мисалы
Панел түзүлгөндөн кийин, ал панелдердин тизмесинде пайда болот.
Түзүлгөн панелдин "Орнотуу" өтмөгүнөн "Түзмөктүн ID" жана "Авторизация ачкычы" талааларын табыңыз, келечекте бул маалымат Sonoff түзмөгүн орнотууда талап кылынат.
Өтмөк мисал
2-кадам. Аппаратты кайра жандырыңыз
Утилитаны колдонуу
Кадам 3. Түзмөктү орнотуу
Түзмөккө кубат бериңиз, LED күйгөндөн кийин, баскычты басып, светодиод мезгил-мезгили менен бирдей күйүп баштаганга чейин басып туруңуз.
Бул учурда, "PLC Sonoff Basic" деп аталган жаңы Wi-Fi тармагы пайда болот, бул тармакка компьютериңизди туташтырыңыз.
LED индикациясынын түшүндүрмөсү
LED көрсөткүчү
Түзмөктүн абалы
мезгил-мезгили менен кош жаркылдоо
роутерге байланыш жок
үзгүлтүксүз жаркырап турат
роутер менен орнотулган байланыш
мезгил-мезгили менен бирдиктүү жаркылдоо
wi-fi кирүү чекити режими
өчө
Электр энергиясы жок
Интернет браузерин ачып, дарек тилкесине "192.168.4.1" текстин киргизиңиз, аппараттын тармак жөндөөлөрүнүн бетине өтүңүз.
Талааларды төмөнкүдөй толтуруңуз:
- "Тармактын аты" жана "Сырсөз" (түзмөктү үйүңүздөгү Wi-Fi роутериңизге туташтыруу үчүн).
- "Түзмөктүн ID" жана "Авторизация ачкычы" (MGT24 кызматында түзмөктү авторизациялоо үчүн).
Түзмөктүн тармак параметрлерин орнотуунун мисалы
Орнотууларды сактап, аппаратты өчүрүп күйгүзүңүз.
бул
4-кадам. Сенсорлорду туташтыруу (милдеттүү эмес)
Учурдагы микропрограмма төрт ds18b20 температура сенсорлорун колдойт. Мына
II бөлүм. Визуалдык программалоо
1-кадам: Скрипттерди түзүңүз
Программалоо чөйрөсү катары колдонулат
Мен аппараттын параметрлерин жазуу жана окуу үчүн атайын блокторду коштум. Каалаган параметр аты менен жеткиликтүү. Алыскы түзүлүштөрдүн параметрлери үчүн татаал аталыштар колдонулат: “parameter@device”.
Параметрлердин ылдый түшүүчү тизмеси
Жүктөмдү (1Гц) циклдик күйгүзүү жана өчүрүү үчүн мисал сценарийи:
Эки өзүнчө түзүлүштүн иштешин синхрондоштуруучу сценарийдин мисалы. Тактап айтканда, максаттуу түзүлүштүн релеси алыскы аппараттын релесинин иштешин кайталайт.
Термостаттын сценарийи (гистерезиссиз):
Татаал скрипттерди түзүү үчүн сиз өзгөрмөлөрдү, циклдерди, функцияларды (аргументтер менен) жана башка конструкцияларды колдоно аласыз. Мен мунун баарын бул жерде майда-чүйдөсүнө чейин сүрөттөп бербейм; Интернетте буга чейин эле көп нерсе бар.
2-кадам: Скрипттердин тартиби
Сценарий тынымсыз иштейт жана аягына жеткенде кайра башталат. Бул учурда, сценарийди убактылуу тындыра турган эки блок бар, "кечиктирүү" жана "тыным".
"Кечигүү" блогу миллисекунддук же микросекунддук кечигүү үчүн колдонулат. Бул блок катуу убакыт аралыгын сактайт, бүт аппараттын иштешине бөгөт коёт.
"Тыным" блогу экинчи (же андан аз) кечигүү үчүн колдонулат жана ал аппараттагы башка процесстердин аткарылышына бөгөт койбойт.
Эгерде скрипттин өзү чексиз циклди камтыса, анын корпусунда “тыныгуу” жок болсо, котормочу өз алдынча кыска паузаны баштайт.
Бөлүнгөн эс тутумдун стеки түгөнүп калса, котормочу мындай кубаттуу скриптти аткарууну токтотот (рекурсивдүү функциялардан этият болуңуз).
3-кадам: Скрипттерди оңдоо
Түзмөккө мурунтан эле жүктөлгөн скрипттин мүчүлүштүктөрүн оңдоо үчүн программанын изин этап менен иштетсеңиз болот. Бул сценарийдин жүрүм-туруму автор ойлогондон башкача болуп чыкканда абдан пайдалуу болушу мүмкүн. Бул учурда калька авторго маселенин булагын тез табууга жана сценарийдеги катаны оңдоого мүмкүндүк берет.
Мүчүлүштүктөрдү оңдоо режиминде факториалды эсептөө сценарийи:
Мүчүлүштүктөрдү оңдоо куралы абдан жөнөкөй жана үч негизги баскычтан турат: “старт”, “бир кадам алдыга” жана “токтотуу” (ошондой эле “киргизүү” жана “чыгуу” мүчүлүштүктөрдү оңдоо режими жөнүндө да унутпайлы). Этап-этабы менен байкоо жүргүзүүдөн тышкары, сиз каалаган блокко (блокту чыкылдатуу менен) үзгүлтүккө учуроо чекин орното аласыз.
Монитордогу параметрлердин (сенсорлор, релелер) учурдагы маанилерин көрсөтүү үчүн "басма" блогун колдонуңуз.
бул
Кызыккандар үчүн бөлүм. Капоттун астында эмне бар?
Скрипттердин максаттуу түзүлүштө иштеши үчүн байткод интерпретатору жана 38 нускамасы бар ассемблер иштелип чыккан. Blockly'дин баштапкы кодунда визуалдык блокторду чогултуу көрсөтмөлөрүнө айландыруучу атайын код генератору бар. Кийинчерээк, бул ассемблер программасы байткодго айландырылат жана аткаруу үчүн түзүлүшкө өткөрүлүп берилет.
Бул виртуалдык машинанын архитектурасы абдан жөнөкөй жана аны сүрөттөөнүн эч кандай мааниси жок, Интернетте сиз эң жөнөкөй виртуалдык машиналарды долбоорлоо жөнүндө көптөгөн макалаларды таба аласыз.
Мен адатта виртуалдык машинамдын стекине 1000 байт бөлөм, бул бош калуу үчүн жетиштүү. Албетте, терең рекурсиялар ар кандай стекти түгөтүшү мүмкүн, бирок алардын практикалык жактан колдонулушу күмөн.
Натыйжадагы байткод абдан компакттуу. Мисал катары, бир эле факториалды эсептөө үчүн байт код 49 байт гана түзөт. Бул анын визуалдык формасы:
Бул анын ассемблер программасы:
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 МГц).
Мен бул жакшы натыйжа деп ойлойм, жок дегенде бул ылдамдык караганда дээрлик он эсе тез
акыркы бөлүгү
Жыйынтыктап айтканда, мен скрипттерди колдонуу өзүнчө түзүлүштүн иштөө логикасын программалоого гана эмес, ошондой эле бир нече түзмөктөрдү бир механизмге туташтырууга мүмкүндүк берет, мында кээ бир түзүлүштөр башкалардын жүрүм-турумуна таасир этет.
Мен ошондой эле скрипттерди сактоонун тандалган ыкмасы (түз эле түзмөктөрдүн өзүндө, серверде эмес) мурунтан эле иштеп жаткан түзмөктөрдү башка серверге, мисалы, үй Raspberryге которууну жеңилдетет.
Болгону, кеп-кеңештерди жана конструктивдүү сынды укканда кубанам.
Source: www.habr.com