小爱同学桌面提醒器开发0基础教程

1、视频效果

小爱同学桌面显示器

学会烧录软件到开发板,会改代码修改wifi信息,我在添加一下你的信息,就可以玩了。

2、实现原理

在这里插入图片描述

3、实现步骤:

购买开发板=》烧录代码=》连接大白服务器(服务器对接小爱同学开放平台过程较为复杂我已对接完成)

3.1、购买硬件材料

esp8266开发板:淘宝链接
oled显示屏:淘宝链接
杜邦线:淘宝链接
micro充电线+充电器(安卓充电线+5v充电器或者充电宝、电脑usb供电均可)
小爱同学音箱

3.2、安装arduino ide软件

下载安装arduino ide软件
我用的是苹果mac系统安装步骤如下:
1、下载软件 arduino
2、IDE配置:
在您的Arduino IDE中,转到“文件” > “首选项”
在这里插入图片描述

在Arduino IDE打开首选项中安装ESP8266 Board插件
如下图所示,将
http://arduino.esp8266.com/stable/package_esp8266com_index.json输入到“其他板管理器URL”字段中。然后,单击“确定”按钮:
在这里插入图片描述

在Arduino IDE中安装ESP8266 Board插件输入URL
注意:如果您已经拥有ESP32板子URL,可以使用逗号分隔URL,如下所示:

https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

3、安装开发板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

windows系统安装软件参考

3.3、烧录代码

3.3.1、拷贝依赖库到lib目录

在这里插入图片描述
我的lib库的位置 : /Users/chenhaohao/Documents/Arduino
将代码中依赖的库文件拷贝到该目录libraries下
在这里插入图片描述
依赖库压缩包,下载解压后放在你自己的libraries
在这里插入图片描述
下载压缩包

3.3.2、烧录代码

新建文件8266oledChSubList.ino
拷贝如下代码

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels// Change the credentials below, so your ESP8266 connects to your router
const char* ssid = "tianwanggaidihu"; //修改此处 你的wifi名
const char* password = "dabingjiayiqie"; //修改此处 你的wifi密码// Change the variable to your Raspberry Pi IP address, so it connects to your MQTT broker
const char* mqtt_server = "www.huaibeishi.net";// Initializes the espClient. You should change the espClient name if you have multiple ESPs running in your home automation system
WiFiClient espClient;
PubSubClient client(espClient);const int readly = 2;// Timers auxiliar variables
long now = millis();
long lastMeasure = 0;Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// byte * strTmp;
// unsigned char  strTmp[32] = {0x00};
// byte strTmp[32] = {0x40};
byte strTmp[32] = {0x40};
// byte strTmp[32];void readlyLed() {digitalWrite(readly, HIGH);delay(200); digitalWrite(readly, LOW);delay(200); digitalWrite(readly, HIGH);delay(200);digitalWrite(readly, LOW);delay(200);digitalWrite(readly, HIGH);
}// Don't change the function below. This functions connects your ESP8266 to your router
void setup_wifi() {delay(10);// We start by connecting to a WiFi networkSerial.println();Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.print("WiFi connected - ESP IP address: ");Serial.println(WiFi.localIP());
}void callback(String topic, byte* message, unsigned int length) {Serial.print("Message arrived on topic: ");Serial.print(topic);Serial.print(". Message: ");String messageTemp;display.clearDisplay();for (int i = 0; i < length; i++) {Serial.print((char)message[i]);messageTemp += (char)message[i];}display.clearDisplay();Serial.println(length);// 遍历汉字for(int i=0;i<length/32;i++){// strTmp = message[i*32,(i+1)*32];// strTmp[0,32] = message[i*32,(i+1)*32];for(int j=0;j<32;j++){strTmp[j] = message[i*32+j];}display.drawBitmap(i*16, 10, strTmp, 16, 16,1); }display.display();Serial.println();Serial.println(messageTemp);Serial.println();
}void reconnect() {while (!client.connect("arduinoClient", "user1", "user1")) {Serial.print("Attempting MQTT connection...");if (client.connect("arduinoClient", "user1", "user1")) {Serial.println("connected");  // Subscribe or resubscribe to a topic// You can subscribe to more topics (to control more LEDs in this example)client.subscribe("oled2");} else {Serial.print("failed, rc=");Serial.print(client.state());Serial.println(" try again in 5 seconds");// Wait 5 seconds before retryingdelay(5000);}}
}// The setup function sets your ESP GPIOs to Outputs, starts the serial communication at a baud rate of 115200
// Sets your mqtt broker and sets the callback function
// The callback function is what receives messages and actually controls the LEDs
void setup() {pinMode(readly, OUTPUT);Serial.begin(115200);setup_wifi();client.setServer(mqtt_server, 1883);client.setCallback(callback);if (client.connect("arduinoClient", "testuser", "testpass")) {client.publish("oled2","oled2:hello world");client.subscribe("oled2");Serial.println("mqtt connect successfully");readlyLed();}if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64Serial.println(F("SSD1306 allocation failed"));for(;;);}delay(2000);display.clearDisplay();display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0, 10);// Display static textdisplay.println("Hello, world!");display.display(); }// For this project, you don't need to change anything in the loop function. Basically it ensures that you ESP is connected to your broker
void loop() {if (!client.connect("arduinoClient", "user1", "user1")) {reconnect();}if(!client.loop())client.connect("arduinoClient","user1","user1");
} 

需修改ssid 、和password 为你家的wifi密码使他能够连接服务器。然后对小爱音箱说“让大白显示账号”,我在服务器后台加一下你的账号,屏幕上就可以显示你说的内容了。

最新代码

/*****
oled增加换行显示*****/#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels// Change the credentials below, so your ESP8266 connects to your router
const char* ssid = "tianwanggaidihu9";
const char* password = "dabingjiayiqie";// Change the variable to your Raspberry Pi IP address, so it connects to your MQTT broker
const char* mqtt_server = "www.huaibeishi.net";
const char* mqtt_user = "****";
const char* mqtt_password = "****";
const char* mqtt_topic = "****";// Initializes the espClient. You should change the espClient name if you have multiple ESPs running in your home automation system
WiFiClient espClient;
PubSubClient client(espClient);const int readly = 2;// Timers auxiliar variables
long now = millis();
long lastMeasure = 0;Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// byte * strTmp;
// unsigned char  strTmp[32] = {0x00};
// byte strTmp[32] = {0x40};
byte strTmp[32] = {0x40};
// byte strTmp[32];void readlyLed() {digitalWrite(readly, HIGH);delay(200); digitalWrite(readly, LOW);delay(200); digitalWrite(readly, HIGH);delay(200);digitalWrite(readly, LOW);delay(200);digitalWrite(readly, HIGH);
}// Don't change the function below. This functions connects your ESP8266 to your router
void setup_wifi() {delay(10);// We start by connecting to a WiFi networkSerial.println();Serial.print("Connecting to ");Serial.println(ssid);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.print("WiFi connected - ESP IP address: ");Serial.println(WiFi.localIP());
}void callback(String topic, byte* message, unsigned int length) {Serial.print("Message arrived on topic: ");Serial.print(topic);Serial.print(". Message: ");String messageTemp;display.clearDisplay();for (int i = 0; i < length; i++) {Serial.print((char)message[i]);messageTemp += (char)message[i];}display.clearDisplay();Serial.println(length);// 遍历汉字for(int i=0;i<length/32;i++){// strTmp = message[i*32,(i+1)*32];// strTmp[0,32] = message[i*32,(i+1)*32];for(int j=0;j<32;j++){strTmp[j] = message[i*32+j];}display.drawBitmap(i*16, 10, strTmp, 16, 16,1); }display.display();Serial.println();Serial.println(messageTemp);Serial.println();
}void reconnect() {while (!client.connect("arduinoClient", mqtt_user, mqtt_password)) {Serial.print("Attempting MQTT connection...");if (client.connect("arduinoClient", mqtt_user, mqtt_password)) {Serial.println("connected");  // Subscribe or resubscribe to a topic// You can subscribe to more topics (to control more LEDs in this example)client.subscribe(mqtt_topic);} else {Serial.print("failed, rc=");Serial.print(client.state());Serial.println(" try again in 5 seconds");// Wait 5 seconds before retryingdelay(5000);}}
}// The setup function sets your ESP GPIOs to Outputs, starts the serial communication at a baud rate of 115200
// Sets your mqtt broker and sets the callback function
// The callback function is what receives messages and actually controls the LEDs
void setup() {pinMode(readly, OUTPUT);Serial.begin(115200);setup_wifi();client.setServer(mqtt_server, 1883);client.setCallback(callback);if (client.connect("arduinoClient", mqtt_user, mqtt_password)) {client.publish(mqtt_topic,"oled:hello world");client.subscribe(mqtt_topic);Serial.println("mqtt connect successfully");readlyLed();}if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64Serial.println(F("SSD1306 allocation failed"));for(;;);}delay(2000);display.clearDisplay();display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0, 10);// Display static textdisplay.println("Hello, world!");display.display(); }// For this project, you don't need to change anything in the loop function. Basically it ensures that you ESP is connected to your broker
void loop() {if (!client.connect("arduinoClient", mqtt_user, mqtt_password)) {reconnect();}if(!client.loop())client.connect("arduinoClient",mqtt_user,mqtt_password);
} 

在这里插入图片描述

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

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

相关文章

Arduino应用开发——通过小爱同学控制灯光

Arduino应用开发——通过小爱同学控制灯光 目录 Arduino应用开发——通过小爱同学控制灯光前言1 工作原理2 硬件准备3 软件准备3.1 Arduino IDE环境搭建3.2 Blinker APP账号注册和使用 4 编写程序5 关联米家APP和Blinker设备6 语音控制测试7 进阶用法7.1 亮度控制7.2 色温控制7…

小爱同学控制单片机或者其它硬件的思路记录

由于小米只能家具生态的协议是不开放的&#xff0c;但是有很多同学想使用小爱同学的语音功能去控制单片机、树莓派或者其他DIY硬件。因此有个下面这个构想。初步验证可行。 实验具备条件 DIY设备联网&#xff08;直接或者间接&#xff09; 小米手机&#xff08;小爱同学&…

小爱同学、Blinker 控制esp32自带灯熄灭---Micropython版本

操作官方案例修改增加小爱同学控制支持&#xff0c;具体代码上传到github可以参考&#xff0c;有帮助的话麻烦请star支持下&#xff0c;有细节问题也麻烦指出和交流 github地址: https://github.com/lonngxiang/xiaoai_blinker_mpy小爱控制eap32、blinker 1、具体实现细节 主…

小爱同学控制美的美居中的家电热水器,空调等

背景 家里大多数家电都是支持接入米家App的&#xff0c;美的家电不能接入小米&#xff0c;电脑安装Home Assistant成功实现小爱语音控制美的燃气热水器。 实现步骤&#xff1a; 1. 安装docker 我的电脑是windows的&#xff0c;那就直接安装docker desktop https://desktop.…

stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备

stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学&#xff0c;实现&#xff08;AT指令&#xff09;语音助手控制硬件设备 博主还是菜鸟&#xff0c;只是这段时间DIY弄了这些东西&#xff0c;让同样喜欢动手的朋友有个参考&#xff0c;我这个开发超级简单&#xff0c;用的都是三…

ESP8266 快速对接小爱同学 语音控制

ESP8266 快速对接小爱同学 一、环境资料二、安装配置三、下载Blinker手机APP&#xff0c;并更改符合小米小爱协议的代码四、米家绑定Blinker点灯 一、环境资料 1. 硬件&#xff1a;ESP8266 NodeMCU 开发板 点击查阅硬件开发文档 2. 点击参考blinker官方开发文档 3. 开发工具…

esp8266接入小爱同学,通过mqtt

原理&#xff1a;esp8266连接mqtt服务&#xff0c;并订阅mqtt的主题&#xff0c;当通过小爱语音发出指令&#xff0c;相当于mqtt的消息推送&#xff0c;由于esp8266订阅了主题&#xff0c;就可以收到小爱同学推送的消息&#xff0c;从而进行控制esp8266。 第一步 下载程序到esp…

变更后的微软365服务器,二连撤:继Windows后微软再撤回Office 365客户端更新

IT之家12月13日消息 继早前微软撤回针对Windows 10用户的Autopilot“KB4532441”更新后&#xff0c;微软近日再度撤回Office 365的更新。 从微软官方支持网站给出的公告来看&#xff0c;微软表示Office 365 ProPlus用户在通过Configuration Manager下载Office 365客户端更新时可…

我今天表演加班,一连,二连,三连

DOS中的Debug 是为DOS提供的有力的侦错&#xff0c;跟踪程序运行&#xff0c;检查系统数据的工具程序&#xff0c;它是在字符界面下以单字符命令方式工作。要很好地使用它必须具备一定的汇编程序设计和硬件基本知识的能力&#xff0c;当然&#xff0c;它为汇编语言程序员提供了…

机器人动力学建模实例:二连杆机械臂

机器人动力学方程比较复杂&#xff0c;通常每一个参数矩阵都非常庞大&#xff0c;这里介绍几个简单结构的动力学方程&#xff0c;对于一般的控制算法&#xff0c;可以在这几个动力学方程中进行验证。 1、欧拉-拉格朗日动力学方程 &#xff08;不考虑摩擦和末端受力&#xff0…

ACTF 2022圆满落幕,0ops战队二连冠!!

2022年06月27日09:00&#xff0c;经过48小时激烈比拼&#xff0c;第七届XCTF国际联赛最后一场分站赛&#xff1a;ACTF 2022圆满落幕。本场赛事由XCTF国际联赛主办&#xff0c;南京市科学技术协会协办&#xff0c;浙江大学AAA战队组织&#xff0c;赛宁网安提供技术支持。 作为各…

内卷大厂系列《全排列问题二连击》

作者&#xff1a;mzoe666888 大厂高频算法面试题&#xff1a;《全排列问题系列》&#xff0c;您将学到如何设计递归&#xff0c;递归的好坏直接影响到动态规划&#xff0c;其次递归涉及到深度优先遍历时&#xff0c;要考虑恢复现场&#xff0c;如何剪枝&#xff0c;如何去重等技…

二连杆纯连杆动力学建模——LangrageEquation with Matlab

运用拉格朗日方程建立二连杆的纯连杆动力学方程&#xff0c;通过推导其过程明白原理。通过优化程序向多连杆动力学过度&#xff0c;方便后期计算n连杆动力学控制做基础。 我首先通过笔算整整算了10页纸&#xff0c;和参照书本结果一直。然后进行了逐步计算的matlab化&#xff0…

通达与阿里云强强联手,成为阿里云在协同办公领域的重要战略伙伴

企业高速发展&#xff0c;对各类管理软件的需求日益增长&#xff0c;随之而来的是系统孤立、数据不通、应用操作繁琐以及部署运维成本高、投入大、成效慢等问题。现在&#xff0c;通达与阿里云通力合作&#xff0c;通过面向不同规模的企业提供以知识管理和协同办公为核心的云上…

通达OA 办公系统(Office Anywhere)动态密码配置使用详解

为了增强软件系统的安全性&#xff0c;通达科技总部引进海月通信公司自主研发的动态密码系统&#xff0c;内置于通达OA系统中&#xff0c;给用户提供“通达OA静态密码&#xff0b;海月动态密码”和“通达OA&#xff0b;动态密码”的集安全于一体的信息化整体解决方案。 动态密…

生态战略撬动司法产业AI 新视云与阿里云达成合作

4月26日&#xff0c;在云栖大会南京峰会上&#xff0c;新视云与阿里云达成合作&#xff0c;共同研发适用于司法产业的先进AI技术&#xff0c;并推动技术落地。首期目标建设1万间云上法庭。这是继华宇、通达海之后&#xff0c;加入阿里云产业AI生态的又一重量级司法合作伙伴。 阿…

从司法领域看阿里云产业AI策略:生态联盟,技术赋能

为什么80%的码农都做不了架构师&#xff1f;>>> 摘要&#xff1a; 在日前结束的云栖大会深圳峰会上&#xff0c;除了阿里云全面进军IoT的战略宣布之外&#xff0c;持续不断的生态签约成了另一大亮点&#xff1a;全天的IoT合伙作伴签约&#xff0c;围绕“ET大脑”的…

人工智能方案设计——基于事件图谱的类案同判

重点说明&#xff0c;此篇人工智能方案设计已获奖&#xff0c;如要转载&#xff0c;必须说明出处&#xff0c;谢谢合作。 基于事件图谱的类案同判 项目简介&#xff1a; 意义&#xff1a; 现今&#xff0c;针对现有的案多法官少的情况&#xff0c;我们采用基于事件图谱的类…

科大讯飞市值腰斩背后,AI产业集体思考如何落地?

作者丨郭敏 本文经授权转载自钛媒体&#xff08;ID&#xff1a;taimeiti&#xff09; 【导语】在过去的一年里&#xff0c;科大讯飞受到了多方质疑&#xff0c;质疑的声音不外乎盈利疲软、靠政府补助、技术优势逐渐变弱等&#xff0c;种种质疑背后&#xff0c;其实整个 AI 产业…