- Arduino Nano 33 BLE Sense
- Arduino Nano 33 BLE Sense Hardware-overzicht
- Softwareverbeteringen met Arduino Nano 33 BLE sense
- Uw Arduino IDE voorbereiden voor Arduino Nano 33 BLE sense
- Programma om sensorgegevens te lezen en weer te geven op seriële monitor
- Arduino Nano 33 BLE - De code uploaden
Arduino is het ontwikkelingsplatform geweest voor snelle prototyping en idee-validatie. Velen van ons zouden zijn begonnen met het Arduino UNO-ontwikkelbord, maar terwijl we vandaag naar het internet der dingen, computervisie, kunstmatige intelligentie, machinaal leren en andere futuristische technologieën gaan, kon de bescheiden Arduino UNO niet langer omgaan met zijn 8 -bit Microcontroller. Dit vroeg om de lancering van nieuwe borden met krachtigere processors die ingebouwde Wi-Fi, Bluetooth, GSM en andere draadloze mogelijkheden hebben, zoals de populaire MKR1000 of MKR GSM 1400. In deze context heeft Arduino onlangs een nieuwe versie van zijn Nano gelanceerd, de Arduino Nano 33.
Er zijn totaal twee soorten Arduino Nano 33-boards, namelijk Arduino Nano 33 IoT en Arduino Nano 33 BLE sense. Het belangrijkste verschil tussen beide modules is dat de Arduino Nano 33 BLE sense module een aantal ingebouwde sensoren heeft (zal later in details treden) terwijl de Arduino Nano 33 IoT deze niet heeft. In dit artikel zullen we het Arduino Nano 33 BLE-sensorbord bespreken, u kennis laten maken met de kenmerken en functionaliteiten en ten slotte een voorbeeldcode schrijven om de sensorwaarden te lezen en op een seriële monitor weer te geven. Dus laten we leren….!
Arduino Nano 33 BLE Sense
De naam "Arduino Nano 33 BLE Sense" is mondvol, maar de naam zelf geeft een aantal belangrijke informatie. Het wordt "Nano" genoemd omdat de afmetingen, pinout en vormfactor erg lijken op de klassieke Arduino Nano. Het is eigenlijk de bedoeling om te worden gebruikt als vervanging voor Arduino Nano in uw bestaande projecten, maar de vangst is dat deze nieuwe module werkt op 3.3V terwijl de klassieke Nano op 5V werkt. Dus ik denk dat dit is waar de naam "33" binnenkomt, om aan te geven dat het bord op 3.3V werkt. Dan geeft de naam "BLE" aan dat de module Bluetooth Low Energy (BLE5 5.0) ondersteunten de naam "sense" geeft aan dat het ingebouwde sensoren heeft zoals accelerometer, gyroscoop, magnetometer, temperatuur- en vochtigheidssensor, druksensor, naderingssensor, kleurensensor, bewegingssensor en zelfs een ingebouwde microfoon. We zullen later ingaan op de details van BLE en andere sensoren, maar voor nu is dit hoe een Arduino Nano 33 BLE-sensorbord er zo uitziet als het uit de doos komt.
Arduino Nano 33 BLE Sense Hardware-overzicht
Bij de eerste blik op het bord zie je veel componenten vol aan de bovenkant, waarvan de meeste sensoren zijn die ik eerder heb verteld. Maar het hoofdbrein is verborgen achter de metalen behuizing aan de rechterkant. Deze behuizing bevat de Nordic nRF52840-processor die een krachtige Cortex M4F en de NINA B306- module voor BLE- en Bluetooth 5-communicatie bevat. Hierdoor kan het bord op zeer laag vermogen werken en communiceren via Bluetooth 5, wat ideaal is voor mesh-netwerktoepassingen met laag vermogen in huisautomatisering en andere verbonden projecten. Ook omdat de nRF-processor het ARM Mbed OS ondersteunthet biedt ook enkele softwareverbeteringen die we later zullen bespreken. De sensoren, LED's, drukknoppen en andere belangrijke dingen die u op uw bord moet weten, zijn gemarkeerd in de onderstaande afbeelding.
Zoals je kunt zien op de bovenstaande afbeelding, zit het bord boordevol sensoren die je kunnen helpen bij het bouwen van de rechterkant van de doos zonder het bord zelfs maar op externe sensoren aan te hoeven sluiten. Het bord is bedoeld om te worden gebruikt in draagbare apparaten en andere slimme draagbare apparaten zoals fitnessbanden, glucosemonitoring, stappentellers, smartwatch, weerstation, huisbeveiliging enz. Waar u de meeste van deze sensoren zult gebruiken. En zoals altijd hebben al deze sensoren voorgebouwde bibliotheken voor Arduino die je gemakkelijk kunt gebruiken. Aan het einde van dit artikel zullen we waarden van al deze sensoren aflezen en weergeven op de seriële monitor. De sensordetails op het Arduino Nano 33 BLE-sensorbord, samen met de vereiste bibliotheken, worden hieronder weergegeven
Sensor naam |
Parameters |
Links |
LSM9DSI - ST Micro-elektronica |
Versnellingsmeter, gyroscoop, magnetometer |
LSMDSI-gegevensblad Arduino_LSM9DS1 Bibliotheek |
LPS22HB - ST Micro-elektronica |
Druk |
LPS22HB Gegevensblad Arduino_LPS22HB Bibliotheek |
HTS221 - ST Micro-elektronica |
Temperatuur en vochtigheid |
LPS22HB Gegevensblad Arduino_HTS221 Bibliotheek |
APDS9960 - Avago Tech. |
Nabijheid, licht, kleur, gebaar |
LPS22HB Gegevensblad Arduino_APDS9960 Bibliotheek |
MP34DT05 - ST Micro-elektronica |
Microfoon |
MP34DT05 Gegevensblad Ingebouwde PDM-bibliotheek |
De meeste van deze sensoren zijn van ST Microelectronics en ondersteunen een laag stroomverbruik, waardoor ze ideaal zijn voor ontwerpen op batterijen. Weinig mensen zijn misschien al bekend met de APDS9960-sensor, aangezien deze al beschikbaar is als een spate-module en we hebben de APDS9960-sensor ook eerder met Arduino gebruikt. Voor meer informatie over deze sensoren kun je de respectievelijke datasheet bezoeken en er ook voor zorgen dat je de volledige meegeleverde bibliotheek hebt toegevoegd aan je Arduino IDE om ze te gaan gebruiken met je Arduino Nano 33 BLE sense board. Om een bibliotheek toe te voegen, kunt u de gegeven link gebruiken om naar de respectievelijke GitHub-pagina te gaan en het ZIP-bestand te downloaden, en vervolgens Sketch -> Bibliotheek opnemen -> Add.ZIP-bibliotheek gebruiken of u kunt ook de bibliotheekbeheerder op Arduino IDE gebruiken en deze toevoegen bibliotheken.
Arduino Nano 33 BLE sense Board Technische specificaties:
Aangedreven door de Nordic nRF52840-processor heeft het Arduino Nano 44 BLE-bord de volgende technische specificaties
- Bedrijfsspanning: 3.3V
- USB-ingangsspanning: 5V
- Ingangsspeldspanning: 4,5V tot 21V
- Chip: NINA-B3 - RF52840
- Klok: 64 MHz
- Flash: 1 MB
- SRAM: 256 kB
- Draadloze connectiviteit: Bluetooth 5.0 / BLE
- Interfaces: USB, I2C, SPI, I2S, UART
- Digitale I / O-pinnen: 14
- PWM-pinnen: 6 (8-bits resolutie)
- Analoge pinnen: 8 (10-bit of 12-bit configureerbaar)
Softwareverbeteringen met Arduino Nano 33 BLE sense
Net als alle Arduino-boards die er zijn, kan de Arduino Nano 33 BLE sense worden geprogrammeerd met de Arduino IDE. Maar je moet de boardmanager gebruiken en de boarddetails aan je IDE toevoegen voordat je kunt beginnen. Zoals we weten kan de nRF 52840 worden geprogrammeerd met ARM Mbed OS, dit betekent dat ons Arduino Nano 33-bord het Real-Time Operating System (RTOS) ondersteunt. Met Mbed OS-programmering kunnen we meerdere threads tegelijkertijd in het programma uitvoeren om multi-tasking uit te voeren. Ook zal het stroomverbruik van het bord aanzienlijk worden verminderd, elke keer dat we de vertragingsfunctie aanroepen, gaat het bord in de kietelmodus tijdens de vertragingstijd om stroom te besparen en springt het weer in werking zodra de vertraging voorbij is. Het is gemeld dat deze bewerking 4,5uA minder zal verbruiken dan een normale Arduino-vertragingsbewerking.
Dat gezegd hebbende, de Mbed OS-integratie met Arduino IDE is relatief nieuw en het zal even duren voordat we de volledige kracht van Mbed OS volledig kunnen benutten met Arduino IDE. Dus voor een snelle start zullen we een programma schrijven om alle sensorwaarden uit te lezen en op de seriële monitoren weer te geven.
Uw Arduino IDE voorbereiden voor Arduino Nano 33 BLE sense
Start uw Arduino IDE en ga naar Tools -> Boards -> Board Manger om uw Arduino Board-manager te starten. Zoek nu naar "Mbed OS" en installeer het pakket. Het duurt even voordat de installatie is voltooid.
Zodra de installatie is voltooid, sluit u het dialoogvenster en verbindt u uw Arduino 33-bord met behulp van een micro-USB-kabel met uw laptop. Zodra je verbinding maakt, beginnen de bordvensters automatisch met het installeren van de benodigde stuurprogramma's voor het bord. Open vervolgens je Arduino IDE en selecteer Tools -> Board -> Arduino Nano 33. Selecteer vervolgens ook de juiste COM-poort door Tools -> Port aan te vinken, de mijne is verbonden met poort COM3, maar die van jou kan variëren. Nadat de poort is geselecteerd, zou uw IDE rechtsonder er als volgt uit moeten zien
Om nu snel te controleren of alles werkt, kunnen we een voorbeeldprogramma gebruiken, laten we het programma uitproberen dat wordt aangeboden bij Bestand -> Voorbeelden -> PDM -> PDMSerialPlotter. Dit programma gebruikt de ingebouwde microfoon om naar audio te luisteren en deze op een seriële plotter te plotten. U kunt het programma uploaden en controleren of het bord en de IDE werken.
Als je nu een belachelijk trage compilatie ervaart, dan ben je niet de enige, veel mensen, waaronder ik, worden met dit probleem geconfronteerd en op het moment dat dit artikel wordt geschreven, lijkt er geen oplossing te zijn. Het kost me ongeveer 2-3 minuten om eenvoudige programma's te compileren en te uploaden en toen ik een aantal BLE-programma's probeerde of probeerde te werken met Mbed OS, nam de compilatietijd toe tot meer dan 10 minuten, wat me niet aanmoedigde om verder te proberen. Dit komt door de Mbed OS-integratie met Arduino IDE, laten we hopen dat iemand van de geweldige Arduino-community hier een oplossing voor bedenkt.
Programma om sensorgegevens te lezen en weer te geven op seriële monitor
Als we de BLE- of core Mbed OS-functionaliteiten van het bord niet gebruiken, was de compilatietijd redelijk. Dus schreef ik een eenvoudige schets om alle sensorwaarden te lezen en weer te geven op de seriële monitor zoals hieronder getoond
De volledige code om hetzelfde te doen staat onderaan deze pagina, maar zorg ervoor dat je alle bovengenoemde bibliotheken hebt geïnstalleerd. De uitleg van de code is als volgt.
Start het programma door alle vereiste headerbestanden op te nemen. Hier zullen we alle vier de sensoren gebruiken, behalve de microfoon
#include // Inclusief bibliotheek voor 9-assige IMU #include // Inclusief bibliotheek om druk te lezen #include // Inclusief bibliotheek om temperatuur en vochtigheid te lezen #include // Inclusief bibliotheek voor kleur, nabijheid en gebarenherkenning
Binnen de setup-functie initialiseren we de seriële monitor met 9600 baudrate om alle sensorwaarden weer te geven en ook alle vereiste bibliotheken te initialiseren. De code in de setup wordt hieronder weergegeven
void setup () {Serial.begin (9600); // Seriële monitor om alle sensorwaarden weer te geven als (! IMU.begin ()) // Initialiseer IMU-sensor {Serial.println ("Initialiseren IMU mislukt!"); while (1);} if (! BARO.begin ()) // Initialize Pressure sensor {Serial.println ("Initialize Pressure Sensor!"); while (1);} if (! HTS.begin ()) // Initialiseer temperatuur- en vochtigheidssensor {Serial.println ("Initialiseren temperatuur- en vochtigheidssensor is mislukt!"); while (1);} if (! APDS.begin ()) // Initialiseer kleur-, naderings- en bewegingssensor {Serial.println ("Initialiseren van kleur-, naderings- en bewegingssensor is mislukt!"); while (1);}}
Binnen de loop-functie lezen we de vereiste sensorwaarden uit de bibliotheek en printen ze vervolgens op de seriële monitor. De syntaxis kan worden verwezen vanuit het voorbeeldprogramma van elke bibliotheek, we hebben de waarden van de accelerometer, gyroscoop, magnetometer, druk, temperatuur, vochtigheid en nabijheidssensor gelezen en deze op de seriële monitor weergegeven. De code om de accelerometerwaarde te meten wordt hieronder weergegeven, evenzo kunnen we voor alle sensoren meten.
// Accelerometer-waarden if (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); } vertraging (200);
Arduino Nano 33 BLE - De code uploaden
Het uploaden van de code naar de Nano 33 is vergelijkbaar met andere boards, maar houd er rekening mee dat het board twee COM-poorten heeft. Wanneer je op de uploadknop klikt, compileert de Arduino IDE de code en reset het bord vervolgens automatisch via een softwarecommando, dit zal het bord in de bootloader-modus plaatsen en je code uploaden. Daarom, als de upload is voltooid, merkt u misschien dat de Arduino IDE automatisch zijn COM-poort heeft gewijzigd in een ander nummer en dat u deze misschien wilt wijzigen voordat u uw seriële monitor opent.
Dus dit is zo ongeveer mijn ervaring met het Arduino Nano 33-bord tot nu toe, ik zal proberen iets te bouwen met zijn sensoren en BLE-functies ergens later in de toekomst. Hoe was je ervaring met het bord? Wat wil je dat ik ermee bouw? Laat de antwoorden achter in het commentaargedeelte en we zullen meer bespreken.