杰理芯片AC79——物联网远程点亮/关闭LED灯

杰理芯片的封装简直太香了(比STM32香多了),SDK也封装得很好,对于我这种手残党简直不要太友好。赶紧学起来,快速实现你想要的功能吧!

芯片选型

杰理AC79

资料文档

环境搭建以及点亮第一盏灯请访问:

官方文档:欢迎使用杰理 JieLi_AC79 开源项目文档 — JL Project Documentation (zh-jieli.com)

版本描述:本文SDK使用realse_1.2.0版本

需求描述

 现在有很多智能家居可以实现远程操作,本文实现需求:将LED灯的状态同步到阿里云物联网平台,再从平台上下发远程指令开灯和关灯。

实现原理

  1. 芯片连上WIFI,实现联网功能;
  2. 进入阿里云物联网平台,创建产品和设备,获得设备号和密码;
  3. 芯片通过MQTT协议将灯的状态同步到物联网平台;
  4. 在物联网平台设置灯的状态为开启或关闭(动手能力强的伙伴可以写个APP通过安卓MQTT或IOS来给实现芯片发指令哟~)

MQTT协议

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,设计用于在低带宽和不稳定网络环境下进行高效的通信。以下是MQTT协议的主要特点:

发布/订阅模式:MQTT采用发布/订阅模式,其中客户端可以订阅一个或多个主题(Topic),而服务器则负责将消息发布到这些主题。这种模式使得多个客户端可以同时接收到感兴趣的消息。

轻量级:MQTT协议非常轻量级,协议头部信息很小,有效减少了网络传输的开销和数据流量。这使得MQTT非常适合在低带宽和有限资源的设备上使用,例如物联网设备。

QoS级别:MQTT支持三个不同的消息传输质量(QoS)级别:0、1和2。QoS级别决定了消息传输的可靠性和保证程度。较高的QoS级别会增加通信开销,但可以提供更可靠的消息传输。

可靠性和持久性:MQTT协议具有可靠性和持久性机制。客户端可以选择是否要求服务器保留未传递的消息,以便在客户端重新连接时重新发送。这确保了即使在网络中断或重新连接时,消息也不会丢失。

安全性:MQTT协议支持使用TLS/SSL进行加密和身份验证,以确保通信的安全性。这对于保护敏感数据和防止未经授权的访问非常重要。

总结而言,MQTT协议是一种灵活、可靠且适用于物联网应用的通信协议。它具有低开销、轻量级和可扩展等特点,使得它成为物联网设备之间进行高效通信的理想选择。

阿里云物联网平台配置

基本配置

其他物联网平台也可以,因为阿里云可以免费试用的,里面的公共实例也可以用,对个人开发者友好。绝对不是广告。

https://iot.console.aliyun.com/lk/summary/new 阿里云物联网平台:点此访问

阿里云参考的开发文档:如何调用Python的Paho MQTT类库将设备接入物联网平台_物联网平台(IoT)-阿里云帮助中心 (aliyun.com)

主要步骤:

  1. 创建产品、创建设备
  2. 获取设备证书
  3. 阅读SDK文档,下载Python版本DEMO(先用python调通SDK的订阅和发布,后续在杰理芯片调试时不易出错,千万别省,否则等会儿会各种错误)
  4. 修改Python DEMO中的示例代码,将自己的产品和设备填上去,调通订阅和发布(订阅和发布地址见下图)

 Python Demo 调试

***运行pythonDEMO前必须要装依赖库,否则会报错***

pip install paho-mqtt==1.6.1

Python DEMO 要修改的地方:

发送的JSON数据组织格式是参照从阿里云调试发过来的JSON数据来的:

data = {"method":"thing.service.property.post","id":"117116779","params":{"PowerSwitch":1,"SprayLevel":27,"TargetHumidity":88},"version":"1.0.0"}

运行这个python文件,在设备中你就可以看到你设置的数据被更新到物联网平台了。

 从阿里云下发数据到设备

  1.  首先要运行上面的Python DEMO,不然你的设备不会在线,要设备在线才能发
  2. 点击【监控运维】-【在线调试】,选择你的设备和产品
  3. 点击【属性调试】,输入你要发的属性值
  4. 点击【设置】,然后你就可以看到运行Python DEMO控制台中有日志信息打印出来,就代表订阅调通了

订阅成功的日志如下:

publish msg: {"method": "thing.service.property.post", "id": "117116779", "params": {"PowerSwitch": 1, "SprayLevel": 27, "TargetHumidity": 88}, "version": "1.0.0"}
receive message ---------- topic is : /sys/k10phTLeV8n/Oy9fCp6wuH2zLcC9LJBB/thing/service/property/set
receive message ---------- payload is : {"method":"thing.service.property.set","id":"1991251952","params":{"PowerSwitch":0},"version":"1.0.0"}
reveice property_set command, need to post ---------- topic is: /sys/k10phTLeV8n/Oy9fCp6wuH2zLcC9LJBB/thing/event/property/post
reveice property_set command, need to post ---------- payload is: {"params":{"PowerSwitch": 0}}

杰理芯片配置

请阅读杰理AC79的文档,根据文档来做会快很多。需要阅读【模块例程】中【3. WIFI部分】和【8.网络协议】中关于MQTT CLIENT 部分。

文档连接:欢迎使用杰理 JieLi_AC79 开源项目文档 — JL Project Documentation (zh-jieli.com)

DEMO示例工程:fw-AC79_AIoT_SDK: Firmware for Generic WiFi & Bluetooth Combo SDK(AC79 series) (gitee.com)

芯片联网

运行DEMO示例发数据给阿里云

从阿里云接收数据点灯

代码实现

常见问题

  1. 设备同时只能一个客户端去连接在线,如果Python DEMO一直在运行,杰理芯片连不上的;
  2. 杰理芯片无法订阅和发布的可能原因有:MQTT示例中设备名称、账号密码、订阅地址、发布地址、发送的数据格式、以及USE_MQTT_TEST未在头文件中启用。
  3. 无法发布数据到阿里云时不要方,通过串口检查日志,搜索关键字“MQTT”相关的日志,看看MQTT有没有被启动,如果有“kill for mqtt”类似的,说明MQTT配置出错了,被芯片杀掉了,请按照第二条仔细检查MQTT的配置;
  4. 杰理芯片一定要先联网,进入STA模式,不联网是不能通过MQTT协议访问阿里云物联网平台的。

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

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

相关文章

【一】DDR3基础知识与IMG IP

【一】DDR3基础知识与IMG IP 一、DDR3的基本知识 1、DDR3全称为第三代双倍速率同步动态随机存储器 特点:掉电无法保存数据,需要周期性的刷新;时钟上升沿和下降沿都在传输数据;突发传输,突发长度burtst length一般为…

Error: Cannot find module ‘@rollup/rollup-win32-x64-msvc‘

1.背景 新项目需要使用vite搭建一个v3项目,之前也弄过,但项目创建后却一直无法跑起来,大聪明的我一直没有注意到这个问题 2.解决步骤 方案1:删除node_modules和package-lock.json文件重新npm install下包,部分码农通过这个步骤可解决 方案2:node版本或者npm版本不对,或者没…

Vue3:快速上手路由器

本人在B站上关于vue3的尚硅谷的课程,以下是整理一些笔记。 一.路由器和路由的概念 在 Vue 3 中,路由(Router)和路由器(Router)是两个相关但不同的概念。 1. 路由(Router)&#xff…

LeetCode.2908. 元素和最小的山形三元组 I

题目 2908. 元素和最小的山形三元组 I 分析 首先,看到这道题,第一反应就是暴力方法,三层for循环,枚举每一种情况,代码如下 class Solution {public int minimumSum(int[] nums) {int min Integer.MAX_VALUE;for(i…

基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

线程池详解、核心参数、拒绝策略

什么是线程池 线程池是一种池化技术,它预先创建一组线程,用于执行异步任务。当有新任务到来时,线程池可以立即分配一个线程来处理,而不需要临时创建。这样可以减少因为频繁创建和销毁线程而导致的开销。 线程池的应用场景 高并…

2024年腾讯云4核8G12M轻量应用服务器测评_CPU内存带宽系统盘

腾讯云4核8G服务器价格:轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线?支持30个并发数,可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

什么是技术分析和EA技术?澳福一个提醒丰厚收益

技术分析是指根据炒外汇市场汇率走势的过去表现,借助技术分析工具预测汇率的未来趋势并确定入市、出市策略的预测分析方法。 它是以预测市场价格变化的未来趋势为目的,以市场行为(外汇市场的价格和交易量)的图形、图表、形态、指标为手段,使用…

docker通过已有镜像打包执行

1、查看已有镜像 docker images 2、制作dockerfile FROM python LABEL maintainer"JETZ" add . / WORKDIR /3、新建镜像 docker build -t python3.7.13 .4、打包导出镜像 docker save python3.7.13 -o /opt/python3.7.13.tar5、重新加载镜像 cd /opt docker l…

电商系列之取消订单

> 插:AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家…

SOA-面向服务架构

SOA-面向服务架构 1.概述2.SOA的设计原则包括:3. SOA实现方法1.Web Service2. 服务注册表3. 企业服务总线 细讲 超赞笔记 1.概述 SOA (Service-Oriented Architecture,SOA),从应用和原理的角度,目前有2种…

Matlab之提高交叉定位点的定位精度

通过测向交叉定位的方法,按理只需2根测向线即可得出定位点的位置。但由于误差的存在,求出的定位点位置存在一定的偏差。为了得到更加精确的定位点位置,需要对定位点进行冗余测量,从而得到多个定位点,然后通过定位点估计…

GRE和MGRE综合实验

实验拓扑图 实验思路 根据图中所属网段,配置ip地址和网关R1,R2,R3,R4配置缺省路由,可以是公网互通使用ppp验证,R1与R5为PAP验证,R5:aaa地址池,创建用户名以及密码,同时进行pap服务认证,同时在…

使用nvm管理nodejs版本

文章目录 1、下载NVM2、选择NVM安装3 、查询版本号&常用命令4、nvm命令安装指定版本node4.1 安装指定node4.2 查看是否安装成功4.3 切换node版本到你想要的版本4.4 再次查看nvm版本列表4.5 nvm其他常用命令 这个是每个全能前端经常会用到的,之前用过现在重装了&…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有: 基于BitVM的乐观 BTC bridgeBitVM:Bitcoin的链下合约Bitcoin Bridge:治愈还是诅咒? 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例,以引入基于 1-of-n 诚实假设的多方配置。这…

Android 自定义EditText

文章目录 Android 自定义EditText概述源码可清空内容的EditText可显示密码的EditText 使用源码下载 Android 自定义EditText 概述 定义一款可清空内容的 ClearEditText 和可显示密码的 PasswordEditText,支持修改提示图标和大小、背景图片等。 源码 基类&#xf…

WebViz可视化

WebViz可视化 Webviz是一个基于Web的可视化工具,意味着您可以通过浏览器/APP访问它,而不需要安装额外的软件。这对于远程访问和团队协作非常方便。 Foxglove是一个开源的工具包,包括线上和线下版。旨在简化机器人系统的开发和调试。它提供了…

Gitea 的详细介绍

什么是 Gitea? Gitea 是一个开源、轻量级的自托管 Git 服务,它允许用户搭建类似于 GitHub 或 GitLab 的代码托管平台。由于采用 Go 语言开发,Gitea 具有高效的性能和跨平台特性,适合个人开发者或小团队使用。 Gitea 的特点 轻量…

蓝桥杯第十三届电子类单片机组程序设计

目录 前言 单片机资源数据包_2023 一、第十三届比赛省赛 1.比赛题目 2.赛题解读 二、部分功能实现 1.继电器的开启与关闭 2.长按切换显示状态功能的实现 3.对于温度传感器小数部分的处理 4.其他处理 1)关于数码管显示小数的处理 2)关于5s后继…

结构体类型,结构体变量的创建和初始化 以及结构中存在的内存对齐

一般结构体类型的声明 struct 结构体类型名 { member-list; //成员表列 }variable-list; //变量表列 例如描述⼀个学⽣: struct Stu { char name[20]; //名字 int age; //年龄 char sex[5]; //性别 }; //结构体变量的初始化 int main() { S…