首页 > 其他分享 >esp8266制作太空人天气时钟

esp8266制作太空人天气时钟

时间:2023-06-10 12:13:32浏览次数:40  
标签:esp8266 太空 项目 代码 小伙伴 接线 屏幕 时钟

背景

简单来说,就是最近太闲了,然后下班也无所事事,在B站上刷着一众up们的diy视频,一次又一次地激起了我应该做点啥的想法,于是在这一阵又一阵的激励下,我再次燃起了对diy硬件的兴趣,于是我便又一次把自己年前买到的一些硬件翻出来,开始自己的新一轮arduino之旅。

材料准备

本次项目的总成本不到30RMBesp8266开发板的成本13RMB1.3IPS屏幕成本15RMB

  • esp8266开发板
  • 杜邦线6
  • 1.3TFT屏幕一个(ST7789

准备工作

接线

接线对应关系如下:

TFT esp8266 备注
GND G
VCC 3V
SCL D5
SDA D7
RES D4
DC D3

视频发出来之后,有好多小伙伴在问如何接线,这里我放出一张实物的接线示意图,各位小伙伴直接对照图片进行连接即可:

依赖库

安装TFT_eSPI库,这里算是arduino的最基本操作了,我们就不展开了。

如果对esp8266的开发环境还有疑问的小伙伴可以看下我之前发出来了的相关内容:

https://zhuanlan.zhihu.com/p/589448075

运行测试用例

这里运行测试用例的意义是为了验证我们的接线和环境配置是否正常

修改配置

运行测试用例前,我们要先修改Arduino\libraries\TFT_eSPI下的User_Setup.h文件,修改这个文件的作用是配置屏幕的相关数据,确保代码可以驱动我们的屏幕,主要包括屏幕驱动版本、分辨率和屏幕引脚定义,具体修改的点如下:

  • 驱动文件设置:这里根据TFT屏幕的驱动版本选择

驱动

  • 屏幕分辨率:这里也是根据屏幕参数选择

分辨率

  • 引脚设置:这里只需要设置dcrst引脚即可,要和接线部分的引脚相对应

其余配置项保持默认即可。

运行测试用例

选择一个示例,这里我们选择Colour_test

然后选择串口和开发板,上传即可。如果接线和代码都没有问题,那么屏幕会显示如下图像:

至此,我们的准备工作告一段落,下面开始我们的代码编写。

开始撸代码

本项目是基于esp8266和IPS彩屏的一个桌面天气时钟,项目代码基于嘉立创开源平台的《ESP8266太空人天气时钟》源码,优化了其中HTTPClient的报错,代码本身未作大的调整,项目地址如下:

https://oshwhub.com/nanxiangxiao/tai-kong-ren-shi-zhong_copy

本次项目演示的代码仓库如下:
https://github.com/Syske/esp8266-click-weather-ips

下面我们简单介绍下代码的修改点,确保各位小伙伴看了之后就可以直接点亮。这里我们要修改的文件只有一个——click-weather.ino,由于代码本身内容过多,这里我们只贴出需要修改的部分:

wifi相关信息

这里把wifi改成你自己的,之后直接上传代码即可。

关于城市编码

在实际测试过程中,发现ip识别城市会有异常的情况,这时候我们可以通过配置城市编码的方式来解决,当然也需要将根据ip获取城市编码的相关代码注释掉

城市的编码信息可以从下面这个地址中搜索:
https://gitee.com/sysker/LocationList/blob/master/China-City-List-latest.csv

至此,我们本次的项目基本上就结束了。

其他修改点

如果只是想复刻项目的小伙伴,以下内容可以不关注,这里说的是我在原代码基础上的优化点。其实这里的优化点和没有优化一样,因为这里所谓的优化点应该是由于httpClient版本问题,优化的原因是原代码在编译过程中报错了,然后我根据错误提示做了简单的调整:

错误的意思是HTTPClientbegin(URL)过期了,推荐我们使用begin(WiFiClient, url),所以我的优化点就是改成了新方法:

  • 首先实例化一个WiFiClient

  • 然后替换所有调用begin方法的地方,之后成功编译代码

简单总结

本次项目的难点有两个,第一个是esp8266点亮屏幕部分的配置和接线,这一块如果顺利,本次项目基本上就算完成了70%;第二个就是项目源码的修改和上传,这块要求对arduinoC++的基础知识,但是参照本教程也可以顺利完成。好了,关于这个项目,我们就先说这么多,有疑问的小伙伴可以留言,我们一起探讨交流。

最后,说点题外话,今天登录公众号,看到有小伙伴问为啥停更了,我看了下更新记录,从去年12月17日之后,公众号就没有再更新过相关内容,原因有两个:

  • 客观因素:确实没有太多时间来做自己的事情,但是这一点我就可以反驳自己,毕竟二月份和三月份也没咋加班,周六周天更不会去加班,所以更多的还是主观因素
  • 主观因素,主要我自己感觉挺迷茫的,不知道应该如何去学习。随着工作的不断深入和积累,慢慢发现其实我们日常工作中,更多的是写业务代码,而对于技术层面的提升,单靠毅力是不行的,我更喜欢的方式是带着问题去学习,然后在解决问题之后复盘总结,所以我技术分享产出最多的时候,其实是刚入职那会。

在这种迷茫的情绪下,这四个月我虽然没有分享技术内容,但也按照自己的兴趣和主观意愿,做了一些事情:

  • python脚本的能力有了很大的提升,效率也高了:得益于最近一段时间处理线上工单,经常要处理数据,导出数据
  • B站分享了一些arduino项目
  • linux card那个项目,我已经打了五版了,目前串口和芯片都可以识别,但是uboot还有点问题,后面还要研究下
  • 整理了自己的读书笔记,后面有机会可以分享一些我的摘录
  • 维修了一些小玩意:老旧的收音机,十年前买的卡片相机,更换了鼠标滚轮
  • 读书,刷纪录片

虽然差不多四个月没更新内容了,但你问我还愿意去做技术分享吗?我的答案其实还是很确定的,我打心里愿意,作为一个热爱技术的人,我可以为了解决一个技术问题熬夜,查各种技术文档,甚至好几天都思考这个问题,在我看来这一切的付出都是值得的,因为在解决问题的那一瞬间,我可以享受到属于自己的喜悦、幸福和成就感。

在看到小伙伴的留言之后,我决定做点什么,我打算先把最近自己在其他平台发布的内容同步下,同时也打算开始不定期更新一些内容,内容包括但不限于javapythonarduino、工具使用等等,最后非常感谢各位小伙伴的支持,让我们一起成长吧!

标签:esp8266,太空,项目,代码,小伙伴,接线,屏幕,时钟
From: https://www.cnblogs.com/caoleiCoding/p/17471030.html

相关文章

  • esp8266无线小车
    项目简介本项目是基于esp8266实现的无线小车控制,核心的原理是通过js与esp8266进行websocket通信,前端页面模拟操作摇杆,生成操作数据,然后通过websocket通信将控制数据发送至esp8266,实现小车的无线控制准备工作硬件材料用到的材料如下:esp8266开发板L9110电机驱动板双马达小车......
  • 《无垠的太空(7).波斯波利斯崛起》太阳系征服战1(第二十章:博比)
    第二十章:博比   扩展阅读《无垠的太空(7).波斯波利斯崛起》速读:https://www.cnblogs.com/rockyching2009/p/16790702.html《无垠的太空(7).波斯波利斯崛起》合集:https://www.cnblogs.com/rockyching2009/category/2238049.html《无垠的太空(9).利维坦陨落》全集:https://......
  • 树莓派和esp8266之间使用tcp协议通信
     树莓派代码:fromflaskimportFlask,render_templateimportsocketimportthreadingapp=Flask(__name__)adc_value=0#接收tcp数据defreceive_tcp_data():globaladc_value#从ESP8266接收ADC数据sock=socket.socket(socket.AF_INET,socket......
  • 《2001:太空漫游》:Chinese应该如何翻译?
    《2001:太空漫游》:彩尼日应该如何翻译?参考译本:郝明义《2001:太空漫游》,简体版。 --------------------译文摘录:全世界人口已经多达六十亿——其中三分之一在东方国家。 原文:thepopulationoftheworldwasnowsixbillion-athirdoftheminthe彩尼日Empire. ......
  • C++ 时钟;多角星;花环实现。
     最近在回顾C++,写了几个小玩意儿练习一下,该找工作了,十分焦虑。好了,开始正文首先如何画多角星?比如五角星,六角星等等?这里以五角星为例,r1需要被指定,r2可以通过正弦定理得到。然后通过每一步增加360/2n的角度,依次通过短半径和长半径循环计算每个顶点的坐标。如果需要绘制的图形......
  • 树莓派和esp8266在局域网下使用UDP通信,esp8266采集adc数据传递给树莓派,树莓派在web上
    树莓派和esp8266需要在同一局域网下esp8266使用arduino开发:接入一个电容土壤湿度传感器,采集湿度需要使用adc#include<ESP8266WiFi.h>#include<WiFiUdp.h>constchar*ssid="litianmenzhenbu";constchar*password="LT12345678";constchar*serverIp="192.......
  • 用esp8266开发板制作WiFi Killer
    一、esp8266开发板获取【ESP8266串口wifi模块NodeMCULuaV3物联网开发板CH340】我是用的这个,某宝可购买,14元左右,这个是使用的CH340串口芯片的。还有一种在某宝上可以看到是使用的CP21x型号的芯片的,这里两种都可以的。二、安装驱动以自己的开发板上的串口芯片的型号为准,按需选......
  • Linux与window时钟时区流程和一些小细节
    Linux与window时钟时区流程和一些小细节Linux修改时钟两种:手动和联网手动:date命令[root@hahasysconfig]#date#显示当前系统时钟2023年05月31日星期三18:00:07CST[root@hahasysconfig]#date-d"+2month"#显示现在时钟经过计算后的时钟,不会改变系统时钟,说白了就是......
  • Linux 内核时钟架构之时钟源读取计数
    前面我们讲到,时钟源是给timekeeping使用的,timekeeping会定时更新,这就依赖timekeeping模块需要读取clocksource的计数,计算时间流逝。然后对时间进行叠加,得到当前时间。 ktime_get()--->tk_core.timekeeperclocksource.read()timekeeping_get_ns()--》read()......
  • Linux 内核时钟架构之时钟事件设备与tick_device
    每个CPU定义了一个tick_device,其用于对本cpu使用的时钟事件设备跟踪。也就是说,tick_device是有的,但是这里面有没有clock_event_device我们并不清楚,但是内核在启动时候,如果注册clock_event_device设备,那么内核尝试用时钟事件设备与tick_device设备绑定。这样,两则就关联起来了。......