Artikel babagan carane nggawe pengontrol logika sing bisa diprogram saka piranti Cina sing murah. Piranti kasebut bakal digunakake ing otomatisasi omah lan minangka kelas praktis ing ilmu komputer sekolah.
Kanggo referensi, kanthi standar program Sonoff Basic bisa digunakake karo aplikasi seluler liwat layanan awan Cina; sawise modifikasi sing diusulake, kabeh interaksi luwih lanjut karo piranti iki bakal bisa ditindakake ing browser.
Bagean I. Nyambungake Sonoff menyang layanan MGT24
Langkah 1: Nggawe panel kontrol
Register ing situs
Mlebet
Kanggo nggawe panel kontrol kanggo piranti anyar, klik tombol "+".
Tuladha nggawe panel
Sawise panel digawe, bakal katon ing dhaptar panel sampeyan.
Ing tab "Persiyapan" ing panel sing digawe, temokake kolom "ID Piranti" lan "Kunci Wewenang"; ing mangsa ngarep, informasi iki bakal dibutuhake nalika nyetel piranti Sonoff.
Tuladha tab
Langkah 2. Reflash piranti
Nggunakake sarana
Langkah 3. Persiyapan piranti
Gunakake daya menyang piranti, sawise lampu LED munggah, pencet tombol terus pencet nganti LED wiwit kerlip periodik roto-roto.
Ing wektu iki, jaringan wi-fi anyar sing diarani "PLC Sonoff Basic" bakal katon, sambungake komputer menyang jaringan iki.
Panjelasan indikasi LED
indikasi LED
Status piranti
périodik pindho sumunar
ora ana sambungan menyang router
sumunar terus
sambungan digawe karo router
kelip-kelip seragam periodik
mode titik akses wi-fi
dipateni
Ora ana sumber daya
Bukak browser Internet lan ketik teks "192.168.4.1" ing baris alamat, pindhah menyang kaca setelan jaringan piranti.
Isi kolom ing ngisor iki:
- "Jeneng jaringan" lan "Sandhi" (kanggo nyambungake piranti menyang router wi-fi omah).
- "ID Piranti" lan "Kunci wewenang" (kanggo menehi wewenang piranti ing layanan MGT24).
Conto nyetel paramèter jaringan piranti
Simpen setelan lan urip maneh piranti.
iku
Langkah 4. Nyambungake sensor (opsional)
Perangkat kukuh saiki ndhukung nganti papat sensor suhu ds18b20. kene
Bab II. Pemrograman visual
Langkah 1: Nggawe Skrip
Digunakake minangka lingkungan pemrograman
Aku nambahake blok khusus kanggo paramèter piranti nulis lan maca. Parameter apa wae diakses kanthi jeneng. Kanggo paramèter piranti remot, jeneng senyawa digunakake: "parameter @ piranti".
Dhaptar pilihan pilihan
Conto skenario kanggo ngaktifake lan mateni beban siklik (1Hz):
Conto skrip sing nyinkronake operasi rong piranti sing kapisah. Yaiku, relay saka piranti target mbaleni operasi relay saka piranti remot.
Skenario kanggo termostat (tanpa histerisis):
Kanggo nggawe skrip sing luwih rumit, sampeyan bisa nggunakake variabel, puteran, fungsi (karo argumen) lan konstruksi liyane. Aku ora bakal njlèntrèhaké kabeh iki kanthi rinci ing kene; wis ana akeh ing net.
Langkah 2: Urutan Skrip
Skrip terus-terusan, lan sawise tekan pungkasan, bakal diwiwiti maneh. Ing kasus iki, ana rong blok sing bisa ngaso sementara naskah, "tundha" lan "ngaso".
Blok "tundha" digunakake kanggo wektu tundha milidetik utawa mikrodetik. Blok iki kanthi ketat njaga interval wektu, ngalangi operasi kabeh piranti.
Blok "ngaso" digunakake kanggo wektu tundha kapindho (utawa kurang), lan ora ngalangi eksekusi proses liyane ing piranti kasebut.
Yen script dhewe ngemot daur ulang tanpa wates, awak kang ora ngemot "ngaso", interpreter independen miwiti ngaso cendhak.
Yen tumpukan memori sing diparengake kesel, interpreter bakal mandheg nglakokake skrip luwe daya kasebut (ati-ati karo fungsi rekursif).
Langkah 3: Debugging Scripts
Kanggo debug script sing wis dimuat menyang piranti, sampeyan bisa mbukak program tilak langkah dening langkah. Iki bisa banget migunani nalika prilaku saka script dadi beda saka apa sing penulis dimaksudaké. Ing kasus iki, nelusuri ngidini penulis kanggo cepet nemokake sumber masalah lan mbenerake kesalahan ing script.
Skenario kanggo ngitung faktorial ing mode debug:
Alat debug banget prasaja lan kasusun saka telung tombol utama: "miwiti", "siji langkah maju" lan "mandheg" (ayo uga ora lali bab "ketik" lan "metu" mode debug). Saliyane nglacak langkah-langkah, sampeyan bisa nyetel breakpoint ing blok apa wae (kanthi ngeklik blok kasebut).
Kanggo nampilake nilai parameter saiki (sensor, relay) ing monitor, gunakake blok "print".
iku
Bagian kanggo penasaran. Apa ing ngisor hood?
Supaya skrip bisa digunakake ing piranti target, interpreter bytecode lan assembler kanthi 38 instruksi dikembangake. Kode sumber Blockly duwe generator kode khusus sing bisa ngowahi blok visual dadi instruksi perakitan. Sabanjure, program assembler iki diowahi dadi bytecode lan ditransfer menyang piranti kanggo eksekusi.
Arsitèktur mesin virtual iki cukup prasaja lan ora ana titik tartamtu kanggo njlèntrèhaké; ing Internet sampeyan bakal nemokake akeh artikel babagan ngrancang mesin virtual sing paling gampang.
Aku biasane nyedhiakke 1000 bait kanggo tumpukan saka mesin virtual, kang cukup kanggo nyisakke. Mesthine, rekursi jero bisa ngilangi tumpukan apa wae, nanging ora ana gunane praktis.
Bytecode sing diasilake cukup kompak. Contone, bytecode kanggo ngitung faktorial sing padha mung 49 bita. Iki minangka wujud visual:
Lan iki program assembler dheweke:
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
Yen wangun perakitan perwakilan ora duwe nilai praktis, banjur tab "javascrit", sebaliknya, menehi tampilan sing luwih akrab tinimbang blok visual:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Babagan kinerja. Nalika aku mbukak script flasher paling prasaja, tak 47 kHz gelombang kothak ing layar oscilloscope (ing kacepetan jam prosesor 80 MHz).
Aku iki asil apik, paling kacepetan iki meh sepuluh kaping luwih cepet saka
Bagean pungkasan
Kanggo ngringkes, aku bakal ngomong yen panggunaan skrip ngidini kita ora mung program logika operasi piranti sing kapisah, nanging uga bisa nyambungake sawetara piranti menyang mekanisme siji, ing ngendi sawetara piranti bisa mengaruhi prilaku wong liya.
Aku uga nyathet yen cara sing dipilih kanggo nyimpen skrip (langsung ing piranti dhewe, lan ora ing server) nyederhanakake ngalih piranti sing wis digunakake menyang server liyane, umpamane menyang Raspberry ngarep, kene
Mekaten, kula badhe nyuwun pitedah saha kritik ingkang mbangun.
Source: www.habr.com