ESP8266 oled获取网络时钟制作电子表

ESP8266 oled获取网络时钟制作电子表

一、需求:

通过esp8266+oled获取网络时钟制作电子表,避免时间误差,可用于精准定时,后期用于定时开关灯等操作;

二、技术难点:

  1. 如何获取网络时钟;
  2. 如何将获取到的数据转换为年、月、日、小时、分钟和秒表;
  3. 如何将转换的数据展示到oled上。
  • 三、环境介绍:

该方案使用的是arduino ide+esp8266的库,正常安装如下:

1、正常安装

首先打开图3.1的首选项,

图3.1首选项例图

在设置中管理网址添加https://arduino.esp8266.com/stable/package_esp8266com_index.json(如图3.2)esp8266的搜索库,然后点击好确定;

图3.2增加esp8266的搜索库

在菜单栏中选择"工具" -> "开发板" -> "开发板管理器"如图3.3

图3.3增加esp8266的库

在搜索框中输入"esp8266",并选择"esp8266 by ESP8266 Community",点击"安装"如图3.4所示

图3.4安装esp8266

安装完成后,重启Arduino IDE;

在菜单栏中选择"工具" -> "开发板",并选择对应的ESP8266型号,如图3.5,我的是nodemcu,因此选的下面配置;

图3.5选择esp8266的具体设备

之后就可以使用Arduino IDE来编写并上传代码到ESP8266设备上了。

注意:但是此方案我并没有走通,该方案安装会失败,可以尝试尝试,兴许你就是那个幸运儿,一次就成功呢。

2、离线安装(该包放到同文件夹内)

(1)下载如下图的开发板管理ESP8266文件的压缩包,解压后,如下图3.6所示;

图3.6离线esp8266压缩包

(2)找到arduino ide的安装路径,应该有和这些一样的文件,我的路径如图3.7,将我们的离线esp8266安装包,全部替换下面路径中的文件即可;

图3.7arduino的环境地址

(3)然后重启,即可使用esp8266了,该方案我已实践,可行,esp8266便宜,但是使用的人很少,就是他的环境过于复杂或者很多人被安装就劝退了。

3、oled三方库的安装(其他三方库和该方案类似)

目前我使用的是三方库ESP8266_and_ESP32_OLED_driver_for_SSD1306_displays如图3.8所示;

图3.8 oled三方库展示

(1)安装方案,打开工具,管理库,如图所示;

(2)搜索ESP8266_and_ESP32_OLED_driver_for_SSD1306_displays,然后安装即可,如果没有这些库,编译会保持没有该文件;

4、其他库:

ESP8266HTTPClient库:主要是http获取时钟信息

ESP8266Wifi库,主要是连接wifi

四、程序展示和讲解

程序放到文档同文件夹内

4.1 oled连线

OLED               NODEMCU

VCC                 3.3V      

GND                GND

SCL                 D1

SDA                 D2

代码中可看到,如图4.1所示;

图4.1 oled引脚设置图

五、该方案的难点

5.1从哪里获取网络时间?

该方案是从苏宁网站的授时网页获取的时间:http://quan.suning.com/getSysTime.do 如图5.1所示

图5.1获取网络时间

可访问网址,会看到如图5.2所示:

如图5.2苏宁网站的授时网页所示

后期,我可能会考虑自己会发布自己的网页,将后期项目需要的数据都由该方式发布,然后让其他软件能够同步访问。

获取网址信息代码如下图,response目前属于String字符串,字符串内容:{"sysTime2":"2023-07-16 22:31:05","sysTime1":"2023071622310}

5.2如何将获取到的时间字符串提取出来?

5.2.1使用最老土的方式:

首先提出出来字符串的单个字符,然后转换成数字,然后累加出自己需要的年月日,如下图代码所示:这也是我实现功能的第一个方法,比较菜狗,啊哈哈哈!!!!

/*

 {"sysTime2":"2023-07-16 22:31:05","sysTime1":"2023071622310}

 下标

  年:46——49

  月:50——51

  日:52  53

  时:54  55

  分:56  57

  秒:58  59

*/

int year(String b2)

{

  int year1 = 0;

  int year2 = 0;

  int year3 = 0;

  int year4 = 0;

  int year = 0;

  

  year1 = getOther(b2,46)*1000;

  year2 = getOther(b2,47)*100;

  year3 = getOther(b2,48)*10;

  year4 = getOther(b2,49);

  year = year1+year2+year3+year4;

  return year;

  

}

int month(String b2) {

  int month1;

  int month2;

  int month=0;

  month1 =getOther(b2,50)*10;

  month2 =getOther(b2,51);

  month =month1+month2;

  return month;

}

int day(String b2) {

  int day = 0;

  int day1;

  int day2;

  day1 =getOther(b2,52)*10;

  day2 =getOther(b2,53);

  day =day1+day2;

  return day;

}

int hour(String b2) {

  int hour = 0;

  int hour1;

  int hour2;

  hour1 =getOther(b2,54)*10;

  hour2 =getOther(b2,55);

  hour = hour1+hour2;

  return hour;

}

int minte(String b2) {

  int minte = 0;

  int minte1;

  int minte2;

  minte1 =getOther(b2,56)*10;

  minte2 =getOther(b2,57);

  minte = minte1+minte2;

  return minte;

}

int seconde(String b2) {

  int seconds = 0;

  int seconds1;

  int seconds2;

  seconds1 =getOther(b2,58)*10;

  seconds2 =getOther(b2,59);

  seconds = seconds1+seconds2;

  return seconds;

}

int getOther(String b2, int index) {//根据上面 对获取的api进行数据拆分

  return b2.charAt(index) - 48;

}

5.2.2使用toCharArray函数将所有字符都接收到arry

六、一起探讨ESP8266如何开发更多功能

如果你有想法开发一些新的功能,可以加入我们,我们一起玩出新的花样,无论你是玩51、32、freerrtos、ucoss、树莓派、深度学习、web开发、小程序、esp8266等等都有简单涉略。但是比较擅长的还是驱动板控制和操作系统,我们都可以进行讨论和一起学习。欢迎你的加入,我们一起在技术的领域深耕和学习!!!!!加入QQ群获取资料和遇到问题一起交流。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP8266是一种常用的物联网开发板,它与OLED显示屏结合起来可以制作出一个天气时钟。 首先,我们需要连接ESP8266OLED显示屏。可以使用I2C接口连接它们,这样只需要两条线进行通信。然后,我们需要编写代码来控制ESP8266获取天气信息并在OLED屏幕上显示。 为了获取天气信息,我们可以使用开放的天气API,如OpenWeatherMap。首先,需要在该网站上注册并获取API密钥。然后,使用ESP8266的WiFi功能连接到互联网,并使用该API密钥获取天气数据。可以选择获取温度、湿度、气压等信息。这些数据将以JSON格式返回,需要使用代码解析并提取所需数据。 接下来,我们可以使用OLED显示屏的库函数来在屏幕上显示天气信息。可以创建几个不同的屏幕区域,来显示时间、日期、天气图标和温度等信息。我们可以使用现成的图标库来表示不同的天气状况,例如晴天、多云、雨天等等。 最后,在主循环中,我们可以添加一个定时器,每隔一段时间更新一次天气信息。这样,天气时钟就能实时显示最新的天气情况。 为了使制作的天气时钟更加美观,我们还可以为OLED显示屏添加外壳或悬挂装置。可以使用3D打印技术制作一个适合的外壳,将ESP8266OLED屏幕放入其中,使其成为一个真正的时钟。 总结来说,ESP8266OLED显示屏结合,可以制作一个功能强大的天气时钟。我们可以通过获取天气API获取最新的天气数据,并使用OLED显示屏将其实时显示在屏幕上。制作一个天气时钟不仅可以提供准确的日期和时间,还可以让我们随时了解天气情况,为我们的生活提供便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值