Напис за тоа како да креирате програмабилен логички контролер од евтин кинески уред. Таков уред ќе најде употреба и во домашната автоматизација и како практична настава во училишната информатика.
За повикување, стандардно програмата Sonoff Basic работи со мобилна апликација преку кинеска облак услуга; по предложената модификација, целата понатамошна интеракција со овој уред ќе биде можна во прелистувачот.
Дел I. Поврзување на Sonoff со услугата MGT24
Чекор 1: Создадете контролен панел
Регистрирајте се на страницата
Пријавете се во системот
За да креирате контролен панел за нов уред, кликнете на копчето „+“.
Пример за креирање панел
Откако ќе се креира панелот, ќе се појави во вашата листа на панели.
Во табулаторот „Поставување“ на креираниот панел, пронајдете ги полињата „Идентификатор на уред“ и „Клуч за овластување“; во иднина, овие информации ќе бидат потребни при поставување на уредот Sonoff.
Пример за јазиче
Чекор 2. Повторно трепкајте го уредот
Користење на алатката
Чекор 3. Поставување на уредот
Напојувајте го уредот, откако ќе се запали ЛЕР, притиснете го копчето и држете го притиснато додека ЛЕР не почне да трепка периодично рамномерно.
Во овој момент, ќе се појави нова wi-fi мрежа наречена „PLC Sonoff Basic“, поврзете го вашиот компјутер на оваа мрежа.
Објаснување на LED индикација
LED индикација
Статус на уредот
периодично двојно трепкање
нема врска со рутер
сјае постојано
воспоставена врска со рутерот
периодично униформно трепкање
режим на Wi-Fi пристапна точка
изгаснат
Нема напојување
Отворете Интернет прелистувач и внесете го текстот „192.168.4.1“ во лентата за адреси, одете на страницата за мрежните поставки на уредот.
Пополнете ги полињата на следниов начин:
- „Име на мрежата“ и „Лозинка“ (за поврзување на уредот со вашиот домашен рутер за Wi-Fi).
- „Device ID“ и „Authorization key“ (за овластување на уредот на услугата MGT24).
Пример за поставување мрежни параметри на уредот
Зачувајте ги поставките и рестартирајте го уредот.
Тука
Чекор 4. Поврзување сензори (опционално)
Тековниот фирмвер поддржува до четири сензори за температура ds18b20. Еве
Дел II. Визуелно програмирање
Чекор 1: Креирајте скрипти
Се користи како програмска средина
Додадов специјализирани блокови за пишување и читање параметри на уредот. До секој параметар се пристапува по име. За параметрите на оддалечените уреди, се користат сложени имиња: „parameter@device“.
Паѓачка листа на опции
Пример сценарио за циклично вклучување и исклучување на оптоварувањето (1Hz):
Пример на скрипта што ја синхронизира работата на два посебни уреди. Имено, релето на целниот уред ја повторува работата на релето на далечинскиот уред.
Сценарио за термостат (без хистереза):
За да креирате посложени скрипти, можете да користите променливи, циклуси, функции (со аргументи) и други конструкции. Нема да го опишам сето ова детално овде; веќе има доста на мрежата.
Чекор 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
Ако формата на склопување на претставување нема практична вредност, тогаш табулаторот „јаваскрит“, напротив, дава попознат изглед од визуелните блокови:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Во врска со перформансите. Кога ја активирав наједноставната скрипта за блиц, добив квадратен бран од 47 kHz на екранот на осцилоскопот (при процесорски часовник од 80 MHz).
Мислам дека ова е добар резултат, барем оваа брзина е речиси десет пати поголема од
Завршен дел
Сумирајќи, ќе кажам дека употребата на скрипти ни овозможува не само да ја програмираме логиката на работата на посебен уред, туку овозможува и поврзување на неколку уреди во еден механизам, каде што некои уреди влијаат на однесувањето на другите.
Забележувам и дека избраниот метод за складирање скрипти (директно во самите уреди, а не на серверот) го поедноставува префрлувањето на веќе работат уреди на друг сервер, на пример на домашен Raspberry, овде
Тоа е се, ќе ми биде драго да слушнам совети и конструктивни критики.
Извор: www.habr.com