自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 万物互联时代:ONVIF协议如何重构安防监控系统架构

ONVIF(Open Network Video Interface Forum,开放式网络视频接口论坛)是一种全球性的开放行业标准,由安讯士(AXIS)、博世(BOSCH)和索尼(SONY)于2008年共同发起,旨在解决不同品牌网络视频设备(如摄像头、录像设备等)的互通性问题。通过定义统一的接口和通信规范,ONVIF协议实现了设备发现、实时视频流传输、设备控制等功能,成为安防监控领域的主流标准。核心作用与优势互通性:打破厂商壁垒,支持跨品牌设备集成。灵活性:用户可自由选择设备,构建定制化监控方案。

2025-05-09 00:04:18 1251

原创 手把手教你玩转MPU6050:STM32F103C8T6直接驱动姿态传感器!

在嵌入式开发中,姿态传感器是一个非常有用的组件,而MPU6050作为一款集成了3轴陀螺仪和3轴加速度计的6DOF传感器,因其性价比高、使用简单而广受欢迎。今天,我将带大家从零开始,使用STM32F103C8T6直接驱动MPU6050,全程使用HAL库。3轴陀螺仪(量程可调:±250°/s、±500°/s、±1000°/s、±2000°/s)3轴加速度计(量程可调:±2g、±4g、±8g、±16g)内置数字运动处理器(DMP)I2C数字接口。

2025-04-26 18:06:33 792

原创 深入解析CAN协议3:STM32驱动CAN总线通信详解

STM32系列微控制器内置的CAN控制器(

2025-04-13 14:07:39 949

原创 深入解析CAN协议2:CAN协议层深度剖析,数据帧、仲裁与时序的精密设计

数据帧由7段组成。数据帧又分为标准帧(CAN2.0A)和扩展帧(CAN2.0B),主要体现在仲裁段和控制段。帧起始(Frame Start):功能:表示数据帧的开始。特点:由一个显性位(Dominant Bit)构成,此时CAN_H为高电平(如3.5V),CAN_L为低电平(如1.5V),二者之间的电位差形成信号。仲裁段(Arbitration Field):功能:确定发送优先级,并包含标识符(Identifier)用于唯一标识发送者和接收者之间的通信关系。

2025-04-12 10:36:03 834

原创 深入解析CAN协议1:从核心原理到物理层设计(CAN物理层介绍)

CAN是一种多主(Multi-Master)串行通信协议,由德国博世公司于1983年开发,最初用于解决汽车中复杂线束问题。其核心设计思想是通过非破坏性仲裁机制实现高效通信,确保多个节点可同时竞争总线而不会丢失数据。低速CAN(ISO11519)通信速率 10~125Kbps,总线长度可达 1000 米。高速CAN(ISO11898)通信速率 125Kbps~1Mbps,总线长度 ≤40 米。下图为CAN 的连接示意图。

2025-04-11 14:05:47 842

原创 掌握STM32低功耗开发!HAL库实战指南,让你的项目续航翻倍

STM32系列提供了三种主要低功耗模式,满足不同场景的能耗需求:上电后默认是在运行模式,当内核不需要继续运行时,可以选择后面三种低功耗模式。

2025-04-09 15:55:58 1474

原创 从0到1:STM32 RTC定时器配置全流程

独立于主系统时钟(即使MCU进入低功耗模式仍可运行)提供日历功能(年/月/日/时/分/秒/亚秒)支持闹钟中断和周期性唤醒由备用电池供电(VBAT引脚),主电源断开后仍可保持计时20位的可编程预分频器,可适配不同频率的输入时钟。可选择三种RTC时钟源:HSE时钟除以128(通常为8MHz/128)LSE振荡器时钟(通常为32.768KHz)LSI振荡器时钟(40KHz)

2025-04-08 15:43:03 1041 1

原创 解锁STM32F103C8T6新技能:BKP备份寄存器背后的惊人用途!

BKP(Backup Register)是STM32系列中一组特殊的寄存器,用于在系统掉电或重启时保存关键数据。掉电保持:通过VBAT引脚供电(需外接电池),数据在系统断电后仍能保留。独立时钟域:与RTC共用低速时钟(LSE/LSI),支持低功耗模式。侵入检测:可配置硬件触发事件清除BKP数据(防篡改)。10个16位备份寄存器(BKP_DR1 ~ BKP_DR10)1个侵入检测引脚(PC13)BKP框图。

2025-04-07 11:33:35 324

原创 基于STM32的智能门禁系统设计与实现

在物联网技术快速发展的今天,传统门锁正在向智能化方向演进。密码输入与验证(4x3矩阵键盘)用户信息存储管理(W25Q128 Flash)实时状态显示(0.96寸OLED)电磁锁控制(继电器+5V电磁锁)声光提示反馈(无源蜂鸣器)系统异常报警功能本文详细介绍了基于STM32F103C8T6的智能门禁系统设计方案。系统整合了多种常用外设模块,实现了完整的门禁控制功能。开发者可根据实际需求调整密码策略、存储容量等参数,具体实现代码可根据硬件连接关系进行适配开发。

2025-04-05 15:39:29 1070

原创 嵌入式入门必学:STM32矩阵键盘驱动从0到1实战指南

本方案可扩展至各类STM32系列芯片,通过修改GPIO定义即可适配不同封装型号。结合LCD显示模块可构建完整的人机交互系统,适用于工业控制器、智能仪表等场景。4x3矩阵键盘由12个按键组成,采用行(ROW)列(COL)交叉布局。通过行线输出扫描信号,列线检测输入状态,相比独立按键可节省7个IO口资源。完整工程代码可在Gitee获取:https://gitee.com/bad-lemon/mcu-development-record.git。

2025-04-04 12:13:31 441

原创 深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(实战部分)

W25Q128是Winbond推出的128M-bit(16MB)SPI接口Flash存储器,支持标准SPI、Dual-SPI和Quad-SPI模式。工作电压:2.7V~3.6V分页结构:256页/块,每块16KB,共1024块支持页编程(256字节/页)擦除操作支持:扇区擦除(4KB)、块擦除(32/64KB)、全片擦除最高104MHz时钟频率超过10万次擦写周期。

2025-04-02 11:46:43 1697 1

原创 深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(理论部分)

SPI(Serial Peripheral Interface)是电子设备间常用的同步串行通信协议,凭借其高速、全双工的特点,广泛应用于存储器、传感器等外设的通信。

2025-03-28 15:16:08 1028

原创 树莓派温湿度监测终极指南:DHT11+wiringPi驱动深度解析

本实验演示了树莓派与DHT11传感器的典型应用。虽然DHT11精度有限,但其低成本易用性使其成为入门级项目的理想选择。后续可尝试升级到DHT22传感器或使用Python版本实现更复杂的功能。参考资料:DHT11官方数据手册希望这篇博客能帮助您快速上手温湿度监测项目!如有疑问欢迎在评论区留言讨论。

2025-03-25 15:58:14 416

原创 基于树莓派3B+的人脸识别实践:Python与C联合开发

通过本文,您已经实现了树莓派上软硬件协同的人脸识别系统。未来可结合MQTT实现物联网控制,或移植到更复杂的边缘计算场景中。完整代码已托管至[GitHub仓库链接],欢迎Star与Fork!附录百度AI人脸识别文档libcamera官方指南wiringPi GPIO参考问题反馈:欢迎在评论区留言交流,或通过GitHub提交Issue。

2025-03-22 14:38:10 1017

原创 树莓派3B+使用CSI接口OV5647摄像头模块全攻略

树莓派作为一款经典的微型计算机,其强大的GPIO和丰富的扩展接口使其成为物联网和嵌入式开发的明星产品。在众多外设中,‌OV5647摄像头模块‌凭借其500万像素、支持1080P视频录制等特性,成为树莓派视觉项目的热门选择。本文将手把手教你如何在‌树莓派3B+‌上通过CSI接口连接OV5647摄像头,完成硬件配置、驱动启用、拍照录像,并实现Python控制。通过本文指导,您已成功在树莓派3B+上实现了OV5647摄像头的完整控制。

2025-03-22 12:22:50 1522

原创 深入Python C API:掌握常用函数与实战技巧

{NULL, NULL, 0, NULL} // 结束标记Python C API为开发者打开了连接C与Python世界的大门。通过合理使用PyArg_Parse系列函数、Py_BuildValue等工具,你可以轻松实现高性能扩展模块或深度集成现有C/C++代码。记住:‌谨慎管理引用计数‌、‌严格检查错误条件‌是写出健壮代码的关键。

2025-03-21 19:56:19 838

原创 MQTT协议详解:固定报头、可变报头与有效载荷

本文通过对MQTT协议的固定报头、可变报头以及有效载荷的详细解析,帮助读者深入理解MQTT的工作原理。在实际应用中,根据具体需求选择合适的报文类型和参数配置,可以实现高效的消息传输和物联网设备间的通信。

2025-03-18 15:30:17 842

原创 基于STM32F103+ESP8266的OneNet物联网数据上传实战

文章包含详细的代码实现和平台对接说明,实际开发时需根据硬件连接情况调整引脚定义。建议配合示波器调试时序问题,使用串口调试助手验证AT指令交互流程。我并没有使用CubeMx,我使用的HAL代码进行的初始化。大家可以获取我的模板资源。1‌. ESP8266无法连接WiFi‌。3‌.DHT11读取超时‌。2‌. 数据上传失败‌。

2025-03-18 14:40:30 918

原创 用“快递系统“看懂Socket、TCP、HTTP的区别

如果把网络通信比作快递系统,Socket是快递员与客户交接的窗口,TCP是确保包裹必达的运输流程,HTTP则是包裹里标准化的文件格式。三者的关系就像快递柜、运输车队和文件模板的完美配合。

2025-03-16 15:53:40 253

原创 深入浅出TCP与UDP:三次握手、四次挥手及面试通关指南

‌‌:客户端(租客)与服务器(房东)建立信任关系‌SYN(同步请求)、ACK(确认应答)、Seq(序列号)

2025-03-16 15:28:30 818

原创 一篇文章搞懂OSI与TCP/IP模型:从理论到实战面试题

(示意图:OSI七层与TCP/IP四层对比),

2025-03-16 14:32:54 505

原创 树莓派 3B/3B+/4B使用mjpg-streamer搭建摄像头实时流媒体服务

通过mjpg-streamer,你可以快速搭建一个低延迟的摄像头监控系统,适用于家庭安防、远程监控或物联网项目。结合树莓派GPIO,还可扩展运动检测等高级功能。‌ 提示‌:优化性能时,建议关闭图形界面(sudo systemctl set-default multi-user.target)以节省资源。希望这篇教程能帮助你快速上手!如果有其他问题,欢迎在评论区留言讨论。

2025-03-16 13:17:15 1080

原创 STM32与HAL库开发实战:深入探索ESP8266的多种工作模式

通过HAL库直接操作STM32F103C8T6的UART外设,结合ESP8266的AT指令集,开发者可以灵活实现WiFi模块的多种工作模式。本方案避免了CubeMX的依赖,强调底层寄存器操作与协议解析能力,为物联网终端设备开发提供了高可靠性的通信基础。

2025-03-14 12:39:15 1390

原创 STM32 HAL库实战:轻松实现串口通信驱动蓝牙模块与ESP8266开发

本文通过详细的步骤介绍了如何在STM32F103C8T6上使用HAL库进行串口通信,并展示了如何通过串口驱动蓝牙模块(HC-08)和WiFi模块(ESP8266)。这些技术为实现无线通信功能提供了坚实的基础,适用于各种嵌入式系统应用。

2025-03-13 15:34:56 1025

原创 STM32 HAL库实战:高效整合DMA与ADC开发指南

通过DMA+ADC的高效整合,开发者可以实现低CPU占用率的模拟信号采集系统。合理配置ADC的扫描模式与DMA循环传输。利用HAL库的中断回调机制处理数据。通过硬件与软件优化提升信号质量。掌握这一技术后,可轻松应对传感器数据采集、工业控制等高实时性场景的需求。

2025-03-12 15:02:38 1094

原创 精通STM32 HAL库:打造Systick定时器,实现多线程操作系统

寄存器地址功能描述CTRL0xE000E010控制寄存器:使能计数器、中断、选择时钟源等。LOAD0xE000E014重装载值寄存器:设定计数器的初始值(最大值0xFFFFFF)。VAL0xE000E018当前值寄存器:读取当前计数值,写入任意值会清零计数器。CALIB0xE000E01C校准值寄存器:包含出厂预定义的校准值(STM32中通常无需手动配置)。关键位说明(CTRL寄存器):Bit 0:使能计数器(1=启动,0=关闭)

2025-03-11 14:27:47 1146

原创 DeepSeek本地部署指南:从零开始构建你的AI模型环境

在人工智能迅猛发展的今天,越来越多的开发者和研究者希望能够在本地环境中部署和运行AI模型,以便更好地控制数据隐私、提高模型响应速度以及进行定制化开发。本文将详细介绍如何在本地环境中部署DeepSeek模型,涵盖从工具下载到模型运行的完整流程。

2025-02-02 20:13:11 479

原创 01、硬件设计常用经典电路

一直想入职嵌入式软件,但是25年作为学历一般的应届生真是太难了,于是今年实习就不想跑太远了,就在老家5线小城市进入了一家小企业,当电子工程师实习(学徒)。抱着入职什么,就学习什么的态度,大家都要认真对待每一份工作。硬件开发为软件开发打硬件基础。本篇文章将介绍几种常见的经典电路。

2025-01-24 13:47:52 1298

原创 01-硬件入门学习/嵌入式教程-CH340C使用教程

CH340C是一款USB转TTL电平转换器,可以将电脑的USB数据转换成串口数据,方便与单片机(MCU)等设备进行通信。这款芯片支持3.3V和5V电源电压,功能齐全,是DIY设计和嵌入式开发中的常用组件。

2025-01-23 13:41:37 1463

原创 02-硬件入门学习/嵌入式教程-Type-C使用教程

Type-C是一种新型的USB接口标准,由USB Implementers Forum(USB IF)于2014年推出。它以其可逆插的设计、更高的数据传输速度和更强的电力传输能力而著称。Type-C接口不仅适用于智能手机、平板电脑等移动设备,也逐渐成为笔记本电脑和其他便携式设备的主流接口。

2025-01-23 13:19:15 446

原创 使用内网穿透工具,为树莓派配置公网地址实现远程ssh

在我们使用树莓派时,我们常使用ssh连接,但是每次连接都需要在局域网中才能连接,这并不是很方便。本文将介绍使用内网穿透工具,实现远程ssh;

2024-12-28 20:55:55 992

原创 Linux-网络编程-socket编程

端程序从命令行参数中接收服务器的IP地址和端口号。它首先创建一个Socket,然后连接到服务器,发送一条消息,并等待服务器的响应。一旦接收到服务器的响应,客户端就打印出消息并关闭Socket。如果Socket创建、连接或数据传输失败,程序将打印出错误信息并退出。Socket编程是一种强大的网络编程技术,可以实现计算机之间的通信。在进行Socket编程时,需要掌握其基本概念、主要步骤、主要类型以及注意事项等方面的知识。同时,还需要根据具体的应用场景和需求进行相应的调整和优化。

2024-12-15 23:43:48 552 1

原创 Linux_POSIX消息队列-异步通知

mqdes:是一个打开的消息队列描述符。:是一个指向sigevent结构的指针,该结构描述了当消息到达时应如何通知进程。sigeventLinux的POSIX消息队列提供了一种强大的进程间通信机制,而异步通知功能则进一步增强了其灵活性。通过使用mq_notify函数和信号处理,我们可以实现当消息到达队列时立即得到通知的功能,而无需通过轮询或阻塞等待。这在需要高效、实时响应的场景中非常有用。

2024-12-14 09:00:00 397

原创 Linux_POSIX消息队列

POSIX 消息队列(POSIX Message Queues)是 POSIX IPC(进程间通信)机制的一种,它允许进程间通过发送和接收具有固定最大长度的消息来进行通信。与管道和命名管道相比,POSIX 消息队列提供了更高级的功能,例如消息类型化和非阻塞操作。本文将指导你如何在 Linux 环境下使用 C 语言编写程序来操作 POSIX 消息队列。在POSIX消息队列中,我们常用的主要的函数有:mqd_t mq_open函数原型:mq_send函数原型:首先,我们需要使用函数来创建或打开

2024-12-13 09:30:00 773

原创 06-树莓派IIC协议驱动OLE显示屏

/初始化wiringPi库i2c,devId是i2c设备地址,返回值是linux的文件描述符//直接读取数据,fd是wiringPiI2CSetup函数的返回值,返回值是读到的数据//直接写数据,fd同上,data是写入的数据//写数据到8位寄存器,fd同上,reg寄存器地址,data要写入的数据//写数据到16位寄存器,fd同上,reg寄存器地址,data要写入的数据//从寄存器读取8位数据,fd同上,reg寄存器地址,返回值读取到的数据。

2024-12-13 02:04:02 437

原创 C语言-进程间通信---共享内存的入门

共享内存是一种高效的进程间通信方式,它允许不同进程直接访问同一块内存区域。通过C语言的IPC相关函数,我们可以方便地创建、连接、断开和删除共享内存。然而,在使用共享内存时,我们需要注意同步问题、权限管理、错误处理以及内存管理等方面的问题,以确保程序的正确性和安全性。本文介绍了共享内存的基本概念和使用方法,希望能为读者入门共享内存提供一定的帮助。在实际使用中,建议参考操作系统的相关文档和资料,以获得更详细和深入的了解。

2024-12-12 19:45:00 1004

原创 c语言-Linux进程间通信---消息队列

消息队列是一种在C语言中实现进程间通信的有效方式。通过使用msgget、msgsnd和msgrcv这三个函数,我们可以方便地创建消息队列、发送和接收消息。在实际应用中,我们可以根据具体需求对消息队列进行更复杂的操作和控制。希望本文对你理解和使用C语言中的消息队列有所帮助。

2024-12-12 09:45:00 779

原创 c语言-Linux进程间通信---命名管道

pathname:是一个字符串指针,用于存放命名管道的文件名mode:是一个整形参数,用于表示创建文件的权限信息。命名管道是Linux环境下一种灵活且可靠的进程间通信方式。通过创建命名管道并使用openread和write等系统调用,我们可以实现不同进程之间的数据交换。然而,命名管道也有一些局限性,例如它只能提供单向的数据流,且对于大量数据的传输可能不是最高效的方式。因此,在选择进程间通信方式时,我们需要根据具体的应用场景和需求来做出权衡和选择。

2024-12-11 15:15:00 676

原创 c语言-Linux进程间通信---管道通信

管道是Unix、Linux系统中进程间通信的一种方式,它是一种半双工的通信方式。什么是半双工呢,意思就是数据能从A发送到B,也能从B发生到A但是他们只能单向流动。pipe函数中需要传入一个数组。这个数组其中fd[0]控制着读端,fd[1]对应写端。管道通信是C语言在Linux环境下进行多进程编程的重要工具之一。通过深入理解和熟练掌握管道通信的原理和使用方法,我们可以更好地实现多进程协同工作,提高程序的效率和可靠性。

2024-12-11 09:30:00 341

原创 Linux多进程开发-常用命令

进程的相关操作是Linux编程的重要环节。熟悉这些进程控制的api的使用,对我们初学Linux平台下的c语言编程大有帮助。本文重点介绍了,进程的创建常用的俩函数,以及进程的等待。以及system函数。之后将重点介绍一下exec族。

2024-12-10 20:20:32 814

STM32F103C8T6的HAL库模板

STM32F103C8T6的HAL库模板

2025-03-18

OLED-显示屏字模工具

液晶显示模块字模工具

2024-12-13

WiringPi-源码

WiringPi源码

2024-12-09

空空如也

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

TA关注的人

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