- Arduino Nano 33 BLE Sense
- Arduino Nano 33 BLE Sense Hardware Oversikt
- Programvare forbedringer med Arduino Nano 33 BLE sense
- Forbereder Arduino IDE for Arduino Nano 33 BLE sense
- Program for å lese sensordata og vise på Serial Monitor
- Arduino Nano 33 BLE- Laster opp koden
Arduino har vært utviklingsplattformen for rask prototyping og idevalidering. Mange av oss ville ha startet med Arduino UNO-utviklingsstyret, men i dag når vi går videre mot tingenes internett, Computer Vision, kunstig intelligens, maskinlæring og andre futuristiske teknologier, kunne den ydmyke Arduino UNO ikke lenger takle sine 8 -bit mikrokontroller. Dette krevde lansering av nye kort med kraftigere prosessorer som har innebygd Wi-Fi, Bluetooth, GSM og andre trådløse funksjoner, som den populære MKR1000 eller MKR GSM 1400. I denne sammenheng har Arduino nylig lansert en ny versjon av sin Nano kalt Arduino Nano 33.
Det er totalt to typer Arduino Nano 33-brett, nemlig Arduino Nano 33 IoT og Arduino Nano 33 BLE sense. Hovedforskjellen mellom begge modulene er at Arduino Nano 33 BLE sense- modulen har noen innebygde sensorer (vil komme i detaljer senere) mens Arduino Nano 33 IoT ikke har dem. I denne artikkelen vil vi gjennomgå Arduino Nano 33 BLE sensorkort, introdusere deg for funksjonene og funksjonene og til slutt skrive en prøvekode for å lese sensorverdiene og vise på seriell skjerm. Så la oss lære….!
Arduino Nano 33 BLE Sense
Navnet “Arduino Nano 33 BLE Sense” er munnfull, men selve navnet legger ut litt viktig informasjon. Det kalles "Nano" fordi dimensjonene, pinout og formfaktor er veldig lik den klassiske Arduino Nano, det er faktisk planlagt å brukes som erstatning for Arduino Nano i dine eksisterende prosjekter, men fangsten er at denne nye modulen fungerer på 3,3V mens den klassiske Nano opererer på 5V. Så jeg tror det er her navnet 33 kommer inn, for å indikere at styret opererer på 3,3V. Da indikerer navnet “BLE” at modulen støtter Bluetooth Low Energy (BLE5 5.0)og navnet "sense" indikerer at den har innebygde sensorer som akselerometer, gyroskop, magnetometer, temperatur- og fuktighetssensor, trykksensor, nærhetssensor, fargesensor, gestsensor og til og med en innebygd mikrofon. Vi vil komme inn på detaljene til BLE og andre sensorer senere, men for nå er det slik et Arduino Nano 33 BLE sense-kort ser rett ut av un-boxing.
Arduino Nano 33 BLE Sense Hardware Oversikt
Ved første blikk på tavlen kan du finne mange komponenter overfylt på toppen, hvorav de fleste er sensorer som jeg fortalte tidligere. Men hovedhjernen er skjult bak metallhylsen på høyre side. Dette dekselet inneholder den nordiske nRF52840-prosessoren som inneholder en kraftig Cortex M4F og NINA B306- modulen for BLE- og Bluetooth 5-kommunikasjon. Dette gjør at styret kan operere på svært lav effekt og kommunisere ved hjelp av Bluetooth 5, noe som gjør det ideelt for nettverksapplikasjoner med lav effekt i hjemmeautomatisering og andre tilkoblede prosjekter. Også siden nRF-prosessoren støtter ARM Mbed OSdet gir også noen forbedringer av programvaren som vi vil diskutere senere. Sensorene, lysdiodene, trykknappene og andre viktige ting du bør vite på brettet ditt er merket i bildet nedenfor.
Som du kan se fra bildet ovenfor, er kortet strømpakket med sensorer som kan hjelpe deg med å bygge høyre side av esken uten å måtte koble kortet til noen eksterne sensorer. Brettet er beregnet på bruk i bærbare enheter og andre smarte bærbare enheter som Fitness-bånd, Glukoseovervåking, Skritteller, smartklokke, værstasjon, Hjemmesikkerhet osv. Hvor du skal bruke de fleste av disse sensorene. Og som alltid har alle disse sensorene forhåndsbygde biblioteker for Arduino som du kan bruke lett. På slutten av denne artikkelen vil vi lese verdier fra alle disse sensorene og vise dem på seriell skjerm. Sensordetaljene på Arduino Nano 33 BLE sensorkort sammen med nødvendige biblioteker er tabellert nedenfor
Sensornavn |
Parametere |
Lenker |
LSM9DSI - ST mikroelektronikk |
Akselerometer, gyroskop, magnetometer |
LSMDSI-datablad Arduino_LSM9DS1 Bibliotek |
LPS22HB - ST mikroelektronikk |
Press |
LPS22HB Dataark Arduino_LPS22HB-bibliotek |
HTS221 - ST mikroelektronikk |
Temperatur og fuktighet |
LPS22HB Dataark Arduino_HTS221 bibliotek |
APDS9960 - Avago Tech. |
Nærhet, lys, farge, gest |
LPS22HB Dataark Arduino_APDS9960 bibliotek |
MP34DT05 - ST Mikroelektronikk |
Mikrofon |
MP34DT05 Dataark Innebygd PDM-bibliotek |
De fleste av disse sensorene er fra ST Microelectronics, og de støtter drift med lite strøm, noe som gjør den ideell for batteridrevne design. Få mennesker er kanskje allerede kjent med APDS9960-sensoren, siden den allerede er tilgjengelig som en skifermodul, og vi har også brukt APDS9960-sensoren med Arduino tidligere. For mer informasjon om disse sensorene, kan du gå til det respektive databladet og også sørge for at du har lagt til hele det medfølgende biblioteket til din Arduino IDE for å begynne å bruke dem med Arduino Nano 33 BLE sensorkort. For å legge til et bibliotek kan du bruke den gitte lenken for å komme til den respektive GitHub-siden og laste ned ZIP-filen, deretter bruke Skisse -> Inkluder bibliotek -> Add.ZIP-bibliotek, eller du kan også bruke biblioteksbehandling på Arduino IDE og legge til disse biblioteker.
Arduino Nano 33 BLE sense Board Tekniske spesifikasjoner:
Drevet av den nordiske nRF52840 prosessoren, har Arduino Nano 44 BLE-kortet følgende tekniske spesifikasjoner
- Driftsspenning: 3,3V
- USB-inngangsspenning: 5V
- Inngangspenningsspenning: 4,5V til 21V
- Chip: NINA-B3 - RF52840
- Klokke: 64MHz
- Blits: 1 MB
- SRAM: 256 KB
- Trådløs tilkobling: Bluetooth 5.0 / BLE
- Grensesnitt: USB, I2C, SPI, I2S, UART
- Digitale I / O-pinner: 14
- PWM-pinner: 6 (8-biters oppløsning)
- Analoge pinner: 8 (10-biters eller 12-biters konfigurerbar)
Programvare forbedringer med Arduino Nano 33 BLE sense
Akkurat som alle Arduino-brett der ute, kan Arduino Nano 33 BLE-sansen programmeres med Arduino IDE. Men du må bruke styrelederen og legge til styreopplysningene i IDE før du kan begynne. Som vi vet kan nRF 52840 programmeres ved hjelp av ARM Mbed OS, dette betyr at vårt Arduino Nano 33-kort støtter sanntidsoperativsystem (RTOS). Med Mbed OS-programmering kan vi kjøre flere tråder samtidig i programmet for å utføre multitasking. Strømforbruket på kortet vil også bli kraftig redusert, hver gang vi kaller forsinkelsesfunksjonen, går kortet inn i kildemodus i løpet av forsinkelsestiden for å spare strøm og vil hoppe i drift igjen når forsinkelsen er over. Det er rapportert at denne operasjonen vil forbruke 4,5uA mindre enn en vanlig Arduino forsinkelsesoperasjon.
Når det er sagt, er Mbed OS-integrasjonen med Arduino IDE relativt ny, og det vil ta litt tid før vi fullt ut kan utnytte den fulle kraften til Mbed OS med Arduino IDE. Så for en rask oppstart, vil vi skrive et program for å lese alle sensorens verdier og vise det på seriemonitorene.
Forbereder Arduino IDE for Arduino Nano 33 BLE sense
Start din Arduino IDE og gå til Verktøy -> Tavler -> Board Manger for å starte din Arduino Board Manager. Søk nå etter “Mbed OS” og installer pakken. Det bør ta litt tid før installasjonen er fullført.
Når installasjonen er fullført, lukker du dialogboksen og kobler Arduino 33-kortet med en mikro-USB-kabel med den bærbare datamaskinen. Så snart du kobler til, begynner vinduet automatisk å installere de nødvendige driverne for kortet. Åpne deretter Arduino IDE og velg Verktøy -> Kort -> Arduino Nano 33. Velg deretter riktig COM-port ved å merke av Verktøy -> Port, min er koblet til port COM3, men din kan variere. Etter at porten er valgt, skal IDE nederst til høyre se slik ut
Nå for å raskt sjekke om alt fungerer, kan vi bruke et eksempelprogram, la oss prøve det som er gitt under File -> Eksempler -> PDM -> PDMSerialPlotter. Dette programmet vil bruke den innebygde mikrofonen til å lytte etter lyd og plotte den på en seriell plotter. Du kan laste opp programmet og sjekke om styret og IDE fungerer.
Nå hvis du opplever en latterlig treg kompilering, er du ikke alene, mange mennesker inkludert meg står overfor dette problemet, og når det skrives denne artikkelen, ser det ut til å være ingen løsning. Det tar meg rundt 2-3 minutter å kompilere og laste opp enkle programmer, og da jeg prøvde noen BLE-programmer eller prøvde å jobbe med Mbed OS, økte kompileringstiden til mer enn 10 minutter, noe som ikke oppmuntret meg til å prøve noe videre. Dette er på grunn av Mbed OS-integrasjonen med Arduino IDE, la oss håpe noen fra det fantastiske Arduino-samfunnet kommer med en løsning på dette.
Program for å lese sensordata og vise på Serial Monitor
Hvis vi ikke bruker BLE eller kjerne Mbed OS-funksjonene til tavlen, var kompileringstiden rimelig. Så jeg skrev en enkel skisse for å lese alle sensorverdiene og vise den på seriell skjerm som vist nedenfor
Den komplette koden for å gjøre det samme er gitt nederst på denne siden, men sørg for at du har installert alle bibliotekene som er nevnt ovenfor. Forklaringen på koden er som følger.
Start programmet ved å inkludere alle nødvendige headerfiler. Her skal vi bruke alle de fire sensorene bortsett fra mikrofonen
# inkludere // Inkluder biblioteket for 9-akset IMU # inkludere // Inkluder bibliotek for å lese Trykk # inkludere // Inkluder bibliotek for å lese Temperatur og fuktighet # inkludere // Inkluder bibliotek for farge, nærhet og gestgjenkjenning
Inne i oppsettfunksjonen initialiserer vi den serielle skjermen til 9600 baudrate for å vise alle sensorverdiene og initialisere også alle nødvendige biblioteker. Koden i oppsettet er vist nedenfor
ugyldig oppsett () {Serial.begin (9600); // Seriell skjerm for å vise alle sensorverdier hvis (! IMU.begin ()) // Initialiser IMU-sensor {Serial.println ("Kunne ikke initialisere IMU!"); while (1);} if (! BARO.begin ()) // Initialize Pressure sensor {Serial.println ("Kunne ikke initialisere trykksensor!"); while (1);} if (! HTS.begin ()) // Initialisere temperatur- og fuktighetssensor {Serial.println ("Kunne ikke initialisere temperatur- og fuktighetssensor!"); while (1);} if (! APDS.begin ()) // Initialisere farge-, nærhets- og gestsensor {Serial.println ("Kunne ikke initialisere farge-, nærhets- og gestsensor!"); mens (1);}}
Inne i sløyfefunksjonen leser vi de nødvendige sensorverdiene fra biblioteket og skriver dem ut på seriell skjerm. Syntaksen kan henvises fra eksempelprogrammet til hvert bibliotek, vi har lest akselerometer-, gyroskop-, magnetometer-, trykk-, temperatur-, fuktighets- og nærhetssensorverdier og vist dem på seriell skjerm. Koden for å måle akselerometerverdien er vist nedenfor, og vi kan også måle for alle sensorer.
// Akselerometerverdier hvis (IMU.accelerationAvailable ()) {IMU.readAcceleration (accel_x, accel_y, accel_z); Serial.print ("Accelerometer ="); Serial.print (accel_x); Serial.print (","); Serial.print (accel_y); Serial.print (","); Serial.println (accel_z); } forsinkelse (200);
Arduino Nano 33 BLE- Laster opp koden
Å laste opp koden til Nano 33 ligner på alle andre kort, men vær oppmerksom på at kortet har to COM-porter. Når du klikker på opplastingsknappen, kompilerer Arduino IDE koden og tilbakestiller deretter kortet automatisk gjennom programvarekommando, dette vil sette brettet i boot loader-modus og laste opp koden din. På grunn av dette, når opplastingen er ferdig, vil du kanskje legge merke til at Arduino IDE automatisk har endret COM-porten til et annet nummer, og du vil kanskje endre den tilbake før du åpner den serielle skjermen.
Så dette er ganske mye min erfaring med Arduino Nano 33-kortet hittil, jeg vil prøve å bygge noe med sensorene og BLE-funksjonene en gang senere i fremtiden. Hvordan var din erfaring med styret? Hva vil du at jeg skal bygge med det? Legg igjen svarene i kommentarseksjonen, så diskuterer vi mer.