Ẹyọ 3 / 9

Ifibọ Systems ati Microcontroller Code Generation

Awọn anfani:

  • Agbara lati ṣe agbekalẹ koodu ifibọ ti a fun iforukọsilẹ ati ipo ohun elo fun Arduino/STM32/ESP32 pẹlu AI
  • Agbara lati ṣe idanimọ ati ṣatunṣe awọn ilana ifibọ gẹgẹbi awọn idilọwọ, awọn aago ati awọn iyipo ti kii ṣe idilọwọ ni iṣelọpọ AI
  • Agbara lati ṣe atunyẹwo koodu ti ipilẹṣẹ ni awọn ofin ti iranti, akoko gidi ati aabo ṣaaju ikojọpọ si ohun elo

Ni mechatronics, microcontroller ni ibi ti awọn ero pade aye ti ara. Awọn kaadi bii Arduino, STM32, ESP32; o ka sensosi, iwakọ actuators, communicates, ati ki o ṣe gbogbo eyi labẹ lopin iranti, lopin processing agbara, ati ki o muna ìlà awọn ibeere. Oye itetisi atọwọda wulo pupọ ni aaye yii: o le jade awọn eto iforukọsilẹ ti o da lori iwe data sensọ kan, koodu ilana ibaraẹnisọrọ kan, ṣeto idalọwọduro aago kan. Ṣugbọn awọn ọna ṣiṣe ti a fi sii jẹ ọkan ninu awọn agbegbe nibiti AI ṣe agbejade julọ "awọn iro idaniloju"; nitori awọn adirẹsi iforukọsilẹ, awọn iboju iparada ati ihuwasi akoko jẹ pato si igbimọ ati aṣiṣe bit kan dabaru gbogbo ihuwasi. Ninu ẹyọ yii, a bo bii o ṣe le ni koodu ifibọ ti ipilẹṣẹ pẹlu AI ati bii o ṣe le ṣe atunyẹwo ṣaaju ikojọpọ sinu ohun elo.

Iyatọ ti koodu ifibọ lati sọfitiwia mimọ

Eto tabili tabili ni iranti pupọ, ẹrọ ṣiṣe, ati irọrun ti n ṣatunṣe aṣiṣe. Koodu ti a fi sinu ko ni pupọ julọ ninu iwọnyi:

Iwọn

tabili

ifibọ eto

iranti

GB ipele

Ipele KB (fun apẹẹrẹ 2 KB ti Ramu)

akoko

Ni gbogbogbo rọ

Mura, akoko gidi

n ṣatunṣe aṣiṣe

Rọrun (oluyipada, wọle)

Lile (JTAG, tẹlentẹle, LED)

Abajade aṣiṣe

Eto naa ṣubu

Actuator/hardware le bajẹ

wiwọle awọn oluşewadi

OS awọn afoyemọ

Wiwọle taara si Forukọsilẹ

Awọn iyatọ wọnyi pinnu awọn ibeere rẹ fun iṣiro igbejade AI: lilo iranti, akoko gidi (kii ṣe idilọwọ), ati deede iforukọsilẹ ohun elo jẹ nigbagbogbo ni oke ti atokọ ayẹwo rẹ.

Blocker vs Non-Ìdènà koodu

Aṣiṣe ti o wọpọ julọ ti awọn olubere (ati nigbagbogbo ṣe nipasẹ AI) ni lilo idaduro (). idaduro (1000) titii ero isise naa fun iṣẹju 1; Lakoko yii, ko si awọn sensọ miiran ti a le ka, ko si awọn bọtini ti o le ṣakoso. Eyi jẹ itẹwẹgba ni mechatronics. Dipo, ilana orisun millis () ti kii ṣe idinamọ ni a lo.

// BAD: blocker - isise ko le ṣe eyikeyi iṣẹ miiran fun 1 keji ofo loop () {digitalWrite(LED, HIGH); idaduro (1000); // ohun gbogbo duro digitalWrite (LED, LOW); idaduro (1000); // Bọtini pajawiri ko le ka ni akoko yii!}// O DARA: ti kii ṣe idinamọ -- ko ni dina lupu, awọn iṣẹ-ṣiṣe miiran nṣiṣẹ ti (nowMs - previousMs >= interval) { previousMs = nowMs; ledStatus = !ledStatus; digitalWrite (LED, ledStatus); } Ṣayẹwo bọtini (); // le ṣiṣe ni gbogbo ọmọ sensorRead (); // le ṣiṣẹ ni eyikeyi loop}

Apẹrẹ ti kii ṣe idinamọ jẹ ipilẹ ti awọn mechatronics ti a fi sii: lupu iṣakoso n ṣan nigbagbogbo, ko si iṣẹ-ṣiṣe tiipa miiran. Sisọ fun AI lati “maṣe lo idaduro, kọ ipilẹ-miliisi ti kii ṣe idinamọ” nigbati koodu kikọ taara mu didara iṣelọpọ pọ si.

Imọran: Wa fun idaduro (ni koodu ifibọ lati AI. Ti o ba rii idaduro ni lupu iṣakoso akọkọ, nigbagbogbo koodu naa ko dara fun eto akoko gidi ati pe o yẹ ki o tun kọ.

Idilọwọ ati Aago

A gba awọn iṣẹlẹ to ṣe pataki akoko (pulse encoder, bọtini, iṣapẹẹrẹ igbakọọkan) pẹlu awọn idilọwọ dipo iduro ni lupu akọkọ. Ilana idalọwọduro (ISR) yẹ ki o kọ kukuru ati farabalẹ: ko si awọn idaduro, Serial.print tabi awọn iṣiro gigun ninu rẹ; Awọn oniyipada pinpin jẹ samisi iyipada.

iyipada gun encoderCounter = 0; // ISR ati lupu ti wa ni pín -> iyipada majemu ofo enkoderISR () {// Kukuru ISR: o kan ka, ko si miiran iṣẹ ti o ba ti (digitalRead(ENC_B)) enkoderCounter ++; miiran encoderCounter--;} Eto ofo () {pinMode (ENC_A, INPUT_PULLUP); pinMode (ENC_B, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (ENC_A), enkoderISR, RISING);} ofo lupu () {gun counter; ko si Idilọwọ (); // awọn idilọwọ kukuru fun kika atomiki = encoderCounter; idilọwọ (); // ṣe iṣowo lailewu pẹlu counter…}

Awọn aaye pataki mẹta ni apẹẹrẹ yii ni ibiti AI nigbagbogbo padanu: (1) koodu koodu pinpin gbọdọ jẹ 'iyipada' tabi iṣapeye iṣapejọ yoo padanu awọn imudojuiwọn; (2) ISR yẹ ki o jẹ kukuru; (3) Nigbati o ba ka oniyipada pupọ-baiti ni lupu akọkọ, awọn idilọwọ fun kika atomiki gbọdọ wa ni pipade fun igba diẹ, bibẹẹkọ ISR le ṣe laja lakoko kika ati iye idaji / ibajẹ le jẹ kika (ipo ije). Rii daju lati ṣayẹwo boya awọn mẹta wọnyi wa ninu koodu AI.

Forukọsilẹ Yiye ati Datasheet

AI le ṣe alaye ni ilodi si adiresi iforukọsilẹ ti sensọ kan tabi iwọn atunto ti MCU kan. Fun apẹẹrẹ, iforukọsilẹ iṣakoso agbara ti MPU6050 IMU jẹ 0x6B; Ti AI ba fun eyi bi 0x6A, koodu naa ti ṣajọ, o dabi pe o ṣiṣẹ, ṣugbọn sensọ ko ji. Iru awọn aṣiṣe bẹ ni a rii nikan nigbati a ba ṣe afiwe si iwe data naa.

// MPU6050 ji-soke: ni ibamu si datasheet PWR_MGMT_1 = 0x6B, iye 0x00#sọtumọ MPU_ADDR 0x68#sọtumọ PWR_MGMT_1 0x6B // <-- VERIFY lati datasheetWire.beginTransmission(MPU_ADDR);Wire.write(PWR_MGMT_1);Wire.write (0x00); // ji lati orun modeWire.endTransmission (otitọ);

Ifarabalẹ: Ṣe idaniloju adirẹsi iforukọsilẹ kọọkan, boju-boju bit ati adirẹsi I2C/SPI ti AI fun lati inu iwe data naa. Awọn iye wọnyi jẹ kaadi ati ërún pato; Iye AI “ranti” le jẹ lati atunyẹwo chirún miiran. Iforukọsilẹ ti ko tọ ni ipalọlọ nyorisi ihuwasi ti ko tọ.

Ailagbara Tọ / Alagbara Tọ

Alailagbara: "Ka sensọ iwọn otutu lori ESP32. "(Ewo sensọ? Ilana wo? Eyi ti pin? Generic, jasi koodu aṣiṣe.) Lagbara: "Ka DS18B20 sensọ otutu kan lori ESP32 (Arduino framework) lati GPIO4 pẹlu OneWire. Kọ ti kii-ìdènà, ayẹwo gbogbo 1 keji (lilo idaduro, millis-orisun ni aṣiṣe ti asia) Set -7. 85) Jọwọ pato ile-ikawe kọọkan ati asopọ pin ti o lo ninu asọye akọkọ, lo ifipamọ char dipo okun.”

Imudani ti o lagbara; O funni ni ërún, ilana, sensọ, ilana, pin, apẹrẹ iṣapẹẹrẹ, ipo aṣiṣe ati ihamọ iranti. Ni ọna yi awọn o wu jẹ mejeeji verifiable ati ki o bojumu.

Atunyẹwo Ayẹwo fun koodu ti a fi sii

Ṣaaju ki o to ṣe ikojọpọ iṣelọpọ AI, ṣe nipasẹ atokọ yii:

  1. Ìdènà: Ṣe idaduro kan wa tabi idinamọ gigun ni lupu akọkọ?
  2. iyipada: Ṣe awọn oniyipada pin pẹlu ISR iyipada?
  3. Wiwọle atomiki: Njẹ oniyipada pupọ-baiti pinpin jẹ ailewu lati ka bi?
  4. Forukọsilẹ: Ṣe awọn adirẹsi ati awọn iboju iparada ni ibamu pẹlu iwe data naa?
  5. Iranti: Okun, awọn akojọpọ nla, ṣe iṣipopada ṣẹda aponsedanu ipele KB?
  6. Mimu ašiše: Njẹ awọn aṣiṣe kika sensọ, awọn akoko ibaraẹnisọrọ ni a ṣakoso bi?
  7. Ibẹrẹ ailewu: Njẹ awọn abajade oluṣeto ti a gbe sinu ipo ailewu (palolo) ni ibẹrẹ bi?

Mini Case

Ifibọ awọn ọna šiše ẹlẹrọ Baran ni o ni AI Kọ koodu ti o Say IMU fun a drone. Koodu naa ṣe akopọ ati han lati ṣiṣẹ, ṣugbọn awọn iye igun jẹ asan. Baran lo atokọ ayẹwo: ṣe afiwe awọn adirẹsi iforukọsilẹ pẹlu iwe data ati rii pe AI ṣe abajade ti ko tọ si iforukọsilẹ iṣeto gyroscope (0x1A dipo 0x1B), nitorinaa iwọn ifamọ jẹ aṣiṣe. Ni kete ti atunse, awọn iye yanju. Lẹhinna awọn akiyesi idaduro (10) ni lupu akọkọ; yiyipada eyi si ipilẹ-miliisi kan, nitori idinamọ lupu iṣakoso ọkọ ofurufu jẹ itẹwẹgba. Nikẹhin, o rii pe oniyipada counter ti o pin kii ṣe iyipada ati ṣafikun rẹ. AI fun egungun sare; Ṣugbọn awọn awotẹlẹ akojọ mu meta lọtọ aṣiṣe: forukọsilẹ, ìdènà ati iyipada, ati awọn hardware wà ko ni ewu ni gbogbo.

Awọn aṣiṣe ti o wọpọ

  • Pa idahun akoko gidi nipa lilo idaduro () ni lupu iṣakoso akọkọ.
  • Yago fun ṣiṣe oniyipada ti o pin pẹlu ISR iyipada ati ni iriri ibajẹ data ipalọlọ.
  • Kika a olona-baiti pín oniyipada ti kii-atomically ati ti o npese a ije majemu.
  • Ko ṣe idaniloju iforukọsilẹ / awọn iboju iparada ti AI fun pẹlu iwe data naa.
  • Ṣiṣẹda aponsedanu iranti nipa lilo Awọn okun ati awọn akojọpọ nla ni Ramu to lopin.
  • Ngbagbe lati ni aabo ni ibẹrẹ awọn igbejade actuator.

Ni akojọpọ

  • koodu ifibọ; O nṣiṣẹ pẹlu iranti to lopin, akoko ti o muna, ati wiwọle iforukọsilẹ taara.
  • Ni lupu akọkọ, ilana ti kii ṣe idilọwọ orisun millis ni a lo dipo idaduro.
  • ISR wa ni kukuru; awọn oniyipada pinpin gbọdọ jẹ iyipada ati iwọle si atomiki.
  • Awọn adirẹsi iforukọsilẹ ati awọn iboju iparada jẹ iṣeduro nigbagbogbo lodi si iwe data; AI le jẹ aṣiṣe.
  • Iranti, mimu aṣiṣe ati ipo ibẹrẹ ailewu jẹ ayẹwo nigbagbogbo.
  • Imudani ti o lagbara; O pẹlu ërún, ilana, sensọ, Ilana, PIN, ati awọn ihamọ.

Ohun elo iṣẹ-ṣiṣe

Yan sensọ kan (fun apẹẹrẹ DS18B20, MPU6050 tabi HC-SR04) ati microcontroller (Arduino/ESP32/STM32). Jẹ ki AI ṣe ipilẹṣẹ koodu kika ti kii ṣe idilọwọ pẹlu awoṣe iyara to lagbara ni ẹyọ yii. Lẹhinna tẹle awọn ohun meje ti atokọ ayẹwo atunyẹwo ni ọkọọkan: ṣe afiwe o kere ju iforukọsilẹ kan / iye pin pẹlu iwe data, ṣayẹwo fun awọn idaduro lupu, ṣayẹwo ipo iyipada ti awọn oniyipada pinpin. Awọn nkan melo ni “ti o kọja” ni igbiyanju akọkọ ati melo ni atunṣe beere? Ṣe akiyesi gbogbo iṣoro ti o rii ati atunṣe rẹ.