Naúrar 3 / 9

Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararren Ƙwararru

Riba:

  • Ikon ƙirƙirar lambar da aka haɗa da aka ba da rajista da mahallin hardware don Arduino/STM32/ESP32 tare da AI
  • Ikon ganewa da gyara tsarin da aka haɗa kamar su katsewa, masu ƙidayar lokaci da madaukai marasa toshewa a cikin fitowar AI
  • Ikon duba lambar da aka samar dangane da ƙwaƙwalwar ajiya, ainihin lokaci da tsaro kafin loda shi zuwa kayan aikin

A cikin mechatronics, microcontroller shine inda ra'ayoyi suka hadu da duniyar zahiri. Katuna irin su Arduino, STM32, ESP32; yana karanta na'urori masu auna firikwensin, yana fitar da masu kunnawa, sadarwa, kuma yana yin duk wannan a ƙarƙashin ƙayyadaddun ƙwaƙwalwar ajiya, ƙarancin sarrafawa, da ƙaƙƙarfan buƙatun lokaci. Hankali na wucin gadi yana da fa'ida sosai a wannan filin: yana iya fitar da saitunan rajista bisa la'akari da bayanan na'urar firikwensin, lambar ka'idar sadarwa, saita katse mai ƙidayar lokaci. Amma tsarin da aka saka yana daya daga cikin yankunan da AI ke samar da mafi "karya mai gamsarwa"; saboda adiresoshin rajista, abin rufe fuska da kuma halayen lokaci sun keɓanta ga hukumar kuma kuskuren bit guda yana tarwatsa dukkan halayen. A cikin wannan rukunin, mun rufe yadda ake ƙirƙira lambar shigar da AI da kuma yadda ake bitar ta kafin loda shi cikin kayan masarufi.

Bambancin lambar da aka haɗa da software mai tsafta

Shirin tebur yana da yalwar ƙwaƙwalwar ajiya, tsarin aiki, da sauƙi na gyara kuskure. Lambar da aka haɗa ta rasa yawancin waɗannan:

Girman

tebur

saka tsarin

ƙwaƙwalwar ajiya

Babban darajar GB

Matsayin KB (misali 2 KB na RAM)

lokaci

Gabaɗaya sassauƙa

M, ainihin lokacin

gyara kurakurai

Sauƙi (mai gyara, log)

Hard (JTAG, serial, LED)

Sakamakon kuskure

Shirin ya rushe

Actuator/hardware na iya lalacewa

damar samun albarkatu

OS abtracts

Kai tsaye zuwa ga Rajista

Waɗannan bambance-bambance suna ƙayyade ma'aunin ku don kimanta fitarwar AI: amfani da ƙwaƙwalwar ajiya, ainihin-lokaci (ba tare da toshewa ba), da daidaiton rajistar kayan masarufi koyaushe suna kan saman jerin abubuwan bincikenku.

Blocker vs Non-Blocking Code

Mafi yawan kuskuren da masu farawa suka yi (kuma AI akai-akai) shine amfani da jinkiri (). jinkiri (1000) yana kulle mai sarrafawa don 1 seconds; A wannan lokacin, ba za a iya karanta wasu na'urori masu auna firikwensin ba, ba za a iya sarrafa maɓalli ba. Wannan ba abin karɓa ba ne a cikin injiniyoyi. Madadin haka, ana amfani da tsarin millis() wanda ba tare da toshewa ba.

// BAD: blocker - processor ba zai iya yin wani aiki don 1 na biyu mara amfani madauki () {dijitalWrite (LED, HIGH); jinkirta (1000); // komai yana tsayawa dijitalWrite (LED, LOW); jinkirta (1000); // Ba za a iya karanta maɓallin gaggawa ba a wannan lokacin!}// KYAU: rashin toshewa -- ba a toshe madauki, sauran ayyuka suna gudana idan (yanzuMs - previousMs >= tazara) { previousMs = nowMs; ledStatus = !ledStatus; digitalWrite (LED, ledStatus); } buttonCheck(); // na iya gudana a cikin kowane firikwensin sake zagayowarRead(); //zai iya gudu a kowane madauki}

Tsarin da ba tare da toshewa shine ginshiƙi na mechatronics da aka haɗa: madaidaicin madauki yana gudana akai-akai, babu ɗawainiya da ke kulle wani. Gayawa AI don "kada ku yi amfani da jinkiri, rubuta ba tare da toshe tushen millis" lokacin rubuta lambar yana inganta ingancin fitarwa kai tsaye.

Tukwici: Nemo jinkiri (a cikin lambar da aka haɗa daga AI. Idan kun ga jinkiri a cikin babban madauki na sarrafawa, galibi wannan lambar ba ta dace da tsarin lokaci na ainihi ba kuma yakamata a sake rubuta shi.

Katsewa da masu lokaci

Muna ɗaukar abubuwan da suka faru masu mahimmanci na lokaci ( bugun jini, maɓalli, samfurin lokaci-lokaci) tare da katsewa maimakon jira a babban madauki. Ya kamata a rubuta na yau da kullun na katsewa (ISR) gajere kuma a hankali: babu jinkiri, Serial.print ko dogon ƙididdiga a ciki; Abubuwan da aka raba suna da alamar maras ƙarfi.

mai canzawa dogayen encoderCounter = 0; // ISR da madauki suna raba -> yanayin maras tabbas mara amfani enkoderISR () {// Short ISR: kawai ƙidaya, kada ku yi wani aiki idan (digitalRead(ENC_B)) enkoderCounter ++; sauran encoderCounter-;} saitin banza () {pinMode(ENC_A, INPUT_PULLUP); pinMode(ENC_B, INPUT_PULLUP); attachInterrupt (dijitalPinToInterrupt (ENC_A), enkoderISR, RISING);} madauki mara amfani () {dogon counter; babu Katsewa(); // gajeriyar katsewa don lissafin karatun atomic = encoderCounter; katsewa(); // yi mu'amala lafiya tare da counter...}

Mahimman bayanai guda uku a cikin wannan misalin sune inda AI ke yawan rasawa: (1) Counter ɗin da aka raba dole ne ya zama 'mai canzawa' ko haɓakawa mai tarawa zai rasa sabuntawa; (2) ISR ya kamata ya zama gajere; (3) Lokacin karanta maɓalli mai yawa-byte a cikin babban madauki, katsewa don karatun atomic dole ne a rufe shi na ɗan gajeren lokaci, in ba haka ba ISR na iya shiga tsakani yayin karatun kuma ana iya karanta rabin / ƙimar lalacewa (yanayin tsere). Tabbatar bincika ko waɗannan ukun suna nan a cikin lambar AI.

Yi Rijista Daidaituwa da Bayanin Bayanai

AI na iya yaudarar adireshin rajistar na'urar firikwensin ko juzu'i na MCU. Misali, rijistar sarrafa wutar lantarki na MPU6050 IMU shine 0x6B; Idan AI ya ba da wannan azaman 0x6A, an haɗa lambar, da alama yana aiki, amma firikwensin bai farka ba. Irin waɗannan kurakuran ana gano su ne kawai idan aka kwatanta da takaddar bayanan.

// MPU6050 farkawa: bisa ga takaddar bayanan PWR_MGMT_1 = 0x6B, ƙimar 0x00 # ayyana MPU_ADDR 0x68 # ayyana PWR_MGMT_1 0x6B // <-- TABBATA daga datasheetWire.beginTransmission(MPU_ADDR);Wire.write(PWR_MGMT_1);Wire.write(0x00); // tashi daga yanayin barciWire.endTransmission (gaskiya);

Hankali: Tabbatar da kowane adireshin rajista, abin rufe fuska da kuma adireshin I2C/SPI da AI ke bayarwa daga takaddar bayanan. Waɗannan dabi'u sune ƙayyadaddun kati da guntu; Darajar AI "ta tuna" na iya kasancewa daga wani bita na guntu. Rijistar da ba daidai ba cikin shiru tana haifar da halin da ba daidai ba.

Rauni Mai Sauƙi / Ƙarfi Mai ƙarfi

RAUNI: "Karanta firikwensin zafin jiki akan ESP32." 85).

Ƙarfi mai ƙarfi; Yana ba da guntu, tsarin, firikwensin, yarjejeniya, fil, ƙirar samfuri, matsayi na kuskure da ƙuntatawar ƙwaƙwalwa. Ta wannan hanyar fitowar ta tabbatacciya ce kuma ta gaske.

Bitar Lissafin Tambayoyi don Lambobin Haɗe-haɗe

Kafin loda fitarwar AI, wuce ta wannan jerin:

  1. Toshewa: Akwai jinkiri ko dogon toshewa a cikin babban madauki?
  2. maras tabbas: Shin ana raba masu canji tare da ISR maras ƙarfi?
  3. Samun damar atom: Shin mabambantan nau'ikan byte da yawa amintattu ne don karantawa?
  4. Yi rijista: Shin adiresoshin da abin rufe fuska sun dace da takaddar bayanan?
  5. Ƙwaƙwalwar ajiya: igiya, manyan tsararru, ko maimaitawa yana haifar da ambaliya matakin KB?
  6. Kuskuren kulawa: Shin kurakuran karanta na'urar firikwensin, lokacin sadarwa ana sarrafa?
  7. Amintaccen farawa: Shin ana sanya abubuwan fitarwa a cikin yanayin aminci (m) yayin farawa?

Mini Case

Injiniyan tsarin da aka haɗa Baran yana da AI rubuta lambar da ke karanta IMU don jirgi mara matuki. Lambar tana tattarawa kuma yana bayyana yana aiki, amma ƙimar kusurwa ba su da ma'ana. Baran ya yi amfani da jerin abubuwan dubawa: yana kwatanta adiresoshin rajista tare da bayanan bayanan kuma ya gano cewa AI ba daidai ba ya fitar da rajistar daidaitawar gyroscope (0x1A maimakon 0x1B), don haka ma'aunin hankali ba daidai ba ne. Da zarar an gyara, ƙimar ta daidaita. Sa'an nan jinkirta (10) sanarwa a cikin babban madauki; canza wannan zuwa tsarin tushen millis, saboda toshe madauki na sarrafa jirgin ba abin yarda bane. A ƙarshe, yana ganin cewa madaidaicin madaidaicin ƙididdiga ba ya canzawa kuma yana ƙara shi. AI ya ba da kwarangwal da sauri; Amma lissafin bita ya kama kurakurai daban-daban guda uku: rajista, toshewa da maras tabbas, kuma kayan aikin ba su cikin haɗari ko kaɗan.

Kuskuren gama gari

  • Kashe martani na ainihi ta amfani da jinkiri() a cikin babban madauki na sarrafawa.
  • Guji sanya canjin da aka raba tare da ISR ya zama mara ƙarfi da fuskantar ɓarnar bayanan shiru.
  • Karatun mabambantan rabe-raben baiti da yawa ba na atomatik ba da samar da yanayin tsere.
  • Ba tabbatar da rijistar / bit masks da AI ya bayar tare da takaddar bayanan ba.
  • Ƙirƙirar ambaton ƙwaƙwalwar ajiya ta hanyar amfani da igiyoyi da manyan jeri a cikin iyakataccen RAM.
  • Mantawa da farko amintaccen kayan aikin kunnawa.

A takaice

  • Lambar da aka haɗa; Yana aiki tare da ƙayyadaddun žwažwalwar ajiya, matsananciyar lokaci, da damar yin rijista kai tsaye.
  • A cikin babban madauki, ana amfani da tsarin da ba tare da toshewa na tushen millis maimakon jinkiri ba.
  • ISR yana takaice; Dole ne masu canji da aka raba su zama masu canzawa kuma ana samun damar atom.
  • adiresoshin rajista da abin rufe fuska ana tabbatar da su koyaushe akan takaddar bayanan; AI na iya zama kuskure.
  • Ƙwaƙwalwar ajiya, sarrafa kuskure da amintaccen matsayin farawa koyaushe ana duba su.
  • Ƙarfi mai ƙarfi; Ya haɗa da guntu, tsarin, firikwensin, yarjejeniya, fil, da ƙuntatawa.

Aikin aikace-aikace

Zaɓi firikwensin (misali. DS18B20, MPU6050 ko HC-SR04) da microcontroller (Arduino/ESP32/STM32). Shin AI ta samar da lambar karantawa mara toshewa tare da samfuri mai ƙarfi mai ƙarfi a cikin wannan rukunin. Sannan bi abubuwa bakwai na lissafin bita ɗaya bayan ɗaya: kwatanta aƙalla ƙimar rijista/ƙimar fil ɗaya tare da takaddar bayanan, duba jinkirin madauki, duba yanayin maras tabbas na masu canji. Abubuwa nawa ne suka “wuce” a gwajin farko kuma nawa ne ake buƙata gyara? Ka lura da kowace matsala da ka samu da gyara ta.