最近我设计了一个基于ESP32的微控制器开发板。我用不同的程序和Wi-Fi共享测试了该板。现在我将在本文展示原理图、电路组装并对这个DIY板进行全面审查。ESP32开发板:ESP32WiFi和蓝牙芯片是最新一代的乐鑫产品。它有一个双核32位MCU,内部集成了WiFiHT40和蓝牙/BLE4.2技术。与arduinoESP8266(上一代)相比,ESP32wifi和蓝牙芯片(也称为ESPwroom32)具有显着的性能提升。它配备了高性能双核TensilicaLX6MCU。一个核心处理高速连接,另一个用于独立应用程序开发。双核MCU频率为240MHz,计算能力为600DMIPS。ESP32芯片(ESPwroom32)集成了丰富的硬件外设,包括电容式触摸传感器、霍尔传感器、低噪声传感器放大器、SD卡接口、以太网接口、高速SDIO/SPI、UART、I2S和I2C等。特征:时钟频率高达240MHz的单核或双核32位LX6微处理器。520KB的SRAM、448KB的ROM和16KB的RTCSRAM。支持速度高达150Mbps的802.11b/g/nWi-Fi连接。支持经典蓝牙v4.2和BLE规范。34个可编程GPIO。多达18个12位SARADC通道和2个8位DAC通道串行连接包括4xSPI、2xI2C、2xI2S、3xUART。用于物理LAN通信的以太网MAC(需要外部PHY)。1个用于SD/SDIO/MMC的主控制器和1个用于SDIO/SPI的从控制器。电机PWM和多达16通道LEDPWM。安全启动和闪存加密电路设计:我在EasyEDA中制作了原理图。我把USB转串口编程芯片改成了CH340g,方便又便宜。该IC需要两个晶体管,以便在程序编译完成时将ESP32的一般模式更改为编程模式。所需组件:1)ESP32Wi-Fi模块2)Ch340g编程器IC3)10K、5k、1K电阻4)100nf电容5)BC547晶体管6)USBC型7)定制PCBPCB设计:如果您想使用设计,那么这里是下载链接,所有3个文件Gerber、BOM和CPL都是共享的。因此,您可以尝试JLCPCB的SMT服务。这里我使用蓝色,HASL表面处理,1.6mm双层PCB。我调整了组件以匹配市场上可用的原始ESP32板的参数。测试:我用7段显示器测试了这个ESP32模块,我从Instructables上的朋友那里得到了7段显示器的文件。该程序用于在LCD上显示数字。注意:我注意到我的设计可能存在问题,上传草图编程器时不会自动切换到编程模式。因此,我们必须通过按下BOOT和FLASH按钮来给外部触发。7段显示代码:#include#definePIXELS_PER_SEGMENT2//NumberofLEDsineachSegment#definePIXELS_DIGITS1//NumberofconnectedDigits#definePIXELS_PIN2//GPIOPinAdafruit_NeoPixelstrip=Adafruit_NeoPixel(PIXELS_PER_SEGMENT*7*PIXELS_DIGITS,PIXELS_PIN,NEO_GRB+NEO_KHZ800);//PixelArrangement/*afbgecd*///Segmentarraybytesegments[7]={//abcdefg0b0000001,//Segmentg0b0000100,//Segmente0b0001000,//Segmentd0b0010000,//Segmentc0b0100000,//Segmentb0b1000000,//Segmenta0b0000010//Segmentf};//Digitsarraybytedigits[10]={//abcdefg0b1111110,//00b0110000,//10b1101101,//20b1111001,//30b0110011,//40b1011011,//50b1011111,//60b1110000,//70b1111111,//80b1110011//9};//ClearallthePixelsvoidclearDisplay(){for(inti=0;istrip.setPixelColor(i,strip.Color(0,0,0));}strip.show();}voidsetup(){strip.begin();}voidloop(){//disp_Seg(200);//Cyclethroughallsegments(DelayTime)disp_Digits(1000);//Showdigitsfrom0-9(DelayTime)//disp_Animation();//ShowsomeAnimationswiththesegments//disp_CountUP(500,450);//CountnumbersinAscendingorder(NUMBER,DelayTime)//disp_CountDOWN(500,250);//CountnumbersinDescendingorder(NUMBER,DelayTime)}voiddisp_Seg(intwait){clearDisplay();for(intd=0;dfor(inti=6;i>0;i--){for(intn=0;nwriteSegment(n,i);}strip.show();delay(wait);}}}voiddisp_Digits(intwait){clearDisplay();for(inti=0;ifor(intn=0;nwriteDigit(n,i);}strip.show();delay(wait);}}voiddisp_CountUP(intnum,intwait){clearDisplay();for(inti=0;iwriteDigit(0,(i/100)%10);writeDigit(1,(i/10)%10);writeDigit(2,(i/1)%10);strip.show();delay(wait);}}voiddisp_CountDOWN(intnum,intwait){clearDisplay();for(inti=num;i>=0;i--){writeDigit(0,(i/100)%10);writeDigit(1,(i/10)%10);writeDigit(2,(i/1)%10);strip.show();delay(wait);}}voiddisp_Animation(){clearDisplay();//UP-DOWNfor(inti=0;ifor(intn=0;nstrip.show();delay(100);for(intn=0;nstrip.show();delay(100);for(intn=0;nstrip.show();delay(100);for(intn=0;nstrip.show();delay(100);for(intn=0;nstrip.show();delay(100);}//LEFT-RIGHTfor(inti=0;ifor(intn=0;nwriteSegment(n,6);strip.show();delay(150);}for(intn=PIXELS_DIGITS-1;n>=0;n--){writeSegment(n,3);strip.show();delay(150);}clearDisplay();for(intn=0;nwriteSegment(n,1);strip.show();delay(150);}for(intn=PIXELS_DIGITS-1;n>=0;n--){writeSegment(n,4);strip.show();delay(150);}clearDisplay();}//ZIG-ZAGfor(inti=0;ifor(intn=0;nwriteSegment(n,6);strip.show();delay(125);clearDisplay();writeSegment(n,1);strip.show();delay(125);clearDisplay();writeSegment(n,4);strip.show();delay(125);clearDisplay();writeSegment(n,3);strip.show();delay(125);clearDisplay();}}}voidwriteDigit(intindex,intval){bytedigit=digits[val];for(inti=6;i>=0;i--){intoffset=index*(PIXELS_PER_SEGMENT*7)+i*PIXELS_PER_SEGMENT;uint32_tcolor;if(digit&0x01!=0){if(val==1)color=strip.Color(50,0,0);if(val==2)color=strip.Color(50,50,0);if(val==3)color=strip.Color(50,0,50);if(val==4)color=strip.Color(0,50,0);if(val==5)color=strip.Color(0,50,50);if(val==6)color=strip.Color(0,0,50);if(val==7)color=strip.Color(50,25,0);if(val==8)color=strip.Color(25,5,75);if(val==9)color=strip.Color(75,25,5);if(val==0)color=strip.Color(5,75,25);}elsecolor=strip.Color(0,0,0);for(intj=offset;jstrip.setPixelColor(j,color);}digit=digit>>1;}}voidwriteSegment(intindex,intval){byteseg=segments[val];for(inti=6;i>=0;i--){intoffset=index*(PIXELS_PER_SEGMENT*7)+i*PIXELS_PER_SEGMENT;uint32_tcolor;if(seg&0x01!=0){if(val==0)color=strip.Color(50,0,0);if(val==1)color=strip.Color(0,50,50);if(val==2)color=strip.Color(0,50,0);if(val==3)color=strip.Color(50,0,50);if(val==4)color=strip.Color(50,50,50);if(val==5)color=strip.Color(0,0,50);if(val==6)color=strip.Color(50,50,0);}elsecolor=strip.Color(0,0,0);for(intj=offset;jstrip.setPixelColor(j,color);}seg=seg>>1;}}可能会遇到的故障:1)如果您不使用SMT服务,请正确制作焊点。2)焊接时不要过度加热Wi-Fi模块。3)如果微控制器没有切换到编程模式,则重新启动并使用触觉按钮闪烁控制器。如果您对此项目有任何想法、意见或问题,请在下方留言。以上内容翻译自网络,原作者:ElectroBOY,如涉及侵权,可联系删除。