【CS创世SD NAND征文】STM32户外无线终端管理设备的数据存储方案
前言:随着信息技术的迅速发展,特别是5G通信、物联网(IoT)和边缘计算等新型基础设施的广泛推广,环境感知和远程监测系统在智慧城市、工业自动化、农业物联网等领域得到了广泛应用。在这些应用中,户外无线终端设备往往部署于远程、野外或恶劣气候环境下,对系统的数据采集稳定性、无线通信可靠性以及本地存储的耐久性均提出了更高要求。特别是在数据连续写入、高低温工作环境以及网络中断情况下,本地数据存储的稳定性成为保障系统持续运行与后续数据回传的关键因素。
为此,本文介绍一种基于LoRa组网技术的远程环境监测系统,采用一主多从架构,实现多参数数据的稳定采集与无线传输。同时,为解决传统Flash存储在极端工况下的局限问题,系统在主机端引入了CS创世SD NAND存储芯片,来提升数据容灾能力和存储可靠性。结合SD NAND芯片在STM32平台上的测试与验证,实现具备实际工程应用价值的低功耗、高稳定性户外无线数据采集与存储解决方案。
目录
一、户外无线终端管理设备的数据存储背景
二、户外LORA网关终端的数据存储方案
三、核心硬件介绍
3.1 主控模块
3.2 无线网关终端存储模块
四、存储模块测试
五、总结
一、户外无线终端管理设备的数据存储背景
随着5G通信、物联网和边缘计算等新兴技术在城市基础设施与远程地区广泛部署,户外无线终端管理设备作为信息采集、通信控制和运行监测的核心组成部分,其数据存储能力的重要性日益凸显。在实际应用中,户外无线终端(如微型基站、通信转发节点、边缘计算网关等)需实时记录大量关键运行状态数据,包括信号强度、电源状态、通信链路质量、设备温度、电池电量及故障日志等。这些数据不仅是设备运行状态监控和故障预测的基础,更是后续网络优化、性能评估和智能运维的重要依据。
由于无线终端设备通常部署在野外、屋顶、高杆、路灯杆或其他复杂环境中,数据存储模块需要满足全天候 7×24 小时连续写入的需求,数据更新频率高、写入密集,对存储介质的耐久性、写入寿命和数据完整性提出了极高要求。同时,设备需长期运行于各种极端气候条件下,如高温暴晒、严寒冰冻、高湿雨雪等,传统存储介质可能因温度漂移、电子器件老化或物理损伤而出现性能下降甚至数据丢失。因此,系统对存储模块的抗高低温能力、抗振动冲击性、防尘防水等级及长期稳定性均提出了严格要求。
户外无线终端管理设备的数据存储不仅是单纯的信息记录问题,更是关系到整个网络运行可靠性与远程维护能力的关键环节,其面临的环境挑战和技术需求远高于普通电子设备,对存储系统的设计与选型提出了更为苛刻的要求。
二、户外LORA网关终端的数据存储方案
针对上述背景,为保障在复杂户外环境中实现多源环境数据的持续采集、稳定传输与可靠存储,接下来介绍一套基于LoRa组网的一主多从远程环境监测系统。在该系统中,通过主机与多个从机的协同工作,实现对温度、湿度、气体浓度等参数的实时感知与远程通信。
然而,面对高频率、多节点、多参数的持续数据写入需求,普通的Flash存储方案在耐久性与稳定性方面存在一定局限,难以长期适应复杂工况下的高强度运行。为进一步提升系统在高温、低温、潮湿等恶劣环境中的数据安全性与存储稳定性,保障在网络断链或通信异常时仍能完成数据本地缓存与后续批量上传,防止数据丢失。本方案在原有LoRa组网架构基础上,加入CS创世SD NAND存储芯片,作为核心本地存储介质,旨在实现高耐久、高速写入、低功耗的嵌入式存储解决方案。接下来将从系统架构与关键硬件配置等方面,介绍户外LoRa网关终端所采用的数据存储方案。
如下视频演示的是原有LoRa组网方案,有多个从机设备采集数据,主机作为网关终端。但在一些户外无线终端管理设备中,还需要记录无线终端设备的运行状态数据,以及需要持续写入7*24 小时不间断并且对于高温低温都需要有很强的耐受力。对于存储的稳定性是很大的考验!
基于LORA组网的远程环境监测系统设计(ThingsCloud云平台版)
原有LoRa组网方案功能如下:
1.系统有一个主机,两个从机。
2.实现一主多从的LORA组网通信,主机和两个从机都配备了STM32F103单片机与 LoRa 模块,主机作为中心设备及WIFI网关,负责接收和发送数据到远程物联网平台和手机APP,两个从机则负责采集数据并通过各自的 LoRa组网将数据发送给主机。
3.两个LORA从机,功能一样,组网分别实现对温度、湿度、粉尘PM2.5、PM10、CO2和NH3进行实时采集,并在OLED显示屏显示,系统采用锂电池供电。
从机所用主要硬件:STM32F103C8T6最小系统板、多合一环境检测模组、0.96寸OLED显示屏、MQ-135传感器、正点原子LORA模块ATK-LORA-01、18650锂电池。
4.主机LORA,组网实现接收两个从机采集过来的数据,通过主机WIFI模块网关将两个从机的数据远程传输到物联网云服务器和手机APP。
主机所用主要硬件:STM32F103C8T6最小系统板、ATK-ESP8266模块、正点原子LORA模块ATK-LORA-01、18650锂电池。
为进一步提升系统适应复杂工况下的高强度运行,本地容灾能力 ,在高温、低温、潮湿等恶劣环境中的数据安全性与存储稳定性,本方案在原有LoRa组网架构基础上,加入CS创世SD NAND存储芯片。
户外LoRa组网终端数据存储方案结构图如下。
主机与两个从机通过LoRa模块无线通信,从机负责采集温度、湿度、PM2.5、PM10、CO₂和NH₃等环境数据,并通过LoRa发送至主机,主机通过ESP8266模块将数据上传至云平台和手机APP,同时加入CS创世SD NAND存储芯片CSNP64GCR01-AOW,实现数据的本地高可靠存储,保障在网络异常或复杂环境下的数据安全与系统稳定运行,保障在户外环境中稳定运行。
三、核心硬件介绍
3.1 主控模块
主控采用 STM32F103C8T6 最小系统板,该芯片基于 ARM Cortex-M3 内核,主频高达 72MHz,内置 64KB Flash 和 20KB SRAM,具备丰富的外设接口资源,如 UART、SPI、I²C、ADC 等,支持多种通信协议及传感器接入。其低功耗、高性能、成本可控的特性使其广泛应用于环境监测、无线通信和工业控制等场景。在本系统中,STM32F103C8T6不仅作为从机采集控制核心,完成传感器数据采集、OLED显示控制及LoRa模块通信;同时在主机中作为中央控制器,负责协调LoRa通信、WIFI数据上传和NAND存储的管理与调度,实现对整个系统的数据采集、处理和存储流程的高效控制。
3.2 无线网关终端存储模块
本方案所采用的存储模块为CS创世SD NAND存储芯片CSNP64GCR01-AOW
Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。
CS创世SD NAND存储芯片CSNP64GCR01-AOW是不用写驱动程序自带坏块管理的NAND Flash(贴片式TF卡),尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8封装,标准SDIO接口,兼容SPI,兼容拔插式TF卡/SD卡,可替代普通TF卡/SD卡,尺寸7x8.5mm,内置平均读写算法,通过1万次随机掉电测试,耐高低温,机贴手贴都非常方便,速度级别Class10(读取速度23.5MB/S写入速度12.3MB/S)标准的SD 2.0协议使得用户可以直接移植标准驱动代码,省去了驱动代码编程环节。支持TF卡启动的SOC都可以用SD NAND,容量:8GB,比TF卡稳定,比eMMC易用。雷龙官方提供STM32参考例程及原厂技术支持。
SD NAND测试板如下图所示。适用产品:LGA8,6x8mm 封装的SD NAND产品。测试板尺寸:长度6.22厘米,宽度2.49厘米,接口长度2.53厘米。使用方法:将芯片焊接至测试板上,可在原有的Micro SD卡座上直接调试和测试。准备工具:热风枪,锡膏,镊子。温度要求:将热风枪温度调至350℃即可焊接。
四、存储模块测试
接下来进行CS创世SD NAND存储芯片CSNP64GCR01-AOW模块的测试。所采用的开发板为正点原子STM32F1精英版。将CS创世SD NAND存储模块如下图所示进行插入SD卡槽,金手指一面朝上。
插入存储模块后,系统上电后,如下图屏幕显示测试信息,存储内存、读卡状态等。
同时,用CH340接到USART1读取到串口的信息如下。
按下key0按键,进行数据读取,当前读取的是0号扇区的数据(512字节),同时将其数据串口发送到串口调试助手显示。
如下为读取的0号扇区数据。
当按下key1按键时,为数据的写入操作。
再次按下key0按键,来读取刚刚写入的数据。如下图所示,与前面读取的0号扇区数据(512字节)是不同的,证明数据写入成功。
主程序如下:
#include "./SYSTEM/sys/sys.h"#include "./SYSTEM/usart/usart.h"#include "./SYSTEM/delay/delay.h"#include "./USMART/usmart.h"#include "./BSP/LED/led.h"#include "./BSP/LCD/lcd.h"#include "./BSP/KEY/key.h"#include "./MALLOC/malloc.h"#include "./BSP/SDIO/sdio_sdcard.h"/*** @brief 通过串口打印SD卡相关信息* @param 无* @retval 无*/void show_sdcard_info(void){uint64_t card_capacity; /* SD卡容量 */HAL_SD_CardCIDTypeDef sd_card_cid;HAL_SD_GetCardCID(&g_sdcard_handler, &sd_card_cid); /* 获取CID */get_sd_card_info(&g_sd_card_info_handle); /* 获取SD卡信息 */switch (g_sd_card_info_handle.CardType){case CARD_SDSC:{if (g_sd_card_info_handle.CardVersion == CARD_V1_X){printf("Card Type:SDSC V1\r\n");}else if (g_sd_card_info_handle.CardVersion == CARD_V2_X){printf("Card Type:SDSC V2\r\n");}}break;case CARD_SDHC_SDXC:printf("Card Type:SDHC\r\n");break;default: break;}card_capacity = (uint64_t)(g_sd_card_info_handle.LogBlockNbr) * (uint64_t)(g_sd_card_info_handle.LogBlockSize); /* 计算SD卡容量 */printf("Card ManufacturerID:%d\r\n", sd_card_cid.ManufacturerID);/* 制造商ID */printf("Card RCA:%d\r\n", g_sd_card_info_handle.RelCardAdd);/* 卡相对地址 *///printf("LogBlockNbr:%d \r\n", (uint32_t)(g_sd_card_info_handle.LogBlockNbr)); /* 显示逻辑块数量 *///printf("LogBlockSize:%d \r\n", (uint32_t)(g_sd_card_info_handle.LogBlockSize));/* 显示逻辑块大小 */printf("Card Capacity:%d MB\r\n", (uint32_t)SD_TOTAL_SIZE_MB(&g_sdcard_handler)); /* 显示容量 */printf("Card BlockSize:%d\r\n\r\n", g_sd_card_info_handle.BlockSize);/* 显示块大小 */}/*** @brief 测试SD卡的读取* @note 从secaddr地址开始,读取seccnt个扇区的数据* @param secaddr : 扇区地址* @param seccnt : 扇区数* @retval 无*/void sd_test_read(uint32_t secaddr, uint32_t seccnt){uint32_t i;uint8_t *buf;uint8_t sta = 0;buf = mymalloc(SRAMIN, seccnt * 512); /* 申请内存,从SRAM申请内存 */sta = sd_read_disk(buf, secaddr, seccnt); /* 读取secaddr扇区开始的内容 */if (sta == 0){lcd_show_string(30, 170, 200, 16, 16, "USART1 Sending Data...", BLUE);printf("SECTOR %d DATA:\r\n", secaddr);for (i = 0; i < seccnt * 512; i++){printf("%x ", buf[i]); /* 打印secaddr开始的扇区数据 */}printf("\r\nDATA ENDED\r\n");lcd_show_string(30, 170, 200, 16, 16, "USART1 Send Data Over!", BLUE);}else{printf("err:%d\r\n", sta);lcd_show_string(30, 170, 200, 16, 16, "SD read Failure! ", BLUE);}myfree(SRAMIN, buf); /* 释放内存 */}/*** @brief 测试SD卡的写入* @note 从secaddr地址开始,写入seccnt个扇区的数据* 慎用!! 最好写全是0XFF的扇区,否则可能损坏SD卡.** @param secaddr : 扇区地址* @param seccnt : 扇区数* @retval 无*/void sd_test_write(uint32_t secaddr, uint32_t seccnt){uint32_t i;uint8_t *buf;uint8_t sta = 0;buf = mymalloc(SRAMIN, seccnt * 512); /* 从SRAM申请内存 */for (i = 0; i < seccnt * 512; i++) /* 初始化写入的数据,是3的倍数. */{buf[i] = i * 3;}sta = sd_write_disk(buf, secaddr, seccnt); /* 从secaddr扇区开始写入seccnt个扇区内容 */if (sta == 0){printf("Write over!\r\n");}else{printf("err:%d\r\n", sta);}myfree(SRAMIN, buf); /* 释放内存 */}int main(void){uint8_t key;uint8_t t = 0;HAL_Init(); /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */delay_init(72); /* 延时初始化 */usart_init(115200); /* 串口初始化为115200 */usmart_dev.init(72); /* 初始化USMART */led_init(); /* 初始化LED */lcd_init(); /* 初始化LCD */key_init(); /* 初始化按键 */my_mem_init(SRAMIN); /* 初始化内部SRAM内存池 */lcd_show_string(30, 50, 200, 16, 16, "STM32", RED);lcd_show_string(30, 70, 200, 16, 16, "SD TEST", RED);lcd_show_string(30, 90, 200, 16, 16, "Archie", RED);lcd_show_string(30, 110, 200, 16, 16, "KEY0:Read Sector 0", RED);while (sd_init()) /* 检测不到SD卡 */{lcd_show_string(30, 130, 200, 16, 16, "SD Card Error!", RED);delay_ms(500);lcd_show_string(30, 130, 200, 16, 16, "Please Check! ", RED);delay_ms(500);LED0_TOGGLE(); /* 红灯闪烁 */}/* 打印SD卡相关信息 */show_sdcard_info();/* 检测SD卡成功 */lcd_show_string(30, 130, 200, 16, 16, "SD Card OK ", BLUE);lcd_show_string(30, 150, 200, 16, 16, "SD Card Size: MB", BLUE);lcd_show_num(30 + 13 * 8, 150, SD_TOTAL_SIZE_MB(&g_sdcard_handler), 5, 16, BLUE); /* 显示SD卡容量 */while (1){key = key_scan(0);if (key == KEY1_PRES) /* KEY1按下了 */{sd_test_write(0,1); /* 从0扇区写入1*512字节的内容 */}if (key == KEY0_PRES) /* KEY0按下了 */{sd_test_read(0,1); /* 从0扇区读取1*512字节的内容 */}t++;delay_ms(10);if (t == 20){LED0_TOGGLE(); /* 红灯闪烁 */t = 0;}}}
五、总结
本文基于LoRa无线组网技术,构建一套结构清晰、功能稳定的户外远程环境监测系统,实现温湿度、粉尘浓度(PM2.5/PM10)、CO₂与NH₃等多种环境参数的实时采集、LoRa无线传输、WiFi远程上传以及本地高可靠存储。系统采用STM32F103作为主控核心,具备良好的外设兼容性与低功耗特性,适合部署于功耗敏感型场景。
为增强系统在极端环境下的运行稳定性,主机端引入了CS创世SD NAND存储芯片CSNP64GCR01-AOW,具备高速读写、宽温运行、掉电保护和强兼容性等特性,解决传统TF卡在恶劣工况下容易掉电损坏、擦写寿命短、驱动兼容性差等问题。通过对该芯片在STM32平台下的接入测试与数据读写验证,系统稳定性和数据完整性得到了良好保障。
本系统适用于环境监测、智慧农业、智能电网边缘节点等多种应用场景。后续可进一步结合低功耗休眠策略与远程升级功能,实现更广泛的工程部署与边缘智能化运维能力。
免费申请存储芯片模块等详情请访问雷龙官网:SD NAND-贴片式TF卡-贴片式SD卡-免费样品包邮-【雷龙发展】 - SD NAND,贴片式TF卡,贴片式SD卡,SPI NAND, PSLC NAND,存储芯片,闪存芯片