自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 基于STM32的智慧宿舍系统(DAY5)_光照传感器、MQ2、电流传感器、紫外线传感器

DMA采集的数据存放buff,采集5个通道,每个通道采集BTN_BUFF_LEN次,dma_adc_data数据存放方式:HAL_ADC_Start_DMA(&hadc1, (uint32_t *)dma_adc_data, BTN_BUFF_LEN * ADC_MAX_NUM);这一步没啥讲的,直接查手册,套进去算就好了。3、进行数据获取,我们可以在循环调用如下函数,这样采集到的原始值会保存在ADC_Values,数据顺序为我们设置的顺序,比如ADC_Values[0],为我们第一个通道的值。

2024-12-08 00:06:06 461

原创 基于stm23的智慧宿舍系统 (DAY10)_小程序

好久没记录开发进度了,今天小程序差不多开发完了,UI这块算是比较常见了,主要功能是能连接onenet查看设备上传的数据,同时也能对设备进行一些控制下面是几个主要的函数,功能比较简单。支持基于stm32的智慧宿舍这个题目开发的差不多了,有需要这个项目的可以联系我。下面展示一下小程序的UI。

2024-12-07 23:55:18 486

原创 基于stm23的智慧宿舍系统

这个功能就是可以手动控制,也可以自动控制,比如检测到光照不足且此时为晚上6点之后,此时会自动关闭窗帘,并且窗帘支持关闭比例,比如关闭25%,50%,75%,100%等,加湿器模块主要是联动温湿度检测模块,当检测到湿度过小,就会自动开启加湿器,直到湿度达到最佳值后自动关闭。基于stm32的智慧宿舍,主要功能分为智能门锁,环境数据监测,火灾预警、功率监测、可燃气体泄漏监测,三路继电器设备控制、加湿器模块(暂未添加)、窗帘控制、rtc时钟、oled模块。三路继电器主要表示电闸、照明、电器,均支持小程序远程操作。

2024-11-30 09:37:21 281

原创 基于STM32的智慧宿舍系统(DAY4)_DS1307

在本系统里使用了一个RTC模块DS1307,并且通过STM32来控制,显示标准时间,日历、计时等功能,这个芯片使用i2c接口,同多对对应寄存器的读取就能获取当前时间,当然这个时间是需要我们先设置一下的,具体内容感兴趣可以参考芯片手册,我这里值展示我们能用到的相关内容。DS1307_SetRegByte和DS1307_GetRegByte是封装的两个函数接口,下面是获取当前时间的一些函数,我们通过调用即可获取。我把比较关键的函数接口写在下面,供参考,我们首先从硬件层面来说是初始化操作,启动计时。

2024-11-20 18:15:38 253

原创 基于STM32的智慧宿舍系统(DAY4)_EEPROM

在本系统中,设想使用EPPROM来保存用户信息,比如用户A的卡号,用户B的卡号,这样做的目的也是尽可能最大程度模拟接近实际生产生活中的使用场景,因为我们不可能固定卡号,我们会涉及一些增加用户删除用户修改用户的操作,这个模块简单理解为一个存储空间,我们可以把一些信息存储到这个空间,而不是简单的在代码里写死。下面是这个库的测试过程,我们先给data这部分缓存填入随机值,然后将这部分值写入EEPROM,然后延时100ms后再读对应地址,如果读出的值与我们写入的一样则说明是被正常,并且我们已经可以正常操作了。

2024-11-20 14:01:48 299

原创 基于STM32的智慧宿舍系统(DAY3)_RFID-RC522

这个小节的驱动主要是来做RC522,我们使用的是硬件spi接口,RC522这个芯片用的还是比较多的,RC522可以使用I2C或者SPI接口,某宝上能买到的大多是SPI接口,这里我们从接口配置开始到读取卡片来走一遍整个过程。这两个是卡号,我们可以先指定两个卡号,当时别到卡号之后会与我们保存的卡号进行对比,这样就可以实现对不同身份的认证了。{0x44, 0x33, 0x43, 0x38, 0x42, 0x35, 0x30, 0x42}, // 用户 1。这个函数是初始化函数,函数注释已经详细表明函数过程。

2024-11-19 13:48:13 177

原创 基于STM32的智慧宿舍系统(DAY2)_ESP8266连接ONENET

ESP8266驱动主要是使用AT命令来做的,我们需要先给ESP8266模块刷一下固件,具体的AT命令我们可以参考乐鑫的手册,基本配置就是复位、设置模式、连接WiFi的操作,然后连接MQTT服务器。下面是硬件的一些简单操作,主要是复位,设置模式,开启DHCP,连接WiFi,注意在连接WiFi的地方需要延时一段时间等待WiFi连接,我这里延时5秒,个人根据情况而定。至此ESP8266连接ONENET的过程结束,有需要具体代码的可以后台联系。这个地方我们首先放一个AT手册的链接,具体的可以参考这个手册。

2024-11-19 13:21:46 701

原创 基于STM32的智慧宿舍系统(DAY1)_系统概况

最随着科技的不断进步和智能化技术的广泛应用,智能家居、智能建筑等概念已经逐渐进入我们的日常生活。特别是在学校的宿舍环境中,如何利用现代科技提升学生的居住体验和管理效率,已成为当前教育领域中亟待解决的问题。传统宿舍管理方式大多依赖人工或手动控制,存在着效率低、管理难度大、安全隐患等问题,急需一种创新性的解决方案。智慧宿舍系统正是在这样的背景下应运而生。智慧宿舍通过集成物联网、传感器、云平台等技术,实现对宿舍环境、设备、人员等的智能化管理和服务。

2024-11-17 12:04:58 785

原创 stm32使用cJSON_Print返回空

最近在做JSON相关的内容时,调用了cJSON库,想格式化输出JSON字符串的时候发现返回的指针一直为空,上网查询之后发现可能是。百度之后发现原因如下,我更改了启动文件的堆区大小之后发现可以正常打印了。时间:2024年11月16日16:19:55。下面是我的debug信息。

2024-11-16 16:28:10 404

原创 基于LORA的一主多从监测系统_实物展示

提供:成品硬件 + 4G模块 + 详细开发流程 + 源码 + 原理图。主节点和子节点A的合照来一张。

2024-11-09 22:23:09 425

原创 基于lora的一主多从监测系统

关联:基于lora的智慧农业、基于lora的智慧农场、基于lora的智慧矿井、基于lora的智慧牧场。这个算是一个目录吧,涵盖了我这个专题下的所有文章,感兴趣的小伙伴可以去看看。

2024-11-09 21:40:35 408

原创 基于LORA的一主多从监测系统_状态维护

这个状态维护是最近加的,可能是由于工作后的习惯,总会特意关注系统的整体状态,因为用到了4G模块,并且还要和子节点交互,所以我们必须要有个状态来维护4G和云平台之间的连接,同时也要维护和子节点的连接状态,我的实现想法是,每次上传数据前对MQTT的连接状态进行判断,如果状态不对,则重新连接云平台,如果云平台尚未连接成功,则放弃上传将收到的数据保存下来,等待网络恢复后进行上传。这样做的好处是如果云平台丢失连接设备也能有一些自我恢复的能力,算是往成品靠近。并且也会统计与云平台断开的次数。

2024-11-03 17:25:19 290

原创 基于LORA的一主多从监测系统_实物设计

最近代码写的差不多了,基本一主一从已经定下,并且经过24小时测试还算比较稳定,所以打算把硬件实物定下,之前用的杜邦线,看着也比较杂乱不是很好看,于是打算使用pcb来替代,这样也比较整洁可靠,二来也看着高级一点,哈哈哈。主节点PCB如下图所示,主节点,我习惯叫网关板,他主要是有4G、LORA、STM32、RTC模块、三个双色LED用来表示设备状态,三个按键用来为后面功能做预留,蜂鸣器、OLED屏幕可以展示一些必要信息。目前都已经在检查阶段了,估计很快就能打板拿到实物了。

2024-11-03 17:07:08 594

原创 基于LORA的一主多从监测系统_4G模块上巴法云

临时添加一个更新,更换云平台为巴法云,事情的起因是因为阿里云这个老六,早上睡了一觉起来发短信告诉我云平台给我停了,得交钱,好嘛,不过也没办法现在这基本都收费,当然还有onenet可以用,别问我为什么不用,主要是因为onenet现在整的太复杂了,以前用的多现在也不想用了。巴法云这个显示还是很明了的,个人比较喜欢这种,但是同样这个也看不了设备的在线情况,只能看到订阅者,如果我是推送消息上云那就看不到我的在线情况,这个或许也是我没整明白,等我研究研究,目前上云测试是没什么问题了。

2024-10-31 21:56:41 415 1

原创 基于LORA的一主多从监测系统_主从节点交互

上面就是大概的流程,如果没有在指定时间收到子节点回复的数据则认为子节点收超时,进入到下一个节点的问询过程,这个过程基本都差不多,目前这个过程比较简单,没有太过复杂的东西,下面是我处理单个节点的函数,仅供参考。------>解析数据,判断数据的完整性,如果数据完整则对数据进行转化保存,等待上传。------>延时等待子节点回复。------>主节点发送问询帧。------>子节点回复。

2024-10-31 21:01:11 331

原创 基于LORA的一主多从监测系统_4G模块基本驱动

4G模块我这边使用的是大夏龙雀的4G模块,如果是新人购买,9.9就能买到测试套装,还是比较划算的,这个模块也是通过串口使用AT命令交互的,对之前使用过ESP8266的小伙伴来说应该不会很难,之所以选择4G模块而不选择ESP8266也是因为考虑到整体系统的使用场景,以野外或者长距离为主,使用WiFi会有很多局限性,所以选择4G。所有的指令以 AT 开头,结束,在本文档中表现命令和响应的表格中,省略了,仅显示命令和响应。内为可选内容,如果命令中有多个参数,以逗号"。

2024-10-30 22:40:20 486

原创 基于LORA的一主多从监测系统_4G模块连接阿里云

4G模块我这边使用的是大夏龙雀的4G模块,如果是新人购买,9.9就能买到测试套装,还是比较划算的,这个模块也是通过串口使用AT命令交互的,对之前使用过ESP8266的小伙伴来说应该不会很难,之所以选择4G模块而不选择ESP8266也是因为考虑到整体系统的使用场景,以野外或者长距离为主,使用WiFi会有很多局限性,所以选择4G。上述是我实际测试所填,具体可以参考代码内容,大夏龙雀这个4G模块还是很良心的,厂家也提供了一个测试代码,我们可以用这个测试代码加以修改就可以使用,如下。下面是我实际的debug信息。

2024-10-30 22:22:23 551

原创 基于LORA的一主多从监测系统_数据发送

数据上传我这里使用了问询的方式,这样的好处一是可以用来统计节点的存活状态,二是可以避免冲突,主节点通过向从节点发送问询帧,从节点收到问询帧后开始向主节点发送数据,同时我们也可以加入不同的帧类型,比如控制帧、问询帧、心跳帧等等,拓展性会好很多。大概的流程如下,如果收状态机触发,则清除状态机后开始判断帧内容,如果为问询帧则将数据发送,发送完后清空缓存为下一次做准备。目前设计的很简单还是透传的过程,也不涉及对lora模块的具体配置。

2024-10-20 16:57:26 398

原创 基于LORA的一主多从监测系统_协议制定

【注2】帧内容中的7E转义为7D 5E, 7D转义为7D 5D。帧内容长度计算转义后的帧内容长度。帧内容就是我们实际发送的数据,数据需要按照下述表格中的顺序填充。该字节以后所有内容(即关键字+帧内容+校验和)字节数。【注1】协议中使用大端字节(高字节在前低字节在后)。【注1】协议中如果需要添加关键字,依次顺添加就可。心跳帧是主机到从机,从机再到主机双向。从机到主机,表示请求新增一个设备。累加转义后的关键字+帧内容。应答帧是对主机来检查。

2024-10-15 12:58:39 356

原创 基于LORA的一主多从监测系统_光照强度传感器

我们使用准备好的空间接收返回值即可HAL_ADC_GetValue(&hadc1);,这个返回的是一个电压值,我们通过公式计算就能换算到相对光照值,至此我们光照强度传感器的驱动代码已经完成。本系统使用了普通的ADC光照强度传感器,我们需要再CUBEMAX里面配置好ADC的相关参数,这里我们使用PB1来做光照传感器的接口,对C8T6来说也就是ADC1的第九个通道。我们先按照上图配置,将gpio绑定到ADC1_IN9,同时使能为。

2024-10-10 13:40:44 324

原创 基于LORA的一主多从监测系统_BMP280气压传感器

网上目前能找到的寄存器手册是博士的,手册是全英文的,但我们只需要关系重点信息,比如这个ID,这个ID就是我们去读器件指定的一个地址,可以读到一个值,这个值就是这个器件的ID,这个寄存器是可读寄存器,一般这个ID是出厂就固定的,不可修改。这个是我们需要好好去研究的寄存器,我们所需要的压力数据就是从这个寄存器获得,分别有三个寄存器,这三个寄存器分别保存压力数据的高位、低位、小数位,注意0xF9里面只有bit7-bit4是我们的需要的,其余四个bit我们不用关心。这些地址我们无需关心,

2024-10-10 13:27:40 624

原创 基于LORA的一主多从监测系统_0.96OLED

我这里使用硬件I2C,使用HAL的I2C操作函数HAL_I2C_Mem_Write,这个函数是在阻塞模式下将大量数据写入特定的内存地址,函数原型为:HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)

2024-10-09 22:14:11 557

原创 基于LORA的一主多从监测系统_AHT20温湿度传感器

通过简单的代码测试后,我们在debug下可以看到已经能正常读到数据了,其中0x1C为状态字节 00011100,通过第4个bit为1表示OTP 存储器数据完整性测试(CRC)通过,说明我们温湿度数据获取成功。通过手册,我们可以知道当传感器上电后需要等到五ms才能读取,这个一般可以不用管,但是再发送完测量命令后需要等待80ms测量完成,我们需要做一些延时操作。当然,最重要的是我们如何将获取的数据转换为实际的温度和湿度,通过查看手册,我们可以得到转换的具体公式。这个实际数据值看着也差不多,说明获取无误。

2024-10-08 22:47:09 710

原创 基于LORA的一主多从监测系统_框架搭建

这个地方的配置按照下图即可,配置没问题了点击GENERATE CODE即可。

2024-10-07 23:00:19 657

原创 基于LORA的一主多从监测系统_前言

最近想用手头的东西做一个小项目,也算是一个共用框架,这个框架可以做很多东西,比如基于lora的智慧农场,基于lora的智慧牧场,基于lora的智慧城市,智慧矿井等。这个项目我对他的定位是可以用于课设以及毕设,如果作为毕设需要在这个基础上再做一些丰富,比如加上远程OTA功能,这个算是一个亮点。整个系统的主要的思维,也就是多个从节点将数据采集后上传至主节点,主节点起到一个网关的作用,可以将子节点数据上传至云端,比如onenet、阿里云、巴法云等公共物联网云平台或者自建云平台。

2024-10-07 22:45:06 663

原创 第1节、基于太阳能的环境监测系统——MPPT充电板

整体系统使用太阳能板为锂电池充电和系统供电,天黑后锂电池为系统供电,本节主要介绍基于CN3722的MPPT太阳能充电模块,这块主要是硬件,目前软件设计已经开源到嘉立创,有需要的可以去看看

2024-07-07 00:10:53 733

原创 第3节、基于太阳能的环境监测系统——协议制定

本节主要内容为交互协议的定义,主要包括数据获取以及输出上传协议,后续会根据项目修改进行一些修改和补充,更新内容会详细说明。

2024-07-06 23:59:55 458

原创 ROS专栏—基于STM32F103的INA219电源数据采集

文章主要记录了stm32f103对ina219的数据采集

2024-05-05 19:30:56 1747 1

原创 使用ESP8266连接EMQX完成数据上传

如果不考虑成本,我们可以使用STM32+ESP8266的组合,这也是传统模式,但是如果按照商业使用,我们要尽可能的实现,数据在本地,成本足够低!本着这两个目标我的设想是使用手头已有的树莓派搭建EMQX,然后使用8266完成连接平台和数据上传任务,stm32完成数据采集和粗处理任务(考虑成本后期可以换成低功耗版本或者51单片机),数据在本地可以依托本地设备搭建服务器,这样一定程度上可以保护数据安全,当然对于家用可以寻找第三方平台。国庆期间在家里窝着哪里也没去,到处都是人。言归正传,我们现在开始直入主题。

2024-05-05 18:47:40 519

原创 RT-Thread学习日记——点亮LED

最近开始接触RT-Thread,后面会单独建立专栏以此记录我的学习过程,如果能给你的学习提供参考,本人倍感荣幸。打开后我们看到代码最上面已经有了LED相关引脚的定义,这里我已经修改过了,具体参考所使用的硬件来选择。完成上述操作之后,在packages文件夹下,找到SingalLed文件夹,打开示例代码。在RT-Thread的配置项里搜索LED可以看到和LED相关的很多内容,这里我选取。修改后我们看到该LED代码是可以自动执行的,我们只用下载后即可看到现象。:正点原子战舰开发板。

2023-08-22 00:01:59 955

原创 基于STM32的智能GPS定位系统(云平台、小程序)

一个普普通通的小项目……

2022-12-04 01:05:06 11123 13

原创 基于LINUX的TCP协WireShark抓包分析

作为一名入门嵌入式软件开发的新人来说,网络编程是必须要掌握的一门技术,这篇博客主要记录一下,LINUX下使用TCP协议创建一个简单地C/S结构,并且在最后通过WireShark抓包进行分析,完整体验一下TCP协议的流程。以下只是我自己的一些见解,还望多多指教。...

2022-08-16 14:41:47 702

原创 关于if(x)和if(!x)的区别小记

最近哈,看太多这个if(x)和if(!x)脑袋突然抽了,有点纠结这个东西,其实很简单,我们写一个简单地测试代码就知道了,下面我直接放代码:经过测试,结论如下:if(x)只有在x非0情况下,才会满足进入判断,在x为0的情况下直接退出判断而if(!x)与上面的情况相反,只有x为0才能进入判断,否则不进入结束...

2022-08-15 11:33:03 4035 1

原创 Linux系统下对SD卡分区步骤

Linux系统下对SD卡分区操作,看不懂来打我!

2022-07-03 16:34:22 5680 1

原创 C语言库函数——strcmp

该函数主要是用来实现字符串对比,该函数执行为将字符串str1和str2进行对比。如果str1>str2则返回一个正数如果str1

2022-06-14 10:52:42 3070 1

原创 FPGA-按键实验

按键代码

2022-06-08 11:14:14 243

原创 FPGA开发——Hello_world例程

FPGA开发之路

2022-06-08 10:18:04 559

原创 C语言—浮点数转化为整数的方法实验

背景这几天接触到了一个问题就是:浮点数转化为整数的方法,因为平时这方面用的比较少所以有很多知识都忘记了,所以今天结合工具书,将这部分内容做个实验加深印象。同时也给有需要的小伙伴做以参考。实验内容测试C语言浮点数转化为整数的方法实验过程方法1:强制转换,直接舍弃#include <stdio.h>int test01(f){ int a; a = (int)f;//暴力转换,直接舍弃小数部分,只截取整数 return a;}int main(void

2022-04-28 10:20:37 8755

原创 PHP调用返回值含回车解决办法

最近做毕设用到数据库实现小程序的登录问题,就使用PHP写了一个简单的后台。微信小程序带着用户输入的账号和密码请求后台,并连接数据库核对信息实现登录。但是写完PHP后,微信小程序调用的时候出现了,无法登陆的情况,使用控制台输出返回结果后我发现,因为返回值多了三个回车导致小程序无法匹配。反复核对后端代码发现自己在写完PHP后因为粗心,留有三个回车删除三个回车后所有问题解决,返回值也没有出现三个回车的情况。将此思路提供给有缘人参考...

2022-04-21 11:16:19 735

原创 C语言—普通、静态、局部、静态局部变量

一、变量的存储类型1、普通全局变量在函数外部定义的变量int num=100;int main(){ return 0;}这个地方num就是一个全局变量

2022-03-25 16:28:32 1125

ROS专栏-基于STM32F103的INA219电源数据采集

ROS专栏-基于STM32F103的INA219电源数据采集

2024-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除