STM8、STM8S003F3P6 通过ZM470SX-MP模组实现lora通信

news2024/11/29 2:55:11

背景

现在物联网就是很火,lora是避免不开的,也有个项目采用STM8S003F3P6 使用周立功的lora模组ZM470SX-MP实现lora通信。

原理图

废话少说,上原理图

这个原理图我找了很久都没有找到,指示找到了管脚图,这个原理图非常简单,就是通过STM8S003F3P6 两路IO检测开关量信号,通过lora上报,开关量信息。

 ZM470SX-MP简介

这里也是说明手册的一些材料,更多材料可以参考手册,需要注意的是这个不是透传LORA,用起来有点复杂,虽然周立功提供了一些API函数;对比那些透传LORA的设计方式,有点就是功耗低,因为没有多一个控制MCU。

ZM470SX-MP 模块是广州致远电子 有限公司自主研发的一款工业级射频无 线产品。模块采用源自军用战术通信系统 的 LoRa 调制技术设计,完美解决了小数 据量在复杂环境中的超远距通信问题。 相较传统调制技术, ZM470SX-MP 模块在抑制同频干扰的性能方面也具有 明显优势,解决了传统设计方案无法同时 兼顾距离、抗扰和功耗的弊端。另外,芯 片集成了+30dBm 的可调功率放大器,可 获得超过-148dBm 的接收灵敏度,链路预 算达到了行业领先水平,针对应用于远距 离传输且对可靠性要求极高的场合,该方 案是不二之选。

 频率范围:410~525MHz

 工作电压 2.6~3.6 V;

 接收电流 14mA,发射电流 800mA@28dBm;

 发射功率可调:23~30dBm;

 接收灵敏度可达-148dBm;

 传输速率 0.123~300 kbps;

 支持 FSK/GFSK/MSK/GMSK/LoRa/OOK 等调制方式;

 载波频率可编程;

 发送和接收缓冲区共 256 字节;

 支持多种低功耗操作模式;

 可有效抑制同频干扰;

 3.3V 接口电平;

 采用 SPI 总线通信接口。

 长×宽×高:15×15×2.2(mm)

软件设计

这里主要是移植了周立功的API函数,对应好IO直接调用如下,main函数中完成初始化,然后就是周期发送IO开关量信息。

void main(void)
{
  BSP_Initializes();
  Init_IO();                //IO口配置

  Radio = RadioDriverInit();//注册相关的函数
  Radio->Init();            //无线模块初始化
  Radio->RFOpModeSet(RFLR_OPMODE_SLEEP);//进入睡眠状态  

  while(1)
  {
    LED_ON;                                      //LED亮
    SoftwareDelay(0x6000);
    LED_OFF;                                     //LED灭
    SoftwareDelay(0x6000);
    SendHeartbeat();
//    Temp =  0;
//    if(INTPUT_0 != 0) 
//            Temp += 1;
//    if(INTPUT_1 != 0) 
//            Temp += 2;
//    if(Temp != 0)
//    {
//      SensorFlag = 0xF0 + Temp;
//      Temp = 0;
//      SendHeartbeat();
//    }
  }
}

关于模块接口IO宏定义如下


#define  INPUT_0_Port  GPIOD
#define  INPUT_0_Pin   GPIO_PIN_3 

#define  INPUT_1_Port  GPIOD
#define  INPUT_1_Pin   GPIO_PIN_4 
    
    
 
#define  RF_RST_Port  GPIOC
#define  RF_RST_Pin   GPIO_PIN_3 

#define  RF_SEL_Port  GPIOC
#define  RF_SEL_Pin   GPIO_PIN_4 

#define  RF_MOSI_Port  GPIOC
#define  RF_MOSI_Pin   GPIO_PIN_5 

#define  RF_MISO_Port  GPIOC
#define  RF_MISO_Pin   GPIO_PIN_6 

#define  RF_SCK_Port  GPIOC
#define  RF_SCK_Pin   GPIO_PIN_7 

#define  RF_DIO0_Port  GPIOB
#define  RF_DIO0_Pin   GPIO_PIN_4 

#define  RF_DIO1_Port  GPIOB
#define  RF_DIO1_Pin   GPIO_PIN_5 

#define  RF_DIO2_Port  GPIOD
#define  RF_DIO2_Pin   GPIO_PIN_2 


//******************************************************************
//**无线模块相关IO口************************************************
#define RF_SEL_L          RF_SEL_Port->ODR &=~RF_SEL_Pin    //无线模块片选低电平
#define RF_SEL_H          RF_SEL_Port->ODR |= RF_SEL_Pin     //无线模块片选高电平

#define RF_MOSI_L         RF_MOSI_Port->ODR &=~RF_MOSI_Pin
#define RF_MOSI_H        RF_MOSI_Port->ODR |= RF_MOSI_Pin

#define RF_SCK_L          RF_SCK_Port->ODR &=~RF_SCK_Pin
#define RF_SCK_H          RF_SCK_Port->ODR |= RF_SCK_Pin

#define RF_MISO_READ      (RF_MISO_Port->IDR&RF_MISO_Pin)

#define RF_RST_L          RF_RST_Port->ODR &=~RF_RST_Pin;
#define RF_RST_H          RF_RST_Port->ODR |= RF_RST_Pin;

#define RF_IRQ0_READ      ((RF_DIO0_Port->IDR&RF_DIO0_Pin) != 0)/*读取模块中断输出引脚状态*/
#define RF_IRQ1_READ      ((RF_DIO1_Port->IDR&RF_DIO1_Pin) != 0)/*读取模块中断输出引脚状态*/
/*
#define RF_DIO1           P2IFG & BIT3
#define RF_DIO0           P2IFG & BIT7
#define RF_DIO1_0         P2IFG &= ~BIT3
#define RF_DIO0_0         P2IFG &= ~BIT7
*/

提供的库移植 

 总结,其实lora的核心模块就是sx1276这个芯片,ZM470SX-MP模组只是基于这个芯片把外围电路设计好啦,真正的控制和loar协议,需要放到STM8上,我的应用还好比较简单,如果一些复杂的应用,使用STM8就有点吃力了。毕竟STM8的RAM/ROM空间都不大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux——线程的同步与互斥

目录 模拟抢火车票的过程 代码示例 thread.cc Thread.hpp 运行结果 分析原因 tickets减到-2的本质 解决抢票出错的方案 临界资源的概念 原子性的概念 加锁 定义 初始化 销毁 代码形式如下 代码示例1: 代码示例2: 总结 如何看待锁 申…

2.自然语言处理NLP:词映射为向量——词嵌入(word embedding)

1. 什么是词嵌入(word2vec) : 把词映射为向量(实数域)的技术 2. 为什么不采用one-hot向量: one-hot词向量无法准确表达不同词之间的相似度,eg:余弦相似度,表示夹角之间的…

创新案例|Amazon如何打造增长飞轮保持每年20%以上的营收增速

作为世界五百强中的头部企业,亚马逊的价值定位经历了三次转变,从成为“地球上最大的书店”,到成为最大的综合网络零售商,再到成为“最以客户为中心的企业”,亚马逊最终以“客户中心”破除了对企业价值定位的束缚&#…

DNS风险分析及安全防护研究(三):DNS缓存投毒及防御策略

在前面章节中,我们简单介绍了DNS系统在协议、软件以及结构中脆弱性,并对DNSSEC协议、去中心化结构等安全增强进行了讨论,接下来针对DNS安全所面临的外部攻击威胁和相应的防御策略做下讨论。 1.DNS缓存投毒攻击 在目前各种DNS攻击手段中&…

安科瑞浅谈集成式电力电容器无功补偿装置的技术特点

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要:阐述了集成式电力电容器无功补偿装置的组成与应用状况.在与常规电力电容器对比的基础上,分析了集成式电力电容器无功补偿装置的技术特点。通过对集成式无功补偿装置原理结构的…

Linux文件系统、磁盘I/O是怎么工作的?

同CPU、内存一样,文件系统和磁盘I/O,也是Linux操作系统最核心的功能。磁盘为系统提供了最基本的持久化存储。文件系统则在磁盘基础上,提供了一个用来管理文件的树状结构。 目录: 一. 文件系统 1. 索引节点和目录项 2. 虚拟文件系…

提升国际品牌影响力:小企业海外网红营销实战指南

在当今数字化时代,小企业们越来越意识到海外市场的巨大潜力。与此同时,海外网红的崛起也为小企业提供了一个独特的机会,通过与他们合作,迅速拓展国际市场并吸引更多目标受众的关注。然而,对于许多小企业来说&#xff0…

超全性能测试-全链路压测总结,完整一套从环境到脚本详细...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试&#xf…

类和对象 --- 封装+对象特性

👂 快乐E调 - 林澜叶 - 单曲 - 网易云音乐 👂 Plain Jane (Freestyle) - Ombre2Choc Nation - 单曲 - 网易云音乐 1.5倍速,跟着敲,初识C 目录 🏆封装 🌳属性和行为作为整体 🌳案例 -- 设置…

js数组去重与循环对象

目录 一、数组对象去重 1.1、需要获取重复数据 1.2、直接过滤filterfindIndex 二、循环对象 三、多层数组对象过滤 一、数组对象去重 1.1、需要获取重复数据 let persons [{"name": "yzq","age": 20,"gender": true,"hei…

k8s配置资源管理|secret|configmap

k8s配置资源管理|secret|configmap 一 配置资源管理1 创建 Secret2 使用方式3 将 Secret 导出到环境变量中 二 ConfigMap1 Pod 中使用 ConfigMap2 Pod的创建3 用 ConfigMap 设置命令行参数4 通过数据卷插件使用ConfigMap 一 配置资源管理 //Secret Secret 是用来保存密码、tok…

2023年6月合肥/厦门/长春/深圳DAMA-CDGP数据治理专家认证报名

目前6月18日CDGA&CDGP考试目前开放的城市有:北京、上海、广州(满)、深圳、长沙、呼和浩特、杭州(满)、南京、济南(满)、成都、西安、武汉(满)、天津。 新增了武汉、天津这2个城市。另外合肥…

【Netty】Reactor 模型(十)

文章目录 前言一、传统服务的设计模型二、NIO 分发模型三、Reactor 模型3.1、Reactor 处理请求的流程3.2、Reactor 三种角色 四、单Reactor 单线程模型4.1、消息处理流程4.2、缺点 五、单Reactor 多线程模型5.1、消息处理流程5.2、缺点 六、主从Reactor 多线程模型6.1、Reactor…

Python的一些基础实操练习题

书接上文多看一眼多进步,python入门到放弃,是根据python的知识点的一些基础练习题,说了是基础练习题,基础练习题,基础练习题,水平高的就别看了,平高的就别看了,高的就别看了&#xf…

IP协议-服务类型字段

服务类型(Type of Service)字段是比较复杂的一个字段,该字段经过多次标准变更。 IPv4报文 一、最初标准(RFC 791) RFC 791定义TOS字段总共占用8bit,分为IP Precedence优先级(3bit)、…

Ansys Zemax | 如何将高斯光整形为平顶光

概要 本文展示了如何设计光束整形器将激光器产生的高斯分布的光转换为平顶分布的光输出。(联系我们获取文章附件) 介绍 光束整形光学元件可以将入射光的光强分布转换为其他特定的分布输出。最常见的例子就是将激光器产生的高斯分布的光转换为平顶&#x…

GMesh的Mesh操作面板介绍

GMesh操作面板介绍 Define 用于控制网格生成过程中各个单元的尺寸大小 “Size at points”选项允许您指定空间中某些点的尺寸大小。这些点可以是模型的几何结构中的点,也可以是在Gmsh中手动定义的点(使用“Point”命令)。在这种情况下&…

pycharm在终端运行时ps 不显示环境

如果下面显示的是ps ----- 而不是 则需要把这儿修改一下

2023年Java教学大纲!好程序员教你如何快速学会Java!

今天好程序员给大家分享一篇2023年的Java教学大纲,跟着这篇大纲学习,并且熟练掌握该技能,实习轻松月入过万不是梦! 一、Java初级程序员必须要掌握的技能: Java基础知识控制声明面向对象的概念数组字符串异常处理输入/输…

Ubuntu22.04安装最新Eigen库

按道理:该方法适用所有Linux,适合安装多版本 本文采用源码 cmake的方法安装,故前置条件: 源码下载,官网下载或GitLab下载安装cmake(没有安装cmake,也可以采用其他办法安装) 官网下…