5 Star 14 Fork 3

zcd1300 / 智巢项目 嵌入式软件

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

智巢嵌入式软件文档

​ 智巢嵌入式软件技术文档和一些杂七杂八的

目录

ToDo

​ 具体内容见Zigbee驱动的详细要求。

传感器到货;传感器测试和底层功能实现

  1. Zigbee 的网络组网测试,目前只做了一些简单的双机\三机组网 (推迟,等CC2530情况)

  2. 写个简单的的程序,输出ZigBee模块的信号强度,量化的测试信号质量。

  3. Zigbee 模块的传输距离测试,国内的Zigbee频段是2.4GHz,可能还要做信号的绕射能力测试。

  4. 采集节点和主机的总线、传感器架构(已经基本确定,需要实现)

  5. GUI绘制和对应的逻辑;可以是串口屏或者用LVGL;(是否要做待定。看时间情况)

  6. 用户交互问题,设备部署和维护问题;(先完成串口Debug和部署)

  7. Register_Host的接收数据等待(串口中断触发,可设置超时时长)(√)

stm32 flash 启动流程、启动后取程序方式(直接随用随取(ART)还是取一段到sram)、sram中堆栈之外的空间

​ (2021年11月22日)

Doing

  • 实现主机与服务器注册登录;
    • 要求:能够自定义UserName & Password,并写入Flash
      • 可能会修改:
  • 和后端的http通信测试,以及接口对接 (主要功能完成)

Done

这里是Todo 和 Doing完成的,没来得及写文档项目

  • 串口Debug (√)
  • WiFi
    • WiFi MAC读取和加载 (√)
    • WiFi工作模式检查 (√)
    • 完成中文AP SSID测试,可以在UTF8编码下进行连接(必须是UTF8编码)(√)
    • 透传模式退出 (√)
    • 主动断开TCP (√)
    • 完善了WiFi初始化流程,目前可以保证与AP连接流程安全,AP在线直接连接,AP超时则跳转到新AP的切换函数,输入SSID和Password切换到目标wifi。(√)
    • 完成通过手机APP配网功能 (√)
    • 新增通过浏览器访问指定地址,完成网页配网功能 (√)
    • wifi模块的问题;
      • WiFi连接检查 (√)
      • 透传模式退出 (√)
      • 主动断开TCP (√)
  • 实现主机与服务器注册登录;
    • Utoken自动刷新 ;不用写入到Flash,上电后自动登录获取。只将用户名和密码保存;(√)
    • 自动保存token,自动计算有效时间,自动重新登录。(√)
  • 注册主机接口,自动读取SN(后面改成用芯片硬件ID) (√)
  • 传感器相关
    • C02浓度传感器代码 (√)
    • NH3浓度传感器代码 (√)
    • 光照度传感器代码 (√)
    • 温湿度传感器有BUG,模拟I2C的SDA线一直高电平,在解决中 (√)

鸡场实地情况

Q: 具体的组网方案要去鸡场实地考察下才能确定。

R: --实地看完后:

  1. 鸡场的养殖密度很大,10w只鸡只在一个鸡舍;

  2. 鸡舍大小为80m×15m×8m,不算特别大,地理位置偏僻,电磁环境良好,几乎没有同频段干扰;

  3. 鸡舍建筑主体材料为 塑钢外皮,保温材料夹心;对电磁屏蔽效果较好,可能会有公网通信问题

  4. 鸡舍内部主题为钢夹结构,上下两层,中间是钢栅格(此项是否会对信号传输造成影响待定),单层有四对机柜,单个机柜5层,会对信号横向造成影响,纵向80米几乎无遮挡。

  5. 鸡舍取电较为简单,考虑使用电源供电,或者长续航电池,安装位置不能干涉现有设备。

  6. 氨气、二氧化碳传感器可能存在寿命以及功耗问题。

  7. 鸡舍内有WiFi连接,但是似乎不能覆盖,联通4g信号没有。

  8. 综上,目前个人设想是在上下两层分别设置两个路由节点,分别负责同层的终端节点通信,协调器安置在主机。主机在监控室与生产车间只有一层建筑阻隔。公网通信设置WiFi和NBIOT两个模块。(NBIOT不要用联通卡)

    供电方式个人希望做成有线供电,可预留电池供电设计。主要考虑到电池供电存在 (1 )功耗、续航问题 (2)电池寿命和安全性问题,电池长时间使用可能存在安全隐患,同时鸡场的养殖密度过大,消防设施不完善。在此基础上可以考虑增加火灾报警功能

HTTP协议下的通信

  • 先用Wifi模块用http进行测试,可能要和Zigbee一起推动。
    • 确定用http,https证书太贵了
  • json包的单片机解析;cjson库
    • 换用了更高效的jansson库
  • https协议看后面情况实现
    • 后端已经上线了一些接口,开始进行对接和测试
    • 返回报文的body头解析基本完成
    • 完成token的自动获取

zigbee网络

  • 调试流程

    1. 使用测试板的简单组网和参数配置【ZG120A增益0-20dBm(1km) ZG6907A增益-37-7dBm(120m) 发送方单包支持最大数据包长72字节】

      使用设计的PCB转接板调试(目前有两块可用)

      调试工具:智巢Zigbee测试版(1.0)、串口专USB模块、装好环境的电脑

      测试流程

      1)进入上位机,选择好对应串口,打开串口;

      2)模块上电后默认进入传输模式,进行配置前要切换到配置模式;

      ​ Zigbee网络是由协调器建立的,节点类型默认为终端,进入配置模式后修改节点类型;注意 : 改变类型后 点击右侧的小按钮,再点击写入网络参数,完成后重启模块(只有修改节点类型后才需要重启模块)

      3) 终端节点设置同理,如果要加入同一个网络,则需要PAN ID 和信道一致,其会自动加入网络。

      4)协调器短地址默认0,终端的地址是自动分配,不可修改。再进行点对点通信时,可以通过短地址或者MAC地址。(注意修改网络参数要进入配置模式,修改后要点写入网络参数

      5)以上设置完成后,在(定点组网的选项卡下应该就能实现双向通信)

在这里插入图片描述 在这里插入图片描述
  • Zigbee驱动

    两个型号模块的特点

    ​ 120A可以作为协调器和路由器,发射功率可以更大,可以安装在主机和路由节点上;6907作为终端,功耗更低,体积更小,于此同时传输距离也短。以上两个模块组成的网络节点数上限为256个,建议数量100个

    • 终端

    休眠和非休眠两种方式

    ​ 两个型号的模块发送时都可以串口唤醒,120A是休眠时接收到一帧≥25字节数据唤醒;6907是接收到≤10字节数据唤醒;唤醒时间将持续Uart_holdtime(默认1000ms),收到新的串口帧自动刷新超时寄存器。

    除此外还可以使用Wake引脚控制,默认高电平,拉低则持续唤醒,释放恢复高电平恢复休眠。※计划使用这种方式,唤醒更方便和灵活。

    ​ 休眠终端接收数据时,为周期唤醒,唤醒周期要小于30s。若只上传数据可以设置大于30s,默认5min,降低功耗。

    • 路由器

    ​ 120a可以作为路由节点,路由节点主要用来扩大网络覆盖范围,转发报文中继路由。同时具备终端的所有功能 路由器可以自建网络或者加入其他网络,若网络路径存在问题自动调整路径。

    路由器要一直处于活动状态,因此必须要用主电源供电。

    • 协调器

      ​ 建立网络和管理网络,控制其他节点接入网络,存储根网络节点信息,并具有路由节点的所有功能(包括终端)。

      ​ 主要为管理网络,记录节点信息,入网设备权限鉴别。要求主电源供电。

    通用部分

    E180-120A I/O类型 使用引脚 E180-6907 I/O类型 使用引脚
    PD14(WAKE) I 发送唤醒 PC4(WAKE) I 发送唤醒
    PD15(AUX) O 工作状态指示 PA7(AUX) O 工作状态指示
    PA0(Tx) O 串口发送 TX O 串口发送
    PA1(Rx) I 串口接收 RX I 串口接收
    PB13(ACK) O 指示发送状态 PE0(ACK) O 指示发送状态
    PF7(LINK) O 连接状态指示 PA4(LINK) O 连接状态指示
    PB14(GPIO0) I/O GPIO预留 PE3(GPIO0) I/O GPIO预留
    RESETN I 复位 nRESET I 复位

    这里的串口应该特定连接到单片机串口,AUX引脚接到可唤醒休眠单片机的外部中断。未作标注的可连接普通IO

    • 工作模式&切换

      • 传输模式

        所有数据都将发送出去,可以单播、组播、广播

      • 配置模式

        认为所有数据为配置指令,退出记得保存数据,所有数据都认为是HEX格式。

      • 模式切换

        指令切换:模块收到2A 2D 2E 进入配置模式,返回7A 7D 7E;收到2F 2C 2B 切换到传输模式,返回7F 7C 7B

        引脚切换:默认上拉,当低电平超过500ms切换到另一模式;

        这里使用指令切换,不同模块切换通用、切换模式更准确。

    • AUX外部唤醒CPU

      模块接收到数据后将AUX拉低AUX_delaytime之后串口才输出数据。用于唤醒CPU,AUX_delaytime默认4ms,可自己配置。配置为0则无延迟。

    • ACK

      指示发送状态。只作用于非休眠终端,也无法指示协调器广播信息。

    • 无线远程配置

      前两个为无线配置ID,可以自定义,默认A8 8A。模块收到空中数据有这两个字节判断为远程配置命令,将不会做串口输出,执行对应操作。

      在进行通信时要注意非远程配置 避免产生 这两个字节

    • 父节点

      父节点由协调器或者路由器担任,单个协调器或者路由器最大管理终端数量(child_count)上限为50个

    硬件设计

    • 直流稳压电源供电,电源纹波系数尽量小,可靠接地。

    • 供电电路推荐保留30%以上余量。

    • 远离电源、高频走线、变压器等电磁干扰大的部分

    • 高频数字、高频模拟走线、电源尽量避免在模块下方

    • 原理物理层同为2.4g的协议,天线最好垂直向上。

    • 模块天线上下以及左右1cm之内尽量将PCB挖空。

E180-ZG120A驱动

两种模式
  • 协调器

    1. 初始化zigbee网络,可手动设置PAN ID和通信信道 (√)
    2. 连续工作模式,主电源供电 (需要硬件配合)
    3. 任意单个节点的一对一通信 (√)
    4. 全网的节点唤醒,数据、时间统一;节点唤醒,可能需要长时间的唤醒(等待要唤醒的主机接收周期)。
  • 路由器

    1. 可以完成网络中继功能。 (√)
    2. 除此外担任一个终端,进行本机数据传输。 (√)
    3. 理论上应该将网络模块分组编号,做好终端数量均衡。(单个父节点上限50个,总网络节点建议不超过100)
    4. 主电源供电,连续工作模式 (需要硬件配合)

E180-ZG6907驱动

两个状态
  • 终端(非休眠模式)

    1. 这个模式应该只在组网(调试模式)阶段进入,完成一些网络参数配置、从机注册等的流程
    2. 如果最终只使用外部供电,可能将全部功能放在非休眠模式下。
    3. 如果因为模块异常,退出工作状态,应切换到非休眠模式,方便进行问题定位。
    4. 非休眠模式应可以由主机的信号主动切换,比如在主机主动唤醒采集节点。
  • 终端(休眠模式)

    1. 正常调试完成后进入工作状态,应进入休眠终端模式。以降低功耗,延长设备寿命。
    2. 因为数据采集节点大部分为数据发送,发送时间由单片机控制。发送完成在回到休眠模式
    3. 休眠终端接收,周期接收(间隔不能大于30s);如果收到主机的信息后,AUX要能通过外部中断唤醒休眠状态下的CPU。
  • Zigbee数据协议

    数据帧头:0xAA 0xBB(避免特殊数据触发模块串口指令)

    数据帧尾:0xBB 0xAA

    数据内容:

    • 正常工作状态:本节点功能(角色)、本节点状态、本节点编号(空间位置)、被主机记录状态查询(间隔)、采集到的数据、本机的状态(电量等)

    • 初始化网络状态:本机MAC地址、短地址(短点播自带)、正常状态的一次完整数据;

      同时主机存储各个节点的短地址和MAC地址,记录对应节点信息。

      网络初始化最后:各个从机查询主机是否记录节点信息;正常工作间隔查询 (这个可不做)

    数据输出模式:数据+短地址;

    数据发送模式:短地址点播、广播(仅主机和路由器允许)、组播(按上下楼层分组节点)

    主机唤醒从机:

    • 全部唤醒:广播发出唤醒指令,接收到指令的节点保持非休眠状态并响应主机。直到主机发出唤醒解除指令,返回ACK信号。(接触考虑做两次握手)

      唤醒过程中主机暂存从机唤醒状态。

    • 部分唤醒:主机从记录的节点信息查找对应短地址,单独唤醒,步骤同上。

GUI相关

目前UI方面相对不紧张,数据排版等设置待定,优先解决底层功能。(2021年10月17日)

JSON解析

计划使用Jansson库(Keil的官方库)或者cJson库;推荐使用Jansson,因为GitHub辣鸡校园网上不去。

Keil官方Pack的下载地址:Third-Party Software Packs (keil.com)

进度:已经实现了对Json的打包和解包(基于Jansson),能实现对json的嵌套、递归解析,测试代码已经push。

注意

  • 在进行json打包/解包要预留3K的堆空间(如果嵌套少可以适当减小)。
  • 使用完后切记进行堆空间释放,不然可能导致内存泄漏。(json_delete(root))

重要:

  • 不要参考辣鸡CSDN的文章,全Tm的复制怪,添加完jansson库之后看官方API文档。(看不懂英文我放了份翻译在仓库,虽说翻译的也是狗屎)。
  • 直接用json_unpack和json_pack两个API就行。

传感器资料

红外二氧化碳传感器(JX-CO2-102)

四个引脚:5V,GND,TX,RX

自然环境中CO2浓度是400ppm,传感器测量范围0-5000ppm,分辨率1ppm,工作电压5V,串口收发数据,波特率9600,数据位8,停止位1,无校验位。我们应该只需要用到问询模式,单片机发送一次测量指令,模块发回一次测量结果。格式是XXXX+PPM,返回的数据直接使用。

氨气传感器(JXM-NH3)

四个引脚:TX,RX,GND,VCC

养鸡场中的氨气浓度最好不超过20ppm,传感器测量范围0-100ppm,分辨率0.01ppm,工作电压5V和3.3V都可以,串口收发数据,波特率9600,数据位8,停止位1,无校验位。只用问询模式,单片机发送一次测量指令,模块发回一次测量结果。返回的一帧数据需要解析,解析后的格式是XXXX+PPM。

光照度传感器(BH1750FUI)

五个引脚:VCC,SCL,SDA,GND,ADDR (使用时ADDR要接地)

IIC通信,得到传感器发来的数据处理后就是光照度。

温湿度传感器(DHT11)

四个引脚:VCC,SDA,NA(悬空),GND

数据传输只用到SDA一根线,得到传感器的数据需要处理,精度不是很高,温度3℃以内误差,湿度似乎只能精确到整数位

木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

智巢项目的嵌入式软件相关、可能会涉及到部分的硬件知识。 展开 收起
C 等 2 种语言
MulanPSL-2.0
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/zcd1300/zhichao_qianrushi.git
git@gitee.com:zcd1300/zhichao_qianrushi.git
zcd1300
zhichao_qianrushi
智巢项目 嵌入式软件
master

搜索帮助