【Micropython】ESP8266通过NTP同步本地RTC时间

news2025/3/11 4:23:47

【Micropython】ESP8266通过NTP同步本地RTC时间


  • 📌相关篇《【MicroPython esp8266】固件烧写教程》
  • ✨本案例基于Thonny平台开发。✨

📋实时时钟 (RTC)

  • 🔖RTC属于machine模块中的子类。
  • datetime([value]): 获取或设置当前时间。如果没有指定参数,则返回当前时间。如果指定了参数,格式为一个时间元组 (year, month, day, weekday, hours, minutes, seconds, subseconds),则将这个时间设置到 RTC 上。

  • memory([index[, value]]): 获取或设置内置 RTC 芯片的备份 RAM 中的字节数据。备份 RAM 的大小取决于具体的 ESP8266 硬件型号,通常为 256 字节或 512 字节。备份 RAM 可以用于保存一些不易丢失的数据,例如设备 ID、配置信息、用户数据等。如果没有指定参数,则返回备份 RAM 的全部数据。如果指定了 index 参数,则返回备份 RAM 中从 index 开始的所有数据。如果同时指定了 index 和 value 参数,则将 value 写入备份 RAM 中从 index 开始的所有位置。

  • battery_voltage(): 获取内置 RTC 芯片的电池电压值。由于 ESP8266 内置 RTC 没有连接外部电源,因此需要使用备用电池来维持 RTC 的运行,一般使用 CR2032、CR1225 或类似型号的电池。这个函数将返回当前备用电池的电压值,单位为 V。

  • alarm(id, time=None, mode=RTC.ALARM_SINGLE, callback=None, wakeup=RTC.ALARM_NOWAKEUP): 设置 RTC 的闹钟。这个函数可以设置 2 个不同的闹钟,分别用 id=0 和 id=1 表示。如果不是用 id 参数指定的某个闹钟,则将默认使用 id=0 的闹钟。time 参数表示闹钟触发时间,格式和取值范围与 datetime() 函数的参数相同。mode 参数表示闹钟的模式,取值为 RTC.ALARM_SINGLE 或 RTC.ALARM_REPEAT。如果设置为 RTC.ALARM_SINGLE,则这个闹钟只会在指定的时间点触发一次;如果设置为 RTC.ALARM_REPEAT,则这个闹钟会在每天的指定时间点触发。callback 参数指定闹钟触发时的回调函数,函数原型为:callback(id),其中 id 是当前触发的闹钟 ID。如果未指定回调函数,则默认会将系统唤醒。wakeup 参数表示是否允许闹钟触发时唤醒系统。如果将 wakeup 设置为 RTC.ALARM_WAKEUP,则允许闹钟触发时唤醒系统;如果将其设置为 RTC.ALARM_NOWAKEUP,则不允许唤醒系统,默认值为 RTC.ALARM_NOWAKEUP。

  • cancel(id=0): 取消 RTC 中的指定闹钟。如果没有指定 id 参数,则默认取消 id=0 的闹钟。

📓获取本地RTC时间程序代码

from machine import RTC
from machine import I2C, Pin
import time  # 用于调用延时sleep函数
led = Pin(2,Pin.OUT)	#板载led

# 获取本地RTC
rtc = RTC()

while True:
    
    tm = rtc.datetime()  # 从RTC获取本地时间    
    print("Local time: ", tm)  # 打印本地时间
    led.value(not led.value())        # 反转LED状态
    time.sleep(1)                     # 休眠1

在这里插入图片描述

📗设置本地RTC时间代码

from machine import RTC, Pin
import time  # 用于调用延时sleep函数
led = Pin(2,Pin.OUT)	#板载led

rtc = RTC()
rtc.datetime((2023, 4, 19, 2, 7, 48, 0, 0)) # set a specific date and time

while True:
    
    tm = rtc.datetime()  # 从RTC获取本地时间    
    print("Local time: ", tm)  # 打印本地时间
    led.value(not led.value())        # 反转LED状态
    time.sleep(1)                     # 休眠1

在这里插入图片描述

📖通过引入ntptime模块从NTP获取时间设置RTC

  • 🔖由于时区的差异,在获取的UTC0时间基础上加8个小时。
import machine
import network
import ntptime
#import utime

# Set up the RTC
rtc = machine.RTC()

# 配置wifi
ssid = "######"
password = "********"
wifi = network.WLAN(network.STA_IF)
if not wifi.isconnected():
    wifi.active(True)
    wifi.connect(ssid, password)
    while not wifi.isconnected():
        pass
print("Connected to Wi-Fi")

# 从NTP服务器同时时间到RTC本地
ntptime.settime()
print("Time set successfully")

# Get the current date and time from RTC
(year, month, day, weekday, hours, minutes, seconds, subseconds) = rtc.datetime()
print("Current date/time: %s/%s/%s %s:%s:%s" % (day, month, year, hours+8, minutes, seconds))

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitLab合并操作自动构建Jenkins任务

最终实现当git库 有合并操作自动构建jenkins的指定任务 1、安装Build Authorization Token Root插件 Build Authorization Token Root:使用拥有读取权限的匿名用户访问,配置钩子链接时需要用到,如果不使用,每次访问链接都需要提供认证&#…

Rancher 部署带有密码认证 Elasticsearch 服务

Rancher 部署带有密码认证 Elasticsearch 服务 1. 工作负载部署 镜像地址 elasticsearch:7.6.2端口映射 NodePort 9200 -> 31627(随机)环境变量 node.namees1 network.host0.0.0.0 discovery.typesingle-node配置映射 新建配置映射,内容如下: xpack.…

Python VTK 绘制线条

前言: Python-VTK绘制线条,主要绘制直线和曲线 主要函数介绍: vtk.vtkPoints() 在VTK中用于定义点的类,使用points.InsertPoint(index, x, y, z) 即可插入点集。函数中,第一个参数是点的序号,后面是三个参…

垃圾回收面试总结

堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。 Java 堆是垃圾收集器管理的主要区域,因此也被称作 GC 堆(Garbage Collected Heap&am…

含可再生能源的配电网最佳空调负荷优化控制

目录 1 主要内容 2 部分代码 3 程序结果 4 程序链接 1 主要内容 该程序完美复现《Optimal air-conditioning load control in distribution network with intermittent renewables》,中文题目(翻译)为《含可再生能源的配电网最佳空调负荷…

如何快速用本地文件建立一个Url资源定位符

今天有一个需求,用easyExcel从服务端的一个Url来获取excel做处理。 搜了很多方案,首先要解决的一个问题就是,我得从一个Url获取一个excel,那就意味着我要上传一个文件到我的服务器上,把文件传递上去,然后访…

《API加速优化方案:多级缓存设计》

点击上方蓝字关注我们! 这事情还得从两天前说起...话说迭代上了个接口,该接口横跨多个应用服务,链路如下图所示: 问题来了:通过skywalking,我们的监控到dev环境的该接口偶尔请求耗时很长,且抛异…

震撼开源!首个1万多人共同标注的35种语言的高质量对话数据集来啦

文 | 小戏 “数据”!“数据”!“数据”! 大模型时代,最珍贵的是什么?是 Transformer 的架构吗?是 RLHF 的方法吗? 不是!是数据,是高质量的数据,是高质量且开源…

科幻AI生活来临,博联版“贾维斯”让全屋智能触手可及

1 ChatGPT提升交互体验 解决人机语音交互痛点 据洛图科技(RUNTO)《中国智能音箱零售市场月度追踪》报告,2022年中国智能音箱市场销量为2631万台,市场销额达到75.3亿元。当前智能音箱已完成初轮用户普及,舒适的居家定制服务走入千家万户&…

低代码开发重要工具:jvs-logic(逻辑引擎)基础原理与功能架构

逻辑引擎介绍 逻辑引擎是一种能够处理逻辑表达式的程序,它能够根据用户输入的表达式计算出表达式的值。在实际应用中,逻辑引擎通常被用于处理规则引擎、决策系统、业务规则配置等领域,具有广泛的应用前景。 原理与核心功能描述 基础原理 …

JUC并发编程之CompletableFuture

Future future是java5新加的一个接口,他提供了一种异步并行计算的功能 接口定义了操作异步任务执行的一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务是否执行完毕 目的:异步多线程执行且有返回结果&#…

干货分享 | 一文了解交互式应用程序安全测试(IAST)技术

软件开发过程中,安全检测极为重要。带有漏洞的软件一旦被恶意利用,将造成数据泄露、业务瘫痪,为企业带来不可估量的损失。这就要求企业在系统开发初期发现系统安全问题,快速定位应用漏洞并修复,从源头减少开发过程中的…

黑马点评Redis实战(短信登录;商户查询缓存)

黑马点评 通过一个类似于大众点评的项目了解学习redis在实战项目中的使用,下面是项目中会涉及到的模块: 一、导入黑马点评项目 导入springboot项目,导入sql脚本到数据库,开启nginx,更改项目配置文件中的redis和mys…

头部证券公司安全体系搭建实战讲解—开源网安S-SDLC平台助力金融科技安全发展

数字化时代背景下,新兴技术广泛应用导致软件安全隐患不断扩大。而金融行业由于项目周期长、业务规模大、应用数量多、合规监管严、内外合作多等特性,进一步加重了安全风险。 与此同时,《等保2.0》、《网络安全法》等国家政策的发布&#xff0…

【排序】直接插入排序与希尔排序(图示详解哦)

全文目录 引言直接插入排序思路实现 希尔排序思路实现 总结 引言 在上一篇文章中,我们实现了选择排序与堆排序,在本篇文章中将继续介绍直接插入排序与希尔排序: 直接插入排序与希尔排序都属于插入排序的一种: 这两种排序的思想都…

Ae:摄像机设置

Ae菜单:图层/摄像机设置 Camera Settings 快捷键:Ctrl Shift Y 新建摄像机图层时,首先会弹出摄像机设置 Camera Settings对话框。 经典 3D 渲染器时的摄像机设置 Cinema 4D 渲染器时的摄像机设置 类型 Type 有两种类型的摄像机供选择。 提…

空间矢量数据保存为GeoJSON、PDF等文件格式

专注系列化、高质量的R语言教程 推文索引 | 联系小编 | 付费合集 我们使用的空间矢量数据一般是Shapefile格式的,它在ArcGIS、R语言中都能加载,但是这种数据格式在使用时也有不便:它是由多个文件构成的,一般有.shp、.shx、.dbf、.…

Session和Cookie区别介绍+面试题

Session 会话: 对应的英文单词:session用户打开浏览器,进行一系列操作,然后关闭浏览器。整个过程叫做一次会话一个会话包含多次请求 session机制属于B/S结构的一部分,主要的作用就是为了保存会话状态。(用户登录成功后…

Spring使用注解存储和读取对象

文章目录 一、存储Bean对象配置扫描添加注解存储Bean对象注解使用范围Bean的命名五大类注解的关系为什么需要五大类注解? 二、方法注解BeanBean重命名 三、对象注入属性注入Setter注入构造方法注入Autowired 和 Resource 的区别 一、存储Bean对象 之前我们存储Bean时&#xff…

【MATLAB基础绘图第2棒】绘制柱状/饼图填充图

MATLAB绘制柱状填充图 方法1:hatchfill2工具1.1 案例1:柱状图填充1.2 案例2:饼图填充 方法2:applyhatch函数2.1 案例1:柱状图填充2.2 案例2:饼图填充 方法3: applyhatch_plusC函数3.1 案例1&…