Nkeji 3 / 9

Sistemụ agbakwunyere na Ọgbọ koodu Microcontroller

Uru:

  • Ikike imepụta koodu agbakwunyere enyere aha na ọnọdụ ngwaike maka Arduino/STM32/ESP32 nwere AI
  • Ikike ịmata na mezie ụkpụrụ agbakwunyere dị ka nkwụsịtụ, oge na loops anaghị egbochi na mmepụta AI.
  • Ikike inyocha koodu emepụtara na nchekwa, ezigbo oge na nchekwa tupu ebugo ya na ngwaike

Na mechatronics, microcontroller bụ ebe echiche na-ezute ụwa nkịtị. Kaadị dịka Arduino, STM32, ESP32; ọ na-agụ ihe mmetụta, draịva actuators, na-ekwurịta okwu, na-eme ihe niile a n'okpuru mmachi ebe nchekwa, mmachi nhazi ike, na ogologo oge chọrọ. Ọgụgụ isi bara uru nke ukwuu na mpaghara a: ọ nwere ike wepụta ntọala ndebanye aha dabere na mpempe data sensọ, koodu usoro nkwukọrịta, tọọ nkwụsị oge. Ma usoro agbakwunyere bụ otu n'ime ebe AI na-emepụta "ụgha na-ekwenye ekwenye"; n'ihi na aha adreesị, bit masks na oge omume bụ kpọmkwem na osisi na otu bit njehie na-akpaghasị dum omume. N'ime nkeji a, anyị na-ekpuchi otu esi etinye koodu na AI na otu esi elele ya tupu etinye ya na ngwaike.

Ọdịiche nke koodu agbakwunyere na ngwa ngwa dị ọcha

Mmemme desktọpụ nwere ọtụtụ ebe nchekwa, sistemụ arụ ọrụ, yana ịdị mfe nke nbipu. Koodu agbakwunyere enweghị ọtụtụ n'ime ndị a:

Nha

desktọọpụ

agbakwunyere usoro

ebe nchekwa

GB ọkwa

Ọkwa KB (dịka 2 KB nke RAM)

oge

N'ozuzu mgbanwe

Kpamkpam, ezigbo oge

debugging

Mfe (onye nbibi, log)

Ike (JTAG, Oghere Usoro, LED)

Nsonaazụ mperi

Ihe omume ahụ daa

Actuator/ngwaọrụ nwere ike mebie

nnweta akụrụngwa

Abstracts OS

Nweta ozugbo na Ndebanye aha

Esemokwu ndị a na-ekpebi njirisi gị maka ịtụle mmepụta AI: ojiji ebe nchekwa, ezigbo oge (anaghị egbochi), na ndebanye aha ngwaike bụ mgbe niile n'elu ndepụta nlele gị.

Ihe mgbochi vs Koodu anaghị egbochi

Ihe mmejọ kachasị nke ndị mbido na-eme (na AI na-emekarị) bụ iji igbu oge (). igbu oge (1000) na-akpọchi processor maka 1 sekọnd; N'ime oge a, enweghị ike ịgụ ihe sensọ ọzọ, enweghị ike ịchịkwa bọtịnụ. Nke a anaghị anabata na mechatronics. Kama, a na-eji usoro enweghị mgbochi dabere na millis().

// BAD: blocker - processor enweghị ike ịrụ ọrụ ọ bụla ọzọ maka 1 sekọnd efu loop () {digitalWrite (LED, HIGH); igbu oge (1000); // ihe niile na-akwụsị digitalWrite (LED, LOW); igbu oge (1000); // Enweghị ike ịgụ bọtịnụ mberede n'oge a!}// Ọ BỤRỤ: anaghị egbochi --adịghị egbochi loop, ọrụ ndị ọzọ na-arụ ọrụ ma ọ bụrụ na (nowMs - previousMs >= interval) { previousMs = nowMs; ledStatus = !ledỌnọdụ; digitalWrite (LED, ledStatus); } bọtịnụ Lelee (); // nwere ike na-agba ọsọ ọ bụla okirikiri sensorRead (); // nwere ike na-agba ọsọ ọ bụla loop}

Ụkpụrụ na-adịghị egbochi bụ ihe ndabere nke mechatronics agbakwunyere: akara akara na-aga n'ihu, ọ dịghị ọrụ na-ekpochi ọzọ. Ịgwa AI ka ọ ghara "ejila igbu oge, dee millis na-enweghị mgbochi" mgbe ị na-ede koodu na-eme ka mma nke mmepụta ahụ dịkwuo mma.

NDỤMỌDỤ: Chọọ maka igbu oge (na koodu agbakwunyere site na AI. Ọ bụrụ na ị na-ahụ nkwụsịtụ na akaghị njikwa isi, ọtụtụ mgbe koodu ahụ adịghị mma maka usoro oge dị adị ma ekwesịrị idegharị ya.

Nkwụsị na oge

Anyị na-eji nkwụsịtụ na-echere ihe omume dị mkpa nke oge (mkpọtụ, bọtịnụ, nlele oge) kama ichere n'isi akaghị. Ekwesịrị iji nlezianya dee usoro nkwụsịtụ (ISR) nkenke na nke ọma: enweghị igbu oge, Serial.print ma ọ bụ ogologo mgbako n'ime ya; Ekekọrịtara mgbanwe ndị na-agbanwe agbanwe.

Counter Counter ogologo na-agbanwe agbanwe = 0; // ISR na loop na-ekerịta -> ọnọdụ na-agbanwe agbanwe efu enkoderISR () {// Short ISR: dị nnọọ gụọ, emela ọrụ ọzọ ma ọ bụrụ (digitalRead(ENC_B)) enkoderCounter ++; ọzọ encoderCounter-;} ịtọ ntọala () {pinMode (ENC_A, INPUT_PULLUP); pinMode(ENC_B, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (ENC_A), enkoderISR, RISING);} ihe efu loop () {ogologo counter; enweghị nkwụsị (); // nkwụsịtụ mkpirisi maka akara ọgụgụ atomic = encoderCounter; nkwụsịtụ (); // jiri counter na-emekọrịta ihe n'enweghị nsogbu…}

Isi ihe atọ dị oke egwu n'ihe atụ a bụ ebe AI na-atụkarị anya: (1) Nkekọrịta encoderCounter ga-abụrịrị 'na-agbanwe agbanwe' ma ọ bụ njikarịcha onye nchịkọta ga-atụfu mmelite; (2) ISR kwesịrị ịdị mkpụmkpụ; (3) Mgbe ị na-agụ multi-byte variable na isi loop, nkwụsịtụ maka ịgụ ihe atomic ga-emechi obere oge, ma ọ bụghị ya, ISR nwere ike itinye aka n'oge ịgụ akwụkwọ na ọkara / uru rụrụ arụ nwere ike ịgụ (ọnọdụ agbụrụ). Jide n'aka na ị ga-elele ma atọ ndị a dị na koodu AI.

Deba aha ziri ezi na akwụkwọ data

AI nwere ike ịkọwahie adreesị ndekọ nke ihe mmetụta ma ọ bụ ntakịrị nhazi nke MCU. Dịka ọmụmaatụ, ndekọ njikwa ike nke MPU6050 IMU bụ 0x6B; Ọ bụrụ na AI na-enye nke a dị ka 0x6A, a na-achịkọta koodu ahụ, ọ dị ka ọ na-arụ ọrụ, mana ihe mmetụta anaghị eteta. A na-achọpụta njehie dị otú ahụ naanị ma e jiri ya tụnyere akwụkwọ data.

// MPU6050 edemede: dị ka datasheet PWR_MGMT_1 = 0x6B, uru 0x00 # kọwaa MPU_ADDR 0x68 # kọwaa PWR_MGMT_1 0x6B // <-- VERIFY si datasheetWire.beginTransmission(MPU_ADDR);Wire.write(PWR_MGMT_1);Wire.write(0x00); // teta n'ụra modeWire.endTransmission(ezi);

Nleba anya: Nyochaa adreesị ndebanye aha ọ bụla, ihe mkpuchi bit na adreesị I2C/SPI nke AI nyere site na akwụkwọ data ahụ. Ụkpụrụ ndị a bụ kaadị na mgbawa kpọmkwem; Uru AI "na-echeta" nwere ike ịbụ site na ntụgharị mgbawa ọzọ. Ndebanye aha na-ezighi ezi na-eduga n'omume na-ezighi ezi.

Ngwa ngwa adịghị ike / Ike ngwa ngwa

IKE: "Gụọ ihe mmetụta okpomọkụ na ESP32." (Kedu ihe mmetụta? Kedu usoro? Kedu ntụtụ? Generic, eleghị anya koodu na-ezighị ezi.)STRONG:" Gụọ ihe mmetụta okpomọkụ DS18B20 na ESP32 (Arduino framework) site na GPIO4 na OneWire. Dee na-adịghị egbochi, sample ọ bụla 1 sekọnd (iji igbu oge, millis dabeere na njehie 7) Set. 85) Biko kọwaa ọbá akwụkwọ ọ bụla na njikọ ntụtụ ị na-eji na nkọwa mbụ, jiri ihe nchekwa char kama eriri."

Ike ngwa ngwa; Ọ na-enye mgbawa, kpuchie, ihe mmetụta, protocol, pin, ụkpụrụ nlele, ọnọdụ njehie na mmachi ebe nchekwa. N'ụzọ dị otú a, mmepụta bụ ma nkwenye na ezi uche.

Nyochaa Ndepụta ndenye maka Koodu agbakwunyere

Tupu ibunye mmepụta AI, nyefee ya na ndepụta a:

  1. Mgbochi: Enwere igbu oge ma ọ bụ ogologo mgbochi na isi loop?
  2. na-agbanwe agbanwe: A na-ekerịta mgbanwe na ISR na-agbanwe agbanwe?
  3. Nnweta atọmịk: Ọ̀ dị mma ịgụ ihe na-ekekọrịta multi-byte?
  4. Debanye aha: Adrees na ihe mkpuchi bit dakọtara na akwụkwọ data ahụ?
  5. Ebe nchekwa: eriri, nnukwu usoro, nlọghachi azụ na-eme ka ọkwa KB na-ejubiga ókè?
  6. Ijikwa mperi: A na-edozi njehie ọgụgụ ihe mmetụta, oge nkwukọrịta ozi?
  7. Mmalite dị mma: A na-edobe ihe mmepụta ihe na ọnọdụ nchekwa (na-agafe agafe) na mmalite?

Obere Case

Injinia sistemụ agbakwunyere Baran nwere AI dee koodu na-agụ IMU maka drone. Koodu ahụ na-achịkọta ma yie ka ọ na-arụ ọrụ, mana ụkpụrụ akụkụ ahụ enweghị isi. Baran na-etinye ndepụta nlele: jiri adreesị ndekọ tụnyere akwụkwọ data wee chọpụta na AI na-emepụta aha nhazi gyroscope na-ezighi ezi (0x1A kama 0x1B), ya mere ọnụ ọgụgụ uche adịghị mma. Ozugbo edoziziri, ụkpụrụ na-edozi. Mgbe ahụ, gbuo oge (10) ọkwa na isi loop; na-atụgharị nke a ka ọ bụrụ usoro nke dabeere na millis, n'ihi na igbochi nkwụsị ụgbọ elu adịghị anabata. N'ikpeazụ, ọ na-ahụ na òkè counter variable adịghị agbanwe agbanwe ma na-agbakwụnye ya. AI nyere ọkpụkpụ ngwa ngwa; Mana ndepụta nyocha ahụ jidere njehie atọ dị iche iche: debanye aha, igbochi na agbanwe agbanwe, na ngwaike adịghị n'ihe egwu ọ bụla.

Mmejọ a na-emekarị

  • Na-egbu nzaghachi ozugbo site na iji igbu oge () na loop njikwa isi.
  • Zere ime mgbanwe na-ekekọrịta na ISR na-agbanwe agbanwe yana na-enwe nrụrụ nke data nkịtị.
  • Ịgụ multi-byte na-ekerịta mgbanwe na-abụghị nke atọ na ịmepụta ọnọdụ agbụrụ.
  • Anaghị enyocha ndebanye aha/bit masks nke AI nyere na akwụkwọ data ahụ.
  • Ịmepụta oke ebe nchekwa site na iji eriri na nnukwu usoro na oke RAM.
  • Na-echefu na mbụ echedoro mpụta ihe actuator.

Na nchịkọta

  • Koodu agbakwunyere; Ọ na-arụ ọrụ na oke ebe nchekwa, oge siri ike yana ịnweta ndebanye aha ozugbo.
  • N'ime loop bụ isi, a na-eji usoro enweghị mgbochi dabere na millis kama igbu oge.
  • ISR dị mkpụmkpụ; mgbanwe ndị na-ekekọrịta ga-abụrịrị ihe na-agbanwe agbanwe na ịnweta atọm.
  • A na-enyocha adreesị ndebanye aha na ihe mkpuchi bit megide akwụkwọ data; AI nwere ike ịdị njọ.
  • A na-enyocha ebe nchekwa, njikwa njehie yana ọkwa mmalite dị mma mgbe niile.
  • Ike ngwa ngwa; Ọ gụnyere mgbawa, framework, sensọ, protocol, pin, na mgbochi.

Ọrụ ngwa

Họrọ ihe mmetụta (dịka DS18B20, MPU6050 ma ọ bụ HC-SR04) yana microcontroller (Arduino/ESP32/STM32). Mee AI ka o mepụta koodu ọgụgụ na-adịghị egbochi ya na ndebiri ngwa ngwa dị ike na nkeji a. Wee soro ihe asaa nke ndepụta nyocha n'otu n'otu: tulee ma ọ dịkarịa ala otu uru aha ndekọ/pin na akwụkwọ data ahụ, lelee maka igbu oge loop, lelee ọnọdụ agbanwe agbanwe nke mgbanwe mgbanwe. Kedu ihe 'gafere' na nnwale nke mbụ yana ole ka achọrọ mgbazi? Deba aha nsogbu ọ bụla ịchọtara na idozi ya.