SPMOD - BT
2023-06-21
概述

SPMOD-BT(蓝牙 模块)采用 YDJ-23。
SPMOD - BT 介绍
- 采用 Sipeed-SPMOD 接口(2.54mm * 8PIN 排针),统一 MaixPy 开发板接口
- 利用 SP-MOD UART 和蓝牙模块通讯
- JDY-23蓝牙模块:支持BLE 5.0(兼容 BLE4.0、BLE4.2)。具有UART接口。模块支持AT指令控制。具备超低功耗特性和高可靠性
- 板载两个状态指示LED,模块状态一目了然
- 模块尺寸:25.6*20.2*3.2mm
JDY-23 蓝牙介绍:
| 功能特点: | 参数 |
|---|---|
| 工作频段: | 2.4G |
| 发射功率: | 4db(最大) |
| 通信接口: | UART |
| 工作电压: | 1.8V~3.6V |
| 工作温度: | -40℃ - 80℃ |
| 天线: | 板载PCB天线 |
| 接收灵敏度: | -97dbm |
| 主从支持: | 从机 |
| 蓝牙版本: | BLE 5.0(兼容 BLE4.0、BLE4.2) |
| 唤醒状态电流: | 800uA(广播模式) |
| 浅睡状态电流: | <50uA (广播模式) |
| 深度睡眠电流: | 9uA (无广播) |
| 默认串口波特率: | 9600 |
SPMOD_BT 模块引脚定义:
| 引脚序号 | 引脚名称 | 类型 | 引脚说明 |
|---|---|---|---|
| 1 | GND | G | 模块电源地 |
| 2 | AWK | I/O | 模块休眠唤醒引脚,低有效 |
| 3 | STA | I/O | 蓝牙连接状态连接,连接成功时输出高电平 |
| 4 | RX | I | 模块UART数据接受引脚,连接上位机TX |
| 5 | 3V3 | V | 模块电源输入正 |
| 6 | --- | NC | 悬空引脚,无功能 |
| 7 | RST | I/O | 模块复位引脚,低电平有效 |
| 8 | TX | O | 模块UART数据发送引脚,连接上位机的RX |
- 接线方式:
| MCU:FUN(IO) | SP_BT |
|---|---|
| UART:TX(IO_7) | RX |
| USRT:RX(IO_6) | TX |
| 1.8-3.3V | 3.3V |
| GND | GND |
主要 AT 指令列表:
| 指令 | 描述 |
|---|---|
| AT+POWR | 显示模块发送功率 |
| AT+RST | 软复位 |
| AT+MAC | 显示MAC 地址 |
| AT+NAME | 显示广播名 |
| AT+HOSTEN | 从模式或 IBEACON 工作模式 |
| AT+IBUUID | IBEACON 的 UUID |
| AT+DISC | 指令断开连接 |
| AT+SLEEP | 睡眠 |
| AT+MTU | 设置模块发送的发包数长 |
更多AT指令请参考JDY-23-V2.1.pdf
使用例程
- 流程
- 发送 AT 指令
- 接收数据
- 判断是否设置成功
C 示例:
// set uart rx/tx func to io_6/7
fpioa_set_function(6, FUNC_UART1_RX + UART_NUM * 2);
fpioa_set_function(7, FUNC_UART1_TX + UART_NUM * 2);
uart_init(UART_DEVICE_1);
uart_configure(UART_DEVICE_1, 9600, 8, UART_STOP_1, UART_PARITY_NONE);
//change the name of sp_bt module to MAIXCUBE
uart_send_data(UART_NUM, "AT+NAMEMAIXCUBE\r\n", strlen("AT+NAMEMAIXCUBE\r\n")); //send AT order
msleep(100);
ret = uart_receive_data(UART_NUM, rcv_buf, sizeof(rcv_buf)); //receive response
if(ret != 0 && strstr(rcv_buf, "OK"))
{
printk(LOG_COLOR_W "set name success!\r\n");
}
// get the name of sp_bt module
uart_send_data(UART_NUM, "AT+NAME\r\n", strlen("AT+NAME\r\n")); //send AT order
msleep(100);
ret = uart_receive_data(UART_NUM, rcv_buf, sizeof(rcv_buf)); //receive response
if(ret != 0 && strstr(rcv_buf, "NAME"))
{
printk(LOG_COLOR_W "get name success!\r\n");
}
MaixPy 例程:
# set uart rx/tx func to io_6/7
fm.register(6,fm.fpioa.UART1_RX)
fm.register(7,fm.fpioa.UART1_TX)
uart = UART(UART.UART1,9600,8,1,0,timeout=1000, read_buf_len=4096)
#change the name of sp_bt module to MAIXCUBE
uart.write("AT+NAMEMAIXCUBE\r\n") #send AT order
time.sleep_ms(100)
read_data = uart.read() #receive response
if read_data:
read_str = read_data.decode('utf-8')
count = read_str.count("OK")
if count != 0:
uart.write("set name success\r\n")
# get the name of sp_bt module
uart.write("AT+NAME\r\n") #send AT order
time.sleep_ms(100)
read_data = uart.read() #receive response
if read_data:
read_str = read_data.decode('utf-8')
count = read_str.count("NAME")
if count != 0:
uart.write("get name success\r\n")
注意发送AT指令后一定要加上\r\n
运行结果:
使用BLE Utility连接设备后进行收发测试结果如下:

运行环境:
| 语言 | 开发板 | SDK/固件版本 |
|---|---|---|
| C | MaixCube | kendryte-standalone-sdk v0.5.6 |
| MaixPy | MaixCube | maixpy v0.5.1 |
参考设计
- SPMOD_BLE 尺寸图:
资源链接
| 资源 | --- |
|---|---|
| 官网 | www.sipeed.com |
| SIPEED 官方淘宝店 | sipeed.taobao.com |
| Github | https://github.com/sipeed |
| BBS | http://bbs.sipeed.com |
| MaixPy 文档官网 | http://maixpy.sipeed.com |
| Sipeed 模型平台 | https://maix.sipeed.com |
| SDK 相关信息 | https://dl.sipeed.com/shareURL/MAIX/SDK |
| HDK 相关信息 | https://dl.sipeed.com/shareURL/MAIX/HDK |
| E-mail(技术支持和商业合作) | Support@sipeed.com |
| telgram link | https://t.me/sipeed |
| MaixPy AI QQ 交流群(四群) | 862340358 |