使用的芯片相同,但不同模组的Flash大小、天线的材质、模组尺寸是不同的。是的,芯片到模组的演变经历了“定制化、专用化”的过程。模组最终会嵌入到电视、电冰箱、空调等不同的产品中去,对模组的存储空间大小、模组天线材质、模组的大小要求当然不一样。

通常,模组的研发是面向“产品”的,因为,模组研发的最终目的是将模组嵌入到目标产品(如,电视、电冰箱、空调)。ESP32-D0WD芯片提供了实现蓝牙和WiFI功能的内部集成电路,但A公司只需要WiFi功能,为满足A公司的需求,仅将ESP32-D0WD芯片的与WiFi功能相关的引脚引出,制作出一款“WiFi”模组(尽管ESP32-D0WD芯片也可以实现蓝牙功能,但A公司不需要,因此不对外提供ESP32蓝牙功能的接口了)。同理,B公司只需要蓝牙功能,为满足B公司的需求,仅将ESP32芯片的与蓝牙功能相关的引脚引出,制作出一款“蓝牙”模组。(当然,你可以选择同时实现蓝牙和WiFi功能,这样引出的引脚更多,模组体积可能更大,money也更多,所以,成本、功能、尺寸都是需要考虑的因素)

同一模组,可以嵌入到多个不同型号的开发板中。同一型号的开发板也可以使用不同的模组(他们只是名字一样,I/O数量、天线材质等不一样)。因此,模组与开发板(确切的说是开发板型号,不是开发板实体)的对应关系是多对多的关系。

(不同公司需要的I/O种类和数量不同,需要的UI方式也不同,有的需要显示屏,有的只需要LED灯就够了)

实际上,芯片只是“定义”了引脚功能,并未将引脚引出到可供连接的铜箔上,模组将部分引脚引出以供产品连接。

不同模组的功能可能不同,因为他们需要的资源不同,因此引出的引脚不同。

模组是面向“产品”的,最终目的是嵌入到产品内部,成为执行特定功能的模块(这也是模组概念的由来,模组,即执行特定的功能的模块,用于组合到产品中使用)

开发板是面向“测试学习”的,是一个假定的“产品”(你打开一个空调,他内部连接的是一个模组,不是一个开发板),是针对嵌入到其内部的模组,提供快速地学习了解,测试模组性能的工具。因此,开发板可看作模组到产品的一个“中间临时变量”,如下图所示:

esp32s和esp32d_开发板


我们很难一次性写出完全正确的应用程序代码,因此,尽管最终用到产品中去的是“模组”,但开发板的存在依然重要,在写应用程序时,将错误信息打印到开发板的显示屏上、或者通过LED灯显示程序出错的位置将大大加快开发的进程,保证程序的健壮性。在确保应用程序无误后,去掉代码中的“打印语句”(最终产品可能是一个无显示屏、无LED灯的设备),然后,将代码批量烧录到模组中,就得到执行我们指定应用功能的模组了,最后一步就是嵌入到产品中,成为执行一定功能的模块)。

软件开发包SDK与芯片、模组、开发板的对应关系是一对多的,在开发包(ESP-IDF中)针对的是某款芯片的开发,是芯片功能实现的一个完备软件集(如,开发包中包含HTTP协议实现的软件,而你不需要用HTTP,忽略它,只配置使用自己需要的包即可),因此对于不同的开发板选择对应芯片的开发包即可。

引用文章:芯片、模组、开发板的区别与联系-结合ESP32浅谈