首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

ESP32 入门试玩之前言

  • 24-03-03 17:40
  • 2848
  • 6753
blog.csdn.net

关于 ESP32 的更多好玩、有趣、实用的博客,请查看 ESP32 系列博客 - 目录

一次偶然的机会,去参加了由乐鑫和 Pycom 公司组织的 Hackathon 活动,并获赠了一块官方最新的 ESP32 开发板 —— ESP32-DevKitC,到家几次试玩之后,深深地被乐鑫折服,对它爱不释手。


这里写图片描述

图: ESP32-DevKitC 开发板

如上图所有,一块开发板,小巧,迷你,接口简单,功能却不简单,只需要一根普通的智能手机USB数据线,就能完成绝大多数操作。


ESP32 的优势


上手快


第一次试玩,用的官方的 esp-idf-template,一边看文档一边动手,从搭建开发环境,到把这个 demo 跑起来(板子作为一个 STA,连接到 WiFi),总共也就半个小时左右。

第一次跑起来后,隔了一段时间,又想跑个 MQTT 试试,然后在网上搜相关资源,发现了一个 ESP32 的 MQTT 组件库 espmqtt,然后通过这个库的作者提供的模板,成功地将 ESP32 接入了中国移动的物联网云平台 OneNET。整个过程耗时 3 天(其中,周末2天)。在接入的过程中也发生了两个小插曲:

  • 发现移动 OneNET 提供的 SDK 存在 2 个 bug,导致我 publish 消息时始终失败,最后分析源码,已经帮他们把 bug 解决掉了。我提交的补丁在这里: https://github.com/cm-heclouds/MQTT/pull/1
  • 发现 espmqtt 组件存在 bug,到时我 publish 质量等级为 QoS2 的消息失败(其实已经成功,但是组件判断错误,以为我 publish 没有成功),也已经帮他们把 bug 解决掉了。我提交的补丁在这里:https://github.com/tuanpmt/espmqtt/pull/6

后来又试了是官方提供的空中升级功能,虽然中间同样遇到了一点问题,但是一个晚上就解决了。

然后就是这几天,打算做个与 audio 相关的项目。然后在 ESP32 的论坛上以 audio 为关键字搜索整个论坛的帖子,发现了一个开源项目 ESP8266_MP3_DECODER。这个项目是做一个网络电台,从服务器上面获取音频数据,然后实时解码,实现播放网络上的音乐的功能。经过几天的学习研究,加上向项目作者的请教,也终于在昨晚基本实现了功能。整个过程耗时 5 天。期间也发现了该项目的 bug:

  • https://github.com/MrBuddyCasino/ESP32_MP3_Decoder/issues/6

开源


这一点是我非常看中的一个地方。现在是一个流行开源的年代,在我看来,不开源的原因很有可能是——代码太烂,不敢开源!当然,这是比较偏激的看法,但是至少说明乐鑫对它自己有信心,有勇气!从结果来看,他们的信心和勇气完全来自于他们的实力。

其实乐鑫的代码也并非完全开源,WiFi 驱动就只是赤裸裸地提供了库和头文件,这真实一个悲伤的事实!不过还好 ,它头文件的注释太规范了,以至于我都没想到去看驱动的源码。


规范的代码和注释


正如上面所说,乐鑫的头文件的注释太规范了,让我都不知道该怎么评价了,只有一句话——太具国际范儿了!

除了少部分组件是从其它地方移植过来的,只要是他们自己写的组件,代码的注释让我看得神清气爽。

而且代码风格也非常符合我的胃口,O(∩_∩)O哈哈哈~


巧妙/简洁的组织结构


ESP-IDF 中“组件”的概念真实深入我心。整个 ESP-IDF 由一个一个组件构成,各个组件之间的耦合性非常低(部分组件之间存在耦合),使整个工程的结构显得非常清晰。此外,用户在编写应用程序时,也可以完全按照组件来组织代码结构,使应用程序的结构也非常清晰。我上面提到的 ESP8266_MP3_DECODER 就是这样组织代码的。

关于组件的更多概念,请参考 ESP-IDF 的文档 构建系统。


丰富的Demo


这一点也非常赞,直接看下面的组织结构:

work@ubuntu:~/esp/esp-idf/examples$ tree -L 2 -d
.
├── bluetooth
│   ├── a2dp_sink
│   ├── ble_adv
│   ├── blufi
│   ├── controller_hci_uart
│   ├── gatt_client
│   ├── gatt_security_server
│   ├── gatt_server
│   └── gatt_server_service_table
├── ethernet
│   └── ethernet
├── get-started
│   ├── blink
│   └── hello_world
├── performance
│   ├── tcp_perf
│   └── udp_perf
├── peripherals
│   ├── adc
│   ├── gpio
│   ├── i2c
│   ├── i2s
│   ├── ledc
│   ├── pcnt
│   ├── rmt_nec_tx_rx
│   ├── sigmadelta
│   ├── spi_master
│   ├── spi_slave
│   ├── timer_group
│   ├── touch_pad_interrupt
│   ├── touch_pad_read
│   ├── uart_echo
│   └── uart_events
├── protocols
│   ├── aws_iot
│   ├── coap_client
│   ├── coap_server
│   ├── http_request
│   ├── https_request
│   ├── mdns
│   ├── openssl_client
│   ├── openssl_server
│   ├── pppos_client
│   └── sntp
├── storage
│   ├── nvs_rw_blob
│   ├── nvs_rw_value
│   ├── sd_card
│   └── wear_levelling
├── system
│   ├── deep_sleep
│   ├── ota
│   └── ulp
└── wifi
    ├── power_save
    ├── wpa2_enterprise
    └── wps

57 directories
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

学习资料


目前的学习资料不算多,请尽量多阅读阅读官方提供的文档:

  • http://www.espressif.com/zh-hans/products/hardware/esp32/resources。

另外,本人还打算将 ESP-IDF 翻译成中文文档,源码已经托管到 GitHub 上面了,热烈欢迎有兴趣的小伙伴一起加入翻译呀(尽算仅指出一个错别字也非常欢迎~~)

  • 中文源码:https://github.com/tidyjiang8/esp-idf-zh
  • 网页预览:http://iot-fans.xyz/esp/esp-idf-zh/index.html

最后,还不得不说一句,ESP-IDF 的源码是最好的学习资料!尽量多看看它的源码,以及源码中的注释,绝对让你受益匪浅!

注:本文转载自blog.csdn.net的chunhua.jiang的文章"http://blog.csdn.net/tidyjiang/article/details/71520396"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top