Prògramachadh lèirsinneach airson Sonoff Basic

Prògramachadh lèirsinneach airson Sonoff Basic
Artaigil mu mar a chruthaicheas tu rianadair loidsig prògramaichte bho inneal Sìneach saor. Lorgaidh inneal mar seo a chleachdadh an dà chuid ann an fèin-ghluasad dachaigh agus mar chlasaichean practaigeach ann an saidheans coimpiutair sgoile.
Airson fiosrachadh, gu gnàthach bidh am prògram Sonoff Basic ag obair le tagradh gluasadach tro sheirbheis sgòthan Sìneach; às deidh an atharrachadh a chaidh a mholadh, bidh e comasach a h-uile eadar-obrachadh eile leis an inneal seo sa bhrobhsair.

Earrann I. A' ceangal Sonoff ris an t-seirbheis MGT24

Ceum 1: Cruthaich pannal smachd

Clàraich air an làrach mgt24 (mura h-eil thu clàraichte mu thràth) agus log a-steach a’ cleachdadh do chunntas.
Log a-steachPrògramachadh lèirsinneach airson Sonoff Basic

Gus pannal smachd a chruthachadh airson inneal ùr, cliog air a’ phutan “+”.
Eisimpleir de bhith a 'cruthachadh pannalPrògramachadh lèirsinneach airson Sonoff Basic

Aon uair ‘s gu bheil am pannal air a chruthachadh, nochdaidh e anns an liosta pannalan agad.

Anns an taba “Setup” den phannal cruthaichte, lorg na raointean “Inneal ID” agus “Iuchrach Ùghdarrachaidh”; san àm ri teachd, bidh feum air an fhiosrachadh seo nuair a bhios tu a’ stèidheachadh an inneal Sonoff.
Eisimpleir tabPrògramachadh lèirsinneach airson Sonoff Basic

Ceum 2. Reflash an uidheam

A 'cleachdadh a' ghoireas XTCOM_UTIL luchdaich sìos an firmware PLC Sonoff Bunasach Gus an inneal, airson seo feumaidh tu inneal-tionndaidh USB-TTL. Seo làimhe и Stiùireadh bhidio.

Ceum 3. Setup inneal

Cuir cumhachd a-steach don inneal, às deidh don LED lasadh suas, brùth air a ’phutan agus cùm air a bhrùthadh gus an tòisich an LED a’ frasadh bho àm gu àm gu cothromach.
Aig an àm seo, nochdaidh lìonra wi-fi ùr leis an t-ainm “PLC Sonoff Basic”, ceangail do choimpiutair ris an lìonra seo.
Mìneachadh air comharra LED

Comharradh LED
Inbhe inneal

frasadh dùbailte bho àm gu àm
chan eil ceangal ris an router

a’ deàrrsadh gu leantainneach
ceangal stèidhichte leis an router

frasadh èideadh bho àm gu àm
modh puing ruigsinneachd wi-fi

air a chur às
Gun solar cumhachd

Fosgail brobhsair eadar-lìn agus cuir a-steach an teacsa “192.168.4.1” anns a ’bhàr seòlaidh, rachaibh gu duilleag roghainnean roghainnean lìonra an uidheim.

Lìon a-steach na raointean mar a leanas:

  • “Ainm lìonra” agus “Facal-faire” (gus an inneal a cheangal ris an router wi-fi dachaigh agad).
  • “Inneal ID” agus “Iuchrach ùghdarrais” (gus an inneal a cheadachadh air an t-seirbheis MGT24).

Eisimpleir de shuidheachadh crìochan lìonra innealanPrògramachadh lèirsinneach airson Sonoff Basic

Sàbhail na roghainnean agus ath-thòisich an inneal.
tha e Stiùireadh bhidio.

Ceum 4. Ceangal sensaran (roghainneil)

Bidh am firmware gnàthach a’ toirt taic do suas ri ceithir mothachairean teodhachd ds18b20. Seo Stiùireadh bhidio airson stàladh sensors. A rèir coltais, bidh an ceum seo as duilghe, oir bidh feum air gàirdeanan dìreach agus iarann ​​​​solder.

Earrann II. Prògramachadh lèirsinneach

Ceum 1: Cruthaich sgriobtaichean

Air a chleachdadh mar àrainneachd prògramaidh Bloc, tha an àrainneachd furasta ionnsachadh, agus mar sin chan fheum thu a bhith nad phrògramadair gus sgriobtaichean sìmplidh a chruthachadh.

Chuir mi blocaichean sònraichte ris airson sgrìobhadh agus leughadh paramadairean innealan. Gheibhear cothrom air paramadair sam bith le ainm. Airson paramadairean innealan iomallach, thathas a’ cleachdadh ainmean toinnte: “parameter@device”.
Liosta de roghainnean tuiteam-sìosPrògramachadh lèirsinneach airson Sonoff Basic

Eisimpleir de shuidheachadh airson tionndadh baidhsagal air agus dheth an luchd (1Hz):
Prògramachadh lèirsinneach airson Sonoff Basic

Eisimpleir de sgriobt a’ sioncronadh obrachadh dà inneal fa leth. Is e sin, bidh sealaidheachd an inneal targaid ag ath-aithris gnìomhachd sealaidheachd an inneal iomallach.
Prògramachadh lèirsinneach airson Sonoff Basic

Suidheachadh teirmeastat (às aonais hysteresis):
Prògramachadh lèirsinneach airson Sonoff Basic

Gus sgriobtaichean nas iom-fhillte a chruthachadh, faodaidh tu caochladairean, lùban, gnìomhan (le argamaidean) agus structaran eile a chleachdadh. Cha toir mi cunntas mionaideach air a h-uile càil an seo; tha tòrr air an lìon mu thràth. stuthan foghlaim mu Blockly.

Ceum 2: Òrdugh nan Sgriobtairean

Bidh an sgriobt a’ ruith gu leantainneach, agus cho luath ‘s a ruigeas e a chrìoch, bidh e a’ tòiseachadh a-rithist. Anns a ’chùis seo, tha dà bhloca ann as urrainn stad a chuir air an sgriobt airson ùine,“ dàil ”agus“ stad ”.
Tha am bloc "dàil" air a chleachdadh airson dàil millisecond no microsecond. Bidh am bloc seo gu teann a ’cumail suas an ùine eadar-ama, a’ cur bacadh air obrachadh an inneal gu lèir.
Tha am bloc “stad” air a chleachdadh airson an dàrna (no nas lugha) dàil, agus chan eil e a’ cur bacadh air coileanadh phròiseasan eile san inneal.
Ma tha lùb gun chrìoch anns an sgriobt fhèin, nach eil “stad” anns a’ bhodhaig, bidh an eadar-theangair gu neo-eisimeileach a’ tòiseachadh stad ghoirid.
Ma tha an stac cuimhne a chaidh a shònrachadh sgìth, stadaidh an t-eadar-theangair bho bhith a’ coileanadh a leithid de sgriobt acrach (bi faiceallach le gnìomhan ath-chuairteachaidh).

Ceum 3: Debugging Sgriobt

Gus sgriobt a dhì-bhugachadh a chaidh a luchdachadh a-steach don inneal mar-thà, faodaidh tu lorg prògram a ruith ceum air cheum. Faodaidh seo a bhith air leth feumail nuair a thionndaidheas giùlan an sgriobt gu bhith eadar-dhealaichte bho na bha an t-ùghdar an dùil. Anns a 'chùis seo, tha lorg a' leigeil leis an ùghdar tùs na duilgheadas a lorg gu luath agus a 'mhearachd san sgriobt a cheartachadh.

Scenario airson obrachadh a-mach bàillidh ann am modh deasbaid:
Prògramachadh lèirsinneach airson Sonoff Basic

Tha an inneal deasbaid gu math sìmplidh agus tha trì prìomh phutanan ann: “tòiseachadh”, “aon cheum air adhart” agus “stad” (na dìochuimhnich sinn cuideachd mu mhodh deasbaid “cuir a-steach” agus “fàgail”. A bharrachd air lorg ceum air cheum, faodaidh tu briseadh a shuidheachadh air bloc sam bith (le bhith a’ briogadh air a’ bhloc).
Gus na luachan gnàthach de pharamadairean (mothachaidhean, ath-chraolaidhean) a thaisbeanadh anns an monitor, cleachd am bloc “clò-bhualadh”.
tha e bhidio sealladh mu bhith a’ cleachdadh an debugger.

Earrann airson an neach fiosrach. Dè tha fon chochall?

Gus an obraich na sgriobtaichean air an inneal targaid, chaidh eadar-theangair bytecode agus inneal-cruinneachaidh le 38 stiùireadh a leasachadh. Tha gineadair còd sònraichte air a thogail a-steach do chòd stòr Blockly a dh’ atharraicheas blocaichean lèirsinneach gu stiùireadh cruinneachaidh. Às deidh sin, thèid am prògram assembler seo atharrachadh gu bytecode agus a ghluasad chun inneal airson a chuir gu bàs.
Tha ailtireachd an inneal brìgheil seo gu math sìmplidh agus chan eil adhbhar sònraichte ann a bhith ga mhìneachadh; air an eadar-lìn gheibh thu mòran artaigilean mu bhith a ’dealbhadh na h-innealan brìgheil as sìmplidh.
Mar as trice bidh mi a’ riarachadh 1000 bytes airson stac an inneal brìgheil agam, a tha gu leòr airson a shàbhaladh. Gu dearbh, faodaidh ath-chuairtean domhainn stac sam bith a chuir às, ach chan eil e coltach gum bi feum practaigeach orra.

Tha an bytecode a tha mar thoradh air gu math teann. Mar eisimpleir, chan eil anns an bytecode airson obrachadh a-mach an aon fhactaraidh ach 49 bytes. Is e seo an cruth lèirsinneach aige:
Prògramachadh lèirsinneach airson Sonoff Basic

Agus seo am prògram cruinneachaidh aige:

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

Mura h-eil luach practaigeach sam bith aig an fhoirm riochdachaidh cruinneachaidh, tha an taba “javascrit”, air an làimh eile, a ’toirt sealladh nas eòlaiche na blocaichean lèirsinneach:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

A thaobh coileanadh. Nuair a ruith mi an sgriobt flasher as sìmplidh, fhuair mi tonn ceàrnagach 47 kHz air an scrion oscilloscope (aig astar gleoc pròiseasar de 80 MHz).
Prògramachadh lèirsinneach airson Sonoff BasicPrògramachadh lèirsinneach airson Sonoff Basic
Tha mi a 'smaoineachadh gur e toradh math a tha seo, co-dhiù tha an astar seo faisg air deich tursan nas luaithe na Lua и Espruino.

Am pàirt mu dheireadh

Gus geàrr-chunntas a dhèanamh, canaidh mi gu bheil cleachdadh sgriobtaichean a 'toirt cothrom dhuinn chan ann a-mhàin a bhith a' clàradh loidsig obrachadh inneal fa leth, ach cuideachd ga dhèanamh comasach grunn innealan a cheangal ann an aon inneal, far a bheil cuid de dh'innealan a 'toirt buaidh air giùlan dhaoine eile.
Tha mi cuideachd a 'toirt fa-near gu bheil an dòigh a chaidh a thaghadh airson sgriobtaichean a stòradh (gu dìreach anns na h-innealan fhèin, agus chan ann air an fhrithealaiche) a' sìmpleachadh atharrachadh innealan a tha ag obair mar-thà gu frithealaiche eile, mar eisimpleir gu dachaigh Sùbh-craoibhe, an seo làimhe.

Sin uile, bidh mi toilichte comhairle agus càineadh cuideachail a chluinntinn.

Source: www.habr.com

Cuir beachd ann