Utvärdera olika utvecklings- och prototypkort för bärbara tillämpningar
Bidraget med av DigiKeys nordamerikanska redaktörer
2020-08-12
Konceptet Arduino med öppen källkod har visat sig vara oerhört framgångsrikt bland hobbyister och tillverkare. Det har även anammats av professionella konstruktörer för tidig utveckling och prototypframställning, och på senare tid även för fullskaliga konstruktioner. I takt med att tillämpningar som bärbara produkter och hälsoövervakning ökar, kräver båda typerna av användare högre prestanda och mer funktionalitet i allt mindre kortformat.
Artikeln diskuterar kortfattat hur Arduino-korten har utvecklats för att uppfylla tillverkares och professionella konstruktörers behov av hög prestanda och funktionalitet i tillämpningar med låg strömförbrukning och begränsat utrymme. Den presenterar och visar sedan hur man kommer igång med ett nytt tillskott i Arduino-familjen, Seeeduino XIAO från Seeed Technology Co.
Hur Arduino utvecklades för att uppfylla kraven på bärbar design
Många hobbyister och konstruktörer är intresserade av att utveckla fysiskt små produkter för användning i miljöer med begränsat utrymme, inklusive bärbara produkter. Dessa är vanligtvis smarta elektroniska system som baseras på en mikrokontroller i kombination med sensor- och/eller displayenheter. I vissa fall fungerar de som högteknologiska smycken. I andra fall bärs de nära och/eller på hudytan, där de kan upptäcka, analysera och överföra kroppsdata som temperatur, hjärtfrekvens och blodets syrehalt samt information om miljön. I vissa fall ger de bäraren en omedelbar biologisk återkoppling.
För sådana konstruktioner använder många hobbyister och tillverkare utvecklingskort för mikrodatorn Arduino. Det gör också ett ökande antal professionella ingenjörer som kan använda dessa utvecklingskort som plattformar för utvärdering och prototyper för att skynda på och sänka kostnaderna för utvärdering av integrerade kretsar, sensorer och kringutrustning.
Sådana användare börjar vanligtvis med A000073 Arduino Uno Rev3, som beskrivs som "Kortet som alla börjar med" (figur 1). Kortet är baserat på mikrokontrollern ATMEGA328P-AUR från Atmel (numera Microchip Technology). Processorn på 5 V har 14 digitala in- och utgångar (I/O), varav sex kan tillhandahålla pulsbreddsmodulering (PWM), tillsammans med sex analoga ingångar som även kan användas som digitala I/O om så krävs. Den har även stöd för två externa avbrott på de digitala I/O-stiften 2 och 3, tillsammans med något av gränssnitten UART, SPI och I2C.
Figur 1: Utvecklingskortet Arduino Uno Rev3 är baserat på 8-bitars mikrokontrollern ATmega328P som arbetar med 16 MHz. Formatet för dess kontakter med 14 digitala I/O-stift, 6 stift för analoga ingångar och olika ström-, jord- och referensstift utgör grunden för ett enormt ekosystem av tilläggskort som kallas "shields" (Bildkälla: Arduino.cc)
Förutom begränsningen med en 8-bitars dataväg och en klocka på 16 MHz, tillsammans med det faktum att Arduino Uno endast har 32 kb flash-minne för program och 2 kb SRAM, är utvecklingskortet för stort för många tillämpningar, med måtten 68,6 x 53,4 mm (36,63 cm2).
Ett sätt att minska det fysiska formatet på utvecklingskortet för mikroprocessorn är att byta till en ABX00028 Arduino Nano Every, som är baserad på mikrokontrollern ATMEGA4809-MUR från Atmel (figur 2). Den har 50 % mer programminne än Arduino Uno (48 kb) och tre gånger mer SRAM (6 kb). Liksom Arduino Uno är Arduino Nano Every baserad på en processor för 5 V som erbjuder 14 digitala I/O-stift tillsammans med sex analoga ingångar, som även kan användas som digitala I/O om det skulle behövas. Liksom Uno har Nano Every även ett UART-, SPI- och I2C-gränssnitt. Till skillnad från Uno som endast stöder två externa avbrott kan alla digitala stift på Nano Every användas för externa avbrott.
Figur 2: Arduino Nano Every är en vidareutveckling av den klassiska Arduino Nano men har en betydligt kraftfullare processor, ATMEGA4809, som har 50 % mer programminne än Arduino Uno och mycket mer utrymme för variabler eftersom SRAM-minnet är 3 gånger större, 6 kb. (Bildkälla: Arduino.cc)
Även om Arduino Nano Every fortfarande har begränsningen med en 8-bitars databuss har den en snabbare klocka (20 MHz) och mer minne (48 kb flash-minne och 6 kb SRAM). För projekt med begränsad storlek är det viktigare att Arduino Nano Every inte är större än 45x18 mm (8,1 cm2).
Ett annat populärt alternativ som kan programmeras med hjälp av Arduinos integrerade utvecklingsmiljö (IDE) är DEV-13736 Teensy 3.2 från SparkFun Electronics (figur 3). När det gäller I/O ökar det här utvecklingskortet för 3,3 V insatserna rejält, med 34 digitala stift, varav 12 stöder PWM, och 21 analoga ingångar med hög upplösning.
Figur 3: Teensy 3.2 är ett litet, utvecklingskort som är anpassat för kopplingsdäck och har konstruerats av Paul Stoffregen på PRJC.com. Detta användarvänliga utvecklingskort ger hobbyister, studenter och professionella ingenjörer en billig plattform med en 32-bitars Arm® Cortex®-M4. (Bildkälla: PRJC.com)
Teensy 3.2 drivs av mikrokontrollern MK20DX256VMC7R Kinetis K20 från NXP. K20 har en 32-bitars Arm Cortex-M4-processorkärna och kan köras med klockfrekvenser upp till 72 MHz, 256 kb flash-minne och 64 kb SRAM. Särskilt intressant för projekt med begränsat utrymme är det faktum att Teensy 3.2 med sina 35x18 mm (6,3 cm2) är ungefär tre fjärdedelar så stor som Arduino Nano Every.
Vi presenterar Seeeduino XIAO
Även om Teensy 3.2 bara är 6,3 cm2, är det fortfarande för stort för många tillämpningar. Lösningen för dem som söker mindre och kraftfullare plattformar finns i det stora ekosystemet för Arduino. Ett relativt nytt alternativ är Seeeduino XIAO från Seeed Technology (figur 4), som har måtten 23,5x17,5 mm (4,11 cm2), vilket motsvarar storleken på ett vanligt frimärke. Konstruktörerna av Seeeduino XIAO fokuserade även på extremt låga kostnader.
Figur 4: Seeeduino XIAO är för närvarande det minsta utvecklingskortet som är kompatibelt med Arduino för mikrokontroller i Seeeduino-familjen, och Seeeduino XIAO som är anpassad för kopplingsdäck ger användarna en kraftfull 32-bitars Arm Cortex-M0+-processor med en hastighet på 48 MHz. (Bildkälla: Seeed Studio)
XIAO drivs av mikrokontrollern ATSAMD21G18A-MUT SAMD21G18 från Atmel. Mikrokontrollern har en 32-bitars Arm Cortex-M0+-processorkärna som körs med 48 MHz med 256 kb flash-minne och 64 kb SRAM.
Även om XIAO endast har 11 datastift kan vart och ett av dessa stift användas som en digital I/O eller som en analog ingång (figur 5). Tio av stiften har stöd för PWM, och ett är utrustat med en digital-till-analogomvandlare (DAC), vilket gör att den har kapacitet för en äkta analog utgång. Dessutom har XIAO stöd för vart och ett av gränssnitten UART, SPI och I2C.
Figur 5: Alla elva datastift som kan agera som digitala I/O (D0 till D10) eller analoga ingångar (A0 till A10). Dessutom kan A0 agera som en äkta analog utgång, D4 och D5 kan fungera som ett I2C-gränssnitt, D6 och D7 kan användas som ett UART-gränssnitt och D8, D9 och D10 kan fungera som ett SPI-gränssnitt. (Bildkälla: Seeed Studio)
Distribution och användning av Seeeduino XIAO
Generellt sett är det lika enkelt att arbeta med Seeeduino XIAO som med vilket annat Arduino eller Arduino-kompatibelt utvecklingskort som helst, men det finns några tips och tricks som är värda att notera.
En bra utgångspunkt är att se till att du arbetar med den senaste versionen av Arduinos IDE. Besök sedan Seeeduino XIAO Wiki för anvisningar om hur du utökar Arduinos IDE med lämplig korthanterare.
Många projekt med Seeeduino XIAO - bärbara och andra - kommer att involvera trefärgade WS2818-baserade NeoPixels från Adafruit, till exempel 2970-remsan med 144 NeoPixels per meter (figur 6).
Figur 6: Ett enda stift på Seeeduino XIAO kan användas för att styra hundratals trefärgade NeoPixels individuellt, sådana som finns på den svarta remsan med 144 NeoPixels per meter från Adafruit. (Bildkälla: Adafruit.com)
Ett potentiellt problem är att medan traditionella utvecklingskort för Arduino kan fortsätta att fungera med äldre versioner av Adafruits NeoPixel-bibliotek, kräver Seeeduino XIAO den senaste och bästa versionen.
Om ett äldre NeoPixel-bibliotek är installerat kan konstiga och förvirrande felmeddelanden uppstå. Lösningen är att ta bort alla äldre versioner av biblioteket från systemet och sedan följa instruktionerna i Adafruits NeoPixel Überguide för att installera den senaste och bästa versionen.
Ett potentiellt problem är att NeoPixels är känsliga för överskott- och underskott på sina datastift. Problemet är att de snabba flankhastigheterna hos signaler från moderna mikrokontrollers kan leda till sådana egenskaper. Lösningen är att lägga till ett seriemotstånd så nära det första elementet i NeoPixel-kedjan som möjligt. (figur 7). Ett lämpligt exempel är ett motstånd med 5 % tolerans, 1/4 watt, 390 Ω, som t.ex. kolfilmsmotståndet CF14JT390R från Stackpole Electronics Inc.
Figur 7: Ett seriemotstånd som placeras så nära den första NeoPixeln i kedjan som möjligt, eliminerar över- och underskott på flankerna i MCU-dataströmmen. (Bildkälla: Max Maxfield)
Ett annat NeoPixel-relaterat problem är att Seeeduino XIAO:s digitala utgångar på 3,3 V digitala utgångar kanske inte räcker till för att driva NeoPixels dataingångar på 5 V. En lösning är att använda utbrytningskortet BOB-12009 för logiknivåomvandling från SparkFun (figur 8).
Figur 8: Logiknivåomvandlaren BOB-12009 från SparkFun har fyra dubbelriktade kanaler som kan användas för att överföra signaler mellan domäner för 3,3 och 5 V. (Bildkälla: Adafruit.com)
Allt som krävs för en tillämpning med NeoPixel är en enda enkel enkelriktad kanal. Problemet med BOB-12009 är att den har fyra dubbelriktade kanaler, vilket gör den till en relativt stor lösning för ett projekt med begränsat utrymme och en relativt dyr lösning för ett kostnadskänsligt projekt. Ett enkelt alternativ är att använda en enda 1N4001-diod från Comchip Technology(figur 9).
Figur 9: Med hjälp av en 1N4001-diod som ger ett spänningsfall på 0,7 volt kan en "offrande" NeoPixel tvingas till att agera som en spänningsnivåomvandlare. (Bildkälla: Max Maxfield)
NeoPixels anser att en logisk 1:a är allt över 0,7 V x VCC. I det här fallet betraktar NeoPixel en logisk 1:a som 0,7 x 5 = 3,5 V.
Om en "offrande" pixel försörjs via en IN4001-diod, med en framspänning på 0,7 V, försörjs den av en VCC på 5 - 0,7 = 4,3 V, vilket innebär att den betraktar en logisk 1:a som 0,7 x 4,3 = 3,01 V. Detta innebär i sin tur att en signal på 3,3 V signal från Seeeduino XIAO är mer än tillräckligt för att driva den offrande pixeln. Samtidigt är utgången på 4,3 V från den offrande pixeln mer än tillräckligt för att driva dataingången på nästa NeoPixel i kedjan.
Sammanfattning
Tidiga utvecklingskort för Arduino, som 8-bitars, 16 MHz Arduino Uno, var fysiskt stora och begränsade i fråga om kapacitet och prestanda. Idag omfattar ekosystemet för Arduino ett enormt antal kort med med olika former, storlekar och funktioner.
För projekt med begränsat utrymme, som exempelvis bärbara produkter, erbjuder Seeeduino XIAO en 32-bitars Arm-Cortex-M4-processorkärna och kan köras med klockfrekvenser upp till 48 MHz med 256 kb flash-minne och 64 kb SRAM. Allt detta presenteras på en liten plattform anpassad för kopplingsdäck, med har måtten 4,11 cm2 och ett stort stöd i ekosystemet.
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.




