Evaluering av ulike utviklings- og prototypingskort for kroppsbårne enheter (wearables)
Bidrag fra DigiKeys nordamerikanske redaktører
2020-08-12
Arduino-konseptet med åpen kildekode har vist seg å være enormt vellykket blant hobbybyggere og produsenter. Det har også blitt omfavnet av profesjonelle utviklere for bruk under tidlig utvikling og prototyping, og mer nylig for fullverdige konstruksjoner. Med fremveksten av apparater som kroppsbårne enheter og helseovervåkning, krever begge brukertyper høyere ytelse og mer funksjonalitet i kretskort med stadig mindre format.
Denne artikkelen tar kort for seg hvordan Arduino-kortene har utviklet seg for å kunne imøtekomme behovene til høy ytelse og funksjonalitet fra produsenter og fagfolk som jobber innen utvikling av apparater med plassbegrensning og lavt energiforbruk. Artikkelen introduserer og viser deretter hvordan man kommer i gang med et nytt tillegg i Arduino-familien, Seeeduino XIAO fra Seeed Technology Co.
Slik utviklet Arduino seg for å kunne imøtekomme kravene til kroppsbårne enheter
Mange hobbybyggere og utviklere er interesserte i å utvikle fysisk små produkter for distribusjon i omgivelser med begrenset plass, for eksempel kroppsbårne enheter (wearables). Dette er vanligvis smarte elektroniske systemer som ofte er basert på en mikrokontroller i forening med sensor- og/eller skjermenheter. I noen tilfeller fungerer de som høyteknologiske smykker. I andre tilfeller bæres de nær og/eller på overflaten av huden, der de kan detektere, analysere og overføre kroppsdata som temperatur, hjertefrekvens og pulsoksygenering, samt data om omgivelsene. I noen tilfeller gir de umiddelbar biofeedback til brukeren.
Mange hobbybyggere og produsenter bruker Arduino-mikromaskinutviklingskort til slike konstruksjoner. Det samme gjør et økende antall yrkesingeniører som kan bruke disse utviklingskortene som plattform for evaluering og prototyping, slik at de kan akselerere og redusere kostnader relatert til å evaluere IC-er, sensorer og periferiutstyr.
Slike brukere starter vanligvis med A000073 Arduino Uno Rev3, som faktureres som «Kortet alle starter med» (figur 1). Dette kortet er basert på mikrokontrolleren ATMEGA328P-AUR fra Atmel (nå Microchip Technology). Prosessoren på 5 volt tilbyr 14 digitale innganger/utganger (I/O), hvorav seks kan gi pulsbreddemodulasjon (PWM), sammen med seks analoge inngangspinner, som også kan brukes som digital I/O om nødvendig. Den støtter også to eksterne avbrudd på de digitale inngangs-/utgangspinnene (I/O-pinnene) 2 og 3, sammen med ett hvert av UART-, SPI- og I2C-grensesnittene.
Figur 1: Arduino-utviklingskortet Uno Rev3 er basert på den 8-biters ATmega328P-mikrokontrolleren som kjører med 16 megahertz (MHz). Den fysiske størrelsen til stiftlistene, med 14 digitale I/O-pinner, 6 analoge inngangspinner og forskjellige strøm-, jord- og referansepinner, er grunnlaget for et enormt økosystem av datterkort kalt skjerminger. (Bildekilde: Arduino.cc)
I tillegg til begrensningen til en 8-biters databane og en 16 MHz klokke, kombinert med det faktum at Arduino Uno kun tilbyr 32 kbyte flash-programminne og 2 kbyte SRAM, er dette utviklingskortet, som har en størrelse på 68,6 x 53,4 millimeter (mm) (36,63 centimeter (cm)2), for stort for mange konstruksjoner.
En måte å redusere mikroprosessor-utviklingskortets fysiske størrelse på, er å gå over til en ABX00028 Arduino Nano Every, som er basert på mikrokontrolleren ATMEGA4809-MUR fra Atmel (figur 2). Den har 50 % mer programminne enn Arduino Uno (48 kbyte) og 3 ganger så mye SRAM-minne (6 kbyte). I likhet med Arduino Uno, er Arduino Nano Every basert på en 5-volts prosessor som tilbyr 14 digitale innganger/utganger (I/O) sammen med seks analoge inngangspinner, som også kan brukes som digital I/O om nødvendig. I likhet med Uno, tilbyr Nano Every ett av hvert UART-, SPI- og I2C-grensesnitt. I motsetning til Uno, som bare støtter to eksterne avbrudd, kan imidlertid alle Nano Every sine digitale pinner brukes som eksterne avbrudd.
Figur 2: Arduino Nano Every er en videreutvikling av den tradisjonelle Arduino Nano, men den kommer med en mye kraftigere prosessor, ATMEGA4809, som har 50 % mer programminne enn Arduino Uno, og mye mer plass til variabler ettersom SRAM-minnet er 3 ganger større med 6 kbyte. (Bildekilde: Arduino.cc)
Selv om Arduino Nano Every fortsatt har begrensningen til en 8-biters databuss, har den en raskere klokke (20 MHz) og mer minne (48 kbyte flash og 6 kbyte SRAM). En mer interessant faktor for prosjekter med størrelsesbegrensninger, er at Arduino Nano Every kun er 45 x 18 mm (8,1 cm2).
Et annet populært alternativ som kan programmeres ved å bruke Arduino sitt integrerte utviklingsmiljø (IDE – integrated development environment) er DEV-13736 Teensy 3.2 fra SparkFun Electronics (figur 3). Når det kommer til I/O, har dette 3,3-volts utviklingskortet mye å skryte av, med 34 digitale pinner, hvorav 12 støtter pulsbreddemodulasjon (PWM), sammen med 21 analoge innganger med høy oppløsning.
Figur 3: Teensy 3.2, som fungerer godt med prototypingskort, er et lite utviklingskort som er utviklet av Paul Stoffregen hos PRJC.com. Dette brukervennlige utviklingskortet gir hobbybyggere, studenter og yrkesingeniører en prisgunstig 32-biters Arm® Cortex®-M4-plattform. (Bildekilde: PRJC.com)
Teensy 3.2 er drevet av en MK20DX256VMC7R Kinetis K20-mikrokontroller fra NXP. K20 har en 32-biters Arm Cortex-M4-prosessorkjerne som kjører med 72 MHz, med 256 kbyte flashminne og 64 kbyte SRAM. Av spesiell interesse for prosjekter med størrelsesbegrensninger, er at Teensy 3.2 kun måler 35 x 18 mm (6,3 cm2), noe som er omtrent tre fjerdedeler så stor som Arduino Nano Every.
Vi presenterer Seeeduino XIAO
Selv om Teensy 3.2 bare er 6,3 cm2, er dette fortsatt for stort for mange konstruksjoner. Løsningen for de som er ute etter enda mindre og kraftigere plattformer, ligger i det enorme Arduino-økosystemet. Et relativt nytt alternativ er Seeeduino XIAO fra Seeed Technology (figur 4), som kun måler 23,5 x 17,5 mm (4,11 cm2), noe som er størrelsen på et standard frimerke. Utviklerne av Seeeduino XIAO fokuserte også på svært lave kostnader.
Figur 4: Det prototypingskort-kompatible Seeeduino XIAO er for tiden det minste Arduino-kompatible mikrokontroller-utviklingskortet i Seeeduino-familien, og det gir brukere en kraftig 32-biters Arm Cortex-M0+-prosessor som kjører med 48 MHz. (Bildekilde: Seeed Studio)
Teensy 3.2 er drevet av en ATSAMD21G18A-MUT SAMD21G18-mikrokontroller fra Atmel. Denne mikrokontrolleren har en 32-biters Arm Cortex-M0-prosessorkjerne som kjører med 48 MHz, og er støttet av 256 kbyte med flashminne og 64 kbyte SRAM.
Selv om XIAO bare har 11 datapinner, kan hver av disse pinnene brukes som en digital I/O eller som en analog inngang (figur 5). Ti av pinnene støtter pulsbreddemodulasjon (PWM), og én er utstyrt med en digital-til-analog-omformer (DAC), noe som gjør det mulig å forsyne en sann analog utgangskapasitet. I tillegg støtter XIAO ett av hvert av UART-, SPI- og I2C-grensesnittene.
Figur 5: Alle elleve datapinnene kan fungere som digitale I/O-er (D0 til D10) eller analoge innganger (A0 til A10). Videre kan A0 fungere som en sann analog utgang, D4 og D5 kan fungere som et I2C-grensesnitt, D6 og D7 kan brukes som et UART-grensesnitt, og D8, D9 og D10 kan fungere som et SPI-grensesnitt. (Bildekilde: Seeed Studio)
Distribuere og bruke Seeeduino XIAO
Generelt sett er det like enkelt å jobbe med Seeeduino XIAO som å jobbe med et annet Arduino-utviklingskort eller Arduino-kompatibelt utviklingskort, men det er noen tips og triks som er verdt å merke seg.
Et godt utgangspunkt er å sørge for at du jobber med den nyeste versjonen av Arduino IDE. Deretter besøker du Seeeduino XIAO Wiki for å få instruksjoner om hvordan du kan utvide Arduino IDE med egnet kortstyring (board manager).
Mange Seeeduino XIAO-prosjekter – kroppsbårne enheter og andre typer – vil innebære bruk av trefargede WS2818-baserte NeoPixel-lysdioder fra Adafruit, for eksempel 2970-remsen med 144 NeoPixel-lysdioder per meter (figur 6).
Figur 6: En enkelt pinne på Seeeduino XIAO kan brukes til å individuelt styre hundrevis av trefargede NeoPixel-lysdioder, for eksempel de som finnes på Adafruit sin svarte remse med 144 NeoPixel-lysdioder per meter. (Bildekilde: Adafruit.com)
Et potensielt problem er at selv om tradisjonelle Arduino-utviklingskort kan fortsette å fungere med eldre versjoner av Adafruit NeoPixel-biblioteket, krever Seeeduino XIAO den nyeste og beste versjonen.
Hvis et eldre NeoPixel-bibliotek er installert, kan det oppstå merkelige og forvirrende feilmeldinger. Løsningen er å fjerne alle eldre versjoner av biblioteket fra systemet, og deretter følge instruksjonene på Adafruit sin NeoPixel Überguide for å installere den nyeste og mest avanserte versjonen.
En potensiell bekymring er at NeoPixel-lysdioder er følsomme for positive og negative oversvingninger på datapinnene sine. Problemet er at de raske kantfrekvensene (fast edge rates) til signaler fra moderne mikrokontrollere kan resultere i slike karakteristiske egenskaper. Løsningen er å legge til en seriemotstand så nær det første elementet i NeoPixel-kjeden som mulig (figur 7). Et egnet eksempel er en CF14JT390R-karbonfilmmotstand fra Stackpole Electronics Inc. med 5 % toleranse, 1/4 watt og 390 ohm (Ω) motstand.
Figur 7: En seriemotstand plassert så nærme den første NeoPixel-lysdioden i kjeden som mulig, eliminerer positive og negative oversvingninger på kantene av MCU-datastrømmen. (Bildekilde: Max Maxfield)
Et annet NeoPixel-relatert problem er at Seeeduino XIAO sine 3,3-volts digitalutganger kanskje ikke er tilstrekkelige til å drive NeoPixel sine 5-volts datainnganger. Én løsning kan være å bruke et BOB-12009-utbrytningskort med logisk nivåomformer, fra SparkFun (figur 8).
Figur 8: Den logiske nivåomformeren BOB-12009 fra SparkFun gir fire toveiskanaler som kan brukes til å oversette signaler mellom domenene for 3,3 volt og 5 volt. (Bildekilde: Adafruit.com)
En enkelt enveiskanal er alt som trengs for en NeoPixel-konstruksjon. Problemet med BOB-12009 er at den har fire toveiskanaler, noe som gjør den til en relativt stor løsning for et plassbegrenset prosjekt, og en relativt dyr løsning for et prosjekt med lavt budsjett. Et ukomplisert alternativ er å bruke en enkelt 1N4001-diode fra Comchip Technology (Figur 9).
Figur 9: Ved å bruke en 1N4001-diode til å gi et spenningsfall på 0,7 volt, kan en «ofret» NeoPixel tvinges til å gjøre jobben til en spenningsnivåomformer. (Bildekilde: Max Maxfield)
NeoPixel-lysdioder anser at logikk 1 er alt over 0,7 * VCC. I dette tilfellet vil NeoPixel-lysdioden anse logikk 1 som 0,7 * 5 = 3,5 volt.
Å strømsette en «ofret» piksel via en IN4001-diode, som har et spenningsfall fremover på 0,7 volt, resulterer i at den strømsettes av en VCC på 5 – 0,7 = 4,3 volt, noe som betyr at den vil anse logikk 1 som 0,7 * 4,3 = 3,01 volt. Dette betyr derfor at et 3,3-volts signal fra Seeeduino XIAO kan strømsette den ofrede pikselen uten problemer. Samtidig er utgangen på 4,3 volt fra den ofrede pikselen i stand til å drive datainngangen til neste NeoPixel i kjeden, helt uten problemer.
Konklusjon
Tidlige Arduino-utviklingskort, for eksempel den 8-biters, 16 MHz Arduino Uno, var fysisk store og begrenset med hensyn til kapasitet og ytelse. I dag inkluderer Arduino-økosystemet et enormt utvalg av kort, som består av et bredt spekter av former, størrelser og funksjoner.
For prosjekter begrenset av størrelse, for eksempel kroppsbårne enheter, tilbyr Seeeduino XIAO en 32-biters Arm-Cortex-M0+-prosessorkjerne som kjører med 48 MHz, 256 kbyte flashminne og 64 kbyte SRAM. Alt dette er presentert på en bitteliten prototypingskort-kompatibel plattform med bred økosystemstøtte, som kun måler 4,11 cm2.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




