စျေးပေါသော တရုတ်စက်ပစ္စည်းမှ ပရိုဂရမ်မာလဂျစ် ထိန်းချုပ်ကိရိယာကို ဖန်တီးနည်းအကြောင်း ဆောင်းပါး။ ထိုသို့သောကိရိယာသည် အိမ်သုံးအလိုအလျောက်စနစ်တွင်သာမက ကျောင်းကွန်ပြူတာသိပ္ပံတွင် လက်တွေ့အတန်းများအဖြစ်၎င်း၏အသုံးပြုမှုကို တွေ့ရှိမည်ဖြစ်သည်။
အကိုးအကားအတွက်၊ မူရင်းအားဖြင့် Sonoff Basic ပရိုဂရမ်သည် တရုတ် cloud ဝန်ဆောင်မှုမှတစ်ဆင့် မိုဘိုင်းအပလီကေးရှင်းတစ်ခုနှင့် အလုပ်လုပ်သည်၊ အဆိုပြုထားသော ပြုပြင်မွမ်းမံပြီးနောက်၊ ဤစက်ပစ္စည်းနှင့် နောက်ထပ် အပြန်အလှန်တုံ့ပြန်မှုအားလုံးကို ဘရောက်ဆာတွင် ဖြစ်နိုင်ပါမည်။
အပိုင်း I. Sonoff ကို MGT24 ဝန်ဆောင်မှုသို့ ချိတ်ဆက်ခြင်း။
အဆင့် 1: ထိန်းချုပ်မှု panel ကိုဖန်တီးပါ။
ဆိုက်တွင်မှတ်ပုံတင်ပါ။
စနစ်သို့ဝင်ပါ
စက်ပစ္စည်းအသစ်အတွက် ထိန်းချုပ်အကန့်တစ်ခုဖန်တီးရန် “+” ခလုတ်ကို နှိပ်ပါ။
အကန့်တစ်ခုဖန်တီးခြင်းဥပမာ
အကန့်ကို ဖန်တီးပြီးသည်နှင့် ၎င်းသည် သင်၏ အကန့်များစာရင်းတွင် ပေါ်လာမည်ဖြစ်သည်။
ဖန်တီးထားသောအကန့်၏ "တပ်ဆင်ခြင်း" တက်ဘ်တွင်၊ "စက်ပစ္စည်း ID" နှင့် "ခွင့်ပြုချက်ကီး" အကွက်များကို ရှာပါ၊ နောင်တွင်၊ Sonoff စက်ပစ္စည်းကို စဖွင့်သတ်မှတ်သောအခါတွင် ဤအချက်အလက်များ လိုအပ်ပါမည်။
တဘ်ဥပမာ
အဆင့် 2. စက်ပစ္စည်းကို ပြန်လည်စတင်ပါ။
utility ကိုအသုံးပြုခြင်း။
အဆင့် 3. ကိရိယာတပ်ဆင်မှု
စက်ပစ္စည်းသို့ ပါဝါထည့်ပါ၊ LED မီးလင်းပြီးနောက်၊ LED သည် အခါအားလျော်စွာ အညီအမျှလင်းလာသည်အထိ ခလုတ်ကို နှိပ်ပြီး ဖိထားပါ။
ယခုအချိန်တွင် “PLC Sonoff Basic” ဟုခေါ်သော wi-fi ကွန်ရက်အသစ်တစ်ခု ပေါ်လာမည်ဖြစ်ပြီး သင့်ကွန်ပျူတာကို ဤကွန်ရက်သို့ ချိတ်ဆက်ပါ။
LED Instruction ၏ ရှင်းလင်းချက်
LED အချက်ပြခြင်း။
စက်အခြေအနေ
အချိန်အလိုက် နှစ်ဆ မှိတ်တုတ်မှိတ်တုတ်
router နှင့် ချိတ်ဆက်မှု မရှိပါ။
အဆက်မပြတ်တောက်
Router နှင့်ချိတ်ဆက်ထားသည်။
အချိန်အပိုင်းအခြားအလိုက် ယူနီဖောင်းမှိတ်တုတ်မှိတ်တုတ်
wi-fi အသုံးပြုခွင့်အချက် မုဒ်
ငြိမ်းသွားပြီ
ပါဝါထောက်ပံ့မှုမရှိပါ။
အင်တာနက်ဘရောက်ဆာကိုဖွင့်ပြီး လိပ်စာဘားတွင် “192.168.4.1” ဟူသော စာသားကို ရိုက်ထည့်ကာ စက်၏ ကွန်ရက်ဆက်တင်ဆက်တင်များ စာမျက်နှာသို့ သွားပါ။
ကွက်လပ်များကို အောက်ပါအတိုင်းဖြည့်ပါ။
- “ကွန်ရက်အမည်” နှင့် “စကားဝှက်” (စက်ပစ္စည်းကို သင့်အိမ်ရှိ ဝိုင်ဖိုင်ရောက်တာနှင့် ချိတ်ဆက်ရန်)။
- “စက်ပစ္စည်း ID” နှင့် “ခွင့်ပြုချက်ကီး” (MGT24 ဝန်ဆောင်မှုတွင် စက်ပစ္စည်းကို ခွင့်ပြုရန်)။
စက်ပစ္စည်းကွန်ရက် ကန့်သတ်ချက်များ သတ်မှတ်ခြင်း နမူနာ
ဆက်တင်များကို သိမ်းဆည်းပြီး စက်ပစ္စည်းကို ပြန်လည်စတင်ပါ။
ဒါဟာဖြစ်ပါတယ်
အဆင့် 4။ အာရုံခံကိရိယာများ ချိတ်ဆက်ခြင်း (ချန်လှပ်ထားနိုင်သည်)
လက်ရှိ Firmware သည် ds18b20 အပူချိန်အာရုံခံကိရိယာလေးခုအထိ ပံ့ပိုးပေးသည်။ ဒီမှာ
အပိုင်း II Visual programming ပါ။
အဆင့် 1: Scripts ဖန်တီးပါ။
ပရိုဂရမ်းမင်းပတ်ဝန်းကျင်အဖြစ် အသုံးပြုသည်။
ကျွန်ုပ်သည် စာရေးခြင်းနှင့် ဖတ်ခြင်းအတွက် အထူးပြုဘလောက်များကို ထည့်သွင်းထားပါသည်။ မည်သည့် parameter ကိုမဆိုအမည်ဖြင့်ဝင်ရောက်သည်။ အဝေးထိန်းကိရိယာများ၏ ဘောင်များအတွက်၊ ပေါင်းစည်းအမည်များကို အသုံးပြုသည်- “parameter@device”။
ရွေးချယ်စရာများစာရင်းကို ဆွဲချပါ။
ဝန်အဖွင့်အပိတ် စက်ဘီးစီးခြင်း (1Hz) အတွက် ဥပမာ-
သီးခြားစက်ပစ္စည်းနှစ်ခု၏ လုပ်ဆောင်မှုကို တစ်ပြိုင်တည်းလုပ်ဆောင်ခြင်း၏ ဥပမာတစ်ခု။ ဆိုလိုသည်မှာ၊ ပစ်မှတ်ကိရိယာ၏ relay သည် အဝေးထိန်းကိရိယာ၏ relay ၏လုပ်ဆောင်ချက်ကို ပြန်လုပ်သည်။
အပူချိန်ထိန်းကိရိယာအတွက် ဇာတ်လမ်း (hysteresis မပါဘဲ)
ပိုမိုရှုပ်ထွေးသော script များကိုဖန်တီးရန်၊ သင်သည် variables၊ loops၊ functions (arguments with) နှင့် အခြားသော construct များကိုသုံးနိုင်သည်။ ဤနေရာ၌ ကျွန်ုပ်သည် ဤအရာအားလုံးကို အသေးစိတ်မဖော်ပြတော့ပါ၊ ကွန်ပြူတာတွင် များစွာရှိနေပြီဖြစ်သည်။
အဆင့် 2: Scripts အစီအစဥ်
ဇာတ်ညွှန်းသည် အဆက်မပြတ်လည်ပတ်နေပြီး ၎င်း၏အဆုံးသို့ရောက်သည်နှင့် ၎င်းသည် ပြန်လည်စတင်သည်။ ဤကိစ္စတွင်၊ ဇာတ်ညွှန်းကိုခေတ္တခေတ္တရပ်နိုင်သည်၊ "နှောင့်နှေး" နှင့် "ခေတ္တရပ်ခြင်း" နှစ်ခုရှိသည်။
"နှောင့်နှေး" ပိတ်ဆို့ခြင်းကို မီလီစက္ကန့် သို့မဟုတ် မိုက်ခရိုစက္ကန့်နှောင့်နှေးမှုအတွက် အသုံးပြုသည်။ ဤဘလောက်သည် အချိန်ကြားကာလကို တင်းကြပ်စွာ ထိန်းသိမ်းထားပြီး စက်ပစ္စည်းတစ်ခုလုံး၏ လုပ်ဆောင်မှုကို ပိတ်ဆို့ထားသည်။
"ခေတ္တရပ်ခြင်း" ပိတ်ဆို့ခြင်းကို ဒုတိယ (သို့မဟုတ်) ပိုနည်းသော နှောင့်နှေးမှုများအတွက် အသုံးပြုထားပြီး၊ ၎င်းသည် စက်ပစ္စည်းအတွင်းရှိ အခြားလုပ်ငန်းစဉ်များကို လုပ်ဆောင်ခြင်းကို ပိတ်ဆို့ထားခြင်းမရှိပါ။
ဇာတ်ညွှန်းတွင် အဆုံးမရှိသော ကွင်းဆက်တစ်ခုပါရှိသည်၊ ၎င်းတွင် "ခေတ္တရပ်ခြင်း" မပါဝင်ပါက၊ စကားပြန်သည် ခေတ္တရပ်နားခြင်းကို သီးခြားစတင်သည်။
ခွဲဝေသတ်မှတ်ထားသော မမ်မိုရီအစုအစည်းများ ကုန်သွားပါက၊ စကားပြန်သည် ထိုသို့သော ပါဝါဆာလောင်နေသော ဇာတ်ညွှန်းကို လုပ်ဆောင်ခြင်းအား ရပ်သွားပါမည် (ထပ်ခါတလဲလဲ လုပ်ဆောင်ချက်များကို သတိပြုပါ)။
အဆင့် 3- Debugging Scripts
စက်ထဲသို့ တင်ထားပြီးသော script ကို အမှားရှာရန်၊ ပရိုဂရမ် ခြေရာကောက်ကို အဆင့်ဆင့် လုပ်ဆောင်နိုင်သည်။ ဇာတ်ညွှန်း၏ အပြုအမူသည် စာရေးသူ ရည်ရွယ်ထားသည်နှင့် ကွဲပြားသွားသောအခါ ၎င်းသည် အလွန်အသုံးဝင်ပါသည်။ ဤကိစ္စတွင်၊ ခြေရာခံခြင်းသည် စာရေးသူအား ပြဿနာ၏အရင်းအမြစ်ကို လျင်မြန်စွာရှာဖွေနိုင်ပြီး ဇာတ်ညွှန်းရှိ အမှားကိုပြင်နိုင်စေပါသည်။
အမှားရှာပြင်မုဒ်တွင် Factorial တွက်ချက်မှုအတွက် ဇာတ်လမ်းစဥ်-
အမှားရှာပြင်တူးလ်သည် အလွန်ရိုးရှင်းပြီး ပင်မခလုတ်သုံးခုပါဝင်သည်- "စတင်"၊ "ရှေ့တစ်လှမ်းတိုးရန်" နှင့် "ရပ်ရန်" ("ဝင်" နှင့် "ထွက်" အမှားရှာမုဒ်တို့ကိုလည်း မမေ့ပါနှင့်)။ တစ်ဆင့်ပြီးတစ်ဆင့် ခြေရာခံခြင်းအပြင်၊ မည်သည့်ပိတ်ဆို့ခြင်းတွင်မဆို ဖြတ်တောက်မှုတစ်ခု သတ်မှတ်နိုင်သည် (ဘလောက်ကိုနှိပ်ခြင်းဖြင့်)။
မော်နီတာအတွင်းရှိ ကန့်သတ်ဘောင်များ၏ လက်ရှိတန်ဖိုးများ (အာရုံခံကိရိယာများ၊ တစ်ဆင့်ခံများ) ကိုပြသရန် "ပုံနှိပ်ခြင်း" ဘလောက်ကို အသုံးပြုပါ။
ဒါဟာဖြစ်ပါတယ်
သိချင်သူများအတွက် ကဏ္ဍ။ ခေါင်းအုံးအောက်မှာ ဘာရှိလဲ။
Script များကို ပစ်မှတ်ကိရိယာတွင် အလုပ်လုပ်စေရန်အတွက်၊ လမ်းညွှန်ချက် ၃၈ ခုပါသော bytecode စကားပြန်နှင့် တပ်ဆင်သူအား တီထွင်ခဲ့သည်။ Blockly ၏ အရင်းအမြစ်ကုဒ်တွင် ရုပ်မြင်သံကြားဘလောက်များကို စုစည်းမှုညွှန်ကြားချက်များအဖြစ်သို့ ပြောင်းလဲပေးသည့် အထူးပြုကုဒ် ဂျင်နရေတာတစ်ခုပါရှိသည်။ နောက်ပိုင်းတွင်၊ ဤစုဝေးသူပရိုဂရမ်ကို bytecode အဖြစ်ပြောင်းလဲပြီး အကောင်အထည်ဖော်ရန်အတွက် စက်သို့ လွှဲပြောင်းပေးသည်။
ဤ virtual machine ၏တည်ဆောက်ပုံသည် အတော်လေးရိုးရှင်းပြီး ၎င်းကိုဖော်ပြရန် သီးခြားအချက်မရှိပါ။ အင်တာနက်ပေါ်တွင် အရိုးရှင်းဆုံး virtual machines များကို ဒီဇိုင်းထုတ်ခြင်းဆိုင်ရာ ဆောင်းပါးများစွာကို သင်တွေ့လိမ့်မည်။
ကျွန်ုပ်သည် နှမြောလောက်အောင် လုံလောက်သော ကျွန်ုပ်၏ virtual machine ၏ stack အတွက် 1000 bytes ကို ခွဲဝေပေးလေ့ရှိသည်။ သေချာပါတယ်၊ နက်နဲတဲ့ ပြန်ကောက်ချက်တွေက ဘယ် stack ကိုမဆို ကုန်ဆုံးစေတယ်၊ ဒါပေမယ့် လက်တွေ့သုံးဖို့ မဖြစ်နိုင်ပါဘူး။
ရလာတဲ့ bytecode က အတော်လေး ကျစ်လစ်ပါတယ်။ ဥပမာအနေဖြင့်၊ တူညီသော factorial ကိုတွက်ချက်ရန်အတွက် bytecode သည် 49 bytes သာရှိသည်။ ၎င်းသည် ၎င်း၏အမြင်အာရုံပုံစံဖြစ်သည်-
ဒါက သူ့ရဲ့ စုဝေးသူ ပရိုဂရမ်ပါ။
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));
စွမ်းဆောင်ရည်နှင့်ပတ်သက်။ ကျွန်ုပ်သည် အရိုးရှင်းဆုံး flasher script ကို run သောအခါ၊ ကျွန်ုပ်သည် oscilloscope ဖန်သားပြင်ပေါ်တွင် 47 kHz စတုရန်းလှိုင်း (ပရိုဆက်ဆာနာရီအမြန်နှုန်း 80 MHz) ဖြင့်ရရှိသည်။
ဒါက ရလဒ်ကောင်းတစ်ခုလို့ ကျွန်တော်ထင်ပါတယ်၊ အနည်းဆုံး ဒီအရှိန်ထက် ဆယ်ဆနီးပါး ပိုမြန်တယ်။
နောက်ဆုံးတစ်စိတ်တစ်ပိုင်း
အကျဉ်းချုပ်ပြောရလျှင် scripts များအသုံးပြုခြင်းသည် သီးခြားစက်ပစ္စည်းတစ်ခု၏လုပ်ဆောင်မှု၏ယုတ္တိကို ပရိုဂရမ်ပြုလုပ်နိုင်စေရုံသာမက အချို့သောစက်ပစ္စည်းများသည် အခြားသူများ၏အပြုအမူအပေါ်လွှမ်းမိုးသည့်ယန္တရားတစ်ခုထဲသို့ စက်ပစ္စည်းအများအပြားကို ချိတ်ဆက်နိုင်စေပါသည်။
ရွေးချယ်ထားသော scripts များကို သိမ်းဆည်းခြင်းနည်းလမ်း (စက်များတွင် တိုက်ရိုက်မဟုတ်ဘဲ ဆာဗာတွင်မဟုတ်ဘဲ) သည် အလုပ်လုပ်ပြီးသော စက်ပစ္စည်းများကို အခြားဆာဗာသို့ ပြောင်းခြင်းအား ရိုးရှင်းလွယ်ကူစေသည် ဥပမာ၊ ဤနေရာတွင် Raspberry၊
ဒါပါပဲ၊ အကြံဉာဏ်နဲ့ အပြုသဘောဆောင်တဲ့ ဝေဖန်မှုတွေကို ကြားရတာ ဝမ်းသာပါတယ်။
source: www.habr.com