- Arduino Nano 33 BLE Sense
- Arduino Nano 33 BLE Sense Hardware Oversigt
- Software forbedringer med Arduino Nano 33 BLE sense
- Forberedelse af din Arduino IDE til Arduino Nano 33 BLE sense
- Programmer til at læse sensordata og vise på Serial Monitor
- Arduino Nano 33 BLE- Uploade koden
Arduino har været udviklingsplatformen til hurtig prototyping og idévalidering. Mange af os ville være startet med Arduino UNO-udviklingskortet, men i dag, når vi skrider frem mod tingenes internet, computersyn, kunstig intelligens, maskinindlæring og andre futuristiske teknologier, kunne den ydmyge Arduino UNO ikke længere klare sine 8 -bit mikrokontroller. Dette krævede lancering af nye kort med mere kraftfulde processorer, der har indbygget Wi-Fi, Bluetooth, GSM og andre trådløse funktioner, som den populære MKR1000 eller MKR GSM 1400. I denne sammenhæng har Arduino for nylig lanceret en ny version af sin Nano kaldet Arduino Nano 33.
Der er totalt to typer Arduino Nano 33-brædder, nemlig Arduino Nano 33 IoT og Arduino Nano 33 BLE sense. Hovedforskellen mellem begge moduler er, at Arduino Nano 33 BLE sense- modulet har nogle indbyggede sensorer (vil komme i detaljer senere), mens Arduino Nano 33 IoT ikke har dem. I denne artikel vil vi gennemgå Arduino Nano 33 BLE sense-kortet, introducere dig til dets funktioner og funktioner og til sidst skrive en prøvekode for at læse sensorværdierne og vise på seriel skærm. Så lad os lære…….!
Arduino Nano 33 BLE Sense
Navnet “Arduino Nano 33 BLE Sense” er mundfyldt, men selve navnet indeholder nogle vigtige oplysninger. Det kaldes "Nano", fordi dimensionerne, pinout og formfaktor ligner meget den klassiske Arduino Nano, det er faktisk planlagt at blive brugt som erstatning for Arduino Nano i dine eksisterende projekter, men fangsten er, at dette nye modul fungerer på 3.3V, mens den klassiske Nano fungerer på 5V. Så jeg tror, det er her navnet "33" kommer ind for at indikere, at kortet fungerer på 3.3V. Derefter indikerer navnet “BLE”, at modulet understøtter Bluetooth Low Energy (BLE5 5.0)og navnet ”sense” indikerer, at det har indbyggede sensorer som accelerometer, gyroskop, magnetometer, temperatur- og fugtighedsføler, trykføler, nærhedsføler, farvesensor, bevægelsessensor og endda en indbygget mikrofon. Vi kommer ind på detaljerne i BLE og andre sensorer senere, men for nu er det sådan, et Arduino Nano 33 BLE sense-kort ser lige ud af un-boksning.
Arduino Nano 33 BLE Sense Hardware Oversigt
Ved det første kig på tavlen kan du finde en masse komponenter overfyldt øverst, hvoraf de fleste er sensorer, som jeg fortalte tidligere. Men hovedhjernen er skjult bag metalhuset på højre side. Dette kabinet indeholder den nordiske nRF52840-processor, der indeholder en kraftig Cortex M4F og NINA B306- modulet til BLE- og Bluetooth 5-kommunikation. Dette gør det muligt for tavlen at køre med meget lav effekt og kommunikere ved hjælp af Bluetooth 5, hvilket er ideelt til netværksapplikationer med lavt strømniveau i hjemmeautomatisering og andre tilsluttede projekter. Også da nRF-processoren understøtter ARM Mbed OSdet giver også nogle software forbedringer, som vi vil diskutere senere. Sensorer, lysdioder, trykknapper og andre vigtige ting, som du bør vide på dit bord, er markeret i nedenstående billede.
Som du kan se fra ovenstående billede, er kortet strømforsyet med sensorer, der kan hjælpe dig med at oprette højre for kassen uden engang at skulle forbinde kortet til nogen eksterne sensorer. Tavlen er beregnet til at blive brugt i bærbare enheder og andre smarte bærbare enheder som fitnessbånd, glukosemonitorering, skridttællere, smartwatch, vejrstation, sikkerhed i hjemmet osv., Hvor du bruger de fleste af disse sensorer. Og som altid har alle disse sensorer forudbyggede biblioteker til Arduino, som du let kan bruge. I slutningen af denne artikel læser vi værdier fra alle disse sensorer og viser dem på den serielle skærm. Sensordetaljerne på Arduino Nano 33 BLE sense-kort sammen med de krævede biblioteker er tabelleret nedenfor
Sensornavn |
Parametre |
Links |
LSM9DSI - ST mikroelektronik |
Accelerometer, gyroskop, magnetometer |
LSMDSI-datablad Arduino_LSM9DS1 Bibliotek |
LPS22HB - ST mikroelektronik |
Tryk |
LPS22HB datablad Arduino_LPS22HB-bibliotek |
HTS221 - ST mikroelektronik |
Temperatur og fugtighed |
LPS22HB datablad Arduino_HTS221 Bibliotek |
APDS9960 - Avago Tech. |
Nærhed, lys, farve, gestus |
LPS22HB datablad Arduino_APDS9960 Bibliotek |
MP34DT05 - ST mikroelektronik |
Mikrofon |
MP34DT05 datablad Indbygget PDM-bibliotek |
De fleste af disse sensorer er fra ST Microelectronics, og de understøtter drift med lav effekt, hvilket gør den ideel til batteridrevne designs. Få mennesker er måske allerede bekendt med APDS9960-sensoren, da den allerede er tilgængelig som et skifermodul, og vi har også tidligere brugt APDS9960-sensoren med Arduino. For mere information om disse sensorer kan du besøge det respektive datablad og også sørge for, at du har tilføjet hele det medfølgende bibliotek til din Arduino IDE for at begynde at bruge dem med dit Arduino Nano 33 BLE-sensorkort. For at tilføje et bibliotek kan du bruge det givne link til at komme til den respektive GitHub-side og downloade ZIP-filen, derefter bruge Skitse -> Inkluder bibliotek -> Tilføj.ZIP-bibliotek, eller du kan også bruge biblioteksadministratoren på Arduino IDE og tilføje disse biblioteker.
Arduino Nano 33 BLE sense Board Tekniske specifikationer:
Drevet af den nordiske nRF52840-processor har Arduino Nano 44 BLE-kortet følgende tekniske specifikationer
- Driftsspænding: 3,3 V.
- USB-indgangsspænding: 5V
- Input-pin spænding: 4,5V til 21V
- Chip: NINA-B3 - RF52840
- Ur: 64MHz
- Flash: 1 MB
- SRAM: 256 KB
- Trådløs forbindelse: Bluetooth 5.0 / BLE
- Grænseflader: USB, I2C, SPI, I2S, UART
- Digitale I / O-pins: 14
- PWM-pins: 6 (8-bit opløsning)
- Analoge pins: 8 (10-bit eller 12-bit konfigurerbar)
Software forbedringer med Arduino Nano 33 BLE sense
Ligesom alle Arduino-brædder derude, kan Arduino Nano 33 BLE-sans programmeres med Arduino IDE. Men du skal bruge bestyrelsesadministratoren og tilføje bestyrelsesoplysningerne til din IDE, før du kan begynde. Som vi ved, kan nRF 52840 programmeres ved hjælp af ARM Mbed OS, det betyder, at vores Arduino Nano 33-kort understøtter RTOS (Real-Time Operating System). Med Mbed OS-programmering kan vi køre flere tråde på samme tid i programmet for at udføre multi-tasking. Boardets strømforbrug reduceres også kraftigt, hver gang vi kalder forsinkelsesfunktionen, går kortet ind i kildetilstand i løbet af forsinkelsestiden for at spare strøm og vil hoppe i drift igen, når forsinkelsen er forbi. Det rapporteres, at denne operation vil forbruge 4,5uA mindre end en normal Arduino-forsinkelsesoperation.
Når det er sagt, er Mbed OS-integrationen med Arduino IDE relativt ny, og det vil tage noget tid, før vi fuldt ud kan udnytte den fulde kraft af Mbed OS med Arduino IDE. Så for en hurtig opstart vil vi skrive et program til at læse alle sensorens værdier og vise det på de serielle skærme.
Forberedelse af din Arduino IDE til Arduino Nano 33 BLE sense
Start din Arduino IDE og gå til Værktøjer -> Boards -> Board Manger for at starte din Arduino Board manager. Søg nu efter "Mbed OS" og installer pakken. Det skal tage lidt tid, før installationen er afsluttet.
Når installationen er færdig, skal du lukke dialogboksen og slutte dit Arduino 33-kort ved hjælp af et mikro-USB-kabel til din bærbare computer. Så snart du tilslutter, begynder tavlen automatisk at installere de nødvendige drivere til tavlen. Åbn derefter din Arduino IDE, og vælg Værktøjer -> Board -> Arduino Nano 33. Vælg derefter også den rigtige COM-port ved at markere Tools -> Port, min er forbundet til port COM3, men din kan variere. Når porten er valgt, skal dit IDE nederste højre hjørne se sådan ud
Nu for hurtigt at kontrollere, om alt fungerer, kan vi bruge et eksempelprogram, lad os prøve det, der findes i File -> Eksempler -> PDM -> PDMSerialPlotter. Dette program bruger den indbyggede mikrofon til at lytte til lyd og plotte den på en seriel plotter. Du kan uploade programmet og kontrollere, om tavlen og IDE fungerer.
Nu hvis du oplever en latterligt langsom kompilering, så er du ikke alene, mange mennesker inklusive mig står over for dette problem, og på tidspunktet for skrivningen af denne artikel synes der ikke at være nogen løsning. Det tager mig omkring 2-3 minutter at kompilere og uploade enkle programmer, og da jeg prøvede nogle BLE-programmer eller prøvede at arbejde med Mbed OS, steg kompileringstiden til mere end 10 minutter, hvilket ikke tilskyndede mig til at prøve noget videre. Dette er på grund af Mbed OS-integrationen med Arduino IDE, lad os håbe, at nogen fra det vidunderlige Arduino-samfund kommer med en løsning på dette.
Programmer til at læse sensordata og vise på Serial Monitor
Hvis vi ikke bruger kortets BLE- eller core Mbed OS-funktioner, var kompileringstiden rimelig. Så jeg skrev en simpel skitse for at læse alle sensorværdierne og vise den på den serielle skærm som vist nedenfor
Den komplette kode for at gøre det samme findes nederst på denne side, men sørg for at du har installeret alle de ovennævnte biblioteker. Forklaringen på koden er som følger.
Start programmet ved at inkludere alle de nødvendige headerfiler. Her bruger vi alle de fire sensorer undtagen mikrofonen
#include // Inkluder biblioteket til 9-akset IMU #include // Inkluder bibliotek for at læse Tryk # inkludere // Inkluder bibliotek for at læse Temperatur og fugtighed # inkludere // Inkluder bibliotek til farve-, nærhed og bevægelsesgenkendelse
Inde i installationsfunktionen initialiserer vi den serielle skærm ved 9600 baudhastighed for at vise alle sensorværdier og initialiserer også alle de krævede biblioteker. Koden inde i opsætningen er vist nedenfor
ugyldig opsætning () {Serial.begin (9600); // Seriel skærm for at få vist alle sensorværdier, hvis (! IMU.begin ()) // Initialiser IMU-sensor {Serial.println ("Kunne ikke initialisere IMU!"); mens (1);} hvis (! BARO.begin ()) // Initialiser trykføler {Serial.println ("Kunne ikke initialisere trykføler!"); mens (1);} hvis (! HTS.begin ()) // Initialiser temperatur- og fugtighedsføler {Serial.println ("Kunne ikke initialisere temperatur- og fugtighedsføler!"); while (1);} if (! APDS.begin ()) // Initialiser farve-, nærheds- og gestusføler {Serial.println ("Kunne ikke initialisere farve-, nærheds- og gestusføler!"); mens (1);}}
Inde i loop-funktionen læser vi de nødvendige sensorværdier fra biblioteket og udskriver dem derefter på den serielle skærm. Syntaksen kan henvises fra eksemplet på hvert bibliotek, vi har læst accelerometer-, gyroskop-, magnetometer-, tryk-, temperatur-, fugtigheds- og nærhedsfølerværdier og vist dem på den serielle skærm. Koden til måling af accelerometerværdien er vist nedenfor, ligesom vi kan måle for alle sensorer.
// Accelerometerværdier, 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- Uploade koden
Upload af koden til Nano 33 svarer til andre kort, men bemærk, at kortet har to COM-porte. Når du klikker på upload-knappen, samler Arduino IDE koden og derefter nulstiller tavlen automatisk via softwarekommando, dette sætter tavlen i boot loader-tilstand og uploader din kode. På grund af dette bemærker du muligvis, at Arduino IDE automatisk har ændret sin COM-port til et andet nummer, når uploadet er gjort, og du vil måske ændre det igen, før du åbner din serielle skærm.
Så dette er stort set min erfaring med Arduino Nano 33-kortet indtil videre, jeg vil prøve at bygge noget med sine sensorer og BLE-funktioner en gang senere i fremtiden. Hvordan var din oplevelse med bestyrelsen? Hvad vil du have, at jeg bygger med det? Efterlad svarene i kommentarsektionen, så diskuterer vi mere.