单片机课程设计–网络时钟
测控1902 孙楷亮
作品功能
目标功能
- 网络对时
- 智能配网,快速连接WiFi
- 最近三天天气
- 学校课程显示
- mooc学习任务
- 指纹识别
- 健康打卡与出校申请
典型应用场景
- 出门前确认今天会不会下雨
- 早上上课,看一眼上课的教室
- 晚上睡觉前确认今天mooc作业已经完成
- 每天的健康打卡自动完成,节省时间
- 想要出校,每次报备都要操作,指纹识别一键报备
总体计划
代码计划
- stm32程序使用hal库编写,易与移植代码 爬虫使用
- pythonSelenium库,爬取功能强大
- 服务器使用python的Flask框架,简单好学
时间规划
- 4月完成硬件选型,重新熟悉相关知识,写完网络爬虫
- 5月使用成品开发板测试模块,并写相关驱动,调试
- 6月绘制原理图PCB,打样板做实验
- 7月完善提交
开发资源
开发环境
名称 | 功能 |
---|---|
Keil | 开发stm32的集成开发环境 |
STM32cubeMX | 硬件初始化代码的生成 |
Pycharm | 爬虫脚本编辑,flask的调试 |
立创EDA | 国产EDA工具 |
Typora | markdown工具 |
openSSH | 用于与服务器通信 |
硬件资源
芯片和模块的选取
模块 | 通信方式 | 引脚 |
---|---|---|
esp01S | usart | usart2 |
AS608 | usart | usart3 |
LCD屏幕 | 16并口 | ---- |
云服务器 | tcp/ip | ---- |
stm32系列
stm32f401rct6,主要是芯片涨价了,买不起其他的,手里有的就用了
esp8266系列
esp01s,串口转wifi,国产,下载官方固件后轻松利用串口AT实现网络通信
电源管理
暂时先用淘宝上买的typeC锂电池充电模块,1块5,便宜.锂电池选了个600毫安的,做东西剩下的
指纹识别模块
AS608指纹模块,串口通信实现指纹识别,支持查询和对比,很方便的集成到设计里
LCD显示屏
未定,考虑到功耗,应该小一点,但是显示效果就会差
云服务器
阿里云学生服务器,一年100
软件资源
名称 | 功能 |
---|---|
嵌入式实时系统 | 方便的实现多任务,让程序逻辑更简单 |
selenium自动化测试工具 | 爬取JavaScript渲染的页面 |
flask服务框架 | python Flask框架 将爬取到的信息,以json的格式发布 |
文档资料
书籍资料
名称 | 用途 |
---|---|
freeRTOS内核实现与应用开发实战指南 | 学习RTOS的内核 |
图解HTTP | 了解HTTP请求的构成 |
Python3网络爬虫开发实战 | 爬虫学习 |
flask开发实战 | flask开发实战 |
stm32开发指南 | 查阅一些库函数 |
部分数据手册
名称 |
---|
ESP-01S _PDF_C503582_2020-04-07.pdf |
STM32F103C8T6 _PDF_C8734_2014-07-24.pdf |
1A鋰電池充電IC _PDF_C382139_2019-03-27.pdf |
DW01A-G _PDF_C61503_2016-06-16.pdf |
学习记录
四月小记
RTOS
学习了RTOS的内核实现,巧妙的多任务
esp8266
智能配网指令
1,AT+CWMODE_DEF=1 配置WiFi模组工作模式为单STA模式,并把配置保存在flash
2,AT+CWAUTOCONN=1 使能上电自动连接AP
3,AT+CWSTARTSMART=3 支持ESP-Touch和Airkiss智能配网
4,打开微信,关注微信公众号“安信可科技”,点击wifi配置,点击开始配置,输入密码,点击连接
5,AT+CWSTOPSMART 无论配网是否成功,都需要释放快连所占的内存
6,AT+CIPSTATUS 查询网络连接状态
OLED屏幕
不管是spi屏幕还是i2c屏幕,rtt都提供了方便使用的软件包
在一段时间的阅读代码后,也可以照猫画虎的写简单的驱动
服务器
flask部署很方便,学习起来不需要深究原理,很快就足以实现我的想法
五月小记
Web API规划
ip/weather get 提供天气信息
ip/daka post 健康打卡
ip/timetable get 提供课程信息
ip/mooc get 提供mooc信息
或者提供一个有全部信息的
爬虫进展
校园网爬取课程表
https://portal.neu.edu.cn/
中国大学mooc爬取慕课通知
https://www.icourse163.org/
心知天气爬取天气
https://www.seniverse.com/
爬取校园网每日健康打卡网页并打卡
https://e-report.neu.edu.cn/inspection/items
硬件进展
重新购买esp8266,官方提供配套例程,方便了使用
调试指纹模块,指令基本使用
现在需要去把几个模块整合,做一个初步的模型出来
实时时钟RTC函数的扩展
利用已经实现的tcp连接 创建简单的http请求函数,封装
json信息的读取,使用了cjson库,常用的解析库,参考网络博客移植就好
完善参考代码
六月小记
所有功能所需的模块已经学习调试完毕.,所需的通信协议也基本实现
其中,作品的时间部分,天气部分已经制作了demo,实现了功能
后续添加特色功能即可
现在基本跑通,开始绘制PCB,首先是电源部分
选择使用锂电池供电,就需要配套的充电芯片和保护芯片,这里我采用了常用的tp4056+dw01A
绘制了测试板,预计6.26实验一下
采购清单
名称 | 数目 | 总价 |
---|---|---|
正点原子开发板 | 1 | 230 |
AS608 | 1 | 60 |
esp01S | 4 | 40 |
云服务器 | 三个月 | 27 |
TFT-LCD | 1 | 60 |
嘉立创打板 | 2 | 10 |
杂项 | — |
完成进度
-
stm32 开发
- hal库
- usart,spi
- RTOS学习
-
外设学习
- esp01S学习
- AS608的操作
-
爬虫 开发
- 校园网爬取课程表
- 中国大学mooc爬取慕课通知
- 心知天气爬取
- 爬取校园网每日健康打卡网页并打卡
-
Web API开发
- Json的预处理
- Flask学习
网络参考资料
还有很多博客也被参考,但没有全部记录,只能列出比较重要的
-
Selenium常见异常分析及解决方案 - 安琪儿一直在 - 博客园
www.cnblogs.com/123anqier-blog/archive/2004/01/13/12639194.html -
linux—centos7 安装chromedriver - myvic - 博客园
www.cnblogs.com/myvic/p/9450134.html -
Python网络编程基础及socket之TCP收发消息及文件_m0_47670683的博客
blog.csdn.net/m0_47670683/article/details/111158032 -
和风天气
www.qweather.com
- flask中文站
dormousehole.readthedocs.io/en/latest/