Mục lục:

Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Bước 3: 7 (kèm Hình ảnh)
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Bước 3: 7 (kèm Hình ảnh)

Video: Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Bước 3: 7 (kèm Hình ảnh)

Video: Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Bước 3: 7 (kèm Hình ảnh)
Video: Arduino | Đọc Encoder - Chi tiết về Encoder 2024, Tháng mười một
Anonim
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Phiên bản 3
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Phiên bản 3
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Phiên bản 3
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Phiên bản 3
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Phiên bản 3
Dễ dàng BLE công suất rất thấp trong Arduino Phần 3 - Thay thế Nano V2 - Phiên bản 3

Cập nhật: Ngày 7 tháng 4 năm 2019 - Bản sửa đổi 3 của lp_BLE_TempHumidity, thêm các ô Ngày / Giờ, sử dụng pfodApp V3.0.362 + và tự động điều chỉnh khi gửi dữ liệu

Cập nhật: ngày 24 tháng 3 năm 2019 - Phiên bản 2 của lp_BLE_TempHumidity, thêm nhiều tùy chọn cốt truyện và i2c_ClearBus, bổ sung hỗ trợ GT832E_01

Giới thiệu

Hướng dẫn này, A Redbear Nano V2 Replacement, là Phần 3 của 3. Đây là Bản sửa đổi 2 của dự án này. Bản sửa đổi 2 PCB bao gồm việc gắn cho ô đồng xu và cảm biến, đơn giản hóa việc xây dựng và cải thiện luồng không khí xung quanh cảm biến trong khi che chắn nó khỏi ánh sáng mặt trời trực tiếp. Bản sửa đổi 1 có ở đây.

Phần 1 - Xây dựng các thiết bị BLE công suất rất thấp dễ dàng với nắp đậy Arduino thiết lập Arduino để mã hóa các thiết bị công suất thấp nRF52, mô-đun lập trình và đo dòng điện cung cấp. Nó cũng bao gồm các bộ định thời và so sánh công suất thấp chuyên dụng và các đầu vào được gỡ lỗi và sử dụng pfodApp để kết nối và điều khiển thiết bị nRF52.

Phần 2 - Màn hình độ ẩm nhiệt độ công suất rất thấp sử dụng mô-đun Redbear Nano V2 và cảm biến nhiệt độ / độ ẩm Si7021 để xây dựng pin năng lượng thấp / màn hình năng lượng mặt trời. Nó cũng bao gồm việc sửa đổi thư viện Si7021 thành công suất thấp, điều chỉnh thiết bị BLE để giảm mức tiêu thụ hiện tại xuống <29uA và thiết kế màn hình nhiệt độ / độ ẩm tùy chỉnh cho điện thoại di động của bạn.

Phần 3 - Thay thế Redbear Nano V2, phần này, bao gồm việc sử dụng các mô-đun dựa trên nRF52 khác thay vì Nano V2. Nó bao gồm việc lựa chọn các thành phần cung cấp, xây dựng, loại bỏ bảo vệ lập trình chip nRF52, sử dụng các chân NFC như GPIO thông thường và xác định một bo mạch nRF52 mới trong Arduino.

Hướng dẫn này là một ứng dụng thực tế của Phần 1 Xây dựng thiết bị BLE công suất rất thấp được thực hiện dễ dàng với Arduino bằng cách xây dựng Màn hình nhiệt độ và độ ẩm BLE công suất rất thấp sử dụng bo mạch SKYLAB SBK369 thay thế Nano V2. Hướng dẫn này trình bày cách tạo định nghĩa bảng mới và cách gỡ bỏ bảo vệ lập trình nRF52 để cho phép nó được lập trình lại. Hướng dẫn này sử dụng bản phác thảo tương tự như Phần 2 với cùng các thông số BLE được điều chỉnh để tiêu thụ điện năng thấp và chỉ có thể được cấp nguồn từ pin HOẶC pin + năng lượng mặt trời HOẶC năng lượng mặt trời. Việc điều chỉnh các thông số BLE cho công suất thấp đã được đề cập trong Phần 2

Rev 3 của lp_BLE_TempHumidity vẽ biểu đồ dữ liệu theo ngày và giờ chỉ bằng cách sử dụng Arduino millis (). Xem Ngày và Giờ Arduino sử dụng millis () và pfodApp bằng phiên bản pfodApp mới nhất (V3.0.362 +).

Rev 4 của pfod_lp_nrf52.zip cũng hỗ trợ mô-đun GT832E_01 và hướng dẫn này bao gồm việc sử dụng các chân NFC nRF52 làm GPIO tiêu chuẩn.

Màn hình được xây dựng ở đây sẽ chạy trong nhiều năm trên Coin Cell hoặc 2 x pin AAA, thậm chí lâu hơn với hỗ trợ năng lượng mặt trời. Cũng như hiển thị nhiệt độ và độ ẩm hiện tại, màn hình lưu trữ các số đọc trong 36 giờ trong 10 phút cuối cùng và 10 ngày cuối cùng của các số đọc hàng giờ. Chúng có thể được lập biểu đồ trên điện thoại di động Android của bạn và các giá trị được lưu vào tệp nhật ký. Không cần lập trình Android, pfodApp xử lý tất cả những điều đó. Màn hình và biểu đồ Android được kiểm soát hoàn toàn bởi bản phác thảo Arduino của bạn, do đó bạn có thể tùy chỉnh theo yêu cầu.

Phần 2 sử dụng bo mạch Redbear Nano V2 cho thành phần BLE nRF52832. Dự án này thay thế điều đó bằng một bảng SKYLAB SKB369 rẻ hơn. Như trong Phần 2, bảng đột phá Sparkfun Si7021 được sử dụng cho Cảm biến nhiệt độ / độ ẩm. Một thư viện công suất thấp đã sửa đổi được sử dụng với Si7021.

Bước 1: Tại sao phải thay thế Nano V2?

i) Nano V2 đã hết sản xuất trong một số tháng và dường như không phù hợp với dòng Particle.io nên không rõ sẽ có sẵn trong bao lâu.

ii) Nano V2 đắt hơn. Tuy nhiên nó cũng có các tính năng bổ sung. Xem bên dưới.

iii) Nano V2 có các thành phần ở cả hai mặt giúp nó có cấu hình cao hơn và khó lắp hơn.

iv) Nano V2 có sẵn các chân I / O hạn chế và việc sử dụng D6 đến D10 yêu cầu các dây dẫn bay.

Mặc dù bo mạch Nano V2 đắt hơn so với bo mạch SKYLAB SKB369, ~ US17 so với ~ US5, Nano V2 có nhiều tính năng hơn. Nano V2 bao gồm bộ điều chỉnh và tụ điện cung cấp 3.3V, các thành phần phụ để sử dụng tùy chọn bộ chuyển đổi DC / DC nRF52, ăng-ten chip và đầu nối ăng-ten uFL SMT.

Một giải pháp thay thế khác là mô-đun GT832E_01 được www.homesmartmesh.com sử dụng. Rev 4 của pfod_lp_nrf52.zip cũng hỗ trợ lập trình mô-đun GT832E_01. SKYLAB SKB369 và GT832E_01 có sẵn tại

Redbear (Particle.io) cũng có một mô-đun trần không có bộ điều chỉnh 3V3, các thành phần DC / DC hoặc các thành phần tinh thể 32Khz.

Đề cương

Dự án này có 4 phần độc lập tương đối: -

Lựa chọn và xây dựng thành phần Loại bỏ cờ bảo vệ mã hóa nRF52 và lập trình phác thảo Tạo một định nghĩa bo mạch Arduino nRF52 mới Định cấu hình các chân NFC nRF52 làm GPIO

Bước 2: Lựa chọn và xây dựng thành phần

Lựa chọn thành phần

Ngoài các thành phần nRF52832 và Si7021 được chọn trong Phần 2, dự án này bổ sung thêm bộ điều chỉnh và tụ điện cung cấp 3.3V.

Thành phần điều chỉnh điện áp

Bộ điều chỉnh được sử dụng ở đây là MC87LC33-NRT. Nó có thể xử lý đầu vào lên đến 12V và có dòng tĩnh <3,6uA, thường là 1,1uA. Nano V2 sử dụng bộ điều chỉnh TLV704 có dòng tĩnh cao hơn một chút, thường là 3,4uA và có thể xử lý điện áp đầu vào cao hơn, lên đến 24V. Thay vào đó, MC87LC33-NRT được chọn vì biểu dữ liệu của nó chỉ định cách nó phản ứng khi điện áp đầu vào giảm xuống dưới 3,3V trong khi biểu dữ liệu TLV704 thì không.

TLV704 chỉ định điện áp đầu vào tối thiểu 2,5V và không rõ từ biểu dữ liệu điều gì sẽ xảy ra bên dưới đó. NRF52832 sẽ chạy xuống 1,7V và Si7023 sẽ chạy xuống 1,9V. Mặt khác, MC87LC33-NRT chỉ định chênh lệch điện áp đầu vào / đầu ra xuống 0V cho dòng điện thấp (Hình 18 của biểu dữ liệu). Vì vậy, với sự lựa chọn của các thành phần, MC87LC33-NRT đã được chọn vì nó có hiệu suất được chỉ định.

Cung cấp tụ điện

Bộ điều chỉnh MC87LC33-NRT cần một số tụ điện cung cấp để ổn định và đáp ứng. Tụ điện đầu ra> 0,1uF được khuyến nghị trên biểu dữ liệu. SKYLAB SBK369 cũng chỉ định các tụ điện 10uF / 0,1uF trên nguồn cung cấp gần bo mạch. Các tụ điện lớn hơn hỗ trợ cung cấp các xung dòng nRF52 TX. Ở đây, các tụ gốm 4 x 22uF 25V và 3 x 0,1uF 50V đã được sử dụng. Một tụ điện 22uF và 0,1uF được đặt gần SKYLAB SBK369, 0,1uF được đặt gần đầu ra của MC87LC33-NRT để đảm bảo sự ổn định và 22uF và 0,1uF được đặt trên đầu vào của MC87LC33-NRT và a thêm các tụ điện 2 x 22uF được hàn qua các chân Vin / GND như một ổ chứa dòng điện xa hơn. Để so sánh, bo mạch NanoV2 có 22uF / 0,1uF trên đầu vào bộ điều chỉnh TLV704 và 0,1uF trên đầu ra của nó.

Các tụ điện dự trữ dòng phụ đã được lắp đặt trên đầu vào của bộ điều chỉnh 3,3V để chúng sẽ sạc đến điện áp cao hơn khi chạy với pin mặt trời. Sạc đến điện áp cao hơn tương đương với việc lưu trữ nhiều dòng điện hơn để cung cấp cho các đỉnh Tx.

Tụ gốm X5R được sử dụng vì chúng có điện trở loạt thấp và dòng điện rò rỉ thấp. Điện trở thường là 100, 000MΩ hoặc 1000MΩ - µF, ít hơn bao giờ hết. Vì vậy, đối với 22uF, chúng tôi có 22000MΩ, tức là 0,15nA rò rỉ ở 3,3V hoặc 0,6nA cho bốn tụ điện 22uF. Đó là không đáng kể. Để so sánh ESR thấp, rò rỉ thấp Tụ điện Panasonic có dòng rò <0,01CV. Vì vậy, đối với một tụ điện 22uF 16V, rò rỉ là <10uA. Lưu ý: Đây là rò rỉ ở điện áp định mức, 16V trong trường hợp này. Rò rỉ thấp hơn ở điện áp thấp hơn, tức là <2,2uA ở 3,3V.

Danh sách các bộ phận

Chi phí ước tính cho mỗi đơn vị tại thời điểm tháng 12 năm 2018, ~ US $ 61, không bao gồm phí vận chuyển và lập trình viên từ Phần 1

  • SKYLAB SKB369 ~ US $ 5 ví dụ: Aliexpress
  • Bảng đột phá Sparkfun Si7021 ~ US $ 8
  • 2 x 53mm x 30mm 0,15W pin mặt trời 5V, ví dụ: Overfly ~ US $ 1,10
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ US $ 25 cho 5 lần giảm giá www.pcbcart.com
  • 1 x bộ điều chỉnh MC78LC33 3.3V, ví dụ: Digikey MC78LC33NTRGOSCT-ND ~ 1 đô la Mỹ
  • 2 x 0,1uF 50V gốm C1608X5R1H104K080A ví dụ: Digikey 445-7456-1-ND ~ US $ 0,3
  • 4 x 22uF 16V gốm GRM21BR61C226ME44L ví dụ: Digikey 490-10747-1-ND ~ 2 đô la Mỹ
  • 1 x BAT54CW, ví dụ: Digikey 497-12749-1-ND ~ US $ 0,5
  • 1 x 470R 0,5W 1% điện trở ví dụ: Digikey 541-470TCT-ND ~ US $ 0,25
  • 1 x 10V 1W zener SMAZ10-13-F ví dụ: Digikey SMAZ10-FDICT-ND ~ US $ 0,5
  • Vít nylon 3mm x 12mm, ví dụ: Jaycar HP0140 ~ AUD $ 3
  • Hạt nylon 3mm x 12mm, ví dụ: Jaycar HP0146 ~ AUD $ 3
  • Scotch Permanent Mounting Tape Cat 4010, ví dụ: từ Amazon ~ US $ 6,6
  • Giá đỡ pin CR2032, ví dụ: HU2032-LF ~ US $ 1,5
  • Pin CR2032 ~ US $ 1
  • Tấm Perspex, 3,5mm và 8mm
  • pfodApp ~ US $ 10
  • Hàn dán, ví dụ: Jaycar NS-3046 ~ AUD $ 13

Bước 3: Thi công

Sự thi công
Sự thi công
Sự thi công
Sự thi công
Sự thi công
Sự thi công

Dự án được xây dựng trên một PCB nhỏ. PCB được sản xuất bởi pcbcart.com từ các tệp Gerber này, SKYLAB_TempHumiditySensor_R2.zip PCB bắt chước chân cắm Nano V2 và có mục đích chung là đủ để sử dụng cho các dự án BLE khác.

Đây là sơ đồ (phiên bản pdf)

Đầu tiên hàn các thành phần SMD, sau đó gắn bo mạch SKYLAB SKB369

Hầu hết tất cả các thành phần là thiết bị gắn kết bề mặt (SMD). Các tụ điện và IC có thể khó hàn bằng tay. Phương pháp được đề xuất là giữ nguyên PCB và bôi một lượng nhỏ keo hàn lên các tấm đệm và đặt các thành phần SMD, ngoại trừ bo mạch SKB369 trên PCB. Sau đó, sử dụng súng nhiệt, áp dụng nhiệt vào mặt dưới của PCB cho đến khi keo hàn nóng chảy và sau đó lướt nhanh qua mặt trên của bo mạch, cẩn thận để không làm nổ các thành phần. Cuối cùng chạm vào các thành phần bằng một mỏ hàn đầu nhỏ. Hãy cẩn thận với các tụ điện và điện trở vì nó rất dễ làm chảy cả hai đầu và khiến linh kiện bị lỏng khi hàn một đầu.

Bản sửa đổi này bổ sung thêm các tụ gốm 22uF 16V. Các tụ điện bổ sung này làm giảm xung đột ngột hiện tại được rút ra từ pin và cũng làm giảm điện áp giảm khi được cung cấp năng lượng từ pin mặt trời. Miễn là điện áp từ pin mặt trời vẫn cao hơn điện áp của pin thì không có dòng điện nào được rút ra từ pin.

Sau khi các thành phần SMD đã được gắn kết, bạn có thể hàn bo mạch SKYLAB SKB369. Có hai lỗ điểm kiểm tra trên một mặt của các tab SKB369. Sử dụng hai ghim vào một đế bìa cứng để định vị bảng SKB369 và căn chỉnh các ghim cẩn thận. (Xem hình ảnh ví dụ ở trên bằng cách sử dụng Bản sửa đổi 1 PCB) Sau đó hàn một chân của phía đối diện để giữ bo mạch vào vị trí trước khi hàn các chân khác.

Lưu ý dây liên kết Gnd từ CLK đến GND trong phần đã hoàn thiện. Điều này được cài đặt SAU KHI lập trình để ngăn nhiễu trên đầu vào CLK kích hoạt chip nRF52 vào chế độ gỡ lỗi hiện tại cao

Gắn hộp

Hộp gắn được làm từ hai miếng cá tính, 110mm x 35mm, dày 3mm. Mảnh 3,5mm bên dưới pin mặt trời được khai thác để lấy các vít nylon 3mm. Cấu trúc sửa đổi này là đơn giản hóa sau đó là Rev 1 và cải thiện luồng không khí xung quanh cảm biến. Các lỗ phụ ở mỗi đầu là để gắn, ví dụ như sử dụng dây buộc cáp.

Bước 4: Xóa cờ bảo vệ mã hóa NRF52

Xóa cờ bảo vệ mã hóa NRF52
Xóa cờ bảo vệ mã hóa NRF52
Xóa cờ bảo vệ mã hóa NRF52
Xóa cờ bảo vệ mã hóa NRF52
Xóa cờ bảo vệ mã hóa NRF52
Xóa cờ bảo vệ mã hóa NRF52

Kết nối bảng Nhiệt độ / Độ ẩm với Bộ lập trình được mô tả trong Phần 1 như hình trên.

Với các tế bào năng lượng mặt trời và pin được rút ra, Vin và Gnd được kết nối với Vdd và Gnd của lập trình viên (các đạo trình Vàng và Xanh lục) và SWCLK và SWDIO được kết nối với Clk và SIO của bảng tiêu đề lập trình viên (các đạo trình Trắng và Xám)

Loại bỏ bảo vệ chương trình nRF52

Từ trang Nordic Semi - Debug and Trace DAP - Debug Access Port. Trình gỡ lỗi bên ngoài có thể truy cập thiết bị thông qua DAP. DAP triển khai Cổng gỡ lỗi dây nối tiếp ARM® CoreSight ™ (SW-DP) tiêu chuẩn. SW-DP triển khai giao thức Gỡ lỗi dây nối tiếp (SWD) là giao diện nối tiếp hai chân, SWDCLK và SWDIO

Quan trọng: Đường SWDIO có một điện trở kéo lên bên trong. Đường SWDCLK có một điện trở kéo xuống bên trong.

CTRL-AP - Cổng truy cập điều khiển. Cổng truy cập điều khiển (CTRL-AP) là một cổng truy cập tùy chỉnh cho phép điều khiển thiết bị ngay cả khi các cổng truy cập khác trong DAP đang bị vô hiệu hóa bởi tính năng bảo vệ cổng truy cập. Bảo vệ cổng truy cập chặn trình gỡ lỗi khỏi quyền truy cập đọc và ghi vào tất cả các thanh ghi CPU và địa chỉ được ánh xạ bộ nhớ. Tắt bảo vệ cổng truy cập. Chỉ có thể tắt tính năng bảo vệ cổng truy cập bằng cách ra lệnh ERASEALL qua CTRL-AP. Lệnh này sẽ xóa Flash, UICR và RAM.

Chọn CMSIS-DAP làm trình lập trình cho Particle's Debugger và chọn nRF5 Flash SoftDevice

Nếu đèn flash hoạt động thì không sao, nhưng thường thì các mô-đun sẽ được bảo vệ chống lại việc lập trình lại và bạn sẽ nhận được đầu ra lỗi này trong cửa sổ Arduino

Mở Trình gỡ lỗi trên chip 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Được cấp phép theo GNU GPL v2 Đối với báo cáo lỗi, hãy đọc https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Thông tin: chỉ có một tùy chọn truyền tải; tự động chọn tốc độ bộ điều hợp 'swd': 10000 kHz cortex_m reset_config sysresetreq Thông tin: CMSIS-DAP: SWD Thông tin được hỗ trợ: CMSIS-DAP: Giao diện được khởi tạo (SWD) Thông tin: CMSIS-DAP: Phiên bản FW = 1.10 Thông tin: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Thông tin: CMSIS-DAP: Giao diện sẵn sàng Thông tin: giảm tốc độ yêu cầu: tối đa 10000kHz xuống 5000kHz Thông tin: tốc độ đồng hồ 10000 kHz Thông tin: SWD IDCODE 0x2ba01477 Lỗi: Không tìm thấy MEM -AP để kiểm soát lỗi cốt lõi: Chưa kiểm tra mục tiêu Lỗi khi nhấp nháy SoftDevice.

Trong trường hợp đó, bạn cần đặt thanh ghi lệnh ERASEALL trong nRF52 để xóa bộ nhớ và làm cho thiết bị có thể lập trình trở lại. Phiên bản openOCD được cung cấp với sandeepmistry nRF52 không bao gồm lệnh apreg cần thiết để ghi vào thanh ghi lệnh ERASEALL, vì vậy bạn cần cài đặt phiên bản mới hơn.

Cài đặt phiên bản OpenOCD OpenOCD-20181130 trở lên. Phiên bản Windows được biên dịch trước có sẵn từ https://gnutoolchains.com/arm-eabi/openocd/ Mã mới nhất hiện có từ

Mở dấu nhắc lệnh và thay đổi dir thành thư mục cài đặt OpenOCD và nhập lệnh

bin / openocd.exe -d2 -f interface / cmsis-dap.cfg -f target / nrf52.cfg

Câu trả lời là

Mở Trình gỡ lỗi trên chip 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Được cấp phép theo GNU GPL v2 Đối với báo cáo lỗi, hãy đọc https://openocd.org/doc/doxygen/ bug.html debug_level: 2 Thông tin: tự động chọn phương tiện truyền tải phiên có sẵn đầu tiên "swd". Để ghi đè, hãy sử dụng 'lựa chọn vận chuyển'. tốc độ bộ điều hợp: 1000 kHz cortex_m reset_config sysresetreq Thông tin: Đang lắng nghe trên cổng 6666 cho kết nối tcl Thông tin: Đang nghe trên cổng 4444 cho kết nối telnet Thông tin: CMSIS-DAP: SWD Thông tin được hỗ trợ: CMSIS-DAP: Phiên bản FW = 1.10 Thông tin: CMSIS-DAP: Giao diện Khởi tạo (SWD) Thông tin: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Thông tin: CMSIS-DAP: Giao diện sẵn sàng Thông tin: tốc độ đồng hồ 1000 kHz Thông tin: SWD DPIDR 0x2ba01477 Lỗi: Không thể tìm thấy MEM-AP để kiểm soát thông tin chính: Đang nghe trên cổng 3333 cho các kết nối gdb

Sau đó, mở một cửa sổ đầu cuối, ví dụ: TeraTerm (Windows) hoặc CoolTerm (Mac) và kết nối với cổng 127.0.0.1 4444

Cửa sổ telnet sẽ hiển thị dấu> và dấu nhắc lệnh sẽ hiển thị Thông tin: chấp nhận kết nối 'telnet' trên tcp / 4444

Trong cửa sổ telnet (tức là TeraTerm), typenrf52.dap apreg 1 0x04, cửa sổ này trả về 0x00000000 hiển thị chip được bảo vệ. Sau đó, typeenrf52.dap apreg 1 0x04 0x01 và thennrf52.dap apreg 1 0x04this trả về 0x00000001 cho biết chip hiện đã được đặt thành ERASEALL vào lần khởi động lại tiếp theo.

Đóng kết nối telnet và cũng sử dụng Ctrl-C để thoát khỏi chương trình openOCD trong dấu nhắc lệnh, sau đó bật nguồn cho mô-đun nRF52 và bây giờ nó sẽ sẵn sàng để lập trình.

Bây giờ hãy thử flash lại thiết bị mềm.

Bây giờ bạn có thể lập trình mô-đun nRF52 từ Arduino.

Bước 5: Lập trình SKYLAB SKB369

Lập trình SKYLAB SKB369
Lập trình SKYLAB SKB369
Lập trình SKYLAB SKB369
Lập trình SKYLAB SKB369
Lập trình SKYLAB SKB369
Lập trình SKYLAB SKB369

Đóng Arduino và cài đặt lại phiên bản hỗ trợ pfod_lp_nrf52 mới nhất bằng cách làm theo hướng dẫn Cài đặt hỗ trợ phần cứng pfod_lp_nrf52. Pfod_lp_nrf52 mới nhất bao gồm bo mạch thay thế SKYLAB SKB369 Nano2. Chọn đó làm bảng và sau đó bạn có thể lập trình nó với Bản sửa đổi 3 của lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, như được mô tả trong Phần 2.

Nếu lập trình không thành công. Đóng tất cả các cửa sổ Arduino, tháo cáp USB, khởi động lại Arduino và cắm lại cáp USB của lập trình viên và cắm lại nguồn cung cấp USB của mô-đun nRF52 và thử lại.

Sau đó kết nối thông qua pfodApp để hiển thị nhiệt độ và độ ẩm hiện tại và lịch sử. Khi bạn đã hiển thị cốt truyện lịch sử, các bài đọc, với dấu thời gian mili giây, được lưu vào tệp nhật ký trên điện thoại di động của bạn và cũng có sẵn trong màn hình dữ liệu thô.

Tệp nhật ký cũng chứa dữ liệu bổ sung cần thiết để tạo lại biểu đồ ngày và giờ trong bảng tính. Xem Ngày và Giờ Arduino sử dụng millis () và pfodApp để biết chi tiết

Bước 6: Tạo định nghĩa bảng Arduino NRF52 mới

Tạo định nghĩa bảng Arduino NRF52 mới
Tạo định nghĩa bảng Arduino NRF52 mới
Tạo định nghĩa bảng Arduino NRF52 mới
Tạo định nghĩa bảng Arduino NRF52 mới
Tạo định nghĩa bảng Arduino NRF52 mới
Tạo định nghĩa bảng Arduino NRF52 mới
Tạo định nghĩa bảng Arduino NRF52 mới
Tạo định nghĩa bảng Arduino NRF52 mới

Để hỗ trợ bo mạch nRF52 mới, bạn cần a) thêm thư mục mới trong thư mục biến thể với các tệp bảng và b) chỉnh sửa tệpboards.txt để thêm bo mạch mới vào Arduino.

Thêm một biến thể bo mạch nRF52 mới

Như được mô tả trong Phần 1, Cài đặt hỗ trợ phần cứng pfod_lp_nrf52, tìm thư mục con phần cứng của gói sandeepmistry mà bạn đã cập nhật với hỗ trợ pfod_lp_nrf52. Mở thư mục con / phần cứng / nRF5 / 0.6.0 / variants và tạo một thư mục mới cho bảng mới của bạn, ví dụ:SKYLAB_SKB369_Nano2replacement Trong thư mục mới / phần cứng / nRF5 / 0.6.0 / variants / SKYLAB_SKB369_Nano2replacement, tạo ba tệp biến thể.h, variant.cpp vàpin_arduino.h Bạn có thể sao chép chúng từ trên các thư mục biến thể bảng khác. Đối với SKYLAB_SKB369_Nano2replacement, ban đầu tôi đã sao chép các tệp từ biến thể RedBear_BLENano2.

tệp ghim_arduino.h

Bạn không cần thay đổi tệp tinpin_arduino.h. Nó chỉ bao gồm tệp variant.h

tệp variant.h

Chỉnh sửa tệp variant.h để xác định tổng số chân mà bảng của bạn sẽ có, PINS_COUNT

LƯU Ý: Trong gói sandeepmistry, NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS và NUM_ANALOG_OUTPUTS cài đặt bị bỏ qua

Nếu bo mạch của bạn có sẵn nhiều hoặc ít chân analog, hãy cập nhật phần / * Analog Pins * / của tệp variants.h.

LƯU Ý: Đối với bo mạch NanoV2 và SKYLAB, các chân Analog được ánh xạ tới các chân Kỹ thuật số A0 == D0, v.v

Đây không phải là điều cần thiết. Bạn có thể gán Đầu vào Analog cho bất kỳ chân Arduino nào thuận tiện. Sau đó xem các tệp blue / variant.h và blue / variant.cpp để làm ví dụ.

Chip nRF52832 có 8 chân đầu vào tương tự, nhưng bảng SKYLAB_SKB369_Nano2replacement chỉ tạo ra 6 chân trong số chúng để phù hợp với Nano2.

Tất cả các số pin, ngoại trừ RESET_PIN, trong tệp variant.h là số pin Arduino. Đó là #define PIN_A0 (0) ngụ ý rằng D0 trong bản phác thảo arduino là cùng một chân với A0. RESET_PIN là ngoại lệ. Con số đó là số pin chip nRF52823 và 21 là sự lựa chọn hợp lệ duy nhất. Tuy nhiên, hỗ trợ pfod_lp_nrf52 không kích hoạt chốt đặt lại trên nRF52832

tệp variant.cpp

Chỉ có một mục nhập trong tệp variant.cpp, mảng g_ADigitalPinMap ánh xạ số chân Arduino tới chân P0.. chip nRF52832

LƯU Ý: Trong bảng NanoV2 và SKYLAB, các chân tương tự Arduino A0, A1… giống với các chân kỹ thuật số Arduino D0, D1… vì vậy các mục đầu tiên trong g_ADigitalPinMap PHẢI ánh xạ tới số chân AINx trên chip nRF52832

Đối với các Đầu vào Analog mà bảng của bạn cung cấp, các mục nhập đó trong g_ADigitalPinMap phải ánh xạ các số pin nRF52832 AIN0, AIN1, AIN2, v.v. tức là AIN0 là chân chip P0.02, AIN1 là chân chip P0.03, v.v. xem cách bố trí chân nRF52832 ở trên.

Sử dụng (uint32_t) -1 cho các ánh xạ không hợp lệ. Ví dụ: bảng SKYLAB_SKB369_Nano2replacement không có đèn LED tích hợp, D13, vì vậy vị trí của nó được ánh xạ tới (uint32_t) -1

Trong pfod_lp_nrf52.zip, các thư mục con của các biến thể Redbear NanoV2, SKYLAB SKB369 và GT832E_01 có hình ảnh hiển thị các ánh xạ được thiết lập bởi variant.cpp. (Xem các hình ảnh trên)

Trong trường hợp của SKYLAB SKB369, có rất nhiều chân cắm để bạn lựa chọn. Chỉ đủ được ánh xạ để khớp với NanoV2. Trong trường hợp của GT832E_01, tất cả các chân có sẵn cần được ánh xạ. Ngay cả khi đó chỉ có ba (3) đầu vào tương tự có sẵn thay vì sáu (6) trên NanoV2. Cũng như vậy, hai chân NFC, P0.09 và P0.10, cần được cấu hình lại thành GPIO. Xem Định cấu hình lại các chân NFC nRF52 làm GPIO bên dưới.

Cập nhật tệpboards.txt

Đây là mục nhập SKYLAB_SKB369_Nano2replacement trong tệpboards.txt.

## SKYLAB_SKB369 Nano2 ReplacementSKYLAB_SKB369_NANO2_REPLACEMENT.name = * SKYLAB SKB369 Nano2 Replacement

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol = cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target = nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload_REimum_size SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb = false

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu = cortex-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16.000.000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi = hard -mfpu = fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript = nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags = -DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132 = S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = s132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409.600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript = armgcc_s132_nrf52832_xxaa.ld

Cài đặt board.txt

Nhận xét - dòng bắt đầu bằng # là nhận xét.

Tiền tố - mỗi bảng cần một tiền tố duy nhất để xác định các giá trị của nó. Ở đây, tiền tố làSKYLAB_SKB369_NANO2_REPLACEMENT.

Tên - Dòng SKYLAB_SKB369_NANO2_REPLACEMENT.name chỉ định tên của bảng này để hiển thị trong menu bảng của Arduino.

Công cụ tải lên - Khối SKYLAB_SKB369_NANO2_REPLACEMENT.upload chỉ định công cụ nào sẽ sử dụng để tải lên. Nếu bạn đang sử dụng Particle Debugger thì hãy sử dụng protocol = cmsis-dap như hình trên.

Bootloader - Dòng này giống nhau cho tất cả các bảng trong board.txt này

Xây dựng - Chỉ cần cập nhật hai dòng trong khối này. Dòng SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant chỉ định bảng này là tên thư mục trong thư mục con biến thể. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board là giá trị được nối vào ARDUINO_ và sau đó được xác định trong khi biên dịch mã. ví dụ. -DARDUINO_SKYLAB_SKB369_Nano2replacement Điều này cho phép bạn bật / tắt các phần của mã cho các bảng cụ thể.

Đồng hồ tần số thấp - Dòng này, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, chỉ định nguồn của đồng hồ tần số thấp, được sử dụng cho lp_timer. Có ba tùy chọn, -DUSE_LFXO, -DUSE_LFRC và -DUSE_LFSYNT. Sự lựa chọn tốt nhất là -DUSE_LFXO, nếu bo mạch có một tinh thể 32Khz bên ngoài. Nếu không thì hãy sử dụng -DUSE_LFRC, sử dụng bộ dao động RC bên trong và tạo ra dòng điện nhiều hơn một chút, nhiều hơn ~ 10uA và kém chính xác hơn nhiều lần. Không sử dụng -DUSE_LFSYNT vì điều này giữ cho chip hoạt động mọi lúc, dẫn đến hiện tại rút ra mAs.

Softdevice - pfod_lp_nrf52 chỉ hỗ trợ chip nRF52 và softdevice s132 nên không cần thay đổi đối với khối này, ngoại trừ tiền tố.

Định cấu hình lại các chân NFC nRF52 như của GPIO

Được đặt mặc định trên các chân nRF52, P0.09 và P0.10 được định cấu hình để sử dụng như NFC và mong đợi được kết nối với ăng-ten NFC. Nếu bạn cần sử dụng chúng làm chân I / O cho mục đích chung (GPIO) thì bạn cần thêm xác định, -DCONFIG_NFCT_PINS_AS_GPIOS, vào… menu.softdevice.s132.build.extra_flags cài đặt biên dịch trong tệpboards.txt của bảng đó.

Ví dụ: pfod_lp_nrf52.zip, hãy cấu hình lại các chân GT832E_01 để sử dụng làm I / O. Phần GT832E_01 cho bảng này, trong tệpboards.txt, đã thêm định nghĩa sau

GT832E_01.menu.softdevice.s132.build.extra_flags = -DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

Tập lệnh trình liên kết trong pfod_lp_nrf52.zip cũng đã được sửa đổi để giữ nguyên cài đặt này và không cần phải thay đổi.

Bước 7: Kết luận

Hướng dẫn này đã trình bày sự thay thế cho Redbear NanoV2 bằng cách sử dụng mô-đun SKYLAB SKB369. Màn hình độ ẩm nhiệt độ chạy bằng pin / năng lượng mặt trời đã được sử dụng làm ví dụ về dự án BLE công suất rất thấp trong Arduino cho mô-đun SKYLAB. Dòng cung cấp ~ 29uA đạt được bằng cách điều chỉnh các thông số kết nối. Điều này dẫn đến tuổi thọ pin đồng xu CR2032 ~ 10 tháng. Dài hơn cho các tế bào tiền xu và pin dung lượng cao hơn. Thêm hai pin mặt trời giá rẻ dễ dàng kéo dài tuổi thọ pin lên 50% hoặc hơn. Đèn phòng sáng hoặc đèn bàn là đủ để cung cấp năng lượng cho màn hình từ pin mặt trời.

Hướng dẫn này cũng đề cập đến việc loại bỏ bảo vệ chip khỏi nRF52 được lập trình sẵn và cách thiết lập định nghĩa bảng mới để phù hợp với PCB / mạch của riêng bạn

Không cần lập trình Android. pfodApp xử lý tất cả những điều đó.

Đề xuất: