ESP32 接入点灯科技实现远程控制(物联网)

文章目录

  • ESP32-C3
  • MQTT协议
  • blinker App 源码
  • blinker 开发者
  • Arduino 支持文档
  • 导入 blinker 库
  • 注册点灯 APP
  • blinker WiFi 示例
  • blinker 蓝牙示例

本示例中开发板使用的是Seeed Studio (XIAO-ESP32-C3)

在这里插入图片描述

ESP32-C3

ESP32-C3 是 Espressif Systems 公司开发的一款单核 Wi-Fi 和蓝牙双模 SoC(系统级芯片),基于 RISC-V 架构,旨在为物联网(IoT)应用提供高性能和低功耗的解决方案。

  • 核心架构:
    处理器: ESP32-C3 使用的是 32 位 RISC-V 架构的单核处理器,工作频率最高可达 160 MHz。
    内存: 包含 400 KB 的 SRAM,另外还集成了 8 KB RTC(实时时钟)内存,用于低功耗状态下的数据存储。
  • 无线连接:
    Wi-Fi: 支持 2.4 GHz Wi-Fi,符合 IEEE 802.11 b/g/n 标准,具有 STA(站点)、AP(接入点)和 STA+AP 共存模式。
    蓝牙: 支持蓝牙 5.0 LE(低功耗),包括支持长距离传输、广告扩展、2M PHY 等特性。
  • 安全性:
    硬件加密: 提供 AES-128/192/256、SHA-1、SHA-2、RSA 和 ECC 等加密算法的硬件加速。
    安全启动: 支持通过 RSA-3072 的安全启动功能,确保固件的完整性和真实性。
    闪存加密: 支持 AES 加密的闪存加密功能,保护固件和用户数据的安全。
  • 低功耗:
    电源管理: 支持多种低功耗工作模式,包括浅睡眠模式、深度睡眠模式和待机模式,可以显著降低能耗,适用于电池供电的 IoT 应用。
  • 外设和接口:
    GPIO: 提供多达 22 个可配置的 GPIO 引脚,支持 PWM、ADC、DAC、I2C、SPI、UART 等多种外设接口。
    ADC: 集成了 12 位精度的 ADC,适用于传感器数据采集等应用。
    定时器: 内置多个定时器和看门狗定时器,用于精确计时和系统安全。
  • 开发支持: 开发工具: Espressif 提供了完善的软件开发工具链,包括 ESP-IDF(Espressif IoT Development Framework),以及对 Arduino、MicroPython 等第三方平台的支持。
    参考设计和文档: 提供详细的硬件设计参考、电路图、数据手册和编程指南,帮助开发者快速上手。
  • 应用场景: ESP32-C3 适用于各种物联网应用,如智能家居、工业自动化、健康监测、可穿戴设备、环境监测等。这些应用通常要求设备具有稳定的无线连接、高效的能量管理以及可靠的安全特性。

MQTT协议

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,专为受限环境下的设备设计,特别适用于物联网(IoT)应用。MQTT 由 IBM 在 1999 年开发,并在 2013 年成为 OASIS 标准。

  • 协议模型: MQTT 采用发布/订阅(publish/subscribe)模型,而不是传统的请求/响应模型。这个模型中,客户端通过主题(topic)进行消息发布和订阅,服务器(称为代理或 broker)负责消息的转发。
  • 轻量级: MQTT 设计简单,协议开销小,非常适合网络带宽有限和资源受限的设备,如传感器、微控制器等。

blinker App 源码

  • https://github.com/blinker-iot/blinker-app

blinker 开发者

  • https://diandeng.tech/dev

在这里插入图片描述

Arduino 支持文档

  • https://diandeng.tech/doc/arduino-support

导入 blinker 库

在这里插入图片描述

  • 从导入的库中打开点灯官方示例

在这里插入图片描述

注册点灯 APP

  • 添加独立设备

在这里插入图片描述

  • 选择网络接入

在这里插入图片描述

  • 修改名称/获取设备密钥

在这里插入图片描述

  • 编辑设备界面组件

在这里插入图片描述

blinker WiFi 示例

#define BLINKER_WIFI#include <Blinker.h>char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID or name";
char pswd[] = "Your WiFi network WPA password or WEP key";// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");int counter = 0;// 按下按键即会执行该函数
void button1_callback(const String & state)
{BLINKER_LOG("get button state: ", state);digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);counter++;Number1.print(counter);
}void setup()
{// 初始化串口Serial.begin(115200);BLINKER_DEBUG.stream(Serial);BLINKER_DEBUG.debugAll();// 初始化有LED的IOpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Blinker.attachData(dataRead);Button1.attach(button1_callback);
}void loop() {Blinker.run();
}
  • 烧录完成并连接上网络后刷新APP设备列表

设备在线说明设备网络与密钥没问题。

在这里插入图片描述

  • 点击按键发送数据

在这里插入图片描述

  • 监听设备串口数据

在这里插入图片描述

blinker 蓝牙示例

#define BLINKER_BLE#include <Blinker.h>BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");int counter = 0;void button1_callback(const String & state)
{BLINKER_LOG("get button state: ", state);digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}void dataRead(const String & data)
{BLINKER_LOG("Blinker readString: ", data);counter++;Number1.print(counter);
}void setup()
{Serial.begin(115200);BLINKER_DEBUG.stream(Serial);pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);Blinker.begin();Blinker.attachData(dataRead);Button1.attach(button1_callback);
}void loop()
{Blinker.run();
}
  • 添加设备蓝牙接入

在这里插入图片描述

  • 选择连接

在这里插入图片描述

  • 设备列表

在这里插入图片描述

  • 操作界面

在这里插入图片描述

  • 监听设备串口

在这里插入图片描述

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

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

相关文章

tkinter学习笔记

一、建立窗口 快速创建一个窗口的代码如下&#xff1a; import tkinter roottkinter.TK() #创建一个根窗口&#xff0c;root是TK对象的名称&#xff08;对象的名称是可以自定义的&#xff09; root.mainloop() #放在程序的最后一行&#xff0c;表示让根窗口进行事件循环&…

「云渲染课堂」3dmax地砖材质参数怎么让画面更加真实?

在3DMAX中&#xff0c;地砖材质的渲染需要细致的调整&#xff0c;因为不同材质的地砖在反射和折射参数上各不相同。为了使地砖材质更加逼真&#xff0c;以下简要说明了一些设置方法&#xff0c;希望对大家有所帮助&#xff01; 3dmax地砖材质参数如何设置 1、打开材质编辑器&a…

汇编:数据类型

基本数据类型 1.字节&#xff08;Byte&#xff09;&#xff1a; 大小&#xff1a;8位&#xff08;1字节&#xff09; 表示范围&#xff1a;0到255&#xff08;无符号&#xff09;&#xff0c;-128到127&#xff08;有符号&#xff09; 汇编定义&#xff1a;DB&#xff08;Def…

性能测试--线程的监控

1.线程的状态 1.1.线程的5种状态 java的线程总共有5种状态&#xff0c;如下&#xff1a; * 新建&#xff1a;new 【新建之后不启用都是new】* 运行&#xff1a;runnable* 等待&#xff1a;waitting(无限期等待),timed waitting(限期等待)* 阻塞&#xff1a;blocked* 结束&am…

LaTex 模板 - 东北师范大学申研申博推荐信

文章目录 NENU-Letter-Template项目地址示例特性项目结构如何使用main.texletterContent.tex 如何编译方式 1 &#xff1a;在线编译方式 2 &#xff1a;本地编译 参考 NENU-Letter-Template NENU’s recommendation letter template. 东北师范大学推荐信模板 项目地址 GitHu…

构建响应式网站的HTML5和CSS3最新技术

构建响应式网站需要利用HTML5和CSS3的最新技术&#xff0c;以确保网站在各种设备和屏幕尺寸上都能提供良好的用户体验。以下是一些关键技术和技巧&#xff1a; HTML5 技术 语义化标签&#xff1a; 使用语义化标签如 <header>、<nav>、<section>、<articl…

网络爬虫原理及其应用

你是否想知道Google 和 Bing 等搜索引擎如何收集搜索结果中显示的所有数据。这是因为搜索引擎对其档案中的所有页面建立索引&#xff0c;以便它们可以根据查询返回最相关的结果。网络爬虫使搜索引擎能够处理这个过程。 本文重点介绍了网络爬虫的重要方面、网络爬虫为何重要、其…

【学习笔记】Webpack5(Ⅱ)

Webpack 3、高级篇 3.1、提升开发体验 —— SourceMap 3.2、提升打包速度 3.2.1 HotModuleReplacement 3.2.2 OneOf 3.2.3 Include / Exclude 3.2.4 Cache 3.2.5 Thread 3.3、减少代码体积 …

小苯的01背包easy(枚举,位运算,思维推导)

文章目录 题目描述输入格式输出格式样例输入1样例输出1样例输入2样例输出2提交链接提示 解析参考代码 题目描述 小苯有一个容量为 k k k 的背包&#xff0c;现在有 n n n 个物品&#xff0c;每个物品有一个体积 v v v 和价值 w w w&#xff0c;他想知道在体积不超过 k k …

ACM实训冲刺第十八天

统计元音 代码 需要注意的是getchar()和gets(s) #include<stdio.h> #include<string.h> int main(){//测试实例个数int n;scanf("%d",&n) ;char s[100];getchar();while(n--){gets(s);int cnta0,cnte0,cnti0,cnto0,cntu0;for(int j0;j<strlen(…

蓝桥杯杨辉三角

PREV-282 杨辉三角形【第十二届】【蓝桥杯省赛】【B组】 &#xff08;二分查找 递推&#xff09;&#xff1a; 解析&#xff1a; 1.杨辉三角具有对称性&#xff1a; 2.杨辉三角具有一定规律 通过观察发现&#xff0c;第一次出现的地方一定在左部靠右的位置&#xff0c;所以从…

Math对象是什么?有什么用?

Math对象是JavaScript的一个内置对象&#xff0c;包含了一些常用的数学方法和属性。它提供了一些数学运算的函数&#xff0c;可以通过调用这些函数来执行各种数学计算。 Math对象的一些常用方法包括&#xff1a; 1. Math.abs(x)&#xff1a;返回一个数的绝对值。 2. Math.ceil…

浅析OceanBase数据库:特点、优势与应用场景

随着数据量的不断增长和业务需求的不断变化&#xff0c;数据库技术在现代信息系统中的地位变得越来越重要。蚂蚁集团推出的OceanBase数据库&#xff0c;凭借其高性能、高可用性和高扩展性&#xff0c;成为了业内备受关注的明星产品。本文将从技术角度&#xff0c;浅浅的解析Oce…

FTP协议——BFTPD安装(Linux)

1、简介 BFTPD&#xff0c;全称为 Brutal File Transfer Protocol Daemon&#xff0c;是一个用于Unix和类Unix系统的轻量级FTP服务器软件。它的设计理念是提供一个简单、快速、安全的FTP服务器解决方案&#xff0c;特别适用于需要低资源占用的环境。 2、步骤 环境&#xff1…

C语言基础-如何避免内存泄漏

在C语言中&#xff0c;内存泄漏是一个常见且严重的问题&#xff0c;因为它可能导致程序消耗过多的内存资源&#xff0c;最终耗尽系统资源&#xff0c;导致程序崩溃或系统变得不稳定。为了避免内存泄漏&#xff0c;程序员需要仔细管理分配的内存&#xff0c;并确保在适当的时候释…

使用Golang调用腾讯云对象存储(COS)

文章目录 一、腾讯云COS对象存储创建1.1 创建存储桶2.1 存储桶测试 二、使用Golang调用腾讯云对象存储&#xff08;COS&#xff09;2.1 安装COS SDK2.2 初始化COS客户端2.3 上传文件2.4 下载文件2.5 列出存储桶中的对象2.6 整体代码示例 本文档介绍如何使用Golang调用腾讯云对象…

正在直播:Microsoft Copilot Studio 新增支持Copilot代理、Copilot扩展等多项功能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

java连接ldap实现查询

文章目录 一、项目背景二、准备工作三、验证结果四、易错点讲解易错点1&#xff1a;java: 无法访问org.springframework.ldap.core.LdapTemplate易错点2&#xff1a;java: 无法访问org.springframework.context.ConfigurableApplicationContext易错点3&#xff1a;[LDAP: error…

思科、华为、华三、Juniper路由协议优先级汇总

Part1思科路由协议管理距离默认值 路由来源默认值已连接的接口0静态路由1增强型内部网关路由协议 (EIGRP) 汇总路由5外部边界网关协议 (BGP)20内部 EIGRP90IGRP100OSPF110IS-IS&#xff08;中间系统到中间系统&#xff09;115路由信息协议 (RIP)120Exterior Gateway Protocol …

Python——字典数据存入excel

# 字典结果写入excel表保存 df pd.DataFrame(my_dict) # dict转DataFrame result_excel df.T # 转置 print(result_excel) result_excel.to_excel(save_path) # 写入excel