చౌకైన చైనీస్ పరికరం నుండి ప్రోగ్రామబుల్ లాజిక్ కంట్రోలర్ను ఎలా సృష్టించాలనే దాని గురించిన కథనం. ఇటువంటి పరికరం ఇంటి ఆటోమేషన్లో మరియు పాఠశాల కంప్యూటర్ సైన్స్లో ప్రాక్టికల్ క్లాస్లలో దాని వినియోగాన్ని కనుగొంటుంది.
సూచన కోసం, డిఫాల్ట్గా Sonoff బేసిక్ ప్రోగ్రామ్ చైనీస్ క్లౌడ్ సేవ ద్వారా మొబైల్ అప్లికేషన్తో పని చేస్తుంది; ప్రతిపాదిత సవరణ తర్వాత, ఈ పరికరంతో అన్ని తదుపరి పరస్పర చర్య బ్రౌజర్లో సాధ్యమవుతుంది.
విభాగం I. సోనాఫ్ను MGT24 సేవకు కనెక్ట్ చేస్తోంది
దశ 1: నియంత్రణ ప్యానెల్ను సృష్టించండి
సైట్లో నమోదు చేసుకోండి
ప్రవేశించండి
కొత్త పరికరం కోసం నియంత్రణ ప్యానెల్ను సృష్టించడానికి, "+" బటన్పై క్లిక్ చేయండి.
ప్యానెల్ సృష్టించడానికి ఉదాహరణ
ప్యానెల్ సృష్టించబడిన తర్వాత, అది మీ ప్యానెల్ల జాబితాలో కనిపిస్తుంది.
సృష్టించిన ప్యానెల్ యొక్క "సెటప్" ట్యాబ్లో, "డివైస్ ID" మరియు "ఆథరైజేషన్ కీ" ఫీల్డ్లను కనుగొనండి; భవిష్యత్తులో, సోనాఫ్ పరికరాన్ని సెటప్ చేసేటప్పుడు ఈ సమాచారం అవసరం అవుతుంది.
ట్యాబ్ ఉదాహరణ
దశ 2. పరికరాన్ని రిఫ్లాష్ చేయండి
యుటిలిటీని ఉపయోగించడం
దశ 3. పరికర సెటప్
పరికరానికి శక్తిని వర్తింపజేయండి, LED వెలిగించిన తర్వాత, బటన్ను నొక్కండి మరియు LED క్రమానుగతంగా సమానంగా ఫ్లాష్ చేయడం ప్రారంభించే వరకు దానిని నొక్కి ఉంచండి.
ఈ సమయంలో, "PLC Sonoff Basic" అనే కొత్త wi-fi నెట్వర్క్ కనిపిస్తుంది, మీ కంప్యూటర్ను ఈ నెట్వర్క్కి కనెక్ట్ చేయండి.
LED సూచన యొక్క వివరణ
LED సూచన
పరికర స్థితి
ఆవర్తన డబుల్ ఫ్లాషింగ్
రూటర్కి కనెక్షన్ లేదు
నిరంతరం ప్రకాశిస్తుంది
రౌటర్తో కనెక్షన్ ఏర్పాటు చేయబడింది
ఆవర్తన ఏకరీతి ఫ్లాషింగ్
wi-fi యాక్సెస్ పాయింట్ మోడ్
ఆరిపోయింది
విద్యుత్ సరఫరా లేదు
ఇంటర్నెట్ బ్రౌజర్ను తెరిచి, చిరునామా పట్టీలో “192.168.4.1” వచనాన్ని నమోదు చేయండి, పరికరం యొక్క నెట్వర్క్ సెట్టింగ్ల సెట్టింగ్ల పేజీకి వెళ్లండి.
ఫీల్డ్లను ఈ క్రింది విధంగా పూరించండి:
- “నెట్వర్క్ పేరు” మరియు “పాస్వర్డ్” (పరికరాన్ని మీ హోమ్ వై-ఫై రూటర్కి లింక్ చేయడానికి).
- “పరికరం ID” మరియు “ఆథరైజేషన్ కీ” (MGT24 సేవలో పరికరాన్ని ప్రామాణీకరించడానికి).
పరికర నెట్వర్క్ పారామితులను సెట్ చేయడానికి ఉదాహరణ
సెట్టింగ్లను సేవ్ చేసి, పరికరాన్ని రీబూట్ చేయండి.
ఇది
దశ 4. సెన్సార్లను కనెక్ట్ చేయడం (ఐచ్ఛికం)
ప్రస్తుత ఫర్మ్వేర్ నాలుగు ds18b20 ఉష్ణోగ్రత సెన్సార్లకు మద్దతు ఇస్తుంది. ఇక్కడ
విభాగం II. విజువల్ ప్రోగ్రామింగ్
దశ 1: స్క్రిప్ట్లను సృష్టించండి
ప్రోగ్రామింగ్ వాతావరణంగా ఉపయోగించబడుతుంది
పరికర పారామితులను వ్రాయడం మరియు చదవడం కోసం నేను ప్రత్యేకమైన బ్లాక్లను జోడించాను. ఏదైనా పారామీటర్ పేరు ద్వారా యాక్సెస్ చేయబడుతుంది. రిమోట్ పరికరాల పారామితుల కోసం, సమ్మేళనం పేర్లు ఉపయోగించబడతాయి: "parameter@device".
ఎంపికల డ్రాప్డౌన్ జాబితా
లోడ్ (1Hz) ఆన్ మరియు ఆఫ్ చక్రీయ స్విచ్ కోసం ఉదాహరణ దృశ్యం:
రెండు వేర్వేరు పరికరాల ఆపరేషన్ను సమకాలీకరించే స్క్రిప్ట్కు ఉదాహరణ. అవి, లక్ష్య పరికరం యొక్క రిలే రిమోట్ పరికరం యొక్క రిలే యొక్క ఆపరేషన్ను పునరావృతం చేస్తుంది.
థర్మోస్టాట్ కోసం దృశ్యం (హిస్టెరిసిస్ లేకుండా):
మరింత క్లిష్టమైన స్క్రిప్ట్లను సృష్టించడానికి, మీరు వేరియబుల్స్, లూప్లు, ఫంక్షన్లు (ఆర్గ్యుమెంట్లతో) మరియు ఇతర నిర్మాణాలను ఉపయోగించవచ్చు. నేను ఇవన్నీ ఇక్కడ వివరంగా వివరించను; నెట్లో ఇప్పటికే చాలా ఉన్నాయి.
దశ 2: స్క్రిప్ట్ల క్రమం
స్క్రిప్ట్ నిరంతరం నడుస్తుంది మరియు అది ముగింపుకు చేరుకున్న వెంటనే, అది మళ్లీ ప్రారంభమవుతుంది. ఈ సందర్భంలో, స్క్రిప్ట్ను తాత్కాలికంగా పాజ్ చేయగల రెండు బ్లాక్లు ఉన్నాయి, “ఆలస్యం” మరియు “పాజ్”.
"ఆలస్యం" బ్లాక్ మిల్లీసెకండ్ లేదా మైక్రోసెకండ్ ఆలస్యం కోసం ఉపయోగించబడుతుంది. ఈ బ్లాక్ సమయ విరామాన్ని ఖచ్చితంగా నిర్వహిస్తుంది, మొత్తం పరికరం యొక్క ఆపరేషన్ను నిరోధిస్తుంది.
"పాజ్" బ్లాక్ రెండవ (లేదా తక్కువ) ఆలస్యం కోసం ఉపయోగించబడుతుంది మరియు ఇది పరికరంలోని ఇతర ప్రక్రియల అమలును నిరోధించదు.
స్క్రిప్ట్లోనే అనంతమైన లూప్ ఉంటే, దాని శరీరంలో “పాజ్” ఉండకపోతే, వ్యాఖ్యాత స్వతంత్రంగా చిన్న పాజ్ను ప్రారంభిస్తాడు.
కేటాయించిన మెమరీ స్టాక్ అయిపోయినట్లయితే, ఇంటర్ప్రెటర్ అటువంటి పవర్ హంగ్రీ స్క్రిప్ట్ను అమలు చేయడాన్ని ఆపివేస్తాడు (పునరావృత ఫంక్షన్లతో జాగ్రత్తగా ఉండండి).
దశ 3: స్క్రిప్ట్లను డీబగ్గింగ్ చేయడం
పరికరంలో ఇప్పటికే లోడ్ చేయబడిన స్క్రిప్ట్ను డీబగ్ చేయడానికి, మీరు దశలవారీగా ప్రోగ్రామ్ ట్రేస్ను అమలు చేయవచ్చు. స్క్రిప్ట్ యొక్క ప్రవర్తన రచయిత ఉద్దేశించిన దానికి భిన్నంగా ఉన్నప్పుడు ఇది చాలా ఉపయోగకరంగా ఉంటుంది. ఈ సందర్భంలో, ట్రేసింగ్ సమస్య యొక్క మూలాన్ని త్వరగా కనుగొనడానికి మరియు స్క్రిప్ట్లోని లోపాన్ని సరిచేయడానికి రచయితను అనుమతిస్తుంది.
డీబగ్ మోడ్లో కారకాన్ని గణించే దృశ్యం:
డీబగ్ సాధనం చాలా సులభం మరియు మూడు ప్రధాన బటన్లను కలిగి ఉంటుంది: "ప్రారంభం", "ఒక అడుగు ముందుకు" మరియు "ఆపు" ("ఎంటర్" మరియు "ఎగ్జిట్" డీబగ్ మోడ్ గురించి కూడా మనం మరచిపోకూడదు). దశల వారీ ట్రేసింగ్తో పాటు, మీరు ఏదైనా బ్లాక్లో బ్రేక్పాయింట్ను సెట్ చేయవచ్చు (బ్లాక్పై క్లిక్ చేయడం ద్వారా).
మానిటర్లో పారామితుల (సెన్సార్లు, రిలేలు) ప్రస్తుత విలువలను ప్రదర్శించడానికి, “ప్రింట్” బ్లాక్ని ఉపయోగించండి.
ఇది
ఆసక్తిగల వారి కోసం విభాగం. హుడ్ కింద ఏమి ఉంది?
లక్ష్య పరికరంలో స్క్రిప్ట్లు పని చేయడానికి, బైట్కోడ్ ఇంటర్ప్రెటర్ మరియు 38 సూచనలతో అసెంబ్లర్ అభివృద్ధి చేయబడ్డాయి. బ్లాక్లీ యొక్క సోర్స్ కోడ్ విజువల్ బ్లాక్లను అసెంబ్లీ సూచనలుగా మార్చే ప్రత్యేక కోడ్ జనరేటర్ని కలిగి ఉంది. తదనంతరం, ఈ అసెంబ్లర్ ప్రోగ్రామ్ బైట్కోడ్గా మార్చబడుతుంది మరియు అమలు కోసం పరికరానికి బదిలీ చేయబడుతుంది.
ఈ వర్చువల్ మెషీన్ యొక్క నిర్మాణం చాలా సులభం మరియు దానిని వివరించడంలో ప్రత్యేక పాయింట్ లేదు; ఇంటర్నెట్లో మీరు సరళమైన వర్చువల్ మిషన్ల రూపకల్పన గురించి అనేక కథనాలను కనుగొంటారు.
నేను సాధారణంగా నా వర్చువల్ మెషీన్ యొక్క స్టాక్ కోసం 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 kHz స్క్వేర్ వేవ్ని పొందాను (80 MHz ప్రాసెసర్ క్లాక్ వేగంతో).
ఇది మంచి ఫలితం అని నేను అనుకుంటున్నాను, కనీసం ఈ వేగం కంటే దాదాపు పది రెట్లు వేగంగా ఉంటుంది
చివరి భాగం
సంగ్రహంగా చెప్పాలంటే, స్క్రిప్ట్ల ఉపయోగం ప్రత్యేక పరికరం యొక్క ఆపరేషన్ యొక్క లాజిక్ను ప్రోగ్రామ్ చేయడానికి మాత్రమే కాకుండా, అనేక పరికరాలను ఒకే మెకానిజంలోకి కనెక్ట్ చేయడం సాధ్యపడుతుందని నేను చెబుతాను, ఇక్కడ కొన్ని పరికరాలు ఇతరుల ప్రవర్తనను ప్రభావితం చేస్తాయి.
స్క్రిప్ట్లను నిల్వ చేయడానికి ఎంచుకున్న పద్ధతి (నేరుగా పరికరాల్లోనే మరియు సర్వర్లో కాదు) ఇప్పటికే పని చేస్తున్న పరికరాలను మరొక సర్వర్కు మార్చడాన్ని సులభతరం చేస్తుందని నేను గమనించాను, ఉదాహరణకు ఇంటి రాస్ప్బెర్రీకి, ఇక్కడ
అంతే, సలహాలు మరియు నిర్మాణాత్మక విమర్శలను వినడానికి నేను సంతోషిస్తాను.
మూలం: www.habr.com