前言

之前使用TPYBoard v202(主控ESP8266模块)开发板做过一款WIFI攻击神器,一开始使用Arduino源码做的,后来又接触到micropython。觉得使用micropython真是方便,而且ESP8266模块上面有很多可以挖掘出来的好玩的。后期用它又做过智能家庭控制平台,说白了就是用v202开发板作为Web服务器。最近,接触到了DS3231时钟模块,结合OLED显示屏,做了一个简单的时钟。为了防止时间偏差,从网上找了一个免费的获取时间的API,程序很简单,分享出来,有需要的小伙伴可以直接用。

WIFI攻击神器-Arduino篇:

WIFI攻击神器-micropython篇: MicroPython实现WIFI干扰与抓包

材料准备

名称

数量

TPYBoard v202开发板

1块

DS3231时钟模块

1个

OLED显示屏

1个

面包板

1个

杜邦线

若干

准备好材料,接下来就是接线。

TPYBoard v202

DS3231时钟模块

3V3

VCC

GND

GND

SDA

SDA

SCL

SCL

TPYBoard v202

OLED显示屏

GND

GND

3V3

3V3

MI

SCK

MO

SDA

G16

RES

G15

DC

G5

CS

程序编写

先说下程序的思路:

1、开机上连接家中的WIFI网络,确保可以访问网络;

2、然后访问API获取到时间,更新DS3231的设置,并进行显示屏显示;

3、开启定时器,每隔1秒钟刷新下显示屏时间信息;

4、设定每天获取一次API更新下时间,用于时间的校正。

首先,编辑一个boot.py文件,里面主要是连接WIFI的程序。然后编辑一个main.py,里面主要是访问API、操作DS3231、显示屏等主要功能程序。v202开机会先运行boot.py再运行main.py文件。

boot.py

import network

import time

from machine import Pin

LED = Pin(2,Pin.OUT)

#根据设定连接网络

count = 0

wlan = network.WLAN(network.STA_IF)

wlan.active(True)

if not wlan.isconnected():

print('connecting to TurnipSmart...')

wlan.connect('WIFI名称','WIFI密码')

while not wlan.isconnected() and count < 20:

LED.value(not LED.value())

count += 1

time.sleep(0.5)

if wlan.isconnected():

LED.value(0)

print('ip address:',wlan.ifconfig()[0])

else:

LED.value(1)

print('TurnipSmart connect fail')

main.py

import urequests

import json

import time

from machine import SPI,Pin #导入SPI、Pin库

import ssd1306 #导入OLED显示屏驱动库

from ds3231 import DS3231 #导入DS3231时钟模块库

from machine import Timer #导入Timer库

#-----------------------DS3231模块-----------------------#

ds=DS3231() #ds3231初始化

NOW_DATE = ''

#-----------------------OLED显示屏-----------------------#

#SPI接口对应的引脚定义

spi = SPI(baudrate=10000000, polarity=1, phase=0, sck=Pin(12,Pin.OUT), mosi=Pin(13,Pin.OUT), miso=Pin(2))

#OLED显示屏的设置,128宽 64高 spi对象 DC接的G15 RES接的G16 CS接的G5

display = ssd1306.SSD1306_SPI(128, 64, spi, Pin(15),Pin(16), Pin(5))

display.poweron() #打开显示屏

display.init_display() #初始化显示

display.text('Waiting.....',1,1) #显示的内容,x坐标,y坐标

display.show() #进行显示

def getNetTime():

url = 'http://quan.suning.com/getSysTime.do'

res=urequests.get(url).text

print(res)

j=json.loads(res)

t2_date = j['sysTime2'].split()[0] #日期

t2_time = j['sysTime2'].split()[1] #时间

display.fill(0) #清屏

display.text(t2_date,1,2)

display.text(t2_time,1,15)

display.show()

#初始日期和时间,设置一次即可

ds.DATE([int(x) for x in t2_date[2:].split('-')]) #设置初始日期年、月、日

ds.TIME([int(x) for x in t2_time.split(':')]) #设置初始时间时、分、秒

def updateTime(t):

global NOW_DATE

#读取日期和时间,拼接成正常的时间格式

date = '20'+'-'.join(ds.DATE())

time = ':'.join(ds.TIME())

if NOW_DATE != date:

getNetTime() #设定每天校对一下时间

NOW_DATE = date

else:

display.fill(0) #清屏

display.text(date,1,2)

display.text(time,1,15)

display.show()

if __name__ == '__main__':

getNetTime()

time.sleep(1)

#-----------------------Timer定时器-----------------------#

tim = Timer(-1) #新建一个定时器

#每隔1秒执行一次updateTime函数调用,用于更新OLED显示屏上的时间

tim.init(period=1000, mode=Timer.PERIODIC, callback=updateTime)

里面还需要用到DS3231时钟模块库,已经写好了,直接拿来用就可以。记得也要下载到板子里,否则会提示找不到。文章末会有下载。

程序下载与调试

v202通过micro USB数据线接入PC,即可进行程序下载和REPL操作。插入PC之前,先确保一下器件的电源线没有接错,防止出现器件或开发板烧坏的情况。

1、插上PC之后,设备管理器会出现一个虚拟串口,开发板上用的是CH340芯片(USB转TTL串口),电脑没驱动的话,需要手动安装。

2、使用 MicroPython File Uploader 工具进行程序的下载,在这里就不介绍具体下载的步骤,大家可去参考现有教程。 TPYBoard v202 快速入手教程 boot.py 、main.py 和 ds3231.py 都需要下载到v202板子里。下载完毕后,点击【RUN】或者按板子的RST键都可以运行程序。

没找到上传附件的功能,把代码放到了GitHub上了。 GitHub地址

效果演示

python 串口时钟校对_基于MicroPython的自动网络时间校准器相关推荐

  1. 用python做炒股软件-python程序源码_基于python的炒股软件

    股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...

  2. python串口数据绘图_使用Python串口实时显示数据并绘图的例子

    使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 "'E:\Anaconda3\Sc ...

  3. 此服务器的时钟与主域控制器的时钟不一致_基于域的GPS时钟同步配置

    本篇约700字6图 GPS时钟同步主题分享 时钟不同步会导致 终端数据丢失 观测迟.漏发报 数据采集时间不准 本文 Vaisala时钟配置步骤 特点: TCP/IP网络时钟信号 基于域管理 Serve ...

  4. python爱因斯坦的问题_基于Python3的趣味数学问题

    基于Python3的趣味数学问题 Pro1. 数独(Sudoku)根据九宫格盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个宫(3*3)内的数字均含1-9这9个数字. Pro2 ...

  5. python数据库分层设计_基于Python的高中教学数据库设计

    文章对 Python 进行概述,并 对数据库的操作模式进行分析, 对数据库系统编译平台的目标指 令介绍,并对高中教学数据库的 设计进行研究. 摘 要 1 Python概述 计算机程序设计语言( Pyt ...

  6. python职业规划书_基于Python数据分析做职业规划

    1.Situation项目背景 为朝着数据分析方向发展,利用假期时间自学了Python,想利用所学Python知识独立完成一个包含数据挖掘.数据分析.数据可视化的项目,与此同时希望项目结果可以帮助我更 ...

  7. diy 单片机 自动浇花_基于单片机的自动浇花系统

    摘要 很多家庭都种植有令人赏心悦目的花卉,但是当主人外出几天时,为避免这些花卉处于无人浇水的境地,所以设计一种自动浇花器十分必要的.本系统采用51单片机STC12C5A60S2作为核心控制器,用土壤湿 ...

  8. 基于单片机的自动追日系统设计_基于单片机的自动浇花系统的设计

    龙源期刊网 http://www.qikan.com.cn 基于单片机的自动浇花系统的设计 作者:吴蓓 张阳 来源:<现代信息科技> 2018 年第 03 期 摘 要:为了解决人们生活中由 ...

  9. shell编写mysql全备和增备脚本_基于mysqldump编写自动全备增备的shell脚本

    基于mysqldump编写自动全备增备的shell脚本 在线上MySQL数据库备份分为全备和增备,而xtrabackup备份已经支持了增量备份了,但是mysqldump就不支持增量备份,所以我们需要写 ...

最新文章

  1. [转载]Python爬取豆瓣影评并生成词云图代码
  2. Android TabWidget
  3. Verilog Design's Tips
  4. 文巾解题 185. 部门工资前三高的所有员工
  5. 盘点全球最美的15座数据中心
  6. LeetCode - Reverse Nodes in k-Group
  7. ASP.NET Core微服务(五)——【vue脚手架解析接口】
  8. 微软或在开发自己的 CPU、TikTok 发布电视版本、索尼撤下《赛博朋克2077》并为玩家退款|Decode the Week...
  9. Greenplum segment级问题的排查 - gp_session_role=utility (含csvlog日志格式解读)
  10. 【ACL2020】详解基于显式语义分解的词典释义生成
  11. Java面试题,成员变量以及成员方法的调用,类和对象的关系,程序详细流程,类和对象栈堆的详细解答
  12. AdventureWorks数据库数据字典研究
  13. Js 把html字符串显示,js Html结构转字符串形式显示代码
  14. NB-IOT相关的术语 SGW、PGW、LTE、RRC、E-UTRAN、EPC
  15. 逻辑思维训练——假设法
  16. 康奈尔大学计算机生物学是,康奈尔大学生物统计硕士介绍
  17. SSM必备基本知识总结!
  18. Centos 7 环境下将修改后的MAC地址永久保存
  19. c语言visit函数作用,Visit
  20. 经验分享——关于大学生科研那些事

热门文章

  1. 输入半径计算圆的周长和面积
  2. 用Python+可视化工具制作漂亮地图
  3. Intent初级学习
  4. C#使用 WebBrowser制作网页游戏辅助工具关键技术分析
  5. Java中double转long方法
  6. linux常见版本介绍
  7. Apache ShardingSphere(二) 基本使用
  8. 营收大增成Q2财报关键词,飞轮效应成达达集团业绩增长驱动力
  9. EasyRecovery数据恢复软件V15专业版使用操作流程
  10. WCS(仓库控制系统)开发思想记录