(练习篇)萤火虫esp32与小爱音响---实现笔记本电脑唤醒

2023-05-16

目录

初步工作:

进入正题:


初步工作:

已使用过ESP32的同志们,可以忽略这一步

首先下载arduinoIDE

Software | Arduino

我安装的是1.8.18直装版本

勾选上所有安装选项

配置arduinoIDE:

1.文件-->首选项

将以下地址复制到附加开发板管理器网址

https://www.arduino.cn/package_esp32_index.json

2.下载esp32.inf驱动更新,点右键安装即可

https://github.com/chocho2017/firebeetle-board-esp32

2.5若inf文件安装不成功,报出未有数字签名的错误

打开WIN10的设置-->更新与安全-->恢复-->立即重启-->疑难解答-->高级选项-->启动设置

根据提示,选择和数字签名有关的选项。等待自动重启后即可解决问题。

3.手动安装一次ESP32开发板驱动包

此时需要删除以前与esp32相关的开发板数据包,否则容易产生冲突

删除方法:文件管理器地址栏输入 %LOCALAPPDATA%/Arduino15/packages,回车进入,然后删除掉其中的esp32文件夹

esp32开发板驱动包 链接:https://pan.baidu.com/s/1reBfqBlgN-mr5avxOt4qag?pwd=ku4z 
提取码:ku4z

4.将属于自己型号的ESP32选择到开发板中,并选择已经插好开发板的串口号

4.5如果查不到新的串口接入,可以上网下载一个CH340串口驱动,安装即可解决问题

5.尝试实现烧录和闪烁灯

void setup() 
{ 
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() 
{
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

进入正题:

1.安装 “米家”APP 和 “blinker”APP 。

blinker的库以及手机控制软件可以从如下地址下载

点灯科技-点灯物联网解决方案

米家APP可自行在应用商城下载安装

2.在blinkerAPP创建成为开发者,并保存好自己的密钥

3.理解以下代码并补充相关信息

感谢源代码的分享者:Blinker-xiaoAi-WOL/Blinker_WOL.ino at master · xujunjie96/Blinker-xiaoAi-WOL · GitHub

/**********************************************
 * ESP32 + ARDUINO + Blinker + XiaoAi
 * Remote boot by WOL
 * Creater:Faiz
 * Borrower:单音字
 */

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET

#include <Blinker.h>
#include <WiFiUdp.h>
#include <WiFi.h>
char auth[] = "************"; //密钥
char ssid[] = "单音字"; //wifi名
char pswd[] = "************"; //wifi密码

//The udp library class
WiFiUDP udp;

bool oState = false;
BlinkerButton Button1("awaking");

//awaking!
void button1_callback(const String & state)
{
   BLINKER_LOG("get button state: ", state);
   digitalWrite(LED_BUILTIN, HIGH);
   delay(50);
   digitalWrite(LED_BUILTIN,LOW);
   delay(50);
   pcawaking();
   digitalWrite(LED_BUILTIN, HIGH);
   delay(50);
   digitalWrite(LED_BUILTIN, LOW);
   delay(50);
   digitalWrite(LED_BUILTIN, HIGH);
   delay(50);
   digitalWrite(LED_BUILTIN, LOW);
   delay(50);
}


void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {
        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
         digitalWrite(LED_BUILTIN, HIGH);
         delay(25);
         digitalWrite(LED_BUILTIN, LOW);
         delay(25);
         pcawaking();
         digitalWrite(LED_BUILTIN, HIGH);
         delay(25);
         digitalWrite(LED_BUILTIN, LOW);
         delay(25);
         digitalWrite(LED_BUILTIN, HIGH);
         delay(25);
         digitalWrite(LED_BUILTIN, LOW);
         oState = false;  //force off!!
    }
    else if (state == BLINKER_CMD_OFF) {
        digitalWrite(LED_BUILTIN, LOW);

        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();

        oState = false;
    }
}

void miotQuery(int32_t queryCode)
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("MIOT Query All");
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("MIOT Query Power State");
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
        default :
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
            
    }
        digitalWrite(LED_BUILTIN, HIGH);
        delay(25);
        digitalWrite(LED_BUILTIN, LOW);
        delay(25);
        digitalWrite(LED_BUILTIN, HIGH);
        delay(25);
        digitalWrite(LED_BUILTIN, LOW);
}

void pcawaking()
{
    int i=0;
    char mac[6]={0xF8,0xB4,0x6A,0xB2,0x6F,0x0F};  //例如mac地址F8-B4-6A-B2-6F-0F
    char pac[102];
    char * Address = "192.168.1.255";//udp adress 网关地址或路由器分配的IP//群发最后为.255
    int Port = 3333;//udp port
     //make magicpacket,网络启动的魔术封包
    for(i=0;i<6;i++)
    {
      pac[i]=0xFF;
    }
    for(i=6;i<102;i+=6)
    {
      memcpy(pac+i,mac,6);
    }
    udp.beginPacket(Address, Port);
    udp.write((byte*)pac, 102);//send pac to txbuffer
    udp.endPacket();//biubiubiu
}

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();
    
    uint32_t BlinkerTime = millis();
    
    Blinker.print("millis", BlinkerTime);
}

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

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    
    BlinkerMIOT.attachPowerState(miotPowerState);
    BlinkerMIOT.attachQuery(miotQuery);

    Button1.attach(button1_callback);
}

void loop()
{
    Blinker.run();
}

3.5 在电脑win+R输入cmd并打开,输入ipconfig /all,查看有线网卡的mac地址(在以太网适配器分类中)和自己的网关地址(在无线局域网适配器分类中)。

        将mac地址和网关地址(网关最后的.1改为.255)分别填入代码相关位置。

4.将编译好的内容烧录/上传到开发板

5.打开blinkerAPP添加搜索到的wifi设备

   

6.为米家APP添加设备。在其他设备中搜索 点灯科技 并绑定账号

  

7.打开blinkerAPP,为搜索到的WiFi设备添加一个初始案例。

        并点击右上角的编辑按钮,添加一个叫awaking的文本按钮。

    

 

8.打开电脑的控制面板,进行网络属性设置

控制面板--网络和共享中心--以太网--属性--配置--高级--魔术封包唤醒--开启。

注意,只有有线以太网才有魔术封包唤醒的设置

9.部分电脑无法实现网络唤醒,则要进行主板BIOS设置

进入BIOS方法:关机--启动--在启动界面显示的同时,按下F2或ESC(因电脑而异)

以下将以 惠普战66笔记本为例:

 在BIOS中的Advanced分类中,找到与Devices Options相关的选项

找到Wake On LAN(或叫WOL)的选项卡,建议选择常规启动顺序

( 部分电脑如果唤醒不成功,可能要在电源控制面板中关闭快速启动)

10.重新关机后,保持电源与网线的连接状态。

11.对你的小爱音响说打开“电脑”(blinker中的设备名称),或者Blinker软件上点击awaking按键一下。板子上灯闪几下,电脑就会开机了。

 

此处感谢这位博主给予的开发教程:

使用ESP32和Blinker实现远程网络唤醒电脑(接入语音助手,以小爱同学为例)_网络设备_什么值得买创作立场声明:希望多多分享购买理由点灯科技 Blinker是提供远程接入物联网方案的一家公司,使用他们家的库,可以轻松将设备联网,并接入主流语音助手https://post.smzdm.com/p/aoown0g7/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(练习篇)萤火虫esp32与小爱音响---实现笔记本电脑唤醒 的相关文章

  • STM32——UCOSIII 简介

    目录 UCOSIII简介 UCOSIII中的任务 组成 任务堆栈 任务控制块 任务函数 任务函数模板 UCOSIII系统任务 组成 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UCOSIII任务状态 组成及状态概念 UCO
  • ARM —— 寄存器的封装

    目录 SFR 直接一对一封装 结构体封装寄存器 SFR 全称 xff1a 特殊功能寄存器 xff08 Special Function Register xff09 作用 xff1a 用于 控制片内外设 xff0c 存放 相应功能部件的 控
  • Ubuntu给Pix2.4.8刷Ardupilot固件

    全文基于waf编译器使用 waf命令 xff0c APM官网对于waf的使用描述 xff1a https github com ArduPilot ardupilot blob master BUILD md 前提 xff1a 已经在ubu
  • 程序猿面试经验总结(经验篇)

    开篇序 金九银十大家都知道吧 xff0c 的确九十月份都是跳槽旺季与招聘旺季 xff0c 无论是找工作的 招聘的单位都是特别特别的多 xff0c 多的你有时候看都看不过来 xff0c 以至于让你有时候很难选择 xff0c 其实选择对应自己的
  • STM32 HAL库和标准库的原理区别

    STM32 HAL库和标准库的原理区别 HAL简介 HAL库 xff0c HAL是Hardware Abstraction Layer的缩写 xff0c 中文名称是 xff1a 硬件抽象层 xff0c 是st公司为了更方便地进行stm32之
  • 【超详细~】js的三大定时器:setTimeout、setInterval、requestAnimationFrame

    setTimeout xff08 表达式 xff0c 时间 xff09 61 gt 是指延迟指定时间后才调用函数 xff0c 调用次数仅一次 xff1b setInterval xff08 表达式 xff0c 时间 xff09 61 gt
  • FreeRTOS的学习(一)——实时操作系统和多任务的介绍

    目录 1 初识FreeRTOS 2 FreeRTOS 任务的状态 3 FreeRTOS 的任务 任务的创建和删除 1 xTaskCreate xff1a 使用静态的方法创建一个任务 2 xTaskCreateStatic xff1a 使用静
  • FreeRTOS的学习(四)—— 信号量之间的优先级翻转问题和互斥信号量

    目录 优先级翻转现象 什么是优先级翻转 互斥信号量 1 互斥信号量简介 2 创建互斥信号量 1 函数 xSemaphoreCreateMutex 2 函数 xSemaphoreCreateMutexStatic 3 释放互斥信号量 4 获取
  • STC15单片机 固定翼无人机/航模 飞控程序

    stc15单片机 固定翼无人机 飞控程序 硬件 stcf2k60s22 4g无线通信模块nrf24l01mg90s数字舵机摇杆无刷电机电调 用到的单片机资源 pwmad转换 程序结构 利用ADC转换读取摇杆值将摇杆数值转换为16进制通过2
  • ESP8266 WIFI 模块使用说明

    ESP8266是ai thinker公司推出的一款无线WIFI模块 xff0c 可以通过配置 xff0c 和单片机上的串口进行通信 xff0c 利用WIFI传输数据 1 AT指令简介 同许多通信模块一样 xff0c 我们需要对WIFI模块利
  • Ubuntu18更新软件源、安装python3.8和安装pip

    目录 一 更新软件源二 安装python3 8三 安装pip 一 更新软件源 1 xff09 首先 xff0c 打开sources list文件 sudo vim etc apt sources list 若没有vim xff0c 则需要进
  • Python 迭代器 与 异常处理

    文章目录 迭代介绍可迭代对象迭代器对象迭代器对象取值 方法的简写for循环内部原理异常处理异常的分类异常的类型异常的处理try except 语句try except else 语句try except finally 语句try exce
  • linux系统进程 exec函数族的使用(fork之后)

    1 2 exec 函数族 头文件 unistd h 3 exec 函数可用在fork 函数之后 xff0c 直接执行一个程序而省略子进程复制父进程的资源 4 调用exec不会创建一个新的pid 5 6 path xff1a 可执行文件的路径
  • Collecting package metadata (current_repodata.json): failed的问题解决

    解决方法 1 删除 condarc文件 2 关闭VPN 3 https的锅 xff0c 详情看下面的博客 环境配置 Collecting package metadata current repodata json failed的问题解决
  • 作业1:CAN数据库配置(DBC)

    目录 一 首先如何创建dbc文件 二 创建 三 创建节点NODE 一 其它 xff08 共1题 xff0c 100分 xff09 1 其它 使用vector candb editor软件 xff0c 按给定的信号矩阵配置CAN xff0c
  • Visual Studio 2022 C++下载及配置

    下载地址 xff1a https visualstudio microsoft com zh hans vs 之后点击右下角的安装 xff1b 如果下载速度一直为0 xff0c 那么解决方法为 xff1a 修改电脑的DNS服务器地址为8 8
  • app测试和web测试的区别

    1 功能方面 xff1a 在流程和功能测试上是没有区别的 xff0c 系统测试和一些细节可能会不一样 那么我们就要先来了解 xff0c web和app的区别 xff1a web项目 xff0c 一般都是b s架构 xff0c 基于浏览器的
  • Java网络编程实现

    前言 计算机网路实现了多个网络终端的互联 xff0c 彼此之间能够进行数据交流 而网络应用程序就是在已连接的不同终端设备上运行的程序 xff0c 这些网络程序相互之间可以进行数据交互 网络程序的数据交互则依赖于TCP IP协议 xff0c
  • java对象转JSONObject、JSONObject转java对象及String转JSONObject

    JSONObject jo 61 JSONObject JSONObject toJSON javaBean Student stu 61 JSONObject parseObject jo Student class JSONObject
  • redis设置密码

    设置密码有两种方式 1 命令行设置密码 运行cmd切换到redis根目录 xff0c 先启动服务端 gt redis server exe 另开一个cmd切换到redis根目录 xff0c 启动客户端 gt redis cli exe h

随机推荐

  • 【Java】Java四舍五入保留1位小数、2位小数

    方法一 xff1a 使用字符串格式化实现四舍五入 支持float和double类型 double data 61 3 02 利用字符串格式化的方式实现四舍五入 保留1位小数 String result 61 String format 34
  • ROS: [xxx.launch] is neither a launch file in package

    在ROS执行launch文件的过程中 xff0c 我经常碰见这个问题 xff0c 比如最近在安装ARBOTIX仿真器的时候 sudo apt get install ros indigo arbotix rospack profile 安装
  • SpringBoot文件上传

    文件上传 Spring MVC对文件上传做了简化 xff0c 在Spring Boot中对此做了更进一步的简化 xff0c 文件上传更为方便 Java中的文件上传一共涉及两个组件 xff0c 一个是CommonsMultipartResol
  • Django-图书管理系统(含源码)

    前段时间翻文件发现了以前学习python和django时做的一个系统 xff0c 当时的想法是将这玩意做出来应付web开发大作业 课程设计作业甚至是毕设用的 xff0c 实际上也确实应付了课程设计 xff0c 功能虽然不算多 xff0c 但
  • Android Studio 实现登录注册-源代码 (连接MySql数据库)

    Android Studio 实现登录注册 源代码 xff08 连接MySql数据库 xff09 Android Studio 实现登录注册 源代码 二 xff08 Servlet 43 连接MySql数据库 xff09 Android S
  • MySQL8重置root账户密码图文教程

    root账户为MySQL的超级管理员用户 xff0c 拥有MySQL提供的所有权限 我们登录了root账户可以重置其它创建的所有用户的密码 xff0c 那么root账户的密码忘记了怎么办呢 xff1f 由于版本和安装环境的不同 xff0c
  • docker执行权限问题Got permission denied while trying to connect to the Docker daemon socket

    安装docker之后 xff0c 执行docker images等命令 xff0c 提示权限问题 xff0c 报错如下 xff1a Got permission denied while trying to connect to the D
  • @ServletComponentScan和@ComponentScan 注解

    springboot 项目启动类中我们经常见到这两个注解 64 ServletComponentScan和 64 ComponentScan 下面我们就言简意赅的介绍一下这两个注解的作用 一 64 ServletComponentScan
  • MySQL中使用序列-Sequence

    在Oracle数据库中若想要一个连续的自增的数据类型的值 xff0c 可以通过创建一个sequence来实现 而在MySQL数据库中并没有sequence 通常如果一个表只需要一个自增的列 xff0c 那么我们可以使用MySQL的auto
  • SpringMVC获取请求参数

    CSDN话题挑战赛第1期 活动详情地址 https marketing csdn net p bb5081d88a77db8d6ef45bb7b6ef3d7f 大家好 我是郭尕 SpringMVC获取请求参数 一 前言 二 通过控制器方法的
  • 搞定Redis(三)消息的发布、订阅和新增数据类型

    一 Redis的发布和订阅 1 什么是发布和订阅 Redis 发布订阅 pub sub 是一种消息通信模式 xff1a 发送者 pub 发送消息 xff0c 订阅者 sub 接收消息 Redis 客户端可以订阅任意数量的频道 2 Redis
  • 智能控制——模糊数学及控制

    一 模糊控制概况 模糊逻辑控制 Fuzzy Logic Control 简称模糊控制 Fuzzy Control xff0c 是以模糊集合论 模糊语言变量和模糊逻辑推理为基础的一种计算机数字控制技术 1965年 xff0c 美国的L A Z
  • CMakeList 将CPP代码编译成可执行文件示例

    一 本次编译 CMakeList中用到的语法详解 1 设置cmake 版本 xff1a cmake minimum required VERSION 3 5 2 set the project name project Agent Test
  • STM32 IO口模拟串口

    红叶何时落水 什么是串口呢 xff1f 简单来说它是一种通信协议 xff1b 串口是一个泛称 xff0c UART TTL RS232 RS485都遵循类似的通信时序协议 xff0c 因此都被通称为串口 而对于单片机来说 xff0c 串口通
  • python学习:最适合初学者的8本Python书籍

    Python是最友好的编程语言之一 xff0c 也因此成为初学者的首选 xff0c 为了帮助你更好更快的上手Python xff0c 并学会使用Python进行编程 xff0c 本文我们为初学者分享了最好的Python书籍 希望能够对你有所
  • 最适合Python入门到大牛必看的7本书籍,一定要收藏!

    Python零基础应该阅读哪些书籍 xff1f 我推荐这三本书 1 Python学习手册 xff08 第4版 xff09 以计算机科学家一样的思维方式来理解Python语言编程 xff0c 实用的学习指南 xff0c 适合没有Python编
  • 电脑可以上网,但是仍然显示无网络连接

    不知道是否因为win11的正式发布 xff0c 催促着win10的更新 xff0c 而在更新中对于部分用户的电脑产生了bug xff1a 目前被证实为win10 1607版本后 xff0c URL变动引起的 在我们使用WLAN连接方式时 x
  • 阿里云云平台,物联网可视化web界面简单教程

    目前市面上的云平台 xff0c 多以华为 xff0c 阿里 xff0c 中国移动为主 但是了解一个 xff0c 便可满足需求了 1 首先 xff0c 我们要创建一个属于自己的账号 xff0c 然后尽可能的领取各种限免套餐 2 打开产品这一栏
  • LCD屏幕 ~ 字模提取工具和图片转码工具

    目录 字模提取 工具资源下载 xff1a 图片转码 工具资源下载 xff1a 字模提取 工具资源下载 xff1a 链接 xff1a https pan baidu com s 1BF8lJLmM V vWrl2F6Cd7Q pwd 61 m
  • (练习篇)萤火虫esp32与小爱音响---实现笔记本电脑唤醒

    目录 初步工作 xff1a 进入正题 xff1a 初步工作 xff1a xff08 已使用过ESP32的同志们 xff0c 可以忽略这一步 xff09 首先下载arduinoIDE Software Arduino 我安装的是1 8 18直