×

DIY ESP32模块

消耗积分:2 | 格式:zip | 大小:0.08 MB | 2022-07-04

golabs

分享资料个

PCB图如下:
poYBAGKy-pKARjjpAADEbKoIJEQ623.png
pYYBAGKy-pWAUQXWAAB1rmKrUyU731.png

poYBAGKy-pmAHPf7AADIch3T0mY882.png

成分

ESP32-WROVER-E-N16R8
乐鑫系统
× 1
1K贴片电阻 × 2
106SML035MD4
伊利诺伊电容器
× 2
16针母头 × 2
1624117-3
TE Con​​nectivity / Sigma 电感器
× 1
USB2517I-JZX-TR
微芯片技术
× 1
3.3V 5V 串口适配器模块 CH340G USB TTL UART Arduino Pro Mini Bridge × 1
AMS1117-5 × 1
TL1105KF250Q
电子开关
× 2
RV-4162-C7-32.768kHz-20PPM-TA-QC
微晶
× 1
C503B-RBS-CW0Z0AA2
科锐LED
× 1

描述

DIY ESP32 模块

ESP32 是一系列低成本、低功耗的片上系统微控制器,集成了 Wi-Fi 和双模蓝牙。ESP32 系列采用双核和单核版本的 Tensilica Xtensa LX6 微处理器、Xtensa LX7 双核微处理器或单核 RISC-V 微处理器,并包括内置天线开关,

RF balun、功率放大器、低噪声接收放大器、滤波器和电源管理模块。ESP32 由总部位于上海的中国公司 Espressif Systems 创建和开发,并由台积电使用其 40 纳米工艺制造。 [2] 它是 ESP8266 微控制器的继任者。

ESP32 功能概述

您应该已经听够了有关新芯片的信息了!从规格来看,这是未来的芯片,适用于您想要构建的任何连接。无需使用微控制器和附加 WiFi、蓝牙模块来构建连接的东西,这是您可能想要使用的唯一芯片。听起来不错?但是等等,这会带来很多编程复杂性。所以在本教程中,我将从实用性的角度来梳理一下芯片的规格。在开始之前您需要了解的事情以及真正重要的功能!

 

下面的框图显示了其中的所有内容!我们将查看这些块中的每一个,并了解它们在您的项目/产品中使用 ESP32 时的含义。

poYBAGKy-r-AWRQRAADGsPYf6-0614.jpg

双核处理器

在构建连接的东西时取消外部微控制器/Arduino....

ESP32 的前身 ESP8266 具有内置处理器。然而,由于更新 WiFi 堆栈涉及多任务,大多数应用程序使用单独的微控制器进行数据处理、连接传感器和数字输入输出。对于 ESP32,您可能不想使用额外的微控制器。ESP32 有 Xtensa 吗?双核 32 位 LX6 微处理器,运行速度高达 600 DMIPS。ESP32 将在 160Mhz 到 240MHz 的分线板和模块上运行。对于需要具有连接选项的微控制器的任何东西来说,这都是非常好的速度。

这两个内核被命名为协议 CPU (PRO_CPU) 和应用 CPU (APP_CPU)。这基本上意味着 PRO_CPU 处理器处理 WiFi、蓝牙和其他内部外围设备,如 SPI、I2C、ADC 等。APP_CPU 被排除在应用程序代码之外。这种区分是在 Espressif 互联网开发框架 (ESP-IDF) 中完成的。ESP-IDF 是芯片的官方软件开发框架。用于开发的 Arduino 和其他实现将基于 ESP-IDF。

ESP-IDF 使用 freeRTOS 在处理器之间进行切换以及它们之间的数据交换。我们已经完成了大量关于 freeRTOS 的教程,并且通过所有 ESP32 的裸机编程教程,我们将尝试详细介绍这方面。尽管功能集以芯片的销售价格来说非常好,但其复杂性是巨大的。要使该芯片得到广泛采用,需要乐鑫和社区的巨大努力。

内部存储器

处理器紧密绑定内部存储器,用于以下用途:

用于启动和核心功能的 448 KB ROM。

用于数据和指令的 520 KB 片上 SRAM。

RTC中的8 KBytes SRAM,称为RTC SLOW Memory,可以被协处理器访问

在深度睡眠模式期间。

RTC中8 KBytes SRAM,称为RTC FAST Memory,可用于数据存储;它被访问

在 RTC 从 Deep-sleep 模式启动期间由主 CPU 执行。

1 Kbit EFUSE,其中 256 位用于系统(MAC 地址和芯片配置),其余 768 位保留给客户应用,包括 Flash-Encryption 和 Chip-ID

外部闪存和 SRAM

ESP32 Wroom 等大多数模块都使用外部 Flash-W25Q32(4M 字节!)来存储应用程序代码。该芯片支持 4 x 16 MBytes 的外部 QSPI 闪存和 SRAM,具有基于 AES 的硬件加密。

ESP32 通过高速缓存访​​问外部 QSPI 闪存和 SRAM。

高达 16 MB 的外部闪存映射到 CPU 代码空间,支持 8、16 和 32 位访问。支持代码执行。

高达 8 MB 的外部 SRAM 内存映射到 CPU 数据空间,支持 8、16 和 32 位访问。闪存和 SRAM 支持数据读取。SRAM 支持数据写入。

由于处理器架构是 32 位的。内部外围设备、wifi、蓝牙、外部存储器等映射到 2^32 (4GB) 地址空间
poYBAGKy-sOAVWP0AACX-VHll7A124.jpg

还需要注意的一件有趣的事情是两个处理器都对称地映射到该地址空间。这基本上意味着,例如可以从两个 CPU 的相同地址位置访问寄存器,如下图所示。

poYBAGKy-saAGX4cAABR9RJIP8E355.jpg

因此,从项目/产品开发的角度来看这些功能,您可以取消外部微控制器/Arduino。然而,它带来了处理器之间切换和处理应用程序数据的复杂性。它不会像普通的微控制器开发那样单向。我们将在我们计划做的众多教程中对此进行探索。

无线网络

ESP32 实现 TCP/IP、完整的 802.11 b/g/n/e/i WLAN MAC 协议和 Wi-Fi Direct 规范。这意味着 ESP 32 在站(客户端)模式下使用时可以与大多数 WiFi 路由器通话。它还能够创建一个具有完整 802.11 b/g/n/e/i 的接入点。

ESP32 还支持 Wi-Fi Direct 。Wifi-Direct 是无需接入点的点对点连接的不错选择。Wifi-Direct 更容易设置,数据传输速度比蓝牙好得多。这可能用于从支持 WiFi 直连的手机/平板电脑配置基于 ESP32 的项目。在撰写本文时,ESP-IDF SDK 中没有代码示例。ESP-IDF WiFi 实现在开发中具有以下功能:

基础设施 BSS Station 模式/P2P 模式/softAP 模式支持

P2P 发现、P2P 组所有者、P2P 组客户端和 P2P 电源管理

WPA/WPA2-企业版和 WPS 驱动程序

到目前为止,我们看到的所有功能都封装在 6mm x 6mm 的 48 引脚 QFN 封装中。[此处的图片] 更好看的图片是 ESP Wroom32 分接头的引脚图。

poYBAGKy-tCAWwVoAAms3k49ZtI694.png

我们计划用 ESP32 制作几块板子。我们目前正在研究犀鸟 ESP32。它基于 Wroom32 并带有内置的单电池 LiPo 充电器。

 

ESP32 具有强大的硬件功能。高速双核处理器以及众多内置外围设备将取代互联产品中的微控制器。WiFi、Bluetooth Classic 和 BLE 是构建任何连接的最佳选择。即使项目最初不需要特定功能,也可以根据需要使用它。内置硬件加速器可实现安全代码存储并通过 TLS (SSL) 安全地连接到 Internet。除此之外,像红外线遥控器这样的“开箱即用”外围设备将被用于许多黑客攻击!

软件/固件将是 ESP32 成功的关键。它使用 freeRTOS 来处理多任务。需要彻底了解外围设备的数量、无线连接、双核处理器和整体架构,以构建可靠、响应迅速、安全和强大的产品和项目。我们计划做探索,它深入。注册以接收通知,因为我们正在使用未来的芯片构建东西

更新

你们中的一些人还对用于工业级应用的芯片的可靠性和 WiFi 性能提出了担忧。规格表明该芯片应该能够表现良好,但很大程度上取决于最终产品的硬件设计。此外,在使用以前版本的芯片时,人们抱怨重置问题,深入挖掘我们发现其中一些问题是代码结构不当。该芯片使用 RTOS 进行多任务处理,保持 WiFi 堆栈刷新。如果在代码过程中不遵循某些规则,则会导致芯片重置、wifi 重置等。在其中一个教程中,我们将尝试涵盖这方面。所以请记住,如果芯片行为不稳定,它也可能是代码。

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'DIY ESP32模块',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);