0. 准备
WIN10电脑一台
nrf52840开发板一套(其实如果基本蓝牙功能的话,nrf52832也行,有更小的成本)。nrf52840集成了2.4GHz的各种协议,但还是蓝牙功能比较完善。
仿真器最好用jlink v9
1. download nrf5 sdk
这个sdk解压后可以用常用的ide开发单片机。
https://www.nordicsemi.com/Software-and-tools/Software/nRF5-SDK/Download#infotabs
2. SEGGER Embedded Studio(SES)
SEGGER是jlink的公司,SES是这家公司的单片机开发环境。nrf52系列的单片机,基本国内常用的就是keil和ses了。keil需要license,ses开发nrf52840可以免license费用,只要上网申请一下,填写用户名公司电脑MAC等资料即可获得许可。
https://www.segger.com/downloads/embedded-studio
3. 运行demo
3.1 命令行交互
下载nRF5_SDK_17.0.2_d674dde\examples\ble_central_and_peripheral\experimental\ble_app_interactive可以通过串口使用命令行调用蓝牙的大部分功能
3.2 蓝牙鼠标实现移动和点击
官方demo自带鼠标移动的实例:
HID Mouse Application
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf5gs%2Fstruct%2Fnrf5gs.html&cp=1
这行是往下移动MOVEMENT_SPEED个像素的函数:mouse_movement_send(0, MOVEMENT_SPEED);
参考资料1中看到了鼠标点击需要修改输入函数:
mouse_buttons_send(1,0,0);//鼠标左键
mouse_buttons_send(0,0,0);//释放按键
mouse_buttons_send(1, 0, 0);//left
mouse_buttons_send(2, 0, 0);//right
mouse_buttons_send(4, 0, 0);//middle
mouse_buttons_send(0, 0, 0);//cancel
static void mouse_buttons_send(int8_t click, int8_t wheel, int8_t pan)
{
uint32_t err_code;
uint8_t buffer[INPUT_REP_BUTTONS_LEN];
APP_ERROR_CHECK_BOOL(INPUT_REP_BUTTONS_LEN == 3);
NRF_LOG_INFO("mouse_buttons_send\r\n");
buffer[0] = click;
buffer[1] = wheel;
buffer[2] = pan;
err_code = ble_hids_inp_rep_send(&m_hids,
INPUT_REP_BUTTONS_INDEX,
INPUT_REP_BUTTONS_LEN,
buffer,
m_conn_handle);
if ((err_code != NRF_SUCCESS) &&
(err_code != NRF_ERROR_INVALID_STATE) &&
(err_code != NRF_ERROR_RESOURCES) &&
(err_code != NRF_ERROR_BUSY) &&
(err_code != BLE_ERROR_GATTS_SYS_ATTR_MISSING)
)
{
APP_ERROR_HANDLER(err_code);
}
}
4. 下载
ses准备链接jlink,发现no idcode found
排查原因,原来是线没接好。这个要接好JLINK到单片机的SWD四根线,USB连JLINK和电脑。然后Target ---> Download ... 即可实现下载。SES已经集成了jlink驱动,一般不会出现其他问题。
备注:注意nRF5 sdk中,如果自己的板子不匹配官方开发板,那么是需要修改引脚号的
开发板 官方编号 芯片
nRF52840 DK PCA10056 nRF52840
nRF52840 Dongle PCA10059 nRF52840
nRF52 DK PCA10040 nRF52832/nRF52810
nRF51 DK PCA10028 nRF51422
nRF51 Dongle PCA10032 nRF51422
参考资料1:nRF52832 — 基于HID实现鼠标的左击、右击和滚轮,https://blog.csdn.net/zhanghuaishu0/article/details/81783044
参考资料2:Nordic Semiconductor Infocenter