Arduino nRF 51822

최근에 BLE 관련 공부를 시작했어요

최근 Maker 활동에서 제작하고 있는 Mbedded 장치는 Connectivity가 매우 중요합니다.단독으로 작동하는 것보다 다양한 디바이스 및 서버 또는 cloud와 연동하여 사용합니다.그래서 외부와 인터페이스 할 수 있는 미디어가 필요합니다.고전적인 통신 방법인 RS-232C, RS-485는 물론 유선 랜까지 유선은 이미 물소가 되었습니다.요즘은 대세가 무선통신이에요.

무선통신에는 Wi-Fi, BTclasic, BLE, Zig Bee, Zig Wave가 많이 사용됩니다.그 중 Wi-Fi와 BLE는 최근 거의 모든 사람이 소유하고 있는 최고의 단말기인 스마트폰에 기본으로 채용되고 있는 무선 통신 방식입니다.

그래서 Wi-Fi와 BLE 통신을 내 기기가 지원하면 쉽게 스마트폰과 연계하여 아주 다양한 일을 할 수 있습니다.

또한 시스템을 구축할 때는 디바이스 간 서버와 Cloud와 연계한 생산성 높은 일을 하는 것이 그래서 최근에는 이중 하나인 BLE를 채용하기 위해 스터디 그룹을 갖고 있습니다.BLE의 경우 espressif ESP32와 nordic nRF52를 사용하려고 합니다. nRF52는 nRF52840과 nRF52832, nRF52811을 사용하려고 합니다.

개발 TOOL에는 SES와 J-Link를, 개발 툴에는 노르딕 SDK와 soft device를 활용할 생각입니다.여기에 Arduino 환경도 병행해서 채용하려고 합니다.

킬러 툴로 키우려면 SES 환경에서 nordic SDK 기반으로 해야 옳겠지만 쉽게 사용하려면 Arduino 환경도 나름대로 생산성이 높을 것 같기 때문입니다.

마치 STC-M도 STC-M32CubeIDE와 Arduino의 관계와 같은 개념입니다.

최근 nRF52832, nRF52840 베이스로 SES+SDK 환경과 Arduino 환경을 모두 세팅하여 기본 동작을 시도해 보았습니다.

부품상자를 정리하더니 이전에 구입해 두었던 nRF51822 구형이 모두 몇개 발견되었습니다.구형이니까 BLE 4.x 대만 지원하던 거고 구매만 해놓고 공부는 안 해서 못 쓰던 거였어요.요즘 이것저것 정보를 찾다가 얘도 한번 시험을 보기로 했어요

이 놈은 깊이 쓰는 게 아니라 단순히 Arduino 기반으로 작업해 보기로 했습니다.우선 오래된 모델이라 SES로는 SDK에서 지원하지 않고 IAR나 KEIL, GCC만 지원합니다.

시험용 보드는 Wave Share 보드입니다Arduino는 아래 사이트를 사용했습니다.Software Imagineer . sandeepmistry has 184 repositories available . Follow their code on GitHub.github.com

Arduino-nRF5 및 arduino-BL Eperipheral을 설치하십시오.디버거는 J-Link를 사용하기로 했습니다. ST-Link도 좋다고 하는데 제 경우 동작이 잘 안되네요.

아두이노 설치는 매번 하던 대로 하시면 됩니다.

먼저 보드매니저에 URL을 등록하고

보드 매니저부터 인스톨 하시면 됩니다

그리고 라이브러리를 인스톨 해줍니다An Arduino library for creating custom BLE peripherals with Nordic Semiconductor ‘ s nRF 8001 or nR51822 . – sandeepmistry / arduino-BLEPeripheralgithub.com

이렇게 라이브러리가 설치되고

관련 예제도 설치됩니다.

보드의 설정은 위와 같이 했습니다.

J-Link와 모듈은 상단을 참조하여 연결합니다.

VCC ———— VTrefGND ———— GNDSWDIO ——— SWDIOSWCLK ——— SWCLK

이와 같이 접속해, 보드 전원은 3.3 V를 입력하면 OK입니다.VCC ———- 3 . 3 VGND ——— GND

Arduino 사용 전 노르딕의 경우 Soft device를 사전 저장해야 합니다.

nRF 51822 System on Chip Bluetooth Low Energy and 2 . 4 GHz SoC The nRF 51822 is a general purpose , ultra – low power SoC ideally suited for Bluetooth ® Low Energy and 2 . 4 GHz proprietary wireless applications . It is built around the 32 – bit ARM ® Cortex ™ – M0 CPU with 256 / 128 KB flash and 32 / 16 KB RAM . The fl … www.nordicsemi.com

여기서 S130 SoftDevice와 nRF5 SDK를 다운받아 적당한 위치에 해제합니다.

そして 、 S130 を フラッ シン グ する とき には nrfconnect を 使いました 。 nRF Connect for Desktop is a cross – platform framework for development applications . It contains applications for testing Bluetooth Low Energy and LTE links , power optimization , programming and more.www.nordicsemi.com 여기서 다운을 받아 설치하면 됩니다 .

실행하면 위와 같이 동작하고 여기서 programmer를 선택하면 됩니다.첫 번째는 install 버튼이 있고 install 하시면 됩니다. J-Link에 모듈을 물려 전원을 켠 후에 Programmer를 오픈합니다.

Select device를 해서 연결을 합니다.

우측에 Add HEX 파일을 이용해서 좀 전에 다운받아놓은 S130을 불러옵니다.

이 파일입니다.

Erase & write를 눌러 플러싱합니다.

Read를 설정하면 정상적으로 휘었는지 확인할 수 있습니다.

이번에는 기본 블링킹의 예제를 동작해 보도록 하겠습니다.P 0.18이랑 P 0.19에 LED를 붙여줬어요

위와 같이 설정해서 구우면… 조푸에라가 나오네요.찾아보니까 일반 제이링크 드라이버로는 작동이 안 된대요.어디 보자

Zadig USB driver installation made easy Zadig is a Windows application that installs generic USB drivers , such as WinUSB , libusb – win 32 / libusb 0 . sys or libusbK , to help you access USB devices . It can be especially useful for cases where : you want to access a device using a libusb – based application … zadig.akeo.ie ここ で 、 ドライバ 変更 ツール を ダウンロード します 。설치 파일이 아니기 때문에 부담을 느끼지 않습니다. ^^

Segger J-LInk 기본 드라이바 설치할 때 J-Link입니다

다운로드 받은 프로그램을 실행하고 Options –> List All Devices를 클릭합니다.

Driver가 아래와 같이 되어 있는지 확인하고 Replace Driver를 누릅니다.

그러면 드라이버를 Segger J-Link에서 Win USB로 바꾸겠습니다

그러면 이렇게 바뀌어요.

그러면 장치 관리자들도 이렇게 변해요.

Downum에 아두이노로 다운로드하면 정상적으로 다운로드 받을 수 있습니다.

Arduino 환경에서 nRF51822 앱을 시험해 보세요.

그리고, J-Link 드라이버가 이와 같이 Win USB 드라이버로 바꾸어 버려서, 다른 것이 동작하지 않게 됩니다.탄복시키는 방법입니다.

디바이스 관리자에서 BULK in terface 오른쪽 마우스를 눌러 속성으로 들어갑니다.

드라이버 롤백을 합니다.

이유를 선택하지 않으면 “확인” 버튼이 활성화되지 않습니다.

Segger J-Link로 바뀝니다.조금 번거로우시겠지만 Zadig.exe를 사용하여 바꾸고 롤백하면 될것 같습니다.

ST-Link도 된다고 하는데 저는 애라가 나와요 ^^

프롤로그

예시를 보시면 Eddstone 과 iBeacon 예제와 Serial 예제가 있습니다.예제 소스를 보면 최소한의 간략화 버전이므로 쉽게 확장할 수 있다고 생각해요.

nRF SDK의 예제를 따라가려면 허리가 빠지는데 일단 여기서 시험삼아 확장하면 목적지에 도달하기가 쉬울 것 같습니다

기본핀맵은 arduino-nRF5/variants 디렉토리를 참조해 주세요.자신이 사용한 Waveshare BLE400모듈의 경우는 이렇게 됩니다.arduino-n RF5/variants/Waveshare_BLE400/variant.h 를 참조하십시오.기본적으로는 LED가 4개, 버튼이 2개, Analog가 5개, UART, SPI, I2C가 할당이 되어 있습니다.

Timer와 PWM은 어떻게 되어가고 있는지 모르겠네요^^..

현업 때는 사실 Arduino는 본 적이 없었어요뭔가 좀 없어 보이고 아마추어가 쓰는 느낌이랄까.근데 최근에 아두이노를 쓰면서 인식이 바뀌었어요.

아두이노 간결한 코드스타일이 최근에는 너무 마음에 듭니다. nRF51822에 시리얼을 동작시켜 보았습니다.이제 콘솔이 가동되고 있기 때문에 이것저것 시도해 볼 수 있을 겁니다.

물론 많은 사람들이 관여하기 때문에 혼란스럽고 라이브러리에 대한 검증도 안 되고 있지만 STM32CubeIDE나 Nordic SDK를 사용해도 별로 만들어지지 않습니다.

ST나 Nordic SDK를 보시면 아시겠지만 사실 HAL Driver는 대충 잘 되어 있지만 Devicedriver는 거의 없다고 봐야 합니다.결국 사용자가 HAL driver 기반으로 Device driver를 포털해야 하는데, 외주를 해서 검증의 필요성을 받으면 되지만 스스로 해야 한다면 무서운 상황이 발생합니다.

주변을 보면 대부분 인터넷에서 검색해 보지 못한 소스를 복사해 포터하는 게 현실이고, 결국 검증과 안전성은 스스로의 몫이 되고 맙니다.

제 경우 제가 이식하고 변경하고 부팅하는 시간에 이미 대부분의 Devicedriver가 설치되어 있는 아두이노 환경에서 사용법과 소스의 안정성을 확인하는데 시간을 많이 들이는 것이 생산성이 높아지는 방법이라고 생각하게 되었습니다.

각종 디바이스 드라이버 포팅해서 git HUB에 태워주는 오지럽 넓은(?) : ^. 그분들이 저보다 능력이 떨어지는 것도 아니고, 제가 한다고 해서 그분보다 잘할 자신도 전혀 없기 때문입니다.

그 분들이 올린 소스를 보면서 전체 흐름을 파악하고, 만약에 문제가 생겼을 때 스스로 수정할 수 있는 정도라면 OK해서 채용하는 게 요즘 방법론이 되었습니다.

순서는 바뀌었지만, 다음은 nRF52840과 nRF52832를 Arduino 환경에서 사용하는 방법을 정리해 보겠습니다.

어떤것이좋다기보다는하나를선택하는것보다그다지힘들지않기때문에둘다해보면서작업하는게좋다고생각하기때문입니다.

벤더 SDk의 구조를 이해하는 것은 사실 그렇게 간단하지 않습니다.단순한 Arduino에서 목표 기능을 동일하게 구현하고 길을 본 후 벤더 SDK로 재구성하는 것이 빠를 수 있기 때문입니다.

이것은 물론 저의 경우의 주관적인 뇌 공식이기는 합니다. ^^

error: Content is protected !!