- „Arduino Nano 33 BLE Sense“
- „Arduino Nano 33 BLE Sense“ aparatinės įrangos apžvalga
- Programinės įrangos patobulinimai naudojant „Arduino Nano 33 BLE sense“
- „Arduino IDE“ paruošimas „Arduino Nano 33 BLE“ prasme
- Programa skaityti jutiklio duomenis ir rodyti „Serial Monitor“
- „Arduino Nano 33 BLE“ - kodo įkėlimas
„Arduino“ buvo greito prototipų kūrimo ir idėjų patvirtinimo kūrimo platforma. Daugelis iš mūsų būtų pradėję nuo „Arduino UNO“ kūrimo tarybos, tačiau šiandien, kai žengiame link daiktų interneto, kompiuterinio matymo, dirbtinio intelekto, mašininio mokymosi ir kitų futuristinių technologijų, kuklus „Arduino UNO“ nebegalėjo susitvarkyti su savo 8 bitų mikrovaldiklis. Tam reikėjo paleisti naujas plokštes su galingesniais procesoriais, turinčiais įmontuotą „Wi-Fi“, „Bluetooth“, GSM ir kitas belaidžio ryšio galimybes, pavyzdžiui, populiarias „ MKR1000“ ar „MKR GSM 1400“. Šiame kontekste „Arduino“ neseniai pristatė naują „Nano“ versiją, pavadintą „ Arduino Nano 33“.
Yra visiškai dviejų tipų „Arduino Nano 33“ plokštės, būtent „Arduino Nano 33 IoT“ ir „Arduino Nano 33 BLE sense“. Pagrindinis skirtumas tarp abiejų modulių yra tas, kad „ Arduino Nano 33 BLE sense“ modulyje yra keletas įmontuotų jutiklių (vėliau bus išsamiau), o „Arduino Nano 33 IoT“ jų neturi. Šiame straipsnyje apžvelgsime „Arduino Nano 33 BLE“ jutimo lentą, supažindinsime jus su jos ypatumais ir funkcijomis ir galiausiai parašysime kodo pavyzdį, kad perskaitytumėte jutiklio reikšmes ir rodytumėte serijiniame monitoriuje. Taigi mokykimės…!
„Arduino Nano 33 BLE Sense“
Pavadinimas „Arduino Nano 33 BLE Sense“ yra skanus, tačiau pats pavadinimas pateikia svarbios informacijos. Jis vadinamas „Nano“, nes matmenys, prisegimas ir formos koeficientas yra labai panašūs į klasikinį „Arduino Nano“, iš tikrųjų planuojama jį naudoti kaip „Arduino Nano“ pakaitalą jūsų esamuose projektuose, tačiau svarbu, kad šis naujas modulis veikia 3,3 V, o klasikinis „Nano“ veikia 5 V įtampa. Taigi manau, kad čia yra pavadinimas „33“, nurodantis, kad plokštė veikia 3,3 V įtampa. Tada pavadinimas „BLE“ rodo, kad modulis palaiko „ Bluetooth Low Energy“ (BLE5 5.0)pavadinimas „sense“ rodo, kad jame yra jutiklių, tokių kaip akselerometras, giroskopas, magnetometras, temperatūros ir drėgmės jutiklis, slėgio jutiklis, artumo jutiklis, spalvų jutiklis, gestų jutiklis ir netgi įmontuotas mikrofonas. Vėliau aptarsime BLE ir kitų jutiklių detales, tačiau dabar Arduino Nano 33 BLE jutimo lenta atrodo tiesiai iš bokso.
„Arduino Nano 33 BLE Sense“ aparatinės įrangos apžvalga
Pirmą kartą pažvelgę į lentą, galite rasti daugybę komponentų, suspaustų viršuje, kurių dauguma yra jutikliai, kuriuos pasakojau anksčiau. Tačiau pagrindinės smegenys yra paslėptos už metalinio apvalkalo dešinėje pusėje. Šiame korpuse yra „ Nordic nRF52840“ procesorius, kuriame yra galingas „Cortex M4F“ ir „ NINA B306“ modulis, skirtas BLE ir „Bluetooth 5“ ryšiui. Tai leidžia plokštei veikti labai mažai energijos ir bendrauti naudojant „Bluetooth 5“, todėl idealiai tinka mažos galios tinklo tinklo programoms namų automatikoje ir kituose prijungtuose projektuose. Taip pat, nes „nRF“ procesorius palaiko „ ARM Mbed OS“jame taip pat pateikiami keli programinės įrangos patobulinimai, kuriuos aptarsime vėliau. Jutikliai, šviesos diodai, mygtukai ir kiti svarbūs dalykai, kuriuos turėtumėte žinoti lentoje, pažymėti žemiau esančiame paveikslėlyje.
Kaip matote iš aukščiau esančio paveikslėlio, plokštėje yra daugybė jutiklių, kurie gali padėti pastatyti dešinę dėžutės dalį, net nereikia prijungti plokštės prie jokių išorinių jutiklių. Plokštę ketinama naudoti nešiojamuose įrenginiuose ir kituose išmaniuose nešiojamuosiuose įrenginiuose, pavyzdžiui, kūno rengybos juostose, gliukozės stebėjime, žingsniamačiai, išmanusis laikrodis, meteorologinė stotis, namų apsauga ir kt., Kur naudosite daugumą šių jutiklių. Kaip ir visada, visi šie jutikliai turi iš anksto sukurtas „Arduino“ bibliotekas, kurias galite lengvai naudoti. Šio straipsnio pabaigoje mes perskaitysime visų šių jutiklių reikšmes ir parodysime juos serijiniame monitoriuje. Žemiau pateikiama išsami jutiklio informacija „Arduino Nano 33 BLE“ jutiklių lentoje kartu su reikalingomis bibliotekomis
Jutiklio pavadinimas |
Parametrai |
Nuorodos |
LSM9DSI - ST mikroelektronika |
Akselerometras, giroskopas, magnetometras |
LSMDSI duomenų lapas „Arduino_LSM9DS1“ biblioteka |
LPS22HB - ST mikroelektronika |
Slėgis |
LPS22HB duomenų lapas „Arduino_LPS22HB“ biblioteka |
HTS221 - ST mikroelektronika |
Temperatūra ir drėgmė |
LPS22HB duomenų lapas „Arduino_HTS221“ biblioteka |
APDS9960 - „Avago Tech“. |
Artumas, šviesa, spalva, gestas |
LPS22HB duomenų lapas „Arduino_APDS9960“ biblioteka |
MP34DT05 - ST mikroelektronika |
Mikrofonas |
MP34DT05 duomenų lapas Integruota PDM biblioteka |
Dauguma šių jutiklių yra iš „ ST Microelectronics“ ir palaiko mažos galios veikimą, todėl tai idealiai tinka baterijoms valdomiems projektams. Nedaugelis žmonių jau gali būti susipažinę su APDS9960 jutikliu, nes jis jau yra prieinamas kaip modulis, taip pat anksčiau naudojome jutiklį APDS9960 su „Arduino“. Norėdami gauti daugiau informacijos apie šiuos jutiklius, galite apsilankyti atitinkamame duomenų lape ir įsitikinti, kad pridėjote visą pateiktą biblioteką prie „Arduino IDE“, kad galėtumėte pradėti juos naudoti su „Arduino Nano 33 BLE“ jutiklių lenta. Norėdami pridėti biblioteką, naudokite pateiktą nuorodą norėdami patekti į atitinkamą „GitHub“ puslapį ir atsisiųsti ZIP failą, tada naudokite „Sketch“ -> „įtraukti biblioteką“ -> „Add.ZIP“ biblioteką arba galite naudoti „Arduino IDE“ bibliotekos tvarkyklę ir jas pridėti bibliotekos.
„Arduino Nano 33 BLE sense Board“ techninės specifikacijos:
„Arduino Nano 44 BLE“ plokštė, kurią palaiko „Nordic nRF52840“ procesorius, turi šias technines specifikacijas
- Darbinė įtampa: 3.3V
- USB įvesties įtampa: 5V
- Įvesties kaiščio įtampa: nuo 4,5 iki 21 V
- Lustas: NINA-B3 - RF52840
- Laikrodis: 64MHz
- Blykstė: 1 MB
- SRAM: 256 KB
- Belaidis ryšys: „Bluetooth 5.0“ / BLE
- Sąsajos: USB, I2C, SPI, I2S, UART
- Skaitmeniniai įvesties / išvesties kaiščiai: 14
- PWM kaiščiai: 6 (8 bitų skiriamoji geba)
- Analoginiai kaiščiai: 8 (konfigūruojami 10 arba 12 bitų)
Programinės įrangos patobulinimai naudojant „Arduino Nano 33 BLE sense“
Kaip ir visas ten esančias „Arduino“ plokštes, „Arduino Nano 33 BLE“ jausmą galima užprogramuoti naudojant „Arduino IDE“. Bet prieš pradėdami turite naudoti lentos tvarkytuvę ir pridėti lentos informaciją prie savo IDE. Kadangi žinome, kad „nRF 52840“ galima užprogramuoti naudojant „ARM Mbed OS“, tai reiškia, kad mūsų „Arduino Nano 33“ plokštė palaiko realaus laiko operacinę sistemą (RTOS). Naudodami „Mbed OS“ programoje galime vienu metu paleisti kelias gijas, kad atliktumėte daug užduočių. Be to, plokštės energijos suvartojimas bus žymiai sumažintas, kiekvieną kartą, kai iškviečiame uždelsimo funkciją, plokštė per vėlavimo laiką persijungia į tiksėjimo režimą, kad taupytų energiją, ir vėl pradėtų veikti, kai vėluojama. Pranešama, kad ši operacija sunaudos 4,5uA mažiau nei įprasta „Arduino“ uždelsimo operacija.
Tai sakant, „Mbed OS“ integracija su „Arduino IDE“ yra palyginti nauja ir reikės šiek tiek laiko, kol galėsime visiškai išnaudoti visą „Mbed OS“ galią su „Arduino IDE“. Taigi, norėdami greitai paleisti, parašysime programą, kad galėtume perskaityti visas jutiklio reikšmes ir parodyti serijiniuose monitoriuose.
„Arduino IDE“ paruošimas „Arduino Nano 33 BLE“ prasme
Paleiskite „Arduino IDE“ ir eikite į „Tools“ -> „Boards“ -> „Board Manger“, kad paleistumėte savo „Arduino Board“ valdytoją. Dabar ieškokite „Mbed OS“ ir įdiekite paketą. Diegimas turėtų užtrukti šiek tiek laiko.
Baigę diegimą, uždarykite dialogo langą ir prijunkite „Arduino 33“ plokštę naudodami mikro USB laidą su nešiojamuoju kompiuteriu. Kai tik prijungsite plokštės langus, automatiškai pradėsite diegti reikalingus plokštės tvarkykles. Tada atidarykite „Arduino IDE“ ir pasirinkite „Tools“ -> „Board“ -> „Arduino Nano 33.“. Tada taip pat pasirinkite tinkamą COM prievadą, pažymėdami „Tools -> Port“, mano yra prijungtas prie COM3 prievado, bet jūsų gali skirtis. Pasirinkus prievadą, jūsų IDE apatinis dešinysis kampas turėtų atrodyti taip
Dabar, norėdami greitai patikrinti, ar viskas veikia, galime naudoti programos pavyzdį, išbandykime pateiktą faile -> Pavyzdžiai -> PDM -> PDMSerialPlotter. Ši programa naudodama borto mikrofoną klausys garso ir braižys jį nuosekliu braižytuvu. Galite įkelti programą ir patikrinti, ar plokštė ir IDE veikia.
Dabar, jei susiduriate juokingai lėtai, tada jūs nesate vieniši, daugelis žmonių, įskaitant mane, susiduria su šia problema ir, atrodo, kad rašant šį straipsnį sprendimo nėra. Sudaryti ir įkelti paprastas programas užtrunku maždaug 2–3 minutes, o kai bandžiau kai kurias BLE programas arba bandžiau dirbti su „Mbed OS“, kompiliavimo laikas pailgėjo iki daugiau nei 10 minučių, o tai manęs neskatino toliau bandyti. Taip yra dėl „ Mbed OS“ integracijos su „Arduino IDE“, tikėkimės, kad kažkas iš nuostabios „Arduino“ bendruomenės sugalvos tai išspręsti.
Programa skaityti jutiklio duomenis ir rodyti „Serial Monitor“
Jei nenaudojame lentos BLE arba pagrindinių „Mbed OS“ funkcijų, kompiliavimo laikas buvo pagrįstas. Taigi aš parašiau paprastą eskizą, kad galėčiau perskaityti visas jutiklio reikšmes ir parodyti serijiniame monitoriuje, kaip parodyta žemiau
Visas kodas tam pačiam veiksmui pateikiamas šio puslapio apačioje, tačiau įsitikinkite, kad įdiegėte visas aukščiau paminėtas bibliotekas. Kodas paaiškinamas taip.
Paleiskite programą įtraukdami visus reikalingus antraštės failus. Čia naudosime visus keturis jutiklius, išskyrus mikrofoną
#include // Įtraukti 9 ašių IMU biblioteką #include // Įtraukti biblioteką skaityti Slėgis #include // Įtraukti biblioteką temperatūrai ir drėgmei skaityti #include // Įtraukti biblioteką spalvoms, artumui ir gestų atpažinimui
Sąrankos funkcijos metu mes inicializuojame serijinį monitorių 9600 baudos greičiu, kad būtų rodomos visos jutiklio vertės, taip pat inicijuojame visas reikalingas bibliotekas. Sąrankos kodas rodomas žemiau
negaliojanti sąranka () {Serial.begin (9600); // Serijinis monitorius, rodantis visas jutiklio reikšmes, jei (! IMU.begin ()) // Inicializuoti IMU jutiklį {Serial.println ("Nepavyko inicijuoti IMU!"); while (1);} if (! BARO.begin ()) // Inicializuoti slėgio jutiklį {Serial.println ("Nepavyko inicijuoti slėgio jutiklio!"); while (1);} if (! HTS.begin ()) // Inicializuoti temperatūros ir drėgmės jutiklį {Serial.println ("Nepavyko inicijuoti temperatūros ir drėgmės jutiklio!"); while (1);} if (! APDS.begin ()) // Inicializuoti spalvų, artumo ir gestų jutiklį {Serial.println ("Nepavyko inicijuoti spalvų, artumo ir gestų jutiklio!"); o (1);}}
Viduje ciklo funkcija iš bibliotekos nuskaitome reikalingas jutiklio reikšmes ir tada atspausdiname serijiniame monitoriuje. Sintaksę galima nurodyti iš kiekvienos bibliotekos pavyzdinės programos, mes perskaitėme akselerometro, giroskopo, magnetometro, slėgio, temperatūros, drėgmės ir artumo jutiklio reikšmes ir rodėme serijiniame monitoriuje. Akselerometro vertės matavimo kodas rodomas žemiau, taip pat galime išmatuoti visus jutiklius.
// Akselerometro reikšmės, jei (IMU.accelerationAvailable ()) {IMU.readAcceleration (accel_x, accel_y, accel_z); Serial.print ("Akselerometras ="); Serial.print (accel_x); Serial.print (","); Serial.print (accel_y); Serial.print (","); Serial.println (accel_z); } vėlavimas (200);
„Arduino Nano 33 BLE“ - kodo įkėlimas
Kodo įkėlimas į „Nano 33“ yra panašus į bet kurias kitas plokštes, tačiau atkreipkite dėmesį, kad plokštėje yra du COM prievadai. Kai spustelėsite įkėlimo mygtuką, „Arduino IDE“ sukompiliuos kodą ir automatiškai iš naujo nustatys plokštę naudodamiesi programinės įrangos komanda. Tai valdymą įjungs įkrovos režimu ir įkels jūsų kodą. Dėl to, atlikus įkėlimą, galite pastebėti, kad „Arduino IDE“ automatiškai pakeitė savo COM prievadą kitu numeriu ir galbūt norėsite jį pakeisti prieš atidarydami nuoseklųjį monitorių.
Taigi tai yra mano patirtis, susijusi su „Arduino Nano 33“ plokšte iki šiol, pabandysiu sukurti ką nors vėliau su savo jutikliais ir BLE funkcijomis. Kokia buvo jūsų patirtis su lenta? Ką norėtum, kad su juo sukurtume? Palikite atsakymus komentarų skiltyje ir aptarsime daugiau.