- 博客(51)
- 收藏
- 关注
原创 如何用 ESP32-CAM 做一个实时视频流服务器
ESP32-CAM 的核心是安信可科技(Ai-Thinker)的 ESP32-S 系统级芯片。作为系统级芯片,ESP32-S 芯片在单个芯片上包含微处理器、RAM、存储和外围设备。虽然该芯片的功能令人印象深刻,但 ESP32-CAM 开发板增加了更多功能,下面我们逐一看一下每个组件。
2025-01-08 18:47:22 1429
原创 如何在 Arduino IDE 中使用 WebSockets 创建 ESP32 Web 服务器
WebSocket 是一种通信协议的名称,它支持客户端和 Web 服务器之间的双向(更准确地说是全双工)通信。简单地说,WebSocket 是一种允许客户端和服务器建立连接的技术,通过该连接,任何一方都可以随时向另一方发送消息。这与常规 HTTP 连接不同,在常规 HTTP 连接中,客户端发起请求,服务器发送响应,然后连接终止。事实上,WebSocket 是一种完全不同的通信协议,当客户端与服务器建立连接时,连接的两端都可以发送和接收数据。因此,就像服务器正在侦听新消息一样,所有连接的客户端也在积极侦听。
2024-12-30 16:48:56 1094
原创 基于 Arduino IDE 搭建一个轻量的 ESP32 Web 服务器
引入了 WiFi 和 WebServer 库,用于处理 Wi-Fi 连接和 HTTP 请求。定义了 SSID、密码以及静态 IP 配置信息,用来设置 ESP32 作为无线接入点时的网络参数。创建了一个 WebServer 对象,监听端口 80,这是 HTTP 协议默认使用的端口。定义了两个 LED 所连接的 GPIO 引脚编号以及它们的初始状态。setup()
2024-12-26 17:26:33 1325 1
原创 关于 C/C++ 可变参数函数的学习笔记
在编程的世界里,灵活性和效率往往是我们追求的目标。当涉及到函数设计时,能够处理不同数量参数的能力极大地增加了代码的复用性和适应性。C/C++ 语言通过提供可变参数函数(variadic functions)这一特性,允许开发者创建能够接收不定数量参数的函数,从而满足了这一需求。在计算机程序设计,一个可变参数函数是指一个函数拥有不定引数,即是它接受一个可变数目的参数。简单来说,就是函数的参数个数可变,参数类型不定的函数。不同的编程语言对可变参数函数的支持有很大差异。——引用:《
2024-12-17 12:04:43 1015
翻译 Light Emitting Diode (发光二极管)
NOTE]LED 无处不在——在我们的手机、汽车、甚至我们的家中。每当电子设备亮起时,很可能就有一个 LED。LED 就像微型灯泡。低能耗、小尺寸、快速切换和长寿命使它们成为移动设备和其他低功耗应用的理想选择。LED 即。它们是一种将电能转化为光的特殊二极管。它们的电气特性与普通的非常相似。这就是为什么 LED 的符号与普通的 PN 结二极管相似,只是它多了朝向二极管外部的箭头,表示二极管正在发光。
2024-12-15 16:42:43 85
翻译 The Zener Diode(齐纳二极管/稳压管)
.NOTE]普通硅二极管在反向偏置时会阻止任何电流通过,当反向电压过高时会损坏。因此,这些二极管绝不会特意在击穿区工作。然而,稳压二极管(后简称为稳压管)则有所不同。它们专门设计用于在击穿区域无故障运行。因此,稳压管有时被称为。稳压管是稳压器和电路的支柱,尽管线路电压和负载电阻发生很大变化,但仍能保持负载电压几乎恒定。下图为稳压管的原理图符号。在任何一个符号中,线条都类似于“”,代表“
2024-12-15 16:36:59 113
翻译 The Full-Wave Bridge Rectifier(全波桥式整流器)
or simplyNOTE]还有另一种更流行的全波整流器设计,它基于四个二极管桥配置。它被称为或简称为。这种设计相对于中心抽头版本的优势在于它不需要特殊的中心抽头变压器,从而大大降低了其尺寸和成本。此外,这种设计使用整个次级电压作为整流器的输入。给定相同的变压器,使用桥式整流器获得的峰值电压和直流电压是使用中心抽头全波整流器的两倍。这就是桥式整流器比全波整流器使用得多的原因。
2024-12-15 16:30:07 163
翻译 The Full-Wave Rectifier(全波整流器)
NOTE]虽然半波整流器用于一些低功率应用,例如信号和峰值检测器,但它很少用于电源整流。电源整流领域最常用的整流器是。全波整流器比半波整流器更复杂,但它具有一些显着的优点。它使用正弦波的两个半周期,从而产生高于半波整流器的直流输出电压。另一个优点是输出纹波少得多,这使得更容易产生平滑的输出波形。
2024-12-15 16:26:11 105
翻译 The Half-Wave Rectifier(半波整流器)
NOTE]大多数电子系统,如电视、音频系统和计算机等,都需要直流电才能正常工作。由于线路电压是交流电,我们需要将其转换为相对恒定的直流电。将交流电压(AC)转换为连续电压(DC)的电路称为。如你所知,二极管只从阳极到阴极单向传导电流。这一特性使它们成为整流的理想选择。二极管连接在一起形成各种类型的整流电路,例如“半波”、“全波”或“桥式”整流器。所有整流器中最简单的是。
2024-12-11 15:13:30 120
翻译 PN Junction Diode(PN 结二极管)
NOTE]一块 N 型半导体或 P 型半导体就像一个电阻器,用处不大。但是,当制造商将单晶硅的一侧掺杂为 P 型材料,另一侧掺杂为 N 型材料时,就会诞生新的东西——。PN 结是二极管、晶体管、太阳能电池、LED 和集成电路等半导体器件的基本。了解这一点使你能够了解所有设备了。
2024-11-29 17:59:04 141
翻译 Semiconductor Basics(半导体基础知识)
NOTE]要了解二极管、晶体管或任何集成电路的工作原理,你必须首先研究半导体——一种既不是导体也不是绝缘体的材料。在了解半导体之前,让我们先了解是什么使材料成为导体或绝缘体。
2024-11-26 16:21:17 124
原创 【数据结构】关于环形队列库的改进办法
使用void*来存储任意类型的数据;新增结构体成员,表示队列的每个元素的大小(所占字节数);除data成员变量外,其余变量的类型全部改为size_t。void *data;// 存储数据的数组// 队头索引// 队尾索引// 队列容量(元素数量)// 每个元素的大小// 当前队列中的元素数量NOTE]关于size_t这个数据类型,我在《【面试题分享】重现 string.h 库常用的函数》的附录部分有提到,感兴趣的可以去看看。
2024-10-13 18:23:10 872 1
原创 【解决方案】关于 UART 接收数据时丢失数据的解决办法——环形缓冲存储区
在使用 UART 进行通信时,数据丢失是一个常见的问题。波特率不匹配这是 UART 丢失数据的众多原因中,最好解决的一种情况,只要重新配置设备的波特率即可。缓冲区溢出接收方的缓冲区太小,来不及处理的数据被覆盖,或是缓冲区溢出,超出缓冲区存储空间部分的数据没被保存。硬件中断或干扰外部电磁干扰、电源波动等可能导致信号失真。这属于硬件问题,通常使用屏蔽电缆,确保良好的接地,远离强电磁场源,使用滤波器或稳压器来减少电源波动的影响。软件错误接收代码中的 bug,如未正确读取缓冲区数据、错误处理不当等。
2024-10-03 09:42:58 2814 2
原创 【数据结构】环形队列(循环队列)学习笔记总结
为充分利用向量空间,克服 “ 假溢出1” 现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。——引用至《循环队列_百度百科要理解环形队列,可以先从单个变量的读写开始。以串口收发数据为例,假设某些外设通过串口向主机发送 1 byte 的数据,且每秒发送一次,那么这 1 byte 的数据会先存在主机的接收缓冲存储区中。
2024-09-28 17:09:38 3028
原创 编译之舞:C/C++ 与 GCC 的协作曲
在现代计算的舞台上,编程语言如同舞者,而编译器则是那幕后默默引导的编舞师,每一次代码的编写都像是一场精心设计的舞蹈。在这个舞台上,C 语言和 GCC(GNU Compiler Collection)是一对经典的搭档。它们共同演绎了一场编译的华美舞蹈,从源代码到可执行文件的华丽蜕变。本文将探索 C 语言与 GCC 之间的这种美妙协作,并深入了解它们是如何共同创造出那些最终运行在计算机上的程序。
2024-07-28 16:12:45 924
原创 【小总结分享】Linux 系统结束进程的 Ctrl + c 和 Ctrl + z 有什么区别?
在众多的快捷键组合中, 和 是两个极为常用的组合,它们看似简单,却在管理进程方面扮演着至关重要的角色。然而,对于初学者来说,这两个组合的功能和使用场景往往容易混淆。本文旨在深入探讨 和 在 Linux 系统中的具体作用,以及它们之间的根本差异。 ——暂停程序总结如下:信号类型:进程状态:命令恢复:
2024-07-21 18:08:01 775 3
原创 初学 Linux 必知必会的 X 个知识点
(第 6 到第 8 列)表示文件或目录的最后修改时间,包括月份、日期和时间。年份会显示在较旧的文件中。
2024-07-21 16:02:10 1133
原创 Linux 内核 GPIO 用户空间接口
GPIO(General Purpose Input/Output,通用输入/输出接口),是微控制器或微处理器上的引脚,可以被编程为输入或输出,用于与外部设备进行通信。在 Linux 系统中,通过内核提供的用户空间接口,开发者能够轻松地读取、设置 GPIO 的状态,实现对外部设备的控制和监测。本文将基于 Orangepi ZERO 2开发板,探讨 Linux 内核(kernel 4.8 版本起)基于字符设备的新接口,用于访问和管理用户空间中的 GPIO 线路。
2024-07-05 11:35:00 1309
原创 浅谈 Linux 中的 core dump 分析方法
核心转储(core dump),在汉语中有时戏称为吐核,是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。在 UNIX 系统中,常将“主内存称为核心(core),因为在使用半导体作为内存材料之前,便是使用核心(core)。而核心映像(core image)就是 “进程”(process)执行当时的内存内容。
2024-07-03 11:39:28 3914 1
原创 【面试分享】嵌入式面试题常考难点之关于单链表的增删改查
为了方便介绍,本文将使用以下结构体创建链表的结点int nodeId;} NODE;i > 0;i--) {\n");exit(0);} else {NOTE]上述代码中的宏定义为 4,也就是初始链表的长度为 4 个结点。= NULL) {= NULL) {在mainint main()return 0;NULL\n");exit(0);} else {NOTE]结点 ID 需要用户手动输入。
2024-06-27 12:53:03 954
原创 【面试题分享】重现 string.h 库常用的函数
strrchr是 “string reverse character” 的缩写,全称是 “string reverse character search”。该函数用于在字符串中查找最后一次出现的指定字符,并返回一个指向该字符的指针。与strchr函数类似,如果在字符串str中找到c,则返回一个指向字符串中最后一个出现的字符c的指针;如果没有没有找到,则返回NULL。last = str;str++;上述代码依然使用了while。
2024-06-21 17:08:36 1093
原创 【经验分享】嵌入式入坑经历(选段)
本文是来自某个大一学生的一次社会实践作业,也是对我的采访内容。采访过程中,也分享了一些我个人的心路历程和嵌入式初学者的建议。我挑选一部分采访内容,也是很多大学生和初学嵌入式的小伙伴经常问的问题,供各位参考。
2024-06-05 20:57:25 1100
原创 基于 VS Code 搭建 C51 单片机开发环境
文章目录一、VS Code 安装插件 Embedded IDE二、创建 EIDE 项目(C51 单片机为例)三、配置 C51 编译器四、编译和下载五、EIDE 项目结构六、打包模板七、串口调试相信很多人写 C51、STM32 等单片机的代码,都是在 Keil μVision 上完成的。当然,这并不是我们对 Keil 情有独钟,而是大多数人启蒙单片机都是使用了 Keil,大多数的单片机教学课程都是以 Keil 作为 IDE 进行教学。正是这些原因,使 Keil 的普及度力压其他的单片机开发软件。作为一款
2024-05-22 16:51:40 7634 11
翻译 C 语言如何创建类?
在面向对象语言中,可以指定一个抽象类来保证该类不能被实例化,抽象方法和接口可以用来保证子类重写方法。.........抽象实例方法指针应初始化为NULL。
2024-05-20 15:00:00 847
原创 基于 Ubuntu 系统的 Vim 全面配置(持续更新)
leader>如果想自定义Leader键,可以在.vimrc配置文件中设置mapleader或变量。插件安装好后,用 Vim 打开某个文件,把光标移动到某个单词上,相同的单词都会突出显示,默认是下划线突出显示。不过这种下划线突出的效果几乎为零,所以一般都是设置成背景色高亮,在.vimrchi:用于定义高亮组样式。:这个是 vim-illuminate 插件的关键字,高亮组名称。ctermfg:终端前景颜色,使用 ANSI 颜色代号(0-255)或者常规颜色单词。ctermbg。
2024-05-18 18:04:04 10147 10
原创 C51 单片机编程模板及编码规范
在查阅了很多关于 C51 单片机的程序后,个人感觉目前网上有关 C51 单片机程序的质量参差不齐,很多程序的代码风格及其糟糕,可读性也很差。除了新手如此,很多写了多年程序的程序员老手也如此,也包括笔者还处于新手期的时候,在在乎程序是否可以正常运行,而忽略了程序的可读性、可维护性、可复用性以及可扩展性。由于工作时,笔者所在的公司在编码风格和规范上有及其严格的规定,所以决定总结一下我对我在编写 C51 单片机程序时的编码规范。本文以猿学社上官一号开发板(核心为 STC89C52RC)为基础而编写,编码风格为。
2024-05-14 11:39:21 2742
原创 关于我个人的编码规范(C/C++)
在当今这个代码如诗的时代,每一行字符都不再仅仅是逻辑与指令的堆砌,它们是思想的载体,是创新的脉络,是协作的桥梁。编程,这一门独特的语言艺术,不仅要求我们精准地传达机器可执行的指令,更期望我们在编织这些数字世界基石的同时,展现出一种对美的追求和对同行的尊重。正因如此,编码风格规范的重要性日益凸显,它不仅是技术严谨性的体现,更是团队协作效率与代码可维护性的重要保障。
2024-05-13 22:01:28 1367
原创 Markdown 精简教程(胎教级教程)
*Markdown **是一种轻量级标记语言,创始人为约翰·格鲁伯。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。4]这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于 Markdown 的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,目前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。如GitHubRedditDiscordDiaspora简书等,甚至还能被用来撰写电子书。
2024-05-07 19:10:11 1742 3
原创 基于 Ubuntu22.04 安装 SSH 服务
安全外壳协议(Secure Shell,简称 SSH)是一种在不安全网络上用于安全远程登录和其他安全网络服务的协议。SSH 由 IETF 的网络小组(Network Working Group)所制定,SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 最初是 UNIX 系统上的一个程序,后来又迅速扩展到其他操作平台。SSH 在正确使用时可弥补网络中的漏洞。
2024-05-06 17:42:30 15290 3
原创 VS Code 远程连接 SSH 服务器
随着技术的不断迭代更新,在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器(我曾经也是个 vimer,但是 VS Code 实在太香了),已经很难适应当下的开发效率。因此大多数开发者开始使用 VS Code 远程连接 Linux 系统来解决编程效率的问题,VS Code 本身也是个优秀的代码编辑器,可以安装很多插件来扩展功能,其中就有 SSH 工具,远程连接到 Linux 系统,可以说就是在 VS Code 上编辑代码、编译代码、运行程序,基本就是一条龙服务。
2024-05-06 17:17:14 14055 2
原创 嵌入式面试热点:链表反转——四种单链表反转方法(C语言)
使用迭代反转法实现时,初始状态忽略头结点(直接将mid指向首元结点),仅需在最后一步将头结点的next改为和mid同向即可;使用头插法或者原地逆置法实现时,仅需将要插入的结点插入到头结点之前即可;递归法并不适用反转有头结点的链表(但并非不能实现),该方法更适用于反转无头结点的链表。
2024-05-04 11:49:45 1848
原创 获取 ARM-Linux 开发板运行时各项实时数据(OrangePi ZERO 2)
在一些项目开发中,实时显示 ARM-Linux 开发板运行时的数据非常有必要,这可以帮助开发人员识别问题并进行调试。通过查看运行时数据,开发人员可以快速定位程序中的错误或异常,并及时进行修复。同时,实时数据可以用于评估系统的性能,并确定任何潜在的性能瓶颈。通过监视 CPU、内存和其他系统资源的使用情况,开发人员可以识别可能导致性能下降的问题,并采取相应的措施进行优化。在一些应用场景中,显示实时数据可以提供用户界面和交互性,使用户能够与系统进行交互并实时查看系统状态。
2024-04-23 15:24:16 1413 1
原创 Keil MDK 与 Keil C51 共存的方法
很多人学习 C51 单片机用的是 Keil 4,随后学习 STM32 用的 Keil 5,所以电脑会同时出现 Keil 4 和 Keil 5 两个软件。此时存在一个问题:两个软件同时存在时,工程项目默认选择用 Keil 5 打开,而用 Keil 4 创建的工程用 Keil 5 打开可能就会崩溃。例如,C51 的项目用 Keil 4 创建的话,直接打开就是用 Keil 5 运行,此时会有各种库文件丢失的弹窗。
2024-04-07 01:55:39 9154 3
原创 VS Code 配置 C/C++ 编程运行环境(保姆级教程)
在本教程中,将会安装 Visual Studio Code(后简称 VS Code),并在 VS Code 中安装 C/C++ 相关插件, 同时也将 VS Code 配置为使用 MinGW-W64 中的 GCC C/C++ 编译器(gcc/g++)和 GDB 调试器来创建在 Windows 上运行的程序。配置 VS Code 后,你将编写、编译、运行和调试大多数的 C/C++ 程序。本教程所有参考内容均来自。
2024-04-06 21:27:45 274158 207
原创 基于Ubuntu22.04的Samba服务器搭建教程(新手保姆级教程)
Samba 是在和系统上实现的一个免费软件,由服务器及客户端程序构成。(Server Messages Block,信息服务块)是一种在局域网上和打印机的一种,它为局域网内的不同计算机之间提供文件及打印机等资源的。SMB协议是/服务器型协议,客户机通过该协议可以访问服务器上的、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得 Samba 不但能与主机分享资源,还能与全世界的电脑分享资源。
2024-02-27 18:05:32 19801 3
原创 Ubuntu22.04 设置静态 IP 的方法
通常,在大多数网络配置中,IP 地址由路由器 DHCP 服务器动态分配。在不同情况下可能需要设置静态 IP 地址,例如配置端口转发或运行媒体服务器。为 LAN 上的设备分配静态 IP 地址最简单且推荐的方法,是在路由器上配置静态 DHCP。静态 DHCP 或 DHCP 预留是大多数路由器上的一项功能,它使 DHCP 服务器自动为特定网络设备分配相同的ip地址,每次设备从 DHCP 服务器请求地址时。这通过将静态 IP 分配给设备的唯一 MAC 地址来实现。
2024-02-27 17:56:33 18280 5
原创 基于VMware虚拟机的Ubuntu22.04系统安装和配置(新手保姆级教程)
即将学习嵌入式 Linux 系统编程的小伙伴,基本上都是在虚拟机上安装 Ubuntu 系统来学习的。但是作为初学者,可能并不知道什么是虚拟机、怎么安装虚拟机。同时,对 Linux 系统也有很多不解, 比如什么是 Linxu 系统、Linux 系统发行版该选哪个学习等等诸多问题。那么本篇博文将一一解答这些问题,并且把学习 Linux 系统编程的环境搭建好,方便后期的学习。
2024-02-27 17:48:16 49199 22
原创 ESP8266 系列——ESP-01S 控制继电器模块
ESP-01S 的核心是 ESP8266,所以需要加载头文件。前面提到继电器模块的控制引脚接在 ESP-01S 的 GPIO0上,可以用宏定义或者常量来设置这个引脚。
2023-12-27 21:06:01 17266 18
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人