一次小模块的使用过程-LC12S无线模块介绍

21 篇文章 4 订阅
订阅专栏
6 篇文章 15 订阅
订阅专栏

前言:

最近帮人做了个小设备,使用了无线模块、触摸芯片,主要功能就是把触摸按键的信号无线传到控制继电器输出,MCU是STM8系列的芯片,其中使用过程中调试无线模块LC21S觉得挺好用的,就写了这篇文章。

作者:良知犹存

转载授权以及围观:欢迎添加微信公众号:羽林君


模块介绍:

LC12S 采用最新 2.4G SOC 技术,特点是免开发,视距 120 米,收发一体无需切换,串口透明传
输,提供通信协议,可迅速调试成功。用户只要了解串口通信,无需复杂的无线通讯知识,就能完成无
线通信产品的开发。没有数据包大小限制,延时短,半双工通讯,抗干扰能力强。

● 2.4GHz ISM 频段,使用无须申请

● 最大输出功率 12dBm

● 接收灵敏度-95dBm

● 发射工作电流 40mA@12dBm

● 接收工作电流 24mA

● 睡眠电流 3.5uA

● 标准 TTL 电平 UART 串口

● 工作频率可设置,多个模块频分复用,互不干扰

● 通讯协议转换及射频收发切换自动完成,用户无须干预,简单易用

● 通讯速率 0.6kbps -38.4kbps,用户可通过 AT 指令配置

引脚介绍:

引脚引脚名称引脚功能描述
1VCC电源电源(接 2.2~3.6V)典型 3.3V
2RXT模块数据输出(TTL 电平)串口通信数据接收
3TXD模块数据输入(TTL 电平)串口通信数据发送
4SET设置位配置参数使能(低电平使能参数配置,高电平进入透传模式,其中悬空为高电平)
5CS休眠引脚接低电平时工作,高电平进入休眠模式,其中悬空为高电平
6GND电源接地

基本配置:

设置模式:

一旦进入设置状态,SET 引脚配置必须是低电平,CS 引脚必须接低电平,且串口设置必须是数据位
8,波特率 9600,校验位 N,停止位 1,空中速率 1Mbps。因为初始化默认设置就是如此,如果后续你设置了自己的波特率,这个时候你需要把串口设置按照你修改后的配置来设置。

透传模式:

上电后,当 CS引脚接低电,进入工作模式,SET 脚是设置参数标志位,这个时候我们可以进行悬空或者拉高处理,让模块进入透传数据模式。

设置模式数据的协议格式:

在官方的手册里面有关于协议内容的说明,其中有一些数据是保留位,默认发0x00就可以。

如图所示,我们可以看到数据长度是18个byte,其中包括设备ID(Self ID)、组网ID(Net ID )、发射功率(RF Power)、通讯波特率设置(Baud 1Byte)、无线通讯通道设置(RF CHN)、设置时的通讯数据长度(Lenght 1Byte)、累加校验位(CheckSum);其中设置时的通讯数据长度是固定的18byte所以此处默认为0x12。

其他部分的设置参数,在手册中各有体现,其中组网ID需要按照自己定义的ID区间进行设置,因为这个唯一性会影响到你的模块组网情况。

其余的设置我设置参数我就不进行截图表示了,大家可以看一下相应的手册。

测试设置发送数据:

0xaa+0x5a+模块 ID+组网 ID(ID 必须相同)+0x00+RF 发射功率+0x00+串口速率
+0x00+RF 信道选择+0x00+0x00+0x12(字节长度)+0x00+和校验字节
注意:和校验字节=所有参数累加的字节

发送:
AA 5A 22 33 11 22 00 01 00 04 00 64 00 00 00 12 00 07

—>

参考后面的数据表格,以上配置参数设置无线模块为:
RF 发射功率:10dbm
串口速率:9600bps
RF 信道:100
模块 ID:0x2233
组网 ID:0x1122
和校验字节:07

接收: 设置完成后模块会返回相应数据
AA 5B 47 00 11 22 00 01 00 04 00 64 00 00 00 12 00 FA

<—

串口调试助手的信息:

实际设备连接情况:

设置模式接线示意图:

透传模式接线示意图:

代码实现:

因为模式使用比较简单,初始化好设备串口外设,再把CS引脚和SET配置一下,就可以开始使用了,如果你只是简单测试,那你可能只需要使用默认设置,只是进行数据的透传,那你可以直接忽略这部分设置的代码部分,直接看nrf_send_normal_data()函数。

设置模式下的代码


定义一个设置协议的结构体:

typedef struct __attribute__((__packed__)){
    u16 head;                 //
    u16 self_id;                 //
    u16 net_id;                 //
    u8 nc1;               //
    u8 rf_power;          //
    u8 nc2;               //
    u8 rf_baud;          //
    u8 nc3;               //
    u8 rf_chn;          //
    u16 nc4;               //
    u8 nc5;               //
    u8 length;               //
    u8 nc6;               //
}SetSend; 

拉低SET引脚,进入设置模式:

u8 SetNrf(void)//
{
       GPIO_ResetBits(SET_PORT, SET_PIN);
       GPIO_ResetBits(CS_PORT, CS_PIN);

      u8 *p1 = malloc(18);
      memset(p1,0x00,18);

      SetSend *p = (SetSend*)p1;

      p->head= 0xaa5a;
      p->self_id = 0x2233;
      p->net_id = 0x1122;
      p->rf_power = 0x00;
      p->rf_baud = 0x04;
      p->rf_chn = 0x64;
      p->length = 0x12;      
      p1[sizeof(SetSend)] = CheckSum((u8*)p, sizeof(SetSend));
      USART_Transmit_String( sizeof(SetSend)+1,p1);

#if DEBUG_DPRINT
      u8 *str = malloc(20);
      hex_str((u8*)p, sizeof(SetSend)+1, str);
      USART_Transmit_String(20,str);
//      printf("--->:%s\r\n", str);
      free(str);
#endif

      free(p1);
      return 1;
      
}


数据透传的函数,这个时候SET引脚拉高,这个函数部分是我自己写的一个简单的3byte的sta状态发送。
大家可以按照自己的实际使用情况进行修改。

void nrf_send_normal_data(u16 sta)
{
      GPIO_SetBits(SET_PORT, SET_PIN);
      u8 *p1 = malloc(3);
      memset(p1,0x00,3);
      memset(p1,0xAA,1);      
      memcpy(p1+1,&sta,2);
      USART_Transmit_String(3,p1);
      free(p1);

}

芯片初始化之后不能立即使用,需要等待几十ms才能正常工作,所以需要稍微等待一下。

串口接收解析部分,这部分代码就仁者见仁智者见智了,大家可以用很多种方法实现,我只是贴了一下我写的代码部分,仅供参考。
其中NRF_RestTime()函数是在定时器中计时,用来区分不同的数据帧。

u8  USART_RX_BUF[USART_MAX_RECV_LEN];
u16 USART_RX_STA=0;

u8 NRF_RecvdData(void)
{
	u8 ret = 0;
	if((USART_RX_STA&(1<<15)) != 0)
		ret = 1;
	return ret;
}
u16 NRF_RcvLen(void)
{
	return (USART_RX_STA & 0x7FFF);
}
u8* NRF_RcvBuff(void)
{
	return USART_RX_BUF;
}

void NRF_ClsRecvd(void)
{
	USART_RX_STA = 0;
}


typedef struct  __attribute__((__packed__))
{
  u32 stat    :1;
  u32 timOut  :1;
  u32 cunt    :15;
  u32 des     :15;
}TboxTimTypeDef;
TboxTimTypeDef gNRFTimeManage;
#define TON   (1)
#define TOFF  (0)

void TimerManageInit(TboxTimTypeDef *t,u8 stat,u16 destim)
{
  t->des  = destim;
  t->stat = stat;
  t->cunt = 0;
  t->timOut = 0;
}
void NRF_RestTime(void)
{
      if(gNRFTimeManage.stat == TON)
      {
              (gNRFTimeManage.cunt < gNRFTimeManage.des)?(gNRFTimeManage.cunt++):\
                      (TimerManageInit(&gNRFTimeManage,TOFF,0),USART_RX_STA |=1<<15);
      }	
}

void NRF_Irq(void)
{
  	u8 res;	      
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
	{	 
		res =USART_ReceiveData8(USART1);
                #if 0
		USART_SendData8(USART1,res);
		#endif

      
                if((USART_RX_STA & ~(1<<15))<USART_MAX_RECV_LEN)
                {
                      TimerManageInit(&gNRFTimeManage,TON,5);
                      USART_RX_BUF[USART_RX_STA++]=res;		 
                }else 
                {
                        USART_RX_STA|=1<<15;				
                } 
          }
	USART_ClearITPendingBit(USART1,USART_IT_RXNE);
}

void Parse_NRF(void)
{
  
    if(NRF_RcvLen()>2)
    {
      u16 len = NRF_RcvLen(); 
      u8 *p = NRF_RcvBuff();
      u8 pos = 0;
      u16 *sta = (u16*)(p+1);
      while(pos < len){
        if(*p == 0xAA)
        {
          
          relay_ctrl(*sta);
          p += 3;
          pos +=3;
        }
        else{
          p++;
          pos++;
        }
      }
      USART_RX_STA = 0;
    }
  
}

设备展示

主机端:

从机端:

结语

这就是我分享的LC12S模块的使用,如果大家有更好的想法和需求,也欢迎大家分享交流哈。

—END—

推荐阅读

【1】 C++的智能指针你了解吗?

【2】 嵌入式底层开发的软件框架简述

【3】 CPU中的程序是怎么运行起来的 必读

【4】 C++的匿名函数(lambda表达式)

【5】 阶段性文章总结分析

本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。

LC12S数传模块
06-16
LC12S采用最新2.4G SOC技术,特点是免开发,视距120米,收发一体无需切换, 串口透明传输,提供通信协议,可迅速调试成功。用户只要了解串口通信,不要了解复 杂的无线通讯知识,就能完成无线通信产品的开发。没有数据包大小限制,延时短。
ESP8266模块官方AD封装库,包括ESP-12S/ESP-12E&F封装等-电路方案
04-21
免责声明:附件内容分享的ESP8266模块官方AD封装库,包括ESP-12S/ESP-12E&F封装等,仅为方便广大网友使用。我司虽然在制作过程中已经仔细核对和检查,但烦请用户使用前一定要仔细核对,我司对于因用户使用该封装库导致的损失不负任何责任。ESP8266模块官方AD封装库附件资料截图:
ESP-12S擦除
11-24
相当于格式化,使用该文件可以清空ESP-12SWIFI模块的所有内容
硬件模块的资料关于WIFI无线模块
10-09
WIFI的一些资料和大家分享下,共同努力学习下,感觉这资料不错
ESP8266-12S 原理图1
08-03
E:\项目_2016\..\ESP8266-12S.SchDoc深圳市汇思锐科技有限公司ESP8266-12F wifi模块
LC12Swifi模块资料
12-12
LC12Swifi模块资料
arduino封装了一个无线串口模块LC12S的操作库
cxgasd的博客
01-23 1034
前一段时间接触到一个比较好用的2.4G无线串口通信模块LC12S,在淘宝上仅四五块钱,收发一体,比较好用. 我照着技术文档封装了这个设置操作的库 demo代码: #include <Arduino.h> //依赖我的JSTime库 #include "cxg_JSTime.h" #include "cxg_lc12s.h" //该库支持esp32, stm32, arduino uno等 //注意该模块仅支持3.3v,5v肯定会烧毁, 用在arduino un...
LC12S资料V2.0.zip
04-01
LC12S无线串口通信模块资料,说明文档,介绍资料,使用方法,接口方法。
无线模块调试总结
wwwtovvv的专栏
06-01 1899
近期正在调试无线模块,包括GPRS以及CDMA模块,环境为linux,采用PPPD拨号方式; 目前GPRS模块能支持GSM07.10协议的多路复用,而CDMA模块厂商正在调试,目前采用直连物理串口方式;   在调试过程中发现CDMA模调用PPPD拨号始终无法成功,经过放开调试开关查看到PPPD调用chat脚本拨号发的第一个AT探测指令就无法成功!经过反复调试发现原来是CDMA设置成了无流控方
无线串口模块的应用
qq_42989286的博客
10-09 1647
无线串口模块可以不用布线情况下实现两个串行口设备之间的通讯,一般模块是带有串口接口,但还是需要自己调试底层驱动,调试射频参数,调试无线通信的协议。需要很大的硬件软件工程量。博晶网络科技出的一款MT7688模块带有的无线串口模块。其中,工程师已经调好驱动,独立的web配置连接路由界面,并且支持MQTT/TCP服务器协议,通过web界面配置服务器地址和端口号。免去了工程师的很多工作量,可以直接...
LC12S_datasheet.pdf
09-12
LC12S Datasheet
无线通信技术流程图
01-07
无线通信技术流程图,用于实训报告。zigbee实验的主板,从板流程图。
第二节 控制系统的数学模型——传递函数
热门推荐
LukeyAlvin的博客
05-10 1万+
第二节 控制系统的数学模型——传递函数 了解数学模型的概念,自动控制原理都包含哪些数学模型,怎样将系统转换为数学模型 什么是控制系统的数学模型?控制系统的模型有哪些种? 数学模型是用来描述系统因果关系的数学表达式。有微分方程、传递函数、结构框图、信号流图、频率特性、差分方程、状态方程、传递矩阵等表达形式。 什么是控制系统的数学模型?控制系统的模型有哪些种? 数学模型是用来描述系统因果关系的数学表达式。有微分方程、传递函数、结构框图、信号流图、频率特性、差分方程、状态方程、传递矩阵等表达形式。 系统数学
嵌入式实践——烟雾产生器
weixin_41918496的博客
05-05 1576
嵌入式实践——烟雾产生器 1.设计需求 设计出一套完整的烟雾产生装置,该装置通过按钮来控制烟雾的产生和关闭。装置对体积要求较高,所以控制板需控制在4cm*3cm,同时根据装置所要安装的器件来灵活调整控制板的形状,具体功能需求如下: (1)能连续产生烟雾; (2)采用锂电池方式供电,锂电池充电,具有正在充电和充电完成指示,电池电量低提醒; (3)烟雾需呈现蓝色和绿色两种颜色,颜色根据需要进行切换; (4)加热电路电流、电压监测; (5)采用无线控制。 2.设计方案 (1)设备电源 整个设备供电采用小型锂电池,
i2c时序图的详细讲解
filthyfrank的博客
02-24 1万+
I2C详细讲解
MicroPython-TPYBoard开发板DIY小型家庭气象站
weixin_33724570的博客
07-16 174
2019独角兽企业重金招聘Python工程师标准>>> ...
基于标准库制定学习ESP-12S模块计划
最新发布
05-24
ESP-12S模块是一款基于ESP8266芯片的Wi-Fi模块,可以通过它来进行物联网应用的开发。如果想要学习ESP-12S模块的开发,可以按照以下步骤: 1.了解ESP8266芯片的基本特性和使用方法,可以参考官方文档或者相关书籍。 2.学习ESP-12S模块的硬件接口和基本功能,可以参考ESP-12S模块的官方文档和手册。 3.了解ESP-12S模块的固件开发,可以使用官方提供的ESP-IDF开发框架进行开发。 4.掌握ESP-12S模块的网络通信和数据传输,可以使用TCP/IP协议栈进行开发。 5.了解ESP-12S模块的安全性和稳定性,可以使用TLS/SSL等安全协议进行开发。 6.掌握ESP-12S模块的调试和测试方法,可以使用串口调试工具和Wi-Fi测试工具进行调试和测试。 在学习ESP-12S模块过程中,可以结合实际应用场景进行开发,例如智能家居、物联网监控等。同时,建议使用C语言进行开发,并且熟悉C标准库的使用方法,以便更好地进行ESP-12S模块的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • VS CODE插件扩展无法使用的解决办法 34520
  • ubuntu 替换清华源遇到的问题-不能更新,无法拉取 https 源解决 27519
  • C++typename的由来和用法 25405
  • STM32 ADC采样时间、采样周期、采样频率计算方法 18947
  • Sublime text在Linux下的安装 13083

分类专栏

  • 电源 1篇
  • 项目管理 1篇
  • Linux 84篇
  • OpenWrt 18篇
  • python 8篇
  • 随笔 24篇
  • CI/CD 12篇
  • git 19篇
  • dds 1篇
  • tcp/ip 4篇
  • ROS 9篇
  • Jenkins 3篇
  • Win 6篇
  • C/C++ 50篇
  • android 1篇
  • ST 13篇
  • docker 3篇
  • jetson 6篇
  • repo 1篇
  • 设计模式 4篇
  • cortex 21篇
  • 嵌入式 21篇
  • cuda 2篇
  • 运动规划 1篇
  • AI 4篇
  • 硬件 6篇
  • shell 2篇
  • yocto 2篇
  • IDE 2篇
  • Lua 1篇
  • MDK 2篇
  • DEBUG 1篇
  • vs code 3篇
  • CPU 1篇
  • 物联网 4篇
  • KWP2000 3篇
  • ARM 6篇
  • IAR 3篇
  • 代码升级 2篇
  • eclipse 2篇
  • CubeMX 2篇
  • 开源协议 1篇

最新评论

  • 关于catkin_init_workspace找不到命令的原因

    三尺红菱舞似仙: source时候他说没有文件或者目录

  • 函数内部分配的buffer过大导致堆栈溢出

    焊板工程师: 是不是讲错了 200H 是 512B啊 400H才是1024B(1KB)吧。。。。还是我搞错了。懵了

  • IAR 安装到创建操作(一)安装

    Together_withyou: 大哥,链接失效了,可以分享一下吗。1401988595@qq.com

  • 变量被析构函数释放的时候的注意事项

    CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/8078259, 请多输出高质量博客, 帮助更多的人

  • jetson nano开发使用的基础详细分享

    自来菜也: 太赞了,希望佬多多更新表情包表情包

大家在看

  • 超声波风速仪解析-风速风向传感器 513
  • 使用 Python 和 C++ 操作 Raw 文件
  • 代码随想录算法训练营第五十八天 | 392.判断子序列
  • GBase 8s 配置CM连接管理器 168
  • 路线规划在外卖跑腿业务中的应用 582

最新文章

  • 移相全桥原理和控制
  • 项目开发中的几种思路,实际应该是互相组合
  • 小米Mini路由器刷Openwrt
2024年8篇
2023年60篇
2022年58篇
2021年31篇
2020年99篇
2019年38篇

目录

目录

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御林你好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源村居古诗公司起名的打分微信理财通官网魔兽世界装备模拟器欧阳起名字男生巫颂使用锦字起名任你躁国语自产一区在鹭起名字楚辞取名起名大全文库好的故事写作背景李孩子起名大全免费饺子店铺起名字中级会计师2021年报名时间小男孩起名字大全绿字开头公司起名马年男宝宝起名姓侯法国大使馆替郭杰声明bigtube起名 诗经 楚辞 周易姓黄的宝宝起名字大全钢材公司起名多少钱美女性侵怎样理财北京龙城花园催乳师起网名赖汉的幸福指数猎人电视剧莫起名字网盘搜索神器淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化