- Arduino Nano 33 BLE Sense
- Tổng quan về phần cứng Arduino Nano 33 BLE Sense
- Cải tiến phần mềm với Arduino Nano 33 BLE sense
- Chuẩn bị Arduino IDE của bạn cho Arduino Nano 33 BLE sense
- Chương trình đọc dữ liệu cảm biến và hiển thị trên Serial Monitor
- Arduino Nano 33 BLE- Tải lên mã
Arduino đã trở thành nền tảng phát triển phù hợp để tạo mẫu nhanh và xác thực ý tưởng. Nhiều người trong chúng ta đã từng bắt đầu với bảng phát triển Arduino UNO, nhưng ngày nay khi chúng ta tiến tới Internet vạn vật, Thị giác máy tính, Trí tuệ nhân tạo, Máy học và các công nghệ tương lai khác, Arduino UNO khiêm tốn không còn có thể đối phó với 8 -bit Vi điều khiển. Điều này kêu gọi sự ra mắt của các bo mạch mới với bộ vi xử lý mạnh mẽ hơn có tích hợp Wi-Fi, Bluetooth, GSM và các khả năng không dây khác, như MKR1000 hoặc MKR GSM 1400 phổ biến. Trong bối cảnh đó, Arduino gần đây đã tung ra một phiên bản Nano mới của nó được gọi là Arduino Nano 33.
Có hai loại bo mạch Arduino Nano 33, đó là Arduino Nano 33 IoT và Arduino Nano 33 BLE sense. Sự khác biệt chính giữa cả hai mô-đun là mô-đun cảm biến Arduino Nano 33 BLE có một số cảm biến tích hợp (sẽ đi vào chi tiết sau) trong khi Arduino Nano 33 IoT không có chúng. Trong bài viết này, chúng tôi sẽ đánh giá bảng cảm biến Arduino Nano 33 BLE, giới thiệu cho bạn các tính năng và chức năng của nó và cuối cùng viết mã mẫu để đọc các giá trị cảm biến và hiển thị trên màn hình nối tiếp. Vì vậy, chúng ta hãy học….!
Arduino Nano 33 BLE Sense
Cái tên “Arduino Nano 33 BLE Sense” nghe thật lạ tai, nhưng bản thân cái tên đã nói lên một số thông tin quan trọng. Nó được gọi là “Nano” vì kích thước, sơ đồ chân và hệ số hình thức rất giống với Arduino Nano cổ điển, nó thực sự được lên kế hoạch để sử dụng thay thế cho Arduino Nano trong các dự án hiện có của bạn, nhưng điều đáng chú ý là mô-đun mới này hoạt động trên 3.3V trong khi Nano cổ điển hoạt động trên 5V. Vì vậy, tôi nghĩ rằng đây là nơi mà tên "33" xuất hiện, để chỉ ra rằng bo mạch hoạt động trên 3.3V. Sau đó, tên “BLE” cho biết rằng mô-đun hỗ trợ Bluetooth Low Energy (BLE5 5.0)và tên "sense" cho biết rằng nó có các cảm biến trên bo mạch như cảm biến gia tốc, con quay hồi chuyển, từ kế, cảm biến nhiệt độ và độ ẩm, cảm biến áp suất, cảm biến tiệm cận, cảm biến màu, cảm biến cử chỉ và thậm chí cả micrô tích hợp. Chúng ta sẽ đi vào chi tiết về BLE và các cảm biến khác sau nhưng hiện tại đây là cách một bảng cảm biến Arduino Nano 33 BLE trông giống như một cuộc giải đấu.
Tổng quan về phần cứng Arduino Nano 33 BLE Sense
Ở cái nhìn đầu tiên của bo mạch, bạn có thể tìm thấy rất nhiều thành phần nằm chật chội trên đầu, hầu hết trong số đó là cảm biến mà tôi đã nói trước đó. Nhưng bộ não chính được ẩn sau lớp vỏ kim loại ở phía bên phải. Vỏ này chứa bộ xử lý Nordic nRF52840 chứa Cortex M4F mạnh mẽ và mô-đun NINA B306 cho giao tiếp BLE và Bluetooth 5. Điều này cho phép bo mạch hoạt động với công suất rất thấp và giao tiếp bằng cách sử dụng Bluetooth 5, lý tưởng cho các ứng dụng mạng lưới công suất thấp trong tự động hóa gia đình và các dự án kết nối khác. Cũng vì bộ xử lý nRF hỗ trợ hệ điều hành ARM Mbednó cũng cung cấp một số cải tiến phần mềm mà chúng ta sẽ thảo luận sau. Các cảm biến, đèn LED, nút bấm và những thứ quan trọng khác mà bạn nên biết trên bảng của mình được đánh dấu trong hình ảnh dưới đây.
Như bạn có thể thấy từ hình ảnh trên, bo mạch được trang bị đầy đủ năng lượng với các cảm biến có thể giúp bạn xây dựng quyền của hộp mà thậm chí không cần phải kết nối bo mạch với bất kỳ cảm biến bên ngoài nào. Bảng này nhằm mục đích được sử dụng trong các thiết bị đeo được và các thiết bị di động thông minh khác như dây đeo thể dục, giám sát đường huyết, máy đo bước chân, đồng hồ thông minh, trạm thời tiết, Bảo mật gia đình, v.v. nơi bạn sẽ sử dụng hầu hết các cảm biến này. Và giống như mọi khi, tất cả các cảm biến này đều có các thư viện được tạo sẵn cho Arduino mà bạn có thể sử dụng dễ dàng. Ở cuối bài viết này, chúng tôi sẽ đọc các giá trị từ tất cả các cảm biến này và hiển thị nó trên màn hình nối tiếp. Chi tiết cảm biến trên bảng cảm biến Arduino Nano 33 BLE cùng với các thư viện bắt buộc của nó được lập bảng bên dưới
Tên cảm biến |
Thông số |
Liên kết |
LSM9DSI - ST Vi điện tử |
Gia tốc kế, Con quay hồi chuyển, Từ kế |
Biểu dữ liệu LSMDSI Thư viện Arduino_LSM9DS1 |
LPS22HB - ST Vi điện tử |
Sức ép |
Biểu dữ liệu LPS22HB Thư viện Arduino_LPS22HB |
HTS221 - ST Vi điện tử |
Nhiệt độ và độ ẩm |
Biểu dữ liệu LPS22HB Thư viện Arduino_HTS221 |
APDS9960 - Công nghệ Avago. |
Khoảng cách, Ánh sáng, Màu sắc, Cử chỉ |
Biểu dữ liệu LPS22HB Thư viện Arduino_APDS9960 |
MP34DT05 - ST Vi điện tử |
Cái mic cờ rô |
Biểu dữ liệu MP34DT05 Thư viện sẵn có-PDM |
Hầu hết các cảm biến này là của ST Microelectronics và chúng hỗ trợ hoạt động với công suất thấp, lý tưởng cho các thiết kế hoạt động bằng pin. Rất ít người có thể đã quen thuộc với cảm biến APDS9960 vì nó đã có sẵn dưới dạng mô-đun spate và trước đây chúng tôi cũng đã sử dụng cảm biến APDS9960 với Arduino. Để biết thêm thông tin về các cảm biến này, bạn có thể truy cập biểu dữ liệu tương ứng và cũng đảm bảo rằng bạn đã thêm toàn bộ thư viện được cung cấp vào Arduino IDE của mình để bắt đầu sử dụng chúng với bảng cảm biến Arduino Nano 33 BLE của bạn. Để thêm thư viện, bạn có thể sử dụng liên kết đã cho để truy cập trang GitHub tương ứng và tải xuống tệp ZIP, sau đó sử dụng Sketch -> Bao gồm Thư viện -> Thư viện Add.ZIP hoặc bạn cũng có thể sử dụng trình quản lý thư viện trên Arduino IDE và thêm chúng các thư viện.
Thông số kỹ thuật của Arduino Nano 33 BLE sense Board:
Được cung cấp bởi Bộ xử lý nRF52840 Nordic, bo mạch Arduino Nano 44 BLE có các thông số kỹ thuật sau
- Điện áp hoạt động: 3.3V
- Điện áp đầu vào USB: 5V
- Điện áp chân đầu vào: 4,5V đến 21V
- Chip: NINA-B3 - RF52840
- Đồng hồ: 64MHz
- Flash: 1MB
- SRAM: 256 KB
- Kết nối không dây: Bluetooth 5.0 / BLE
- Giao diện: USB, I2C, SPI, I2S, UART
- Chân I / O kỹ thuật số: 14
- PWM Pins: 6 (độ phân giải 8-bit)
- Chân tương tự: 8 (có thể định cấu hình 10 bit hoặc 12 bit)
Cải tiến phần mềm với Arduino Nano 33 BLE sense
Cũng giống như tất cả các bo mạch Arduino hiện có, cảm giác Arduino Nano 33 BLE có thể được lập trình với Arduino IDE. Tuy nhiên, bạn phải sử dụng trình quản lý hội đồng quản trị và thêm chi tiết hội đồng quản trị vào IDE của mình trước khi có thể bắt đầu. Như chúng ta đã biết nRF 52840 có thể được lập trình bằng ARM Mbed OS, điều này có nghĩa là bo mạch Arduino Nano 33 của chúng tôi hỗ trợ Hệ điều hành thời gian thực (RTOS). Với lập trình Mbed OS chúng ta có thể chạy nhiều luồng cùng lúc trong chương trình để thực hiện đa tác vụ. Ngoài ra, điện năng tiêu thụ của bo mạch sẽ giảm đáng kể, mỗi khi chúng ta gọi chức năng trì hoãn, bo mạch sẽ chuyển sang chế độ tích tắc trong thời gian trễ để tiết kiệm điện và sẽ hoạt động trở lại khi hết thời gian trễ. Theo báo cáo, hoạt động này sẽ tiêu thụ ít hơn 4,5uA so với hoạt động trì hoãn Arduino bình thường.
Điều đó nói lên rằng, việc tích hợp Mbed OS với Arduino IDE là tương đối mới và sẽ mất một thời gian trước khi chúng ta có thể sử dụng đầy đủ sức mạnh của Mbed OS với Arduino IDE. Vì vậy, để khởi động nhanh, chúng tôi sẽ viết một chương trình để đọc tất cả các giá trị của cảm biến và hiển thị nó trên các màn hình nối tiếp.
Chuẩn bị Arduino IDE của bạn cho Arduino Nano 33 BLE sense
Khởi chạy Arduino IDE của bạn và đi tới Công cụ -> Bảng -> Trình quản lý bảng để khởi chạy trình quản lý Bảng Arduino của bạn. Bây giờ hãy tìm kiếm “Mbed OS” và cài đặt gói. Sẽ mất một khoảng thời gian để quá trình cài đặt hoàn tất.
Sau khi cài đặt xong, hãy đóng hộp thoại và kết nối bo mạch Arduino 33 bằng cáp micro USB với máy tính xách tay của bạn. Ngay sau khi bạn kết nối, các cửa sổ bảng sẽ tự động bắt đầu cài đặt các trình điều khiển cần thiết cho bảng. Sau đó, mở Arduino IDE của bạn và chọn Công cụ -> Bảng -> Arduino Nano 33. Sau đó, cũng chọn đúng cổng COM bằng cách kiểm tra Công cụ -> Cổng, của tôi được kết nối với cổng COM3 nhưng cổng của bạn có thể khác. Sau khi chọn cổng IDE, góc dưới bên phải IDE của bạn sẽ trông như thế này
Bây giờ để nhanh chóng kiểm tra xem mọi thứ có hoạt động hay không, chúng ta có thể sử dụng một chương trình ví dụ, hãy thử chương trình được cung cấp tại File -> Examples -> PDM -> PDMSerialPlotter. Chương trình này sẽ sử dụng micrô trên bo mạch để nghe âm thanh và vẽ âm thanh trên máy vẽ nối tiếp. Bạn có thể tải lên chương trình và kiểm tra xem bo mạch và IDE có hoạt động hay không.
Bây giờ nếu bạn gặp phải tình trạng biên dịch chậm đến mức vô lý thì bạn không đơn độc, nhiều người bao gồm cả tôi phải đối mặt với vấn đề này và tại thời điểm viết bài này, dường như không có giải pháp nào. Tôi mất khoảng 2-3 phút để biên dịch và tải lên các chương trình đơn giản và khi tôi thử một số chương trình BLE hoặc cố gắng làm việc với Mbed OS, thời gian biên dịch tăng lên hơn 10 phút, điều này không khuyến khích tôi thử thêm bất cứ điều gì. Điều này là do sự tích hợp Mbed OS với Arduino IDE, hãy hy vọng ai đó từ Cộng đồng Arduino tuyệt vời đưa ra giải pháp cho điều này.
Chương trình đọc dữ liệu cảm biến và hiển thị trên Serial Monitor
Nếu chúng tôi không sử dụng các chức năng BLE hoặc Mbed OS cốt lõi của bảng thì thời gian biên dịch là hợp lý. Vì vậy, tôi đã viết một bản phác thảo đơn giản để đọc tất cả các giá trị cảm biến và hiển thị nó trên màn hình nối tiếp như hiển thị bên dưới
Mã hoàn chỉnh để làm điều tương tự được cung cấp ở cuối trang này, nhưng hãy đảm bảo rằng bạn đã cài đặt tất cả các thư viện được đề cập ở trên. Giải thích về mã như sau.
Khởi động chương trình bằng cách bao gồm tất cả các tệp tiêu đề được yêu cầu. Ở đây, chúng tôi sẽ sử dụng tất cả bốn cảm biến ngoại trừ micrô
#include // Bao gồm thư viện cho IMU 9 trục #include // Bao gồm thư viện để đọc Áp suất #include // Bao gồm thư viện để đọc Nhiệt độ và Độ ẩm #include // Bao gồm thư viện nhận dạng màu sắc, độ gần và cử chỉ
Bên trong chức năng thiết lập, chúng tôi khởi tạo màn hình nối tiếp ở tốc độ 9600 baud để hiển thị tất cả các giá trị cảm biến và cũng khởi tạo tất cả các thư viện cần thiết. Mã bên trong thiết lập được hiển thị bên dưới
void setup () {Serial.begin (9600); // Màn hình nối tiếp để hiển thị tất cả các giá trị cảm biến if (! IMU.begin ()) // Khởi tạo cảm biến IMU {Serial.println ("Không thể khởi tạo IMU!"); while (1);} if (! BARO.begin ()) // Khởi tạo Cảm biến áp suất {Serial.println ("Không thể khởi tạo Cảm biến áp suất!"); while (1);} if (! HTS.begin ()) // Khởi tạo cảm biến Nhiệt độ và Độ ẩm {Serial.println ("Không thể khởi chạy Cảm biến Nhiệt độ và Độ ẩm!"); while (1);} if (! APDS.begin ()) // Khởi tạo cảm biến Màu, Tiệm cận và Cử chỉ {Serial.println ("Không thể khởi tạo Cảm biến Màu, Tiệm cận và Cử chỉ!"); trong khi (1);}}
Bên trong chức năng vòng lặp, chúng tôi đọc các giá trị cảm biến yêu cầu từ thư viện và sau đó in chúng trên màn hình nối tiếp. Cú pháp có thể được tham khảo từ chương trình ví dụ của mỗi thư viện, chúng tôi đã đọc các giá trị cảm biến gia tốc, con quay hồi chuyển, từ kế, áp suất, nhiệt độ, độ ẩm và độ gần và hiển thị chúng trên màn hình nối tiếp. Mã để đo giá trị gia tốc kế được hiển thị bên dưới, tương tự như vậy, chúng ta có thể đo cho tất cả các cảm biến.
// Các giá trị của gia tốc kế if (IMU.accelerationAvailable ()) {IMU.readAcceleration (accel_x, accel_y, accel_z); Serial.print ("Gia tốc kế ="); Serial.print (accel_x); Serial.print (","); Serial.print (accel_y); Serial.print (","); Serial.println (accel_z); } delay (200);
Arduino Nano 33 BLE- Tải lên mã
Việc tải mã lên Nano 33 tương tự như bất kỳ bo mạch nào khác, nhưng hãy lưu ý rằng bo mạch có hai cổng COM. Khi bạn nhấp vào nút tải lên, Arduino IDE biên dịch mã và sau đó đặt lại bảng tự động thông qua lệnh phần mềm, điều này sẽ đặt bảng ở chế độ bộ nạp khởi động và tải lên mã của bạn. Do đó, khi quá trình tải lên hoàn tất, bạn có thể nhận thấy rằng Arduino IDE đã tự động thay đổi cổng COM của nó thành một số khác và bạn có thể muốn thay đổi lại nó trước khi mở màn hình nối tiếp của mình.
Vì vậy, đây là khá nhiều kinh nghiệm của tôi với bo mạch Arduino Nano 33 cho đến nay, tôi sẽ thử xây dựng thứ gì đó với các cảm biến và tính năng BLE của nó vào một thời gian sau trong tương lai. Kinh nghiệm của bạn với hội đồng quản trị như thế nào? Bạn muốn tôi xây dựng cái gì với nó? Hãy để lại câu trả lời trong phần bình luận và chúng ta sẽ thảo luận thêm.