最近做的一个小项目,感觉还不错,具体的可以参考我发布的完整资源。

这里主要实现的功能,是通过WEB端设定闹钟,然后可以定时对舵机、语音、和蜂鸣器进行一个控制,并且设定了按钮进行关闭。为了达到多线程,所以采用了FreeROST的系统,并且使用了双核。

需要的配件很简单:ESP-WROOM-32,一个SG90舵机,一个蜂鸣器,一堆按键,一个LM386的功放,一个喇叭,

一个0.91寸的OLED

具体如图:

接下来,我来讲下具体的各部分的实现方法:

首先是实时的一个时间显示,显示再OLED上,这里的具体函数如下:

void printLocalTime()
{struct tm timeinfo;if (!getLocalTime(&timeinfo)){display.println("Failed to obtain time");return;}display.println(&timeinfo, "%F"); // 格式化输出display.println(&timeinfo, "%T"); // 格式化输出display.println(&timeinfo, "%A"); // 格式化输出
}void OLED_Function(void *pvParameters){for(;;){vTaskDelay(1000);//清除屏幕display.clearDisplay();//设置光标位置display.setCursor(0, 0);printLocalTime();display.display();Serial.println("DISPLAY ONCE AGAIN!");}}

这里使用了这两个库


#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

接下来就是舵机的控制,这个特别简单,使用的就是舵机库

//舵机使用的不是直接的舵机库
#include <Arduino.h>
#include <ESP32Servo.h>void DuojiKAI(){myservo.write(15); delay(2000);myservo.write(120);delay(2000);}
void DuojiGuan(){myservo.write(120); delay(2000);myservo.write(15);delay(2000);}

蜂鸣器就不说了.....就是I/O口控制;

接下来就是重中之重,非常难的语音部分。这里我使用了两个软件:

这个软件有中文版的,就是标题哪个名字,可以将MP3转成WAV版本。接下来还有个软件:

这个软件也有中文版的,可以将WAV转C语言的格式,非常方便。

具体代码如下:

//人工语音合成库
#include "SoundData.h"
#include "XT_DAC_Audio.h"XT_Wav_Class ForceWithYou(Force);     //引言的XT库中对FORCE的处理
XT_DAC_Audio_Class DacAudio(Yuyin_IO,0);      //设置引脚void YuyinBB(){
int forceCounter=0;
for(;;){DacAudio.FillBuffer();if(ForceWithYou.Playing==false)       // if not playing,DacAudio.Play(&ForceWithYou);forceCounter++;Serial.println(forceCounter);if (forceCounter>4500)break;}
}

然后其实主要是那俩头文件,需要在Github上面下载:

最后,就是WEB端,其实这个反而很简单。我其实觉得SPIFFS其实应该是最好的,因为比较好看。但是我一直连接不上,本来html+css+javaScript都做好了,最后还是选择了简陋版本的这种方式。具体代码如下:

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head><h1 align="center">ESP32 智能药箱 界面</h1><br><br><meta name="viewport" charset="utf-8" content="width=device-width, initial-scale=1"><style>h1{color: #333;opacity: 0.7;}h2{color: #988;opacity: 0.7;}
</style></head><body><div style="display: block; margin: 0 auto; width: 50%; background: #ccc;">  <form action="/get"><br><h2>输入闹钟( XX:XX:XX ) : </h2><input type="text" name="HTML_INT_INPUT2" id = "alarm_inset"><input type="submit" value="Submit"></form><br><br> <button onclick="showUname()" align="center">显示上一次吃药时间</button><div id="uname-show"></div><script>function showUname(){document.getElementById("uname-show").innerHTML = "<h1>" + document.getElementById("alarm_inset").value + "</h1>";}</script><br>
</div>
</body></html>)rawliteral";void notFound(AsyncWebServerRequest *request) {request->send(404, "text/plain", "Not found");
}void web_server_task_function(void* paramters)
{Serial.println("Setting up the HTTP server");//串口打印设置HTTP服务器// Send web page with input fields to clientserver.on("/", HTTP_GET, [](AsyncWebServerRequest *request){request->send_P(200, "text/html", index_html);Serial.println("HTTP START");});// Send a GET request to <ESP_IP>/get?input1=<inputMessage>server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {String inputMessage;String inputParam;// GET input2 value on <ESP_IP>/get?input2=<inputMessage>if (request->hasParam(TEXT_INPUT2)) {inputMessage = request->getParam(TEXT_INPUT2)->value();inputParam = TEXT_INPUT2;alarm_time = inputMessage;Serial.println("alarm clock : ");}else{inputMessage = "No Input Text sent on ESP32";inputParam = "none";}Serial.println(inputMessage);request->send(200, "text/html", "HTTP GET request sent to your ESP on input field (" + inputParam + ") with value: " + inputMessage +"<br><a href=\"/\">Return to Home Page</a>");});server.begin();//starting the serverSerial.println("HTTP server setup completed");vTaskDelete(NULL);}

成品如图:

OK,那么其他的就是一些逻辑上的问题了,我就不再阐释了。具体的代码,朋友们可以在我的下载里面下载看看。积分我定的都很少

(41条消息) ESP32的网络定时舵机控制,廉价语音定时开关箱,OLED实时显示时间-智能家居文档类资源-CSDN文库

也可以直接在github上下载这个项目:

chenyuhan1997/ESP32_SMART_BOX_OLED_WEB: The main function here is to set the alarm clock through the WEB terminal, and then you can control the servo, voice, and buzzer regularly, and set the button to close. In order to achieve multi-threading, the FreeROST system is used, and dual-core is used. (github.com)

ESP32的智能药箱-WEB定时-舵机和语音控制-OLED实时时间显示相关推荐

  1. 【智能家居】设计一种语音控制识别规则模型---结合思必驰DUI平台

    目录 智能家具语音识别应用场景 控制音乐播放 结合思必驰DUI平台 智能家居设备控制 设备控制 场景控制 DUI平台智能家居技能解析 设计一个简单的语音控制流程 语音匹配规则模型 语音识别处理流程 优 ...

  2. 使用Web Speech API制作语音控制的音频播放器

    /* For hiding / showing the extra block */ .sp_hiddenblock {margin: 2px;border: 1px solid rgb(250, 1 ...

  3. 基于ESP32的智能台灯-PWM网页调光-实时时间-OLED显示-语音闹钟-WEB远程操控

    具体的项目,我免费分享在我的项目里,供大家参考学习: chenyuhan1997/ESP32-SMART-WIFI-PWM-LED-ALARM-CLOCK: Desk lamp with PWM ad ...

  4. 华景机器人怎么控制_【扫地机器人选购】支持华为hilink智能家居联动/支持华为小艺语音控制的扫地机器人...

    不用找了,这里已经给你准备好了支持华为智能家居生态联动的扫地机器人,同时也支持华为小艺智能音箱联动: 什么意思呢:(我是研究智能家居的) 智能家居联动:就是可以和华为hilink其他智能设备联动,比如 ...

  5. 一种基于蓝牙和语音控制的智能家居系统【100010378】

    2018年大学生电子设计竞赛设计报告 一种基于蓝牙和语音控制的智能家居系统 摘要:本项目使用 STM32F407 作为主控芯片,通过蓝牙和语音控制实现安全.便宜的智能家居系统.实现了手机实现家电控制: ...

  6. 智能家居语音控制及人脸识别报告设计(树莓派)

    智能家居语音控制及人脸识别 目录 摘要................................................................................. ...

  7. 一个智能的 Web 界面测试系统

    一个智能的 Web 界面测试系统 2011年01月05日 本文内容包括: Web2.0 技术使 Web 界面更加丰富多彩,使信息交流更加灵活,同时也使得相关的 Web 技术测试需求越来越多.那么,如何 ...

  8. 基于 ESP32 的智能家居系统设计

    基于 ESP32 的智能家居系统设计 摘 要:智能家居科技是在电子信息技术和无线通信技术以及软件和信息技术方面进一步开发所形成的新兴科学技术,这项科技可以改善我们的生活条件,并可以使居家条件显得更为适 ...

  9. 基于单片机智能水杯 保温杯 定时提醒喝水 温度控制的设计与实现

    功能介绍 以51单片机作为主控系统: LCD1602液晶显示当前水温,定时提醒,水量变化 DS18B20检测当前水体温度: 水位传感器检测当前水位: 继电器驱动加热片进行水温加热: 定时提醒喝水,蜂鸣 ...

  10. Quartz+SpringMVC实现web定时管理任务

    代码地址如下: http://www.demodashi.com/demo/13978.html 使用背景 相信大家在工作过程中,肯定会遇到很多任务定时执行,修改定时任务的时间,执行一次定时任务等等. ...

最新文章

  1. 一些基于VUE的后台框架对比
  2. Winform中导出Excel数据量百万级的处理办法-导出为csv文件
  3. linux命令 sed 有的功能有,Linux命令:sed简介
  4. 传送带(信息学奥赛一本通-T1439)
  5. java求sum的前n项和_【LeetCode-面试算法经典-Java实现】【015-3 Sum(三个数的和)】...
  6. python时间比较好_花了半个月时间,终于找到了一款最适合的python教程
  7. 计算机怎么查看网络连接,怎么查看自己的
  8. 纯css实现照片墙3D效果
  9. PyTorch载入图片ToTensor,PIL和OpenCV读取图片plt.imread和PIL.Image.open
  10. 很全很强大的官方API集合
  11. 编译原理实验之词法分析
  12. MySQL实战宝典 高可用架构篇 17 高可用设计三大高可用设计架构方案
  13. Gauss 求积公式及代码
  14. java读取树形excel,然后入库
  15. python中用函数编写程序_python编写程序,在程序中定义一个函数,计算1+1/2+1/3+1/4+……+1/n...
  16. 手机端兼容iPhoneX刘海屏
  17. 阿里云ECS服务器部署,nginx+node+git
  18. 服务器管理口安装系统,管理口安装服务器操作系统
  19. 【开发工具】JetBrains
  20. 云服务器有哪些优势?如何租用云服务器?

热门文章

  1. 云端软件关闭的原因是什么?
  2. 如何将照片中的文字转变成可编辑的文章(如何将书上的文字转变为可编辑的文字)
  3. 通过纯真IP数据库查询IP归属地信息
  4. docker+fastfds搭建文件服务器
  5. 搭建高性能日志服务器,rsyslog日志服务器搭建
  6. 量子保密通信技术基本原理
  7. 多玩YY瞄准在线教育
  8. 【组合数学】知识点汇总
  9. mysql网吧管理系统_网吧管理系统(数据库)
  10. AirSim中的物理引擎