Arzon Xitoy qurilmasidan dasturlashtiriladigan mantiqiy kontrollerni qanday yaratish haqida maqola. Bunday qurilma uyni avtomatlashtirishda ham, maktab informatika bo'yicha amaliy mashg'ulotlarda ham qo'llanilishini topadi.
Ma'lumot uchun, sukut bo'yicha Sonoff Basic dasturi mobil ilova bilan Xitoy bulut xizmati orqali ishlaydi; taklif qilingan modifikatsiyadan so'ng ushbu qurilma bilan keyingi barcha o'zaro aloqalar brauzerda mumkin bo'ladi.
I bo'lim. Sonoffni MGT24 xizmatiga ulash
1-qadam: Boshqaruv panelini yarating
Saytda ro'yxatdan o'ting
Tizimga kirish
Yangi qurilma uchun boshqaruv panelini yaratish uchun "+" tugmasini bosing.
Panelni yaratishga misol
Panel yaratilgandan so'ng, u panellar ro'yxatida paydo bo'ladi.
Yaratilgan panelning "Sozlash" yorlig'ida "Qurilma identifikatori" va "Avtorizatsiya kaliti" maydonlarini toping, kelajakda bu ma'lumot Sonoff qurilmasini sozlashda talab qilinadi.
Tab misoli
Qadam 2. Qurilmani qayta yoqing
Yordamchi dasturdan foydalanish
Qadam 3. Qurilmani sozlash
Qurilmaga quvvat bering, LED yonib ketgandan so'ng, tugmani bosing va LED vaqti-vaqti bilan bir tekis miltillay boshlaguncha uni bosib turing.
Ayni paytda "PLC Sonoff Basic" deb nomlangan yangi Wi-Fi tarmog'i paydo bo'ladi, kompyuteringizni ushbu tarmoqqa ulang.
LED ko'rsatkichini tushuntirish
LED ko'rsatkichi
Qurilma holati
davriy ikki marta miltillash
routerga ulanish yo'q
uzluksiz porlaydi
router bilan aloqa o'rnatildi
davriy bir xil miltillash
Wi-Fi kirish nuqtasi rejimi
qo'yish
Elektr ta'minoti yo'q
Internet-brauzerni oching va manzil satriga "192.168.4.1" matnini kiriting, qurilmaning tarmoq sozlamalari sahifasiga o'ting.
Maydonlarni quyidagi tarzda to'ldiring:
- "Tarmoq nomi" va "Parol" (qurilmani uy Wi-Fi routeriga ulash uchun).
- "Qurilma identifikatori" va "Avtorizatsiya kaliti" (qurilmani MGT24 xizmatida avtorizatsiya qilish uchun).
Qurilmaning tarmoq parametrlarini sozlash misoli
Sozlamalarni saqlang va qurilmani qayta yoqing.
u
4-qadam. Sensorlarni ulash (ixtiyoriy)
Joriy dasturiy ta'minot to'rttagacha ds18b20 harorat sensorlarini qo'llab-quvvatlaydi. Bu yerga
II bo'lim. Vizual dasturlash
1-qadam: Skriptlarni yarating
Dasturlash muhiti sifatida foydalaniladi
Men qurilma parametrlarini yozish va o'qish uchun maxsus bloklarni qo'shdim. Har qanday parametrga nom bilan kirish mumkin. Masofaviy qurilmalarning parametrlari uchun murakkab nomlar ishlatiladi: "parameter@device".
Ochiladigan variantlar ro'yxati
Yukni tsiklik yoqish va o'chirish uchun misol stsenariysi (1 Gts):
Ikki alohida qurilmaning ishlashini sinxronlashtiruvchi skriptga misol. Ya'ni, maqsadli qurilmaning o'rni masofaviy qurilmaning o'rni ishini takrorlaydi.
Termostatni stsenariysi (gisterezsiz):
Murakkab skriptlarni yaratish uchun siz o'zgaruvchilar, tsikllar, funktsiyalar (argumentlar bilan) va boshqa konstruktsiyalardan foydalanishingiz mumkin. Bularning barchasini bu erda batafsil tasvirlab bermayman; tarmoqda allaqachon juda ko'p narsa bor.
2-qadam: Skriptlar tartibi
Skript uzluksiz ishlaydi va tugashi bilanoq yana boshlanadi. Bunday holda, skriptni vaqtincha to'xtatib turishi mumkin bo'lgan ikkita blok mavjud, "kechikish" va "pauza".
"Kechikish" bloki millisekund yoki mikrosekundlik kechikishlar uchun ishlatiladi. Ushbu blok vaqt oralig'ini qat'iy saqlaydi, butun qurilmaning ishlashini bloklaydi.
"Pauza" bloki ikkinchi (yoki kamroq) kechikishlar uchun ishlatiladi va u qurilmadagi boshqa jarayonlarning bajarilishini bloklamaydi.
Agar skriptning o'zida cheksiz tsikl bo'lsa, uning tanasida "pauza" bo'lmasa, tarjimon mustaqil ravishda qisqa pauzani boshlaydi.
Agar ajratilgan xotira to'plami tugasa, tarjimon bunday quvvat talab qiladigan skriptni bajarishni to'xtatadi (rekursiv funksiyalar bilan ehtiyot bo'ling).
3-qadam: Skriptlarni tuzatish
Qurilmaga allaqachon yuklangan skriptni disk raskadrovka qilish uchun dastur izini bosqichma-bosqich ishga tushirishingiz mumkin. Agar skriptning harakati muallif niyat qilganidan boshqacha bo'lsa, bu juda foydali bo'lishi mumkin. Bunday holda, kuzatuv muallifga muammoning manbasini tezda topishga va skriptdagi xatoni tuzatishga imkon beradi.
Nosozliklarni tuzatish rejimida faktorialni hisoblash stsenariysi:
Nosozliklarni tuzatish vositasi juda oddiy va uchta asosiy tugmadan iborat: "boshlash", "bir qadam oldinga" va "to'xtatish" (shuningdek, "kirish" va "chiqish" disk raskadrovka rejimini unutmasligimiz kerak). Bosqichma-bosqich kuzatishdan tashqari, istalgan blokda to'xtash nuqtasini o'rnatishingiz mumkin (blokni bosish orqali).
Monitordagi parametrlarning (sensorlar, o'rni) joriy qiymatlarini ko'rsatish uchun "chop etish" blokidan foydalaning.
u
Qiziquvchilar uchun bo'lim. Kaput ostida nima bor?
Skriptlarning maqsadli qurilmada ishlashi uchun bayt-kod tarjimoni va 38 ta ko'rsatmalarga ega assembler ishlab chiqilgan. Blockly-ning manba kodi vizual bloklarni yig'ish ko'rsatmalariga aylantiradigan maxsus kod generatoriga ega. Keyinchalik, ushbu assembler dasturi baytekodga aylantiriladi va bajarish uchun qurilmaga o'tkaziladi.
Ushbu virtual mashinaning arxitekturasi juda oddiy va uni tavsiflashda alohida nuqta yo'q, Internetda siz eng oddiy virtual mashinalarni loyihalash haqida ko'plab maqolalarni topasiz.
Men odatda virtual mashinamning to'plami uchun 1000 bayt ajrataman, bu zaxira qilish uchun etarli. Albatta, chuqur rekursiyalar har qanday stekni tugatib yuborishi mumkin, ammo ulardan amaliy foydalanish dargumon.
Olingan bayt-kod juda ixchamdir. Misol tariqasida, bir xil faktorialni hisoblash uchun bayt-kod atigi 49 baytni tashkil qiladi. Bu uning vizual shakli:
Va bu uning assembler dasturi:
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
Agar vakillikning yig'ilish shakli amaliy ahamiyatga ega bo'lmasa, "javaskrit" yorlig'i, aksincha, vizual bloklarga qaraganda ko'proq tanish ko'rinish beradi:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Ishlash haqida. Men eng oddiy miltillovchi skriptni ishga tushirganimda, osiloskop ekranida 47 kHz kvadrat to'lqinni oldim (protsessorning soat tezligi 80 MGts).
Menimcha, bu yaxshi natija, hech bo'lmaganda bu tezlik deyarli o'n barobar tezroq
Oxirgi qism
Xulosa qilib aytganda, skriptlardan foydalanish nafaqat alohida qurilmaning ishlash mantiqini dasturlash imkonini beradi, balki bir nechta qurilmalarni bitta mexanizmga ulash imkonini beradi, bu erda ba'zi qurilmalar boshqalarning xatti-harakatlariga ta'sir qiladi.
Shuni ham ta'kidlaymanki, skriptlarni saqlashning tanlangan usuli (to'g'ridan-to'g'ri qurilmalarning o'zida, serverda emas) allaqachon ishlaydigan qurilmalarni boshqa serverga, masalan, uy Raspberry-ga o'tkazishni soddalashtiradi.
Hammasi shu, maslahat va konstruktiv tanqidni eshitishdan xursand bo'laman.
Manba: www.habr.com