Hitra izdelava prototipov v dobi Arduina, mikroBUSa in procesiranja

microchip 300x74 - Hitra izdelava prototipov v dobi Arduina, mikroBUSa in procesiranja

Bob Martin je bil navdušen graditelj, “maker”, še preden je bil ta izraz splošno razširjen. Vse življenje že razdira stvari, da bi videl, kako delujejo. Po pridobitvi B.S.E.E. z univerze v Saskatchewanu je njegova zgodnja kariera obsegala vse od namestitve specialnih instrumentov v arktične vremenske postaje, razvoja industrijskih kontrolnih sistemov in podpiranja kampanje za raziskovanje zgornje atmosfere pri Environment Canada.

Pred 20 leti se je preselil v območje zaliva, kjer se še naprej osredotoča na oblikovanje ugnezdenih sistemov. Po desetletju na National Semiconductor, ki je svetu predstavil tudi čudovit analogni svet, je nadaljeval svojo pot v nekaj start-up podjetjih, preden je končno pristal pri Atmelu, ki je glavna gonilna sila procesne moči Arduina in kjer je vodil ekipo za razvoj aplikacij za mikrokontrolerje. Tu se je poglobljeno vključil v gibanje Arduino / Maker, ki podpira tako 8 kot tudi 32-bitne platforme.

S 30-letnimi izkušnjami z ugnezdenimi sistemi je zdaj pri Microchipu nekakšen “čarovnik make-a”, kjer ohranja “makerski” duh tako, da izobražuje perspektivne ustvarjalce in nadaljuje z ustvarjanjem, eksperimentiranjem in raziskovanjem, kolikor pač lahko. Živi v mestu Sunnyvale v Kaliforniji, skupaj s svojo ženo, hčerkama dvojčicama in garažo, polno ostankov žic in škatel z “vintage elektroniko”, ki bi jih bilo že res potrebno reciklirati.
Povzetek
Pred nami je doba hitrega oblikovanja prototipov, saj podjetja, kot so MikroElektronika, Adafruit in Arduino, oblikovalcem olajšajo združevanje konceptov v impresivno kratkem času.

Demo aplikacija
Konference in sejmi so sestavni del Silicijeve doline in na Highway 101 koridorju avtoceste med San Franciscom in San Josejem ne manjka panojev z napovedmi o njihovih naslednjih datumih in lokaciji. Ko se trume ljudi v delovnih oblekah, v suknjičih in ušesnimi slušalkami med posameznimi predstavitvami in predavanji potepajo po razstavnih dvoranah, je vse težje pritegniti njihovo pozornost. Oblikovanje in izvedba demonstracij za te dogodke je bil vedno velik del moje kariere na področju elektrotehnike in zelo uživam v tem izzivu. Napredek ugnezdene sistemske tehnologije – še natančneje, nove senzorske tehnologije – je dokaj vsakdanja tema, zato priprava prepričljive predstavitve, ki bi vzbudila zanimanje, ni lahka naloga.

Pred kratkim sem se osredotočil na ustvarjanje interaktivnega demonstracijskega prikazovalnika, ki je združeval popoln senzorski sistem. Predstavitev je morala vsebovati vsaj dva od treh stebrov dobrega demo modela: vida, zvoka in gibanja. Pretekle izkušnje so me naučile, da je treba zmanjšati uporabo preostalega para stebrov, kamor spadajo eksplozije in laserji, nameščeni na morskih psih.

Na srečo zdaj živimo v svetu hitrega razvoja prototipov, zahvaljujoč podjetjem, kot so Arduino, MikroElektronika in Adafruit. Izdelke teh podjetij ves čas uporabljam za izgradnjo sistemov, ki jih uporabljam za poučevanje in raziskovanje zmožnosti novih izdelkov. Na mojo srečo je Microchip, ko sem začel s temi predstavitvami, ravno sprožil promocijsko kampanjo z MikroElektroniko v zvezi z njihovimi Click ploščicami, tako da sem jih lahko nekatere izmed njih tudi uporabil. Imel sem 10DOF Click, ki ima na sebi dva res odlična Boscheva senzorja, 9-osno inercijsko merilno enoto (IMU) BNO055 in digitalni senzor tlaka BMP180.

V San Joseju smo blizu morske gladine, dno kongresnega centra pa je precej ravno, zato bi bil tok podatkov tlačnega senzorja v tem okolju precej dolgočasen. Uporaba popolnega 9-osnega senzorja gibanja pa je bila povsem druga zgodba. V pisarni sem imel tudi nekaj Click vmesnikov za Arduino UNO, ki sem jih uporabil za to predstavitev. Arduino UNO Click vmesniki, kot že ime pove, omogočajo, da Click ploščo MikroElektronike priključimo na standardno Arduino ploščico. Zadnji kos sestavljanke na nivoju strojne opreme je bila razvojna ploščica ATmega328P Xplained Mini. Spremeniti to ploščo v platformo, podobno Arduinu UNO, bi bila samo stvar programiranja zagonskega bootloader programa, vendar sem imel v mislih bolj elegantno rešitev. Ta razvojna plošča ima tudi podnožja s kontaktnimi stebrički, na katera sprejme Arduino vtičnice v standardnem vzorcu, tako da sem imel na voljo tudi te. Ker sem se želel izogniti večjim spremembam strojne opreme, je bilo to spajkanje hitro opravljeno.

Zdelo se je, da bi vse skupaj lahko povezalo med sabo. Vedel sem, da bo Arduino UNO Click ploščica usmerila signale senzorjev BNO055 I2C na pravo mesto na Arduinu. Vendar pa je bilo treba premagati še eno osnovno težavo. Klik 10DOF je ploščica, ki podpira samo 3,3 V napajanje, privzeta konfiguracija 328P Xplained Mini pa deluje s 5 V prek povezave USB. Vendar je ekipa za orodja pri Microchipu že poskrbela tudi za 3,3 V izvedbo tako, da je na 328P Xplained Mini zagotovila LDO, ki ga je mogoče uporabiti in izbrati z nekaj kratkostičniki.

Vse tri plošče so bile priključene skupaj in po hitrem preverjanju zanesljivosti vklopa sem imel zdaj na mizi napajalni sklop senzorjev in mikrokontrolerjev, pri tem pa iz nobenega od vgrajenih integriranih vezij čarobni dim ni nikamor ušel.

Težji del: demo aplikacija
9-osni senzor IMU Bosch BNO055 sem poznal že iz prejšnjih projektov, zato sem tudi že imel nekaj preskusne programske kode iz Adafruit-a za potrditev osnovnega podatkovnega toka iz vseh treh senzorjev gibanja. Adafruit ponuja tudi obsežno knjižnico za BNO055 senzor, ki vsebuje testno kodo, ki sem jo uporabljal.

BNO055 je dokaj močan senzor, ki lahko zagotavlja ne le osnovne surove podatke iz merilnika pospeška, žiroskopa in magnetometra, temveč tudi popolne senzorske rešitve v Euler-ovih kotnih in kvarterionskih oblikah. Testna programska koda Adafruit je bila že v obliki programa in je bila napisana za povsem isto vezje BNO055. Adafruit pa je tudi sicer eno izmed mojih najljubših mest z viri, ko sestavljam sisteme za demonstracije ali pouk. Poleg odlične izvedbe strojne opreme je tudi njihova dokumentacija na najvišji ravni. Vsak njihov izdelek je podprt z ogromno količino informacij, vključno z opombami k aplikacijam in vodniki za raziskovanje podrobnosti.

Ker sem v programu Atmel Studio 7 uporabil funkcijo uvoza programa Arduino, programiranje zagonskega programa (bootloaderja) Arduino v Mega328P Xplained Mini ploščo ni bilo potrebno. Kot je bilo pričakovati, je uvoz testne kode Adafruit v Atmel Studio 7 potekal brez težav. Delo s Studio 7 je prineslo dve ključni prednosti pri oživljanju tega demo projekta, poleg tega, seveda, da je bilo mogoče uporabiti veliko količino zbirke že na odprti domeni. Prva in najpomembnejša dodana vrednost je zmožnost razhroščevanja na ravni vira programa za Arduino, vključno s tem, da lahko uporabljamo točke prekinitve in pregledujemo / spreminjamo podatke v pomnilniku, ne da bi pri tem sploh potrebno uporabiti funkcije Serial.print (). Ta količina preglednosti in nadzora, ki je običajni del profesionalnih ugnezdenih razvojnih sistemov, nam omogoča, da ugotovimo osnovne vzroke težav in zdrobimo vse tiste drobne nadležne hrošče, ki se pojavijo, ko začne človek na hitro metati skupaj demo programsko kodo. Druga prednost: ker je bil primarni tok podatkov iz plošče Xplained Mini prek CDC USB vrat, mi ni bilo treba na noben način pokvariti podatkovnega toka IMU z informacijami o odpravljanju napak. Edina prava težava, ki sem jo takrat videl, je bil neusklajen naslov I2C, toda ploščica BNO055 iz Adafruit in shema Click 10DOF sta kazali, naj to ne bi bil vzrok kakšnih problemov.

Prenesel sem programsko kodo, na prenosniku zagnal aplikacijo za konzolo terminala za serijsko komunikacijo, ki me je takoj prijetno presenetila s pozdravom v obliki naslednjega ACSII pretakanja podatkov.

Calibration: 0 3 0 3
Orientation: 201.25 -17.62 103.00
Calibration: 0 3 0 3
Orientation: 204.69 -27.37 110.81
Calibration: 0 3 0 3
Orientation: 216.69 -34.06 121.69
Calibration: 0 3 0 3
Orientation: 217.81 -41.63 127.25
Calibration: 0 3 0 3
Orientation: 204.88 -56.00 135.44
Calibration: 0 3 0 3
Orientation: 187.94 -70.69 156.00
Calibration: 0 3 0 3
Orientation: 169.75 -75.12 -135.13
Calibration: 0 3 0 3
Orientation: 154.13 -61.13 -91.31
Calibration: 0 3 0 3
Orientation: 138.19 -36.94 -76.37
Calibration: 0 3 0 3
Orientation: 130.94 -16.37 -63.44
Calibration: 0 3 0 3
Orientation: 134.56 -9.06 -48.00
Calibration: 0 3 0 3
Orientation: 137.94 -5.00 -28.75
Calibration: 0 3 0 3
Orientation: 143.75 -6.44 -7.13
Calibration: 0 3 0 3
Orientation: 151.38 -12.31 21.75

Odlično!

Razen nekaj težav s kalibracijo na samih senzorjih, so bili podatki smiselni, tako v velikosti vrednosti kot tudi v odzivu na premikanje ploščice. Bil sem že na polovici poti, saj sem imel delujoč 9-osni IMU, ki mi je pošiljal sprejemljiv telemetrični tok podatkov. To je ASCII znakovni tok podatkov, ki je sicer nekoliko manj učinkovit pri prenosu, a je kot nalašč za demo okolje, saj lahko sistem razdelimo na polovico, da si lahko predstavljamo, kako so videti osnovni podatki IMU.

Vendar sem vsekakor želel na zaslonu osebnega računalnika prikazati nekaj, kar bi bilo veliko bolj zanimivo od množice številk, ki se pomikajo na njem. Na sejmu, ki sem se ga udeležil, najbrž ni bilo posebno velikega števila davčnih računovodij, zato se mi je zdelo potrebno prikazati nekaj bolj elegantnega kot so stolpci številk. Značilna demo aplikacija za senzorje gibanja je risanje gravitacijskega vektorja ali treh ločenih grafov osi, ki predstavljajo gravitacijski vektor. To je že boljši pristop, vendar ne prikaže celotne moči BNO055 in obstaja boljši način za prikaz fuzije senzorjev, ki se dogaja znotraj tega čipa.

Spet nam na pomoč priskoči Adafruit. Ko obiščete spletno stran modul ploščice BNO055, boste našli kratek videoposnetek, ki prikazuje 3D zajčka, ki sledi gibanju brezžično povezane plošče. Programska koda za tega “zajčka” je tudi prvi primer, ki se pojavi na seznamu testnih primerov uporabe knjižnice Adafruit BNO055.

Programski primer “zajčka” je povezan z drugo aplikacijo, ki se izvaja v načinu procesiranja.

Procesiranje sem poznal že iz preteklih projektov. To je odličen jezik za takšne oblikovalce ugnezdenih sistemov, kot sem jaz, da podatki na računalniškem zaslonu niso omejeni le na izpise teksta v ASCII formatu. Procesiranje je bilo tudi osnova za Wiring (ožičenje), ta pa je osnovni jezik za Arduino. Vse skupaj se je lepo ujemalo. Po pričakovanjih je uvoz Arduino programskega primera zajčka v Atmel Studio 7 potekal brezhibno in po namestitvi še nekaterih podpornih paketov za procesiranje na moj glavni razvojni sistem sem se odločil, da bom pred začetkom izvajanja programske kode zajčka še enkrat preveril podatkovni tok s terminalsko konzolo.

Calibration: 0 3 0 0
Orientation: 0.00 0.63 2.19
Calibration: 0 3 0 0
Orientation: 0.00 0.63 2.19
Calibration: 0 3 0 0

Format izpisa podatkovnega toka je potrdil, da delam z Eulerjevimi koti in ne s kvarterioni. To je bilo pomembno, saj sem bil tudi sam dokaj prepričan, da se bo pojavil problem blokade, če razvijalci knjižnice vrtenja ne bodo poskrbeli za to težavo.

Hiter pregled programske kode 3D zajčka v procesiranju mi je povedal, da je velikost okenskega objekta 640×480 pik. Ne videvam prav pogosto 20-palčnih CRT VGA monitorjev na sejmih, celo kup stare elektronike v moji garaži je brez CRT-ja, zato sem ločljivost povečal na skromnih 1024×768 in ustrezno prilagodil odmike in razmerja.
Ko sem vrtel ploščico v prostoru, se je zajček vrtel, kot je bilo pričakovano. Zdaj sem imel interaktivni demo, ki je izpolnjeval vse moje osnovne zahteve za hitro predstavitveno aplikacijo:

  • Bila je enostavno izvedljiva, hitro nastavljiva in poceni;
  • Kadarkoli jo je mogoče razstaviti na posamezne sistemske komponente;
  • Razen posebnega načina napajanja za Mega328P Xplained Mini, ni bila potrebno nobeno dodatno ožičenje ali strojna oprema.

Demonstracija je dejansko pokazala učinek blokiranja, ker se je vrtenje zajčka začelo zatikati, ko se je orientacija krmilne ploščice približala omejitvam 90 ° ali 180 ° na posamezni osi. Veliko lažje je ta koncept pokazati neposredno, kot pa razložiti matematiko, ki stoji za to težavo.

Sam demo je zelo preprost. Presenetilo pa me je, kako malo truda in časa je bilo potrebno za prehod s posameznih modulskih ploščic do celotne 3D demo rotacije na mojem prenosniku. Vsega skupaj sem za celotno izvedbo te predstavitve potreboval približno eno uro časa. Z vidika strojne opreme sta v tej aplikaciji uporabljena dva različna standarda za prototipiranje strojne opreme: Arduino Shield in mikroBUS. Na drugi strani pa programska oprema uporablja tri razvojne platforme: Arduino IDE, Atmel Studio 7 in Processing. Sistemsko pa je bilo vse skupaj povezano v zaporedju, ki je imelo nek smisel in je preprosto delovalo. V preteklosti sem bil nekaj let v inženir sistemskih aplikacij v podjetju, ki je izdelovalo MEMS žiroskope in za demonstracijo, kakršna je bila ta, bi običajno potreboval večino tedna.

Povsem jasno je bilo, da bi bilo v naslednjem koraku potrebno v demonstracijo dodati eno izmed brezžičnih povezav, saj sem imel na MikroElektronika RF Click ploščici še neizkoriščen prostor z mikroBUS vodilom. Treba je bilo preučiti tudi težavo z blokiranjem slike zajčka med vrtenjem, kljub vsemu pa sem imel na koncu dneva v nahrbtniku za prenosnik pripravljen delujoč demo izdelek, ki sem ga lahko nesel s sabo na sejem.

Jasno je, da smo v dobi bliskovitega razvoja in izdelave prototipov. Podjetja, kot so MikroElektronika, Adafruit in seveda Microchip, vlagajo veliko truda, da bi razvijalcem omogočili združitev konceptov v impresivno kratkem času. Navzkrižna združljivost standardov strojne opreme za izdelavo prototipov pomeni manj porabljenega časa za spajkanje, oziroma ukvarjanja s strojno opremo in več časa za izboljšanje osnovne zamisli. Primerne rešitve se danes ponujajo na ploščicah – ne bojte se jih uporabiti!

Viri:
Strojna oprema:

  • 10DOF click board: https://shop.mikroe.com/10dof-click
  • Arduino UNO Click Shield: https://shop.mikroe.com/arduino-uno-click-shield
  • ATMEGA328P Xplained Mini: http://www.microchipdirect.com/ProductSearch.aspx?Keywords=ATMEGA328P-XMINI
  • Adafruit 9-DOF Absolute Orientation Sensor IMU Fusion Breakout – BNO055: https://www.adafruit.com/product/2472

Programska oprema:

  • BNO055 Arduino Library, Test code and 3D Bunny code: https://github.com/adafruit/Adafruit_BNO055
    Processing: www.processing.org

Opomba: Ime in logotip Microchip sta registrirani blagovni znamki podjetja Microchip Technology Incorporated v ZDA in drugih državah. Vse druge blagovne znamke, ki so morda tu omenjene, so last njihovih podjetij.

Microchip Technology Inc
Avtorja: Bob Martin in Brian Thorsen
E-pošta: Brian.Thorsen@microchip.com
2020_288_26
www.microchip.com