基于BK4802的迷你对讲机:灵犀LXB
简介
基于BK4802,麦当劳对讲机同款射频芯片。迷你体积,内置喇叭、麦克风,支持连接耳机。支持多个频段,内置公众对讲机频段20个频率,按键循环切换。使用配套上位机软件进行修改内置频率及更多高级设置
简介:基于BK4802,麦当劳对讲机同款射频芯片。迷你体积,内置喇叭、麦克风,支持连接耳机。支持多个频段,内置公众对讲机频段20个频率,按键循环切换。使用配套上位机软件进行修改内置频率及更多高级设置开源协议
:CERN Open Hardware License
(未经作者授权,禁止转载)描述
项目仅供学习,使用时请遵守相关法律法规
中华人民共和国无线电管理条例
关于公众对讲机管理有关问题的通知
商用需保留开机闪屏、PCB作者和项目名称丝印,同时标明出处:https://oshwhub.com/qwqoffice/lxb-nano-radio-based-bk4802/
交流QQ群:1002613160
设计背景
还记得今年5月22日麦当劳对酱机开售,等到我看到的时候已经卖没了,作为一个电子爱好者 ,怎么能受此委屈,于是想着自己做一个(虽然后面也买到了)
在网上看到别人的晒单,总结出麦当劳对酱机的缺点有以下几个:
1、10分钟自动关机
2、无法更改频率,容易和别人串台(注意:法规只允许公众对讲机固定一个频率,但DIY的话还是希望能覆盖到芯片支持的全部频段)
3、使用7号电池,无法充电
那么自己做的,肯定是要把这些缺点全部改过来,于是就有了这个项目
在这里也十分感谢麦当劳,让我们认识了BK4802这一国产射频芯片,此芯片功能高度集成,只需要简单的外围电路即可完成一个无线收发器的制作
开源协议
CERN Open Hardware License
项目属性
本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。
Github链接
https://github.com/qwqoffice/lxb-nano-radio-based-bk4802
型号介绍
LXB:标准版本,29mm喇叭,有显示屏
LXBM:迷你版本,21mm喇叭,有显示屏
LXBE:精简版本,无喇叭,无显示屏
功能亮点
旋钮开关机/调节音量(仅LXBE)
支持连接3.5mm耳机
支持背夹和挂绳
同时支持3D打印外壳/亚克力外壳
支持内置最多99个频率
配套Windows和Android管理工具软件
详细的使用说明及技术文档
实物展示
正面
背面
左侧
右侧
顶部
装上背夹
对比泉盛UVK5
对比麦当劳对讲机
尚未完成外壳设计的LXBE精简版
硬件设计
单片机的选型,基于最初设想可通过串口传输指令给MCU执行某些操作,以及BK4802是I2C通信协议,按键方面需要一个PTT键和一个SET键,那么就MCU需要支持串口和I2C,除去前面的至少需要剩下2个IO作为按键输入。由于没做过多少项目不太了解有哪些MCU可以选择,故在立创商城使用选型功能,筛选以上条件并按价格升序,第一个是STC8G1K08。后面由于程序空间不足,改用了STC8G1K17。设计LXBE无屏幕和喇叭的版本时,旋钮调节音量的功能需要ADC获取电位器电压,故改为STC8G1K17A(LXB和LXBM仍可使用STC8G1K17不带ADC的版本)
LDO这块,最初版本使用AMS1117-3.3V(当时只认识这个),实际使用发现喇叭只要一打开,单片机就会复位,后面查明原因是喇叭打开时有功率突变,LDO无法承受,电压降低到2.4V左右,单片机触发低压复位。后面参考麦当劳的方案,使用南京微盟的ME6230C33M5G
锂电池充电管理方面,选择了常用的TP4056,充电电流设置为0.5A
锂电池则支持使用702040-650mAh或102040-1200mAh两种规格
USB转串口,选择了CH340系列中最基础的型号CH340N,满足使用即可
供电方面,单片机、屏幕、4802均使用LDO供电,CH340则使用USB直接供电,原因是STC单片机在烧录程序的时候,需要先检测到串口设备,点击下载后再给单片机上电才能正常烧录
喇叭声音这块,踩了一个大坑,就是音量总是达不到麦当劳对讲机同一水平,尝试过购买各种规格的喇叭、修改4802的设置、甚至直接把麦当劳的喇叭拆下来装到我这里,都无济于事。后来发现是音腔的问题,我们调试硬件的时候,往往都是把喇叭直接外面一放,然后拿起来放到耳朵上听,这样喇叭发出的声音是非常小的,需要一个音腔来发出正常水平的音量,外壳就是一个很好的音腔,但是调试的时候不方便装到外壳中,最简单的办法就是手半握拳,罩住喇叭背面,形成一个简易的音腔,声音立马扩大N倍
3.5mm耳机接口的加入,可以在嘈杂的环境中也能清晰的对讲,这里使用了一个8pin的耳机接口,可以让你在耳机插入的时候,物理断开内置喇叭和麦克风,转为使用耳机的喇叭和麦克风,达到自动切换的效果,同时我设计了一个切换开关,可以切换为即使插入耳机也同样使用内置麦克风
屏幕方面,使用一块0.96寸的OLED屏幕,大小适中,同样是I2C协议,和射频芯片共用IO口
天线接口使用标准的SMA公头,可以直接使用市面上的对讲机天线
阻抗匹配部分,已经没有时间去补射频相关知识了,只能简单的参考网上一些工具来计算阻抗匹配电路,欢迎射频大佬来改进
软件设计
按键手势检测
项目中只设计了两个功能按键,但又希望可以直接在对讲机上完成大部分核心功能的操作,减少对上位机软件的依赖,这时可以使用按键的短按、长按、以及组合的方式,增加可操作性,在软件上则需要对手势进行识别
其实也可以使用不同按键串联不同阻值的电阻,然后使用ADC读取数值判断范围的方式来区分哪个按键被按下,以及是否同时按下,但是单片机最初选型为不带ADC功能的,所以没有采用这种方式
在网上看到别人是这样处理的,检测到按下,延时一段时间,然后仍然检测到按键是按下状态,则可以判定为按键是被人为按下,而不是因为抖动,但是这种不能做长按的识别,因为比如我要长按1秒后执行,那么我就要延时1秒,期间是无法执行其他代码的,如果我需要循环读取状态显示到屏幕,那么在延时期间状态就无法在屏幕上更新。因此我换了一种方式,设计一个定时器,把单片机运行的毫秒数保存到一个变量milliseconds
中,按键按下时保存当前运行毫秒数到一个变量down_start
中,每次循环判断down_start - milliseconds > 1000
,即表示按键已被按下超过1秒,这样就不会阻塞循环,让单片机有机会执行其他任务
char set_down = 0; // SET是否按下
char set_long_down = 0; // SET是否长按按下
unsigned long set_start = 0; // SET按下开始时间
unsigned long set_long_start = 0; // SET长按按下开始时间
char ptt_down = 0; // PTT是否按下
unsigned long ptt_start = 0; // PTT按下开始时间
char ptt_long_down = 0; // PTT是否长按按下
char set_ptt_down = 0; // SET和PTT是否同时按下
char set_ptt_long_down = 0; // SET和PTT是否长按按下
unsigned long set_ptt_start = 0; // SET和PTT按下开始时间
// 处理按键
void HandleKey()
{
// SET按下
if(set == 1 && set_ptt_down == 0 && ptt == 1)
{
set_ptt_down = 1;
set_ptt_start = milliseconds;
Refresh_Setting_Last_WakeUp();
}
if(set == 1 && set_ptt_down == 0)
{
if(set_down == 0)
{
set_start = milliseconds;
set_down = 1;
Refresh_Setting_Last_WakeUp();
}
if(set_down == 1 && set_long_down == 0 && milliseconds - set_start > 1000)
{
// SET长按大于1000ms
if(is_setting_mode == 1)
{
setting_index++;
if(setting_index > 1)
{
setting_index = 0;
}
OLED_HideSettingIndex();
HandleWakeUp(0);
}
else
{
set_long_start = milliseconds;
HandleWakeUp(1);
}
set_long_down = 1;
}
if(is_setting_mode == 0 && set_down == 1 && set_long_down == 1 && milliseconds - set_long_start > 300)
{
// SET持续长按每300ms
set_long_start = milliseconds;
HandleWakeUp(1);
}
}
// SET释放
if(set == 0 && set_down == 1)
{
if(set_long_down == 0 && set_ptt_down == 0 && milliseconds - set_start > 30)
{
// SET按下保持大于30ms
if(is_setting_mode == 1)
{
if(setting_index == 0)
{
SetNextVolumeLevel();
}
else if(setting_index == 1)
{
SetNextContrastLevel();
}
Refresh_Last_WakeUp();
}
else
{
HandleWakeUp(1);
}
}
set_down = 0;
set_long_down = 0;
}
// PTT按下
if(ptt == 1 && set_ptt_down == 0)
{
if(ptt_down == 0)
{
ptt_start = milliseconds;
ptt_down = 1;
}
if(ptt_down == 1 && ptt_long_down == 0 && milliseconds - ptt_start > 60)
{
// PTT按下保持大于60ms
ptt_long_down = 1;
HandleWakeUp(0);
SwitchTx();
}
}
// PTT释放
if(ptt == 0)
{
if(ptt_down == 1)
{
if(ptt_long_down == 0 && milliseconds - ptt_start > 30)
{
// PTT按下保持大于30ms
HandleWakeUp(0);
}
ptt_down = 0;
ptt_start = milliseconds;
}
if(ptt_down == 0 && ptt_long_down == 1 && milliseconds - ptt_start > 60)
{
// PTT按下保持大于60ms,并释放保持大于60ms
ptt_long_down = 0;
SwitchRx();
}
}
// 取消同时按下
if(set_ptt_down == 1 && set == 0 && ptt == 0)
{
if(is_setting_mode == 0 && milliseconds - set_ptt_start <= 1000)
{
// 处理SET按键锁定/解锁
SwitchLock();
HandleWakeUp(0);
}
set_ptt_down = 0;
set_ptt_long_down = 0;
}
if(set_ptt_down == 1 && set_ptt_long_down == 0 && milliseconds - set_ptt_start > 1000)
{
// 进入设置模式
if(is_setting_mode == 0)
{
EnterSettingMode();
}
else
{
ExitSettingMode();
}
HandleWakeUp(0);
set_ptt_long_down = 1;
}
}
电位器ADC消抖
在型号LXBE中,我参考泉盛UVK5对讲机的设计,使用了一个带开关的电位器,可以同时作为电源开关和音量调节旋钮。当转动旋钮时,循环读取的ADC数值发生变化,然后控制BK4802的接收音量寄存器达到音量调节的效果。在实际操作中,ADC数值难免会有抖动,即你往一个方向转动旋钮,理想情况下数值应该是一直增大或者减小的,但是实际上数值会突然变大,然后又突然恢复正常,这时需要一个消抖算法来对数值做平滑处理。消抖算法并不是一成不变的,而是需要根据实际的抖动情况做对应的处理。对于我这种情况,我的消抖方案是这样的,将ADC数值变化分为3种状态,增大、减小、不变,当相同的状态持续3次或以上,数值即可判断为有效值,否则丢弃。
char adc_prev_direction = 0;
int adc_direction_count = 0;
int adc_prev_values[3] = {0, 0, 0};
int adc_stable_value = 0;
void HandleVolADC(int value)
{
int diff;
char direction;
diff = value - adc_prev_values[0];
// 确定方向
if(diff == 0)
{
direction = adc_prev_direction != 0 ? adc_prev_direction : 0;
}
else
{
direction = (diff > 0) ? 1 : -1;
}
// 判断方向是否一致
if(direction == adc_prev_direction)
{
adc_direction_count++;
}
else
{
adc_direction_count = 0;
}
// 如果方向一致次数大于等于3
if(adc_direction_count >= 3)
{
adc_stable_value = adc_prev_values[2];
}
if(adc_direction_count > 3)
{
adc_direction_count--;
}
// 更新adc_prev_values
adc_prev_values[2] = adc_prev_values[1];
adc_prev_values[1] = adc_prev_values[0];
adc_prev_values[0] = value;
adc_prev_direction = direction;
}
使用了以上消抖算法的数值,对比原始数据,毛刺明显减少
AT指令系统
AT指令常用于各种终端之间的通讯,是一种简易的通讯协议,核心是字符串的解析提取
void HandleATCommand(char* command)
{
char* params;
char* cmd;
char* equalSign;
char* end;
char* paramArray[MAX_PARAM_COUNT];
int paramCount;
char* token;
unsigned int result;
// 指令格式为AT+{指令}[=参数1,参数2,...]
if(strncmp(command, "AT+", 3) == 0)
{
cmd = command + 3;
equalSign = strchr(cmd, '=');
// 去除cmd末尾的\r\n
end = cmd + strlen(cmd) - 1;
while(end > cmd && ( * end == '\r' || * end == '\n'))
{
* end = '\0';
end--;
}
if(equalSign != NULL)
{
* equalSign = '\0'; // 将等号替换为字符串结束符,以提取命令
params = equalSign + 1;
// 解析参数
paramCount = 0;
token = strtok(params, ",");
while(token != NULL && paramCount < MAX_PARAM_COUNT)
{
paramArray[paramCount++] = token;
token = strtok(NULL, ",");
}
if(strcmp(cmd, "EEPR") == 0)
{
result = IapRead(HexStringToValue(paramArray[0]));
HexToString(buffer, result, 2);
UART_SendStr(buffer);
UART_SendNewLine();
}
else if(strcmp(cmd, "EEPW") == 0)
{
for(i = 1; i < paramCount; i++)
{
IapProgram(HexStringToValue(paramArray[0]) + i - 1, HexStringToValue(paramArray[i]));
}
UART_SendOK();
}
else if(strcmp(cmd, "OLEDC") == 0)
{
OLED_WrCmd(HexStringToValue(paramArray[0]));
UART_SendOK();
}
else if(strcmp(cmd, "OLEDD") == 0)
{
OLED_Set_Pos(atoi(paramArray[0]), atoi(paramArray[1]));
OLED_WrDat(HexStringToValue(paramArray[2]));
UART_SendOK();
}
}
// 如果没有等号,则处理为没有参数的命令
else
{
if(strcmp(cmd, "RSTR") == 0)
{
UART_SendOK();
IAP_CONTR = 0x60;
}
else if(strcmp(cmd, "TYPE") == 0)
{
UART_SendStr(MODEL);
UART_SendNewLine();
}
}
}
else
{
UART_SendError();
}
}
上位机软件设计
由于上位机软件计划支持Windows和Android两个平台,最初想使用Qt来做跨平台开发,实际开发过程中,由于不熟悉Qt导致进度非常慢,故转为.NET MAUI,然后发现和C#还是有很大的区别,最后还是放弃了跨平台,转为熟悉的C#进行Windows的开发
目前Windows端已完成开发,Android端正在规划
由于固件已经设计好了AT指令,故上位机软件只需要使用AT指令即可与单片机通信,无需再另外开发一套通信协议
Windows端需要.NET Framework 4.8或以上版本,采用单个exe文件的设计,无需安装,方便携带
设备选择界面
主界面
内置频率管理界面
外壳设计
3D打印外壳和亚克力外壳均使用Solidworks设计,在这里要特别感谢B站UP主@阿奇设计分享提供的Solidworks桌面小屏幕外壳设计课程,让我0基础入门Solidworks,并且在短时间内成功设计出对讲机外壳,课程的质量很高,强烈建议有为PCB设计外壳需求的同学学习一下:https://www.bilibili.com/video/BV1DW4y1K7Ww/
注意:LXBE型号的外壳尚未完成设计,请谨慎选择此型号
导光柱是一种将PCB上的LED灯光传递到外壳表面的零件。在网上很难买到形状匹配的导光柱零件,只能自己设计,但是材质的选择又是一个问题。无意中发现8001材质打印为半透明状态就适合做导光柱,价格便宜,一个零件2元,效果也不差,参考下图
成本估算
物料 | 价格 |
PCB | 免费 |
OLED | 8.4 |
锂电池 | 7.8 |
BK4802 | 2.4 |
CH340 | 1.5 |
TP4056 | 0.1 |
ME6230 | 0.3 |
STC8G1K17 | 0.7 |
SMA公头 | 3.2 |
耳机接口 | 0.5 |
LED | 0.1 |
21.25MHz晶振 | 0.3 |
阻容 | 1 |
排针排母 | 0.5 |
螺丝铜柱 | 1.5 |
开关 | 1.1 |
喇叭咪头 | 0.5 |
TypeC母座 | 0.1 |
1.25线 | 0.5 |
1.25连接器 | 0.5 |
外壳 | 14 |
天线 | 5 |
总计 | 50 |
注意:以上价格为单价,不含运费
外壳材料为9006
制作指南
首先选择需要制作的型号
注意:LXBE型号的外壳尚未完成设计,请谨慎选择此型号
1、下单PCB
根据制作的型号下单对应的PCB,厚度为1.2mm
2、下单元件物料
BOM已做到大部分的匹配,可按照BOM下单,以下是无法匹配的元件,需要单独到淘宝下单:
注意:晶振不要按照BOM购买,BOM里面是24MHz的
BK4802:http://e.tb.cn/h.T1kYHqjRTh5sovf?tk=AP6o3HgxwrJ,需要咨询商家发SOP16封装的
OLED(GND开头,27.3*27.8mm):https://m.tb.cn/h.gmbY7lScoVBnXzm?tk=KS3p34kHjA1,规格:0.96寸白色OLED模块/4P
21.25MHz晶振:http://e.tb.cn/h.T1k1JMcjrETQYhp?tk=8LTv3HgyLB8
M2x4螺丝:http://e.tb.cn/h.T1kbhRUNsYZSanB?tk=WTfw3HgDZne ,规格:M2*4(50个)316
M2x11铜柱:https://m.tb.cn/h.gmbZUfpZVVaXGkz?tk=yHp434kJKN6,规格:M2*11[40颗]
1x4p排母:https://m.tb.cn/h.gmb0coOGh1UYSjb?tk=GV9034kJSrW,规格:1x4p 2.54mm直插单排母黑色(20个)
锂电池(二选一)
702040-650mAh:http://e.tb.cn/h.T1GCyFAzIppxgI7?tk=AKFv3HgApZZ
102040-1200mAh锂电池:http://e.tb.cn/h.T1OsjI7wbDHikXV?tk=gUyP3HSofGH
天线:http://e.tb.cn/h.TcUvGROK5kXIARI?tk=eotG3HTa6oF,规格:母头,长度形状按照喜好选择
喇叭(根据型号选择21mm或29mm)
21mm喇叭:http://e.tb.cn/h.T1EH5UadMajIY5G?tk=chnI3HSJzZn,规格:直径21mm 8欧 0.25W 小喇叭 塑胶(5个)
29mm喇叭:http://e.tb.cn/h.T1EH5UadMajIY5G?tk=chnI3HSJzZn,规格:直径29mm 8欧 0.25W 小喇叭 塑胶大磁(5个)
咪头:http://e.tb.cn/h.T1jNxztT7tjLG9s?tk=oeav3HStZdQ,规格:52DB拾音器不带针6*5mm咪头(10个)
1.25mm线:http://e.tb.cn/h.Tc6ImjQ09ObZEIu?tk=fQlo3HSuDhr,规格:2P-单头-10CM【30条】
使用3D打印外壳的购买:
M2x12螺丝:http://e.tb.cn/h.TcOSLkVcTgVksvK?tk=09Uc3thSr7h ,规格:M2*12(50粒
使用亚克力外壳的购买:
M2x8螺丝:http://e.tb.cn/h.TcEApyQ8Wd4UoVZ?tk=pqDK3th7lFb ,规格:M2x8[100个]
M2x14螺丝:http://e.tb.cn/h.TcEApyQ8Wd4UoVZ?tk=pqDK3th7lFb ,规格:M2x14[100个]
M2x7铜柱:http://e.tb.cn/h.Tcw06O1z4787SJA?tk=00mt3thRVkc,规格:M2*7[40颗]
M2x12铜柱:http://e.tb.cn/h.Tcw06O1z4787SJA?tk=00mt3thRVkc,规格:M2*12[20颗]
3、下单外壳
根据喜好选择3D打印外壳或亚克力外壳
3D打印外壳
下单平台:嘉立创3D打印
表1:3D打印外壳文件详解
编号 | 文件名 | 打印参数 |
1 | 按键V4_无圆角.STL | LEDO 6060 白色 不打磨 |
2 | 背夹.STL | 9600 哑光白 打磨-粗磨 |
3 | 导光柱带连接杆V2.STL | 8001 半透明 |
4 | 导光柱遮挡.STL | JLC Black 黑色 不打磨 |
5 | 对讲机_21mm喇叭_7mm电池_下壳_带背夹.STL | 9600 哑光白 打磨-粗磨 |
6 | 对讲机_21mm喇叭_7mm电池_下壳_无背夹.STL | 9600 哑光白 打磨-粗磨 |
7 | 对讲机_21mm喇叭_10mm电池_下壳_带背夹.STL | 9600 哑光白 打磨-粗磨 |
8 | 对讲机_21mm喇叭_10mm电池_下壳_无背夹.STL | 9600 哑光白 打磨-粗磨 |
9 | 对讲机_21mm喇叭_上壳.STL | 9600 哑光白 打磨-粗磨 |
10 | 对讲机_29mm喇叭_7mm电池_下壳_带背夹.STL | 9600 哑光白 打磨-粗磨 |
11 | 对讲机_29mm喇叭_7mm电池_下壳_无背夹.STL | 9600 哑光白 打磨-粗磨 |
12 | 对讲机_29mm喇叭_10mm电池_下壳_带背夹.STL | 9600 哑光白 打磨-粗磨 |
13 | 对讲机_29mm喇叭_10mm电池_下壳_无背夹.STL | 9600 哑光白 打磨-粗磨 |
14 | 对讲机_29mm喇叭_上壳.STL | 9600 哑光白 打磨-粗磨 |
表2:型号和对应需要打印的零件
喇叭 | 电池 | 背夹 | 打印编号 |
21mm | 7mm | 有 | 1、2、5、9 |
21mm | 7mm | 无 | 1、2、6、9 |
21mm | 10mm | 有 | 1、2、7、9 |
21mm | 10mm | 无 | 1、2、8、9 |
29mm | 7mm | 有 | 1、2、10、14 |
29mm | 7mm | 无 | 1、2、11、14 |
29mm | 10mm | 有 | 1、2、12、14 |
29mm | 10mm | 无 | 1、2、13、14 |
无 | 无 | - | LXBE尚未设计完成 |
选择电池喇叭背夹规格,根据表2找到需要打印的编号,然后根据表1找到编号对应的文件,按照对应的参数下单。
其中外壳主体部分,编号5~14,可根据自己喜好更换其他材质,其他编号建议使用推荐的参数下单
导光柱是可选零件,作用请看前面外壳设计部分,如需要请下单编号3、4
亚克力外壳
下单平台:立创商城
表3:型号和对应需要打印的图纸
喇叭 | 电池 | 图纸文件 | 图纸尺寸 |
21mm | 7mm | 工程图_21mm喇叭_7mm电池.DWG | 140*140mm |
21mm | 10mm | 工程图_21mm喇叭_10mm电池.DWG | 140*140mm |
29mm | 7mm | 工程图_29mm喇叭_7mm电池.DWG | 140*150mm |
29mm | 10mm | 工程图_29mm喇叭_10mm电池.DWG | 140*150mm |
下单参数:透明亚克力,图纸文件名和图纸尺寸看表3,常规,不需要背胶,2.5mm厚度,纯切割不打印
4、焊接
元件大部分为贴片,最好使用热风枪和锡浆进行焊接,以下为注意事项:
1、两个按键、TypeC接口需要靠外
2、IC类元件、晶振、和LED需要注意方向,参考PCB上的丝印
3、TypeC接口背面焊锡尽量与PCB齐平,以免顶到电池
4、OLED屏幕的排针是超出屏幕平面的,尽量使用尖嘴钳剪去,以免影响外壳组装
5、屏幕的排母和SMA公头需要平整不要歪,以免影响外壳组装
6、喇叭使用1.25mm线焊接,不区分正负极(需要焊接到两端的铜片,图中为错误示范)
7、咪头使用1.25mm线焊接,需要区分正负极
8、锂电池可使用1.25mm线连接,剥去外皮手工连接后使用一节热缩管套起来
5、组装
3D打印外壳组装
(1) 准备好所需的物件,以及螺丝刀、镊子
(2) 使用M2x4螺丝*6,M2x11铜柱*3,固定OLED屏幕(左上角的铜柱不用装)
(3) 开关向下拨关闭电源,然后连接锂电池、喇叭和咪头
(4) 将锂电池,印刷文字向下,放入下壳中,电线固定到线槽
(5) 使用镊子放入按钮,小凸起向上
(6) 放入PCB,并将喇叭和咪头的电线调整到PCB凹槽处
(7) 如使用导光柱,则先组合好导光柱和导光柱遮挡零件,然后把PCB先拿起来,安装导光柱到PCB上,然后手按住导光柱将整体推入外壳中(此处为安装透明外壳不需要导光柱)
(8) 调整好天线接口的方向,如图所示
(9) 将咪头和喇叭放入上壳中,如比较松动可使用胶固定
(10) 合起上下壳,留一个缝隙使用镊子调整好内部的电线,合紧后使用M2x12螺丝*4固定外壳
(11) 装上天线,根据需要装上背夹,完成组装
亚克力外壳组装
(1) 使用M2x4螺丝*6,M2x11铜柱*3,固定OLED屏幕(左上角的铜柱不用装),开关向下拨关闭电源,然后连接锂电池、喇叭和咪头
(2) 使用M2x14螺丝*4和M2x7铜柱*4,安装到下壳
(3) 放入PCB
(4) 安装前壳
(5) 安装左右壳
(6) 安装后壳,并将喇叭和咪头放入夹板中
(7) 使用镊子放入按钮
(8) 盖上夹板和上壳,使用M2x8螺丝*4和M2x12铜柱*4固定。装上天线,完成组装
6、烧录固件
方式一:使用STC-ISP烧录
(1) 下载烧录软件STC-ISP:https://www.stcaimcu.com/data/download/Tools/AIapp-ISP-v6.94Y.zip
(2) 使用TypeC线连接电脑和对讲机,注意线材需带数据传输功能
(3) 打开STC-ISP软件,按照下图设置,芯片型号选择STC8G1K17-8PIN或STC8G1K17A-8PIN(根据你焊接的型号),IRC频率选择12.000MHz,EEPROM大小设置为2K,取消勾选擦除用户EEPROM区,其他默认设置不用改动
(4) 点击“打开程序文件”,LXB、LXBM选择文件“lxb_1.0.hex”,LXBE选择文件“lxbe_1.0.hex”
(5) 点击“下载/编程”
(6) 将对讲机电源开关向上拨,为单片机上电,程序即开始烧录
方式二:使用软件升级工具烧录
软件升级工具是使用STC-ISP打包,预先设置好参数的烧录软件,因此无需额外的设置
(1) 使用TypeC线连接电脑和对讲机,注意线材需带数据传输功能
(2) LXB、LXBM打开文件“lxb_upgrade_1.0_{芯片型号}.exe”,LXBE打开文件“lxbe_upgrade_1.0.exe”
(3) 点击“开始升级”
(4) 将对讲机电源开关向上拨,为单片机上电,程序即开始烧录
7、使用说明书
开机
向上拨电源开关,设备开机,绿色电源指示灯亮起。向下拨电源开关,设备关
机,绿色电源指示灯熄灭
发射
按下PTT键,对讲机即切换到发射模式,蓝色发射指示灯亮起,此时可以对
着麦克风讲话。松开PTT键,切换回接收模式,蓝色发射指示灯熄灭
切换下一频率
短按SET键,在内置频率中循环切换频率。长按SET键1秒后,每300毫
秒切换一次频率
锁定频率
同时短按PTT和SET键,进入频率锁定模式,此模式下不能通过SET键切
换频率。再次同时短按PTT和SET键退出频率锁定模式
调整音量和亮度
首先同时长按PTT和SET键1秒进入设置模式。设置模式下,长按SET键
1 秒切换设置项,可通过设置项指示图标获知正在设置的项目是音量或是亮
度,短按SET键更改当前设置项。音量和亮度的范围为0~5
再次同时长按PTT和SET键1秒,或5秒内无操作退出设置模式
连接耳机
对讲机支持连接国际标准 (CTIA) 的 3.5mm 耳机,接口定义见下图。插入耳
机时,对讲机自动断开内置麦克风和扬声器,转为使用耳机作为音频输入输
出。麦克风模式可设置为固定模式,始终使用内置麦克风,请参考后面章节
恢复默认设置
首先向下拨电源开关使设备处于关机状态,然后按下SET键,保持按下状态
的同时向上拨电源开关,直到屏幕上显示“Settingsrestored”,设备即完成恢
复默认设置,此时可松开SET键
充电
使用TypeC充电线连接设备和充电器,红色充电指示灯亮起,开始充电。充
满电后红色充电指示灯熄灭。应使用5V输出电压的充电器以免损坏设备
麦克风模式
麦克风有两种工作模式
自动模式:插入耳机时使用耳机麦克风,拨出耳机时使用内置麦克风
固定模式:无论是否插入耳机,都使用内置麦克风
要切换模式,拆下外壳后,找到位于电路板右上方的麦克风模式拨杆,向上拨
动为模式固定模式,向下拨动为自动模式
管理内置频率
固件默认内置公众对讲机频段409.7500MHz~409.9875MHz 共 20 个频率,
如需修改内置频率,可使用配套的软件修改
配套软件
对讲机支持连接Windows和Android设备,以进行内置频率管理及更多高级
的设置,使用浏览器打开网址
https://www.qwqoffice.com/product/lxb/
或扫描以下二维码获取配套软件
技术参数
尺寸 | 63.3mm*40.8mm*25.7mm (LXB) 55.8mm*40.8mm*25.7mm (LXBM) 注: 1. 不含天线、背夹及其突出部分 2. 电池厚度7mm,容量650mAh |
重量 | 62g |
电池容量 | 650mAh/1200mAh |
输入电压 | 5V |
发射功率 | 10mW |
工作频段 | 24~32、35~46、43~57、128~170、384~512 |
技术文档
有关AT指令、EEPROM的规划及其他技术性的说明文档,请参考https://www.qwqoffice.com/product/lxb/guide.html
附件说明
lxb_firmware_src_1.0.zip - 对讲机固件源码,keil工程,默认编译LXB、LXBM型号的固件,如需编译LXBE固件,修改main.c第10行,取消注释#define LXBE重新编译即可
lxb_firmware_1.0.zip - 已编译的对讲机固件
lxb_upgrade_tool_1.0.zip - 用于烧录的软件升级工具
lxb_shell_3d_v1.zip - 3D打印外壳STL文件
lxb_shell_panel_v1.zip - 亚克力外壳DWG图纸
lxb_tool_windows_1.0.zip - Windows上位机软件
lxb_instruction_20241202.pdf - 说明书
评论