基于STM32WIFI自动校时+语音报时可调时钟(附源代码)

  • 概述
  • STM32f103C8T6最小系统
  • 共阴数码管
  • 74HC595芯片
  • JQ5600语音模块
  • ESP8266-01SWIFI模块
  • ds1307模块
  • 按键
  • 结语

概述

这次主要写的是对硬件的一些了解与大体思路,也算是笔记吧。
文末有资料与源代码的下载地址。也有视频演示地址。
本实验的硬件材料为:
STM32f103C8T6最小系统,共阴数码管,74HC595芯片,JQ5600语音模块,0.5W8R喇叭,ESP8266-01SWIFI模块,ds1307模块,按键。
软件为:keil5。
实验目的是做一个可以通过WIFI自动校时+语音报时可调时钟,并且每次掉电之后还会自动计时保证在掉电和没有WiFi的时候也能准确的显示时间。

STM32f103C8T6最小系统

STM32f103C8T6最小系统包含3个通用16位定时器;
2个IIC接口(支持SMBus/PMBus);
3个USART接口(使能USART2和USART3时钟不同于USART1),满足本实验的要求。

共阴数码管

本次实验使用了两个0.56英寸的4位数码管(型号05641A)和一个0.8英寸的4位带时钟数码管(型号8402AS),对应引脚图如下:


两个0.56英寸的4位数码管用来显示WiFi连接情况、星期、月份和日期,0.8英寸的4位带时钟数码管用来显示时间。有两位数码管没有用到。

74HC595芯片

如果你需要控制一位数码管,那么你需要控制8个不同的引脚输出不同的高低电平来让每一段高亮或者暗,硬件上很占资源;从软件程序上来看,要让这么一位数码管显示不同的数字字母就要给8个GPIO分别GPIO_Setbit()和GPIO_Resetbit(),更别说还要控制总共12位数码管,那这个时候就可以用74HC595这个串行输入并行输出的移位缓存器了。
74hc595内部有锁存器显示,所以显示很稳定,亮度高,无频闪,成本低(我买的几毛钱一个还包邮),比用三极管控制的节约成本,减少IO口占用,电路简单,利于集成化、模块化,且可以无限级联扩展。
我这里采用的是3块74HC595芯片级联来控制总共12位数码管,总共才占用6个IO口。
先看74HC595芯片引脚图:

下面是我的连接图:

时钟数码管的7、8引脚分别接地和IO口。
如果需要进一步控制亮度的话就把13 脚引出用PWM的方法进行亮度控制(网上查的,因为我已经焊好就没有试验了)。

JQ5600语音模块

JQ6500是一个提供串口的MP3芯片,完美的集成了MP3、WMV的硬解码 。同时软件支持TF卡驱动,支持电脑直接更新spi flash的内容,支持 FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及调节播放等功能,无需繁琐的底层操作,使用方便,稳定可靠,成本低。
我是事先准备好的报时语音内容,再通过电脑直接更新spi flash的内容。另外并联了两个0.5W8R的喇叭。
引脚图:

连接图:

串口连接方式:

ESP8266-01SWIFI模块

ESP8266-01S是wifi串口模块,功能简单来讲就是:从wifi接收到数据,串口输出;从串口接收数据,wifi输出数据。
ESP8266-01S一般默认的波特率为115200。刚刚买来的一般也是刷好了AT固件的(如需深入了解请自行查找资料),直接用就可以了。
设置好波特率就可以用串口发送AT指令来获取网络时间了(想具体了解ESP8266-01SAT指令和网络时间可以自行查找资料,这里不再赘述)。

1.使用串口发送指令AT+CWMODE=1设置模块Wi-Fi应用模式为Station模式;
2.发送指令AT+RST重启模块使应用模式更改生效;
3.发送指令AT+CWJAP =“ssid”,“pwd"连接AP;
4.发送指令AT+CIPMUX=0设置模块为单路连接模式,模块默认为单路连接模式;
5.发送指令AT+CIPSTART=“TCP”,“api.k780.com”,80 与服务器建立TCP连接 ;
6.发送指令AT+CIPMODE=1设置模块传输模式为透传模式;
7.发送指令AT+CIPSEND开启透传模式向服务器发送数据,模块收到此指令后先换行后返回”>";
8.接下来就只需要发送 GET http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json&HTTP/1.1\r\n,就能获取到北京时间的年月日星期时间。
**退出透传模式只要发送+++,不用发送新行(程序里面不用加\r\n)
写程序时值得注意的是 \" 才是" ,\\才是反斜杠。

接线图:

ds1307模块

为了保证在掉电或WiFi信号不好以及没有WiFi时能够准确的显示时间,我采用ds1307来计时,并读取ds1307的数据显示。
DS1307是低功耗、提供IIC接口、日历和时钟数据、按BCD码存取的时钟/日历芯片。它提供秒、分、小时、星期、日期、月和年等时钟日历数据,并具有闰年补偿功能。计年上限2100。AM/PM 标志位决定时钟工作于24小时或12小时模式。芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能。
只需要接VCC、GND、IIC四个引脚即可使用。要注意刚拿到ds1307模块要进行初始化才能正常使用(我的ds1307模块是这样)。

按键

四个按键的一端分别与4个IO口相连,另一端接地,配置为“上拉输入”方式,按键松开时为高电平,按键按下时为低电平。
第一个按键的功能:选择要调那一位数据(星期、月份、日期、小时、分钟),按下后会闪烁选择的数据。
第二个按键的功能:没按下第一个按键前的功能是WiFi模块初始化,如果WiFi模块出现死机或其他情况可以进行初始化;当按下第一个按键之后是对应闪烁的数据加一。
第三个按键的功能:没按下第一个按键前的功能是选着连接哪一个WiFi(以防万一我设置了两个WiFi可以连接),当按下之后第一和第二个按键是选择连那个WiFi(当然WiFi是事先设置好的);当按下第一个按键之后是对应闪烁的数据减一。
第四个按键的功能:没按下第一个按键前的功能是自动校时(按下自动校时);当按下第一个按键之后是退出选择。

结语

时钟基本实现所想功能,当然加一些判断就可以实现闹钟功能,我就没做了。
还有就是一直有个bug我不能理解:
每次用完WiFi就要关闭串口中断,不然就进入hard_fault死循环,通过keil的软件仿真我也没找出具体原因!!!也希望有大佬可以发现问题可以告诉我。

下面附上资料与源代码(两个链接下载的资料都一样):
1、https://download.csdn.net/download/cmlwt_ybz/12430148(博客下载链接)

2、 链接:https://pan.baidu.com/s/1olrRmViq3eXtS-jxKEi77A(网盘下载链接)
提取码:pxlq

视频演示地址:https://www.bilibili.com/video/BV1JZ4y1p7qp

基于STM32的esp8266WIFI自动校时+语音报时可调时钟(附源代码)相关推荐

  1. 基于stm32单片机的WIFI智能联网天气预报自动校时系统(源码+原理图+全套资料)

    资料编号:071 通过wifi 联网获取任何城市的时间和天气,OLED显示,城市位置可以调整, 具体功能请看演示视频  全套资料齐全: 71-基于stm32单片机的WIFI智能联网天气预报自动校时系统 ...

  2. STM32多时段闹钟(10个闹钟),网络自动校时

    STM32多时段闹钟(10个闹钟),网络自动校时 STM32多时段闹钟(10个闹钟),网络自动校时 STM32多时段闹钟(10个闹钟),利用AT命令网络自动校时,到时间继电器开1分钟,利用ESP826 ...

  3. 【毕业设计】基于STM32的宠物自动喂食装置

    目录 修改记录 1.摘要 2.整体功能分析 3.硬件选型 3.1 ESP8266 WIFI模块 3.2 STM32F103ZET6 3.3 CLS150TD舵机 3.4 压力传感器 3.5 HX711 ...

  4. 如何在寒武纪MLU220-SOM上实现NTP自动校时

    1. 概述 基于寒武纪 MLU220-SOM 边缘端人工智能模组可以开发出很多场景应用的嵌入式AI设备.但可能有些嵌入式设备中设计之初为了节省成本或者体积原因都没有配备掉电保存电池,每次上电之后就需要 ...

  5. 嵌入式linux 自动获取IP 及 自动校时

    最近要调用百度人脸识别API做个东西,发现百度API在桌面端QT程序跑的贼溜,可以到了嵌入式板子上发现就post没了返回信息. 一.嵌入式端udhcpc自动获取IP 1.在开发板建立文件夹#mkdir ...

  6. 康巴丝(compas)某Wi-Fi万年历无法自动校时的问题

    笔者前两年购买过一块康巴丝牌的电子万年历,该万年历的最大特点可以通过Wi-Fi联网自动校时. 后来的某一天,笔者将原来的H3C AP(11AC)升级为锐捷AP(11AX). 在之后的几个月中,发现这块 ...

  7. 八款电脑自动校时工具推荐

    1.电脑校时器v3.0 软件体积:56K 运行环境:Windows XP/2003/2008/7 软件授权:免费 下载地址:点击此处下载 软件简介:通过网络服务器使用北京标准时间来校准你的电脑时间. ...

  8. Debian/Ubuntu 时区和自动校时设置

    上次自己设置了自动校正时间,过段时间发现时间还是不对.比正常时间晚了12h.后来想到是时区设置错了,就百度了下,找到篇文章,解决了我的问题.我直接cp文章中的代码,因为我是上海时区.下面是转载文章: ...

  9. 服务器设置了自动校时但是,同步时钟配置电脑自动校时

    同步时钟配置电脑自动校时 一.同步时钟操作和指示灯说明. 同步时钟可接收全球定位系统GPS.北斗卫星信号.当GPS/北斗天线架设到屋顶时,天线的高度必须低于房屋顶避雷天线的高度,防止被雷击. 先关闭电 ...

最新文章

  1. Cocos2D-Android-1之源码详解:2.ActionManagerTest
  2. unix shell(壳)的简单实现
  3. 内嵌在客户端的网页出现刷新问题
  4. IIS 日志文件位置
  5. 【JavaScript高级教程】JavaScript prototype(原型对象)
  6. jQuery常用方法总结(转)
  7. 查看游戏服务器ip地址网站,如何查看游戏服务器IP地址
  8. c语言把数据存放在文件中,急求如何将下列C语言程序数据存储到文件中?
  9. Excel VBA数组使用方法
  10. Linux电源管理(2)_Generic PM之基本概念和软件架构
  11. bootstrap模态框弹窗导致页面左移
  12. 随机信号分析实验(matlab仿真实验)
  13. jwt java案例_JWT(二):使用 Java 实现 JWT
  14. C语言中cvpoint后运行出错,c++ - 使用cvCreateSeq时出现未处理的异常 - 堆栈内存溢出...
  15. ICO图标在线生成,php生成ICO图标在线制作源码
  16. TM500使用配置总结
  17. Mysql主从复制的三种同步方式和半同步复制配置
  18. uniapp 安卓平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限
  19. 重复制造 成本收集器 月结 Period-end closing Product cost collector
  20. ubuntu English版下安装拼音输入法

热门文章

  1. Django简洁留言板系统
  2. html与css第三天
  3. Lightly,超好用的在线代码工具
  4. Lightly 如何优雅地给导师发工程文件?
  5. TypeError: The view function for did not return a valid response. The function either returned None
  6. 中华PDF开天裁决传奇这个该死的东西怎么删除?
  7. HTML5期末大作业_影视网站设计——_指环王:护戒使者(13页) TML+CSS+JavaScript 学生DWHTML5网页设计成品_学生DW静态网页设计代做_web课程设计网页制作
  8. mtk lcm驱动加载流程
  9. 《寒假去世十 第八章》
  10. HTML5系列代码:主色调红色的配色方案表