物联网水控系统
技术栈1. 软件系统
Flask+VUE+MySQL
Python脚本使用Mqtt协议传送命令以及数据
2. 硬件系统
esp8266连接WIFI以及MQ服务器
220v水泵
实现过程1. esp8266连接emqx服务器
CA认证关键代码
123456789101112131415// WiFi and MQTT client initializationBearSSL::WiFiClientSecure espClient;PubSubClient mqtt_client(espClient);// SSL certificate for MQTT broker// Load DigiCert Global Root G2, which is used by EMQX Public Broker: broker.emqx.iostatic const char ca_cert[]PROGMEM = R"EOF(-----BEGIN CERTIFICATE-----***********ca CRT***********-----END CERTIFICATE--- ...
高德API的使用
1. 获取当地天气等数据(基于web api)
实现方法
尝试使用现有的api,例如高德。
高德web api的使用
打开并注册高德开放平台
进入高德开发平台的控制台
创建web服务应用并获取 API Key
1https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=<用户key>
参数的选择
参数名
含义
规则说明
是否必须
缺省值
key
请求服务权限标识
用户在高德地图官网 申请 web 服务 API 类型 KEY
必填
无
city
城市编码
输入城市的 adcode,adcode 信息可参考 城市编码表
必填
无
extensions
气象类型
可选值:base/allbase:返回实况天气all:返回预报天气
可选
无
output
返回格式
可选值:JSON,XML
可选
JSON
返回案例结果,浦东新区为案例
123456789101112131415161718192021{ "status ...
物联网协议扫盲
MQTT(消息队列遥测传输协议) MQTT是轻量级的消息发布/订阅协议,设计用于资源受限的设备和低带宽、高延迟的网络环境。它已成为物联网领域的事实标准,广泛应用于智能家居、工业自动化等领域。
mqtt比较简单,算是我入门物联网使用的第一种方式(协议)。从搭建mqtt服务器,协议原理,连接方式以及mqtt上位机编写,通过实操都有了一定了解了。
MQTT服务器搭建(mosquitto) | Regen (regenm.github.io)
esp8266连接服务器(基于mosquitto的mqtt server) | Regen (regenm.github.io)
mqttSender | Regen (regenm.github.io)
CoAP(受限应用协议)
Coap(Constrained Application Protocol)
使用在资源受限的物联网设备上,
Coap协议特点
COAP协议网络传输层由TCP改为UDP。
它基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE ...
《卡拉马佐夫兄弟》
《卡拉马佐夫兄弟》 初次阅读时是在高中借的同学的书,是上册。那时的理解能力,哲学素养还不够,那时看的时候只能些许感受到其中的魅力和震撼。但也足以吸引我看下去,可惜由于学业,课桌里的书籍也逐渐被试卷替代。
直到现在,才有时间来慢慢欣赏那些大家的作品。第二次见面是在图书馆里,两册大大的方方正正的,我单手勉强才能拿起一册,外观就足以解释这是一部厚重的经典了。
说实话看到这样两本厚厚的书籍,我有点没信心看完。可能是之前看到一半就弃了的《魔山》和《悲惨世界》留给我的后遗症吧。前者是每次看一会就会打瞌睡,后者能看下去主要情节但是觉得废话太多,于是有点对这种厚厚的书产生畏惧心理,害怕里面的那些大段的哲学发言。
但是《卡拉马佐夫》帮我打破了这个魔咒。只是可惜这部作品还未写完陀思妥耶夫斯基就先去世了。每次都能从德米特里,阿列克塞,伊万这些人物中找到自己的影子。那些描写如此真实,让我突然就对那些轻小说,那些清汤寡水失去了兴趣。
《卡拉马佐夫》和《罪与罚》真的太震撼了,为什么可以将人的复杂性写得这么真实!很多情况下别的小说的主角都是性格鲜明,但是妥氏笔下的人物就截然不同,更具有人类的拧巴纠 ...
读书是一件有温度的事
突然发现很多书,在读的时候不写写画画,读完以后很容易就忘记了。还是得有点输出才行啊。
《西线无战事》
《西线无战事》
written by 埃里希·玛丽亚·雷马克
“ 这本书既不是指控也不是忏悔,
更不是一次冒险 ,
因为对于那些面对死亡的人来说,
死亡不是一次冒险。
他试图讲述这样一代人—-
尽管他们逃过了炮弹,
却还是被战争摧毁了。”
这本书是在今年暑假回家前在图书馆借的。在回家的路上就读了一大半,读时有一种奇妙的感受。彼时彼刻我坐在有空调的高速列车上,世界上的其他地方还正发生着战乱。一想到我正读到保罗·博伊默在战壕中穿梭,执行侦查任务时,世界的另一端正发生着同样的事时心里就多了一些悲伤。
“我们才刚开始热爱生活,却不得不对这一切开炮。”
“他们仍在继续写文章,发表演说,而我们却已经看到了野战医院和死亡;他们依旧在说对国家的责任是头等大事,而我们却已经知道死亡的剧痛比以前更为强烈了。尽管这样,我们绝不做叛乱者,绝不做逃兵,也绝不做懦夫——这些词,他们原是随便使用的——我们跟他们一样热爱我们的祖国,我们英勇地参加每一次进攻,但我们还会辨别是非,我们一下子学会了观察问题。于是,我们看到,他们的那个世界已经荡然无存。我们突然觉得孤独得可怕,而又必须一直孤独下去。”
Flask+Vue+MySQL 小型项目实战
项目简介项目内容简介
搭建一个博客管理平台。
部署到我的服务器。以便将来我不再需要在本地进行一系列操作例如:
123456git pull git push hexo new " pages" hexo generate hexo s hexo deploy
同时还有博客文件备份的作用,预防电脑出事后的一系列恢复操作。
以及一些数据查询操作。
登录界面
管理界面
技术简介SpringBoot+vue+mysql项目实训结束后想试试别的web框架,发现有个轻量级的框架Flask+Vue+SQLite,我这里没安装SQLlite,于是使用MySQL进行替代。
MySQL和SQLite的区别
类型:
MySQL: 是一个完整的客户端/服务器数据库管理系统,支持多用户访问,适用于大型和中型应用程序,具有高性能和可扩展性。
SQLite: 是一个轻量级的嵌入式数据库引擎,它不需要一个独立的服务器进程或配置,可以直接访问普通的数据库文件。
部署和配置:
MySQL: 需要独立的服务器进程,可以在不同的操作系统上安装,需要配置和管理。
SQLi ...
SpringBoot+vue+mysql项目实训
常见的项目类型以及优缺点和应用范围
Spring Boot + Vue + MySQL
优点
强大的后端支持:
Spring Boot 提供了成熟的后端框架和丰富的生态系统,包括依赖注入、数据访问、事务管理等功能,适合构建复杂的企业级应用。
灵活的前端开发:
Vue 是一个轻量级的前端框架,易于学习和上手,具有响应式数据绑定和组件化开发的优势,适合构建动态且高效的用户界面。
可靠的数据库:
MySQL 是一个广泛使用的开源关系型数据库管理系统,具有稳定性高、性能优越、支持大规模并发访问等特点,适合各种规模的应用。
全栈开发一体化:
Spring Boot + Vue 的组合使得开发人员可以使用相似的语言和工具栈进行全栈开发,提高了开发效率和团队协作。
社区支持和文档丰富:
Spring Boot 和 Vue 都拥有庞大的社区和丰富的文档资源,开发过程中能够快速获取到解决方案和技术支持。
缺点
复杂的配置和学习曲线:
Spring Boot 的配置和依赖管理相对复杂,需要一定的学习成本和经验来优化和调整项目。
Vue 虽然易于上手,但在复杂的单页应用中,需要深入理解 ...
塘下公路片
比起繁华的钢铁丛林,我还是性本爱丘山。在塘下公路骑行是一种很奇妙的体验,就好步入桃花源记,在一群群高楼大厦中站立的两排密集的大树,让长久受到屏幕自己的眼镜也得到了放松。
自从知道了塘下公路以后,我再没去过别的地方骑行。每次骑行都很兴奋,有时感觉回到了家乡,有时感觉在国外一般。真的很喜欢这条路两边的树。恰到好处的遮了大半边天空,只留下一条光路延伸到远方。
在路边发现了一只孤独的椅子,白色的墙与周围有稍许违和感,有一种很清新的感觉,同时还有一种苔痕上阶绿,草色入帘青的感觉。
这应该就是治愈内耗的良药了吧。
苏州行
平江路苏州->平江路。 初见时是辰时,庆幸自己通宵到五点后直奔平江路。若是晚一两个时辰则是截然不同的人山人海。 此时摇船还未开始 河面平静,水波不兴.阳光刚开始洒入这条小街.江南古街的倒影跃然水面,沿着主街直走,我的眼光全在黑白灰的建筑与绿色的树木和蓝色的天空和水面之间游走.这时的平江路尚未被外人所打搅,几对老翁坐在河旁的藤椅上,借着尚不刺眼的阳光看报,一切都显得与背景和谐。 一个时辰不到这条小街就变得喧闹与繁忙.越来越多的女性穿着汉服,涌入这条小巷,或摆拍撒骄,或漫步于河边桥头.刚开始紧闭大门的店铺也逐渐开张,宁静典雅的小巷也就逐渐消失。 我庆幸自己看到了平江路的本原面貌,也看到了她浓妆粉饰后的面貌.但我总觉得少了些东西,可能是恋人或朋友吧.下次带本散文书好了。
STM32 SPI with 0.96 OLED
SPI协议基本介绍点击跳转
SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理。
引脚定义
MISO( Master Input Slave Output):主设备数据输入,从设备数据输出;
MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;
SCLK(Serial Clock):时钟信号,由主设备产生;
CS/SS(Chip Select/Slave Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。
通信原理SPI主设备和从设备都有一个串行移位寄存器,一次传输为8位。
通信流程
主设备发起信号,将CS/SS拉低 ...
MPU6050 basic (based on arduino)
MPU6050简介The MPU-6050 is the world’s first and only 6-axis motion tracking devices designed for the low power, low cost, and high performance requirements of smartphones, tablets and wearable sensors.
应用领域
BlurFree™ technology (for Video/Still Image Stabilization)
AirSign™ technology (for Security/Authentication)
TouchAnywhere™ technology (for “no touch” UI Application Control/Navigation)
MotionCommand™ technology (for Gesture Short-cuts)
Motion-enabled game and application fram ...
一行代码搭建私有云(基于docker NextCloud)
一行代码搭建私有云(基于docker NextCloud)简介 老早以前就很想有一朵属于自己的云了,机缘巧合发现了NextCloud 这个项目,使用Docker一键部署简直不要太简单!
项目地址: NextCloud repo on github 搭完以后再也没有用过文件传输助手,多平台文件传输秒传。太厉害了。 开源不易,感谢大佬
一行代码1docker run -d -p 8080:80 nextcloud
然后直接IP:8080就访问到了
0.96OLED玩法
基于0.96寸OLED,主控ssd1306
显示原理基于数据手册
硬件特性每个像素点独立控制,通过写入现存的二进制数据进行每个像素的熄灭和点亮
像素
128*64
名词定义123456789# 0.96 OLED'''|********************************||********************************||********************************||********************************||********************************|'''# 模拟图
SEG
相当于一列:一列64个像素
COLOMN
相当于一行:一行128个像素
COMMON
相当于一行:一行128个像素
PAGE
相当于8行:128*8个像素
显示方式(ssd1306)
There are 3 different memory addressing mode in SSD1306: page addressing ...
C/C++大型项目编程注意事项
C/C++大型项目编程规范
最近在参与(或者说使用)某些项目的代码时,感觉其代码之简洁精炼,语言习惯之规范,外观之整洁,可读性之高令人赏心悦目。
在其基础上进行增删改查后总是觉得自己的代码不够优雅,就好像一篇书法作品中掺杂几行我写的字。
于是打算学习C/C++项目编程规范,不求优雅,只求规整可读,结构合理。
基于华为C语言编程规范 在线wiki文档
代码总体原则1、清晰第一代码的可阅读性高于性能,只有确定性能是瓶颈时,才应该主动优化
优秀的代码可以自我解释(以我的水平可能做到比较难)
常写注释,并且注释写的清晰
2、简洁为美写的代码越多,意味着出错的地方越多,也就意味着代码的可靠性越低。
术语
原则:编程时必须坚持的指导思想。
规则:编程时强制必须遵守的约定。
建议:编程时必须加以考虑的约定。
说明:对此原则/规则/建议进行必要的解释。
示例:对此原则/规则/建议从正、反两个方面给出例子。
延伸阅读材料:建议进一步阅读的参考材料。
头文件原则不合理的头文件布局是编译时间过长的根因,不合理的头文件实际上 ...
STM32_Menu_frameV1.0
Record project STM32_Menu_frame
[STM32_Menu_frame](to be added)
Requirement AnalysisVersion 1
实现单级菜单
按键选择
SPI或IIC的oled屏显示
Version 2based on Version 1
多级菜单
UI美化
大创项目《自动化农业无人机》记录
记录一下大创项目《自动化农业无人机》。实现项目转化知识成果
硬件选型
实现思路PID算法三轴陀螺仪的使用(以mpu6050为例)[MPU6050 basic with Arduino](link to be added)
PID算法数据传输mqtt协议简介esp8266连接服务器(基于mosquitto的mqtt server) | Regen (regenm.github.io)
mqtt服务器搭建MQTT服务器搭建(mosquitto) | Regen (regenm.github.io)
传输系统1. 数据传输mqtt协议基于代理,订阅和发布。
因此在服务器里创建一个频道/topic/dataFromSensors用于各类传感器的数据传输
高度传感器
二氧化碳传感器
温湿度传感器
电池消耗
2. 命令传输在服务器里创建一个频道/topic/commandToDrone用于各类命令的传输
UP
DOWM
LEFT
RIGHT
SPIN
因为基于mqtt协议,因此自动化控制很简单,上位机很好写,也可以不用上位机,在服务器上写的shell脚本就能很好的完成自动化功能。
m ...
STM32 IIC with 0.96 OLED
IIC 通信原理基本介绍点击跳转
原理介绍Init硬件层 需要接上拉电阻(保证传输稳定性)
代码1234void IIC_Init(){ IIC_SCL=1; IIC_SDA=1;}
Start物理层 IIC总线的SCL保持高电平,SDA由高电平变为低电平后,延时(>4.7us),SCL变为低电平。
步骤
SCL 高
SDA 高->低 + 延时(>4.7us)
SCL 高->低
代码123456789void IIC_Start(){ IIC_SCL=1; IIC_SDA=1; delay_us(5); IIC_SDA=0; delay_us(5); IIC_SCL=0; }
Tramsmit Data物理层 传输时,SDA的宽度应该大于SCL的宽度,在SCL为高时读取SDA,SCL为低时改变SDA的电平。
==注意:==传输数据过程总不允许SDA变化(否则会被视为开始或停止信号)
步骤
拉低SCL进行数据传输
SDA传送高低电平(0或1)
SCL在高电平时期读取SDA的数据 ...
mqttSender
用于记录项目mqttSender
regenm/mqttSender
MqttSenderdescriptionA Software For me to send message to my mqtt serverSo that I can contral my devices such as esp32 ,esp8266.
Another purpose is to learn python tkinter(GUI lib)
Technique
python tkinter
python pyinstaller
python mqtt
requirements analization v1.0GUIversion1.0
conponents
1 text call box(for output)
1 entry box (for input)
a send button()
features(or limits? qwq )
simple
change server(ip address, password , topics) by editing sourc ...