본문 바로가기

BLE

(22)
GNU ARM Toolchain 버전 선택시 주의사항 지금까지는 무엇이든 최신 버전이 더 최적화가 잘 되어있을 것이라고 생각하여 GNU ARM Toolchain과 이클립스 최신 버전이 나올 때마다 업데이트해 왔습니다. 그런데 SDK12.3의 bootloader_secure를 GCC와 이클립스를 사용하여 빌드 후 플래시하니 작동하지 않았습니다. 이전 포스팅과 마찬가지로 Keil을 사용하면 제대로 작동했습니다. 이번엔 아무리 분석해 봐도 Keil과의 차이점이나 오류를 찾을 수 없었습니다. 마지막에 설마하는 심정으로 툴체인 버전을 글을 쓰는 시점의 최신 버전인 7-2017-q4-major에서 튜토리얼에서 사용된 4.9 2015q3 버전으로 바꿔봤는데 제대로 작동하더군요. 이 링크에 나와있지만 노르딕의 SDK와 소프트디바이스는 GCC 기준으로 모두 4.9 2015..
nRF_SDK12.3 buttonless_dfu 예제 GCC 프로젝트 버그 예전에 BLE를 이용하여 펌웨어를 업데이트(On-The-Air Device Firmware Update)하는 예제인 experimental_ble_app_buttonless_dfu를 실행시켜 본 적이 있습니다. 당시엔 BLE 공부를 처음 시작할 때여서 개발자 블로그에 나온대로 따라하기만 했습니다. 그때는 여러 SDK 버전을 오가며 dual bank dfu도 실행해 보고 secure dfu도 실행해 보고 이것저것 해볼 때라 지금 다시 시도해보려니 많이 헤깔렸습니다. 그래서 예전에 사용했던 DFU 관련 프로젝트, 파일들을 완전히 지우고, 새로 만들어 봤습니다. 그런데 GCC와 이클립스로 다시 세팅을 하고, 오류없이 빌드하고 플래시했음에도 불구하고 실행이 되지 않았습니다. 이상한 것은 동일한 파일을 사용하여 ..
[Noise Detector] 어플리케이션 (2) : 소스 코드 GitHub 다른 컴퓨터에서 빌드해도 작동하는 것 확인했습니다.WaveData 저작권 문구와 동일합니다. Copyright (c) 2017, JoonDongAll rights reserved.Copyright holder's blog : http://joondong.tistory.com Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:소스와 바이너리 형태로 재배포와 사용은 다음 조건들을 만족한 경우에만 허용됩니다.Redistributions of source code must retain the abo..
[Noise Detector] 어플리케이션 (1) : 시스템 흐름 노르딕에서는 BLE(Bluetooth Low Energy) 어플리케이션 개발을 위해 nRF Toolbox 어플리케이션의 BleProfile 모듈을 제공합니다. BleProfile 모듈은 BleProfileActivity, BleProfileServiceReadyActivity, BleProfileExpandableListActivity, BleMulticonnectProfileServiceReadyActyvity 4가지 버전의 액티비티를 제공하며, 개발자는 이 중에서 한가지를 선택하여 사용할 수 있습니다. BleProfileManager는 연결 상태를 관리하고, 데이터를 송수신(Notification/Indication)하는 역할을 담당하며, BleProfileManager의 객체는 액티비티에 생성될 수..
[Noise Detector] nRF51 (6) : 소스 코드 및 플래시 방법 GitHub nRF5 SDK 12.3 환경에서 만들어 졌으며, 여기에서 다운받은 후 압축 푼 폴더에 덮어씌우면 됩니다. 플래시하기 위해 PCA10028에 있는 OB(On-Board) J-Link를 사용했습니다. PCA10028의 OB J-Link과 nRF51422 연결을 끊고 다른 nRF 보드에 사용하는 방법은 이 링크에 나와 있습니다. 개발환경을 셋팅하는 방법과 플래시하는 방법은 노르딕 개발자 홈페이지 튜토리얼에 자세하게 나와있습니다. nRF51822 M1 모듈 핀 배열 : 칩이 있는면이 위쪽 OB J-Link와 연결 저작권 문구는 WaveData 모듈과 동일합니다. Copyright (c) 2017, JoonDong All rights reserved. Copyright holder's blog : ..
[Noise Detector] nRF51 (5) : 배터리 잔량 계산 관련 링크 2017/12/09 - [회로/Noise Detector] - Noise Detector 2단계 -회로 (4) : 배터리 잔량 측정 회로 배터리 전압은 사용할 수록 조금씩 떨어지는데, 이것을 이용하여 잔량을 구합니다. 그런데 일정하게 떨어지는 것이 아니라 몇개의 변곡점이 나타나는데요. 회로 카테고리에 포스팅된 배터리 잔량 회로에서 출력되는 전압을 그대로 측정하여 배터리 서비스를 사용하여 피어로 전송하면, nRF Logger 어플리케이션에 의해 로그에 기록되는데, 이 기록으로 누적시간에 대한 그래프로 만들어 보니 아래 그림과 같았습니다. 원본 파일은 위에 첨부했습니다. 완충시 측정되는 최대값인 210(3.98V)부터 제가 임의로 정한 최소값인 147까지 총 64범위(분해능)를 측정했습니다. 각 ..
[Noise Detector] nRF51 (4) : 시스템 흐름 각 모듈에서 핵심 기능을 담당하는 함수들과 그 함수들 또는 모듈 간의 관계를 블록 다이어그램으로 표현했습니다. 전 메세지 시퀀스 정도만 그리고 코드를 작성했고, 아래 블록 다이어그램은 코드의 이해를 돕기 위해 추가로 그린 것입니다. 각 함수들이 어떻게 연결되는 지는 노르딕 인포센터를 참조하거나 SDK 함수를 천천히 보면 알 수 있습니다. 참고로 bsp는 bsp_custom_1_btn_ble.c가 구현했습니다. - Detected Noise Value(ADC 배열 20바이트씩) 방송 과정 - Noise Detector(Op-Amp + m_noise_detector_timer_id 타이머) 동작 제어 과정(- Noise Detector 명령/결과 수송신) - BUTTON_1로 연결 상태를 제어하는 과정 - ..
[Noise Detector] nRF51 (3) : NDS Message Sequence 일반적인 Message Sequence입니다. 세로축은 시간의 흐름, 화살표 위의 글자는 이벤트, 아래 글자는 이벤트와 함께 전달되는 내용입니다. 피어는 안드로이드 Noise Detector 어플리케이션을 의미합니다. 전체 과정을 ① Noise Detector ON 단계, ② Detected Value 전송 단계, ③ Noise Detector OFF 단계로 구분했습니다. ① Noise Detector ON 단계 이전 포스트에서 Noise Detector Controlpoint Characteristic(이하 NDCP 특성)은 쓰기 요청에 대해 어플리케이션의 인증이 필요하다고 했습니다. 따라서 피어가 NDCP 특성에 {0x02, 0x00} 쓰기 요청을하면, 요청을 수신한 소프트디바이스는 속성 테이블에 요..