ESP32-IDF开发之旅 基础篇① 走入ESP32-IDF

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2024-11-27 ❤️
  • ❤️ 本篇更新记录 2024-11-27 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!

1. 前言

欢迎大家来到ESP32-IDF的世界,从现在开始,博主将以自己的学习历程来讲述是如何入门学习ESP32-IDF,分享自己的学习经验。

熟悉博主的同学都知道,博主作为一个重度Arduino ESP8266 ESP32的爱好者,平常更多的是接触和使用Arduino For ESP平台来开发ESP8266和ESP32,也写了非常多这方面的教学教程。但是,随着乐鑫科技推出了ESP-IDF开发方式(我理解Arduino开发方式是在IDF上面架设了一层对于大多数人来说简单易用的开发方式),该方式已经成为商用产品的标配,在开发层面上具有更多的可能性,毕竟越底层的技术可自定义性越强。

引用官方的定义:

ESP-IDF 是乐鑫官方的物联网开发框架,适用于 ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列 SoC。它基于 C/C++ 语言提供了一个自给自足的 SDK,方便用户在这些平台上开发通用应用程序。ESP-IDF 目前已服务支持数以亿计的物联网设备,并已开发构建了多种物联网产品,例如照明、消费电子大小家电、支付终端、工控等各类物联网设备。它具有一下优势:

  • 免费开源
    ESP-IDF 相关资源已在 GitHub 上免费开放(意味着我们可以直接下载所有源码和学习资料)。用户可在 Apache 2.0 许可下以源代码形
  • 专业稳定
    ESP-IDF 具有清晰、严格的发布流程和支持策略,确保用户选择使用稳定的发布版本,并可持续获得适用于其应用的重要修复程序。每个稳定的发布版本均经过严格的测试流程,以确保版本稳定,客户可快速实现量产(所谓量产,也就是商用)
  • 功能丰富的软件组件
    ESP-IDF 集成了大量的软件组件,包括 RTOS外设驱动程序网络栈多种协议实现技术以及常见应用程序的使用助手。它提供了典型应用程序所需的大部分构建块,用户在开发应用时只需专注于业务逻辑即可。 ESP-IDF 不仅具有免费开源的开发工具,还支持 EclipseVSCode(推荐使用) 等 IDE,确保其易于开发人员使用。
    在这里插入图片描述
  • 丰富的文档和示例资源
    ESP-IDF 提供详尽的软件组件使用和设计文档,有助于开发人员充分理解 ESP-IDF 功能,并从中挑选最适合构建其应用程序的模块。ESP-IDF 包含 100 多个示例(直接运行案例看效果),详细说明了其组件及硬件外设的功能和用法。它们经过了严格的测试和维护,是用户开启应用开发的有效参考。

在开发生态来说,已经有相当完善的开发体系,所以值得入手学习一下,特别是以后会从事这一块工作的同学。

2. 学习方法

对于技术人员来说,学习任何一门技术,最好的学习方法就是看官网、文档和源码。

  • 官网

https://www.espressif.com.cn/zh-hans/products/sdks/esp-idf
官网往往是很多资料的统一导航入口
在这里插入图片描述

  • 文档

文档,直接看官方文档,没有之一。
https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.1/esp32/get-started/index.html
在这里插入图片描述
这里已经提供了详细的使用说明,强烈建议一定要认真读一遍。

  • 源码

直接去到乐鑫科技的ESP-IDF github仓库,https://github.com/espressif/esp-idf
直接git clone https://github.com/espressif/esp-idf.git
clone源码下来有一个好处就是可以切换对应的稳定版本。
在这里插入图片描述
当然如果不知道git是什么,也可以直接下载zip源码文件下来。
在这里插入图片描述
截止到2024.11.27,最新稳定版本是V5.3.1
在这里插入图片描述
同时,我们也可以知道乐鑫科技关于ESP-IDF的版本发布计划。
在这里插入图片描述
以及对应版本所支持的芯片模组
在这里插入图片描述
版本越高,支持的芯片模组越多(当然一般新版本总会有一些小bug需要修复,但是对于初学者来说,还是建议学习新版本)。

3. 学习过程

博主这里主要分三步走:

  • 第一步:先搭建好开发环境,主要就是采用VSCode + ESP-IDF插件方式,然后运行一下官方自带的hello world案例,确保整体环境搭建是没问题的。
  • 第二步:后期的知识导入都是按照运行案例看效果->分析案例使用方法->深入源码细看逻辑的思路,主要还是网络编程tcp/http/mqtt等等,以及会慢慢接入到云平台。
  • 第三步:会把之前做好的arduino案例移植到IDF平台,做到把知识运用到实际解决问题上。

4. 学习寄望

在信息技术飞快发展的今天,作为一名开发者,需要时刻保持不断学习的态度和能力。
通过这个系列的学习,希望能够深入掌握在ESP-IDF平台下掌握ESP32芯片的特性和应用,提供自己的编程能力和解决问题的能力。
当然,任何的学习总要给自己定一个目标(亿个小目标☝️)。

比如说,我要在ESP-IDF上实现一个智能家居作品。
比如说,我要把它当作我一个找工作的能力项,一个升职加薪的小点。
比如说,我看着别人会,我也想学习。
总之,不管是什么,学习就对了,过程是残酷的,结果是美好的。

在学习的道路上,不断探索,不断突破,成为更好的自己。
博主是这样的,相信大家也是一样的。一起加油!

03-08
### Inverse Document Frequency in Information Retrieval Inverse Document Frequency (IDF) measures how important a term is across all documents within a corpus. Less frequent terms have higher importance because they can help distinguish one document from another more effectively than common words like "the" or "is". The formula to compute IDF involves taking the logarithm of the total number of documents divided by the number of documents containing the specific term: \[ \text{IDF}(t) = \log\left(\frac{\lvert D \rvert}{\lvert {d \in D : t \in d} \rvert}\right) \] where \(|D|\) represents the total count of documents while \(|d \in D : t \in d|\) indicates the quantity of those that contain term \(t\) [^2]. In practice, this means if many documents include a particular word, its IDF value will be low since it does not provide much discriminatory power between different texts. Conversely, rare but significant keywords receive high scores due to their ability to uniquely characterize certain pieces of text. For instance, consider an academic paper discussing machine learning algorithms; technical jargon such as 'neural networks' would likely appear infrequently compared with general English vocabulary items making these specialized phrases highly valuable when indexing or searching through large collections of scientific literature [^3]. #### Example Code Implementation Below shows Python code implementing basic calculation logic for computing IDF values given some sample data set represented as list-of-lists where inner lists represent individual documents composed of tokenized strings. ```python import math from collections import Counter def calculate_idf(documents): N = len(documents) # Count occurrences per term over entire dataset global_term_counts = sum((Counter(d) for d in documents), start=Counter()) idfs = {} for term in global_term_counts: df = sum(1 for doc in documents if term in doc) idf = math.log(N / float(df)) idfs[term] = idf return idfs ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机菜鸟哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值