arduino封装了一个无线串口模块LC12S的操作库-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4658|回复: 11

arduino封装了一个无线串口模块LC12S的操作库

[复制链接]
发表于 2021-1-23 18:14 | 显示全部楼层 |阅读模式
本帖最后由 cxg 于 2021-1-29 20:14 编辑

前一段时间接触到一个比较好用的2.4G无线串口通信模块LC12S, 在淘宝上仅四五块钱,收发一体,比较好用.

TB2nZDQmVGWBuNjy0FbXXb4sXXa_!!2609682023.jpg

我照着技术文档封装了这个设置操作的库
demo代码:

#include <Arduino.h>

//依赖我的JSTime库
#include "cxg_JSTime.h"
#include "cxg_lc12s.h"

//该库支持esp32, stm32, arduino uno等
//注意该模块仅支持3.3v,5v肯定会烧毁, 用在arduino uno上需要电平转换
//该示例以esp32为开发环境

//lc12s引脚
#define lc12s_rx_pin 26
#define lc12s_tx_pin 25
#define lc12s_set_pin 33
#define lc12s_cs_pin 32  //如果不需要绑定cs引脚则设置为255

static JSTime jsTime;
static CxgLC12S lc12s;

void setup() {
  Serial.begin(115200);

  //esp32可以将串口引脚映射到别的引脚上
  Serial1.begin(38400, SERIAL_8N1, lc12s_tx_pin, lc12s_rx_pin);
  //stm32f103c8t6串口1或其他串口(TX=PA9,RX=PA10), arduino uno硬件串口1 硬串口(TX–1,RX–0)
  //Serial1.begin(38400);
  lc12s.attach(
    &Serial1, 38400, lc12s_set_pin, [](HardwareSerial* serial, uint32_t baud) {
      //esp32直接可以更改波特率
      serial->updateBaudRate(baud);
      //stm32,arduino uno需要重新调用begin来更改波特率
      // serial->begin(baud);
    },
    lc12s_cs_pin);

  lc12s.enable();
  //设置信道,用来避免多个模块干扰的
  lc12s.setRFChannel(10);
  //设置自身id
  lc12s.setSelfID(0x0001);
  //设置组网id
  lc12s.setMeshID(0x0001);
  //信道,自身id,组网id都相同才可以通信

  jsTime.setTimeout([]() {
    //上面设置的参数需要调用这个方法才能完成设置
    //参数设置完成模块自动保存,下次开机就不用再次设置了
    lc12s.setLc12s();
    //设置完一段时间才能正常通信

    //获取模块的版本, 会通过串口打印出来
    // lc12s.getVersion();

    //获取当前模块的设置参数, 获取后的数据会设置到 lc12s.setBuf数组中
    // lc12s.syncParams();

    //由于模块写入指令需要延时330ms才能返回, 以上这三个方法500ms内只能调用其中一个
  },
    2000);
}

void loop() {
  jsTime.refresh();
  //不断刷新模块
  CxgLC12S::refresh();

  //在模块设置的过程中不能读取数据
  if(!lc12s.isSetting) {
    //读取收到的串口数据
    while(Serial1.available()) {
      Serial.write(Serial1.read());
    }
  }
}


这个模块引脚是PH2.0间距, 焊接时一定要把电烙铁断电, 用余温焊接, 别问我怎么知道.
电源仅支持3.3V, 5V必烧, 通信引脚也只能是3.3V, 否则必烧, arduino uno使用的话得需要电平转换。

CxgLC12S.zip (4.83 KB, 下载次数: 18)
最新版依赖新版的JSTime
CxgLC12S.zip (4.9 KB, 下载次数: 9)


发表于 2021-1-23 19:35 | 显示全部楼层
支持,不错,谢了
发表于 2021-1-26 14:55 | 显示全部楼层
cxg_JSTime.h 好像没这个库啊
 楼主| 发表于 2021-1-26 23:20 | 显示全部楼层
jibingxin 发表于 2021-1-26 14:55
cxg_JSTime.h 好像没这个库啊

在另外一个帖子里下载,往下一番就找到了
发表于 2021-5-4 01:38 来自手机 | 显示全部楼层
Please i'm new , i want your help , i have two lc12s and two esp32 and i want to send and receive buttonstate to turn on and off leds , have i to put this code on the two or juste one ? Please help me

点评

cxg
这位兄弟, 哪个国家的. lc12s就是个串口透传模块, 我这个库是用来简化设置模块参数的, 设置好了之后可以不用这个库了. 你最好两端都使用这个库  发表于 2021-5-5 15:37
发表于 2021-5-28 09:17 | 显示全部楼层
你好楼主,想弄个小东西,一主机,10多个从机,一起联动的那种,用这无线串口模块好实现吗?
 楼主| 发表于 2021-6-1 15:06 | 显示全部楼层
爱探险的优米 发表于 2021-5-28 09:17
你好楼主,想弄个小东西,一主机,10多个从机,一起联动的那种,用这无线串口模块好实现吗? ...

好弄,这个可以1对多通信
发表于 2022-1-4 10:53 | 显示全部楼层
cxg 发表于 2021-1-26 23:20
在另外一个帖子里下载,往下一番就找到了

想试一下,请给个链接,谢谢了!没有 cxg_JSTime.h  也无法运行呀。
 楼主| 发表于 2022-1-6 13:26 | 显示全部楼层
本帖最后由 cxg 于 2022-1-6 13:28 编辑
hesg 发表于 2022-1-4 10:53
想试一下,请给个链接,谢谢了!没有 cxg_JSTime.h  也无法运行呀。

https://github.com/chengxg/cxg-arduino-lib
https://www.arduino.cn/thread-102680-1-1.html
发表于 2022-1-6 21:15 | 显示全部楼层
cxg 发表于 2022-1-6 13:26
https://github.com/chengxg/cxg-arduino-lib
https://www.arduino.cn/thread-102680-1-1.html

谢谢回复!非常感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:48 , Processed in 0.100986 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表