1. ESP32-S2简介

ESP32-S2 是一款安全可靠的低功耗、高集成 2.4 GHz Wi-Fi 系统级芯片 (SoC),支持 Wi-Fi HT40 和多达 43 个 GPIO。ESP32-S2 搭载 Xtensa® 32-bit LX7 单核处理器,工作时钟频率高达 240 MHz。

ESP32-S2 具有行业领先的低功耗管理与射频性能、IO 功能和安全性能,是物联网、移动设备、可穿戴电子设备、智能家居等各种应用的理想选择。ESP32-S2 集成了 240 MHz Xtensa® 单核处理器,无需外接任何 MCU 即可独立满足各种互联设备的需求。

ESP32-S2 仍然沿用了乐鑫已经非常成熟的软件开发框架 ESP-IDF,可以实现性能和成本的平衡,为市场带来更高速、更安全的物联网连接解决方案。

CPU 和存储

  • Xtensa® 32-bit LX7 单核处理器
  • 7 级流水线架构
  • 时钟频率高达 240 MHz
  • 超低功耗协处理器
  • 320 KB SRAM,128 KB ROM,16 KB RTC 内存
  • 最大可支持 1 GB 外部 flash and SRAM
  • 独立的指令和数据 cache

Wi-Fi(连接)

  • 支持 IEEE 802.11 b/g/n 协议
  • 1x1 发送与接收
  • 支持 HT40,数据速率高达 150 Mbps
  • 支持 TCP/IP 联网、ESP-MESH 联网及 TLS 1.0、TLS 1.1、TLS1.2 等各种 - Wi-Fi 网络协议
  • 支持正常 Wi-Fi 数据包的 TOF 测距

IO 外设

  • 43 个 GPIO 口
  • 14 个电容式传感 IO
  • 支持 SPI、I2C、I2S、UART、ADC/DAC 和 PWM 等各种标准外设
  • 支持 LCD 接口(8-bit 并口 RGB、8080、6800 接口)
  • 支持 8-/16-bit DVP 图像传感器接口,最高时钟频率支持到 40 MHz
  • 支持全速 USB OTG

安全

  • 基于 RSA-3072 的可信应用程序引导
  • 基于 AES256-XTS 的 flash 加密技术,保护静止的敏感数据
  • 4096-bit eFuse 存储,其中 2048 bit 可用于应用程序
  • 支持数字签名外设,可用于私钥的安全存储和 RSA 签名的生成

最优功耗

  • ESP32-S2 通过选择时钟频率、占空比、Wi-Fi 操作模式和内部组件的单独电源控制,支持精细分辨率的电源控制。
    当启用 Wi-Fi 时,芯片只在需要时自动开启或关闭射频收发器,从而降低系统的- 总功耗。
  • 在 1% 占空比电流消耗下,超低功耗协处理器的空载模式为 5 μA ,空载模式为 7 μA。
  • 改进了 Wi-Fi 连接和 MCU 空闲模式的功耗。

我选用的ESP32-S2板卡为下图,它将USB和TTL下载都用Type-C接口引出,用来调试ESP32-S2的USB功能也是非常的方便:

2.环境搭建

2.1 下载板卡包

从Github上下载 arduino-esp32 的 esp32s2 分支:【地址】,下载完成后进行解压。

2.2 更新板卡包中ESP32-S2的下载工具

进行解压后,打开文件夹,可以发现目录如下:

然后进入tools目录,目录如下:

双击get.exe文件会弹出命令窗口,等待上几分钟,下载完成后窗口会自动关闭。

2.3 将板卡支持包放入Arduino

再将板卡支持包放入Arduino之前,首先你之前安装过ESP32的开发环境, 如果没有安装过,请跟着流程走:

  1. 首先下载ESP32的板卡包【地址】,解压后并按照下图目录放好,并且复制一份,并修改文件名为arduino-esp32-esp32s2,其中红色框出来的为你的Arduino软件的安装目录,如果不懂什么是安装目录,请自行搜索:
  2. 接下来进入D:\Arduino\hardware\espressif\arduino-esp32-esp32s2目录,并将刚2.2步骤的文件夹下蓝色标记出来的文件拷贝到此目录中,如果弹出来 需要替换文件 ,点击全部替换即可,如果按照以上方式来的话,应该不会弹出。

3. 测试程序

我的板子上有一个2020封装的WS2812灯珠,根据板子原理图查到引脚为WS2812->IO18,现在使用【FastLED】库点亮板载灯试试,先查看IO口的宏定义,其文件在D:\Arduino\hardware\espressif\arduino-esp32-esp32s2\variants\esp32s2\pins_arduino.h

#ifndef Pins_Arduino_h
#define Pins_Arduino_h#include <stdint.h>#define EXTERNAL_NUM_INTERRUPTS 46
#define NUM_DIGITAL_PINS        48
#define NUM_ANALOG_INPUTS       20#define analogInputToDigitalPin(p)  (((p)<20)?(esp32_adc2gpio[(p)]):-1)
#define digitalPinToInterrupt(p)    (((p)<48)?(p):-1)
#define digitalPinHasPWM(p)         (p < 46)static const uint8_t TX = 43;
static const uint8_t RX = 44;static const uint8_t SDA = 8;
static const uint8_t SCL = 9;static const uint8_t SS    = 34;
static const uint8_t MOSI  = 35;
static const uint8_t MISO  = 37;
static const uint8_t SCK   = 36;static const uint8_t A0 = 1;
static const uint8_t A1 = 2;
static const uint8_t A2 = 3;
static const uint8_t A3 = 4;
static const uint8_t A4 = 5;
static const uint8_t A5 = 6;
static const uint8_t A6 = 7;
static const uint8_t A7 = 8;
static const uint8_t A8 = 9;
static const uint8_t A9 = 10;
static const uint8_t A10 = 11;
static const uint8_t A11 = 12;
static const uint8_t A12 = 13;
static const uint8_t A13 = 14;
static const uint8_t A14 = 15;
static const uint8_t A15 = 16;
static const uint8_t A16 = 17;
static const uint8_t A17 = 18;
static const uint8_t A18 = 19;
static const uint8_t A19 = 20;static const uint8_t T1 = 1;
static const uint8_t T2 = 2;
static const uint8_t T3 = 3;
static const uint8_t T4 = 4;
static const uint8_t T5 = 5;
static const uint8_t T6 = 6;
static const uint8_t T7 = 7;
static const uint8_t T8 = 8;
static const uint8_t T9 = 9;
static const uint8_t T10 = 10;
static const uint8_t T11 = 11;
static const uint8_t T12 = 12;
static const uint8_t T13 = 13;
static const uint8_t T14 = 14;static const uint8_t DAC1 = 17;
static const uint8_t DAC2 = 18;#endif /* Pins_Arduino_h */

然后打开Arduino软件,选择开发板:

从上表查到IO18的定义为:

static const uint8_t A17 = 18;
static const uint8_t DAC2 = 18;

因此我们需要在程序中使用A17或者DAC2来作为WS2812的输出口:

#include <FastLED.h>FASTLED_USING_NAMESPACE// FastLED "100-lines-of-code" demo reel, showing just a few
// of the kinds of animation patterns you can quickly and easily
// compose using FastLED.
//
// This example also shows one easy way to define multiple
// animations patterns and have them automatically rotate.
//
// -Mark Kriegsman, December 2014#if defined(FASTLED_VERSION) && (FASTLED_VERSION < 3001000)
#warning "Requires FastLED 3.1 or later; check github for latest code."
#endif//#define DATA_PIN    A17     //IO口
#define DATA_PIN    DAC2    //IO口
#define LED_TYPE    WS2811
#define COLOR_ORDER GRB
#define NUM_LEDS    1       //灯珠数目
CRGB leds[NUM_LEDS];#define BRIGHTNESS          96
#define FRAMES_PER_SECOND  120void setup() {delay(3000); // 3 second delay for recovery// tell FastLED about the LED strip configurationFastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);//FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);// set master brightness controlFastLED.setBrightness(BRIGHTNESS);
}// List of patterns to cycle through.  Each is defined as a separate function below.
typedef void (*SimplePatternList[])();
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm };uint8_t gCurrentPatternNumber = 0; // Index number of which pattern is current
uint8_t gHue = 0; // rotating "base color" used by many of the patternsvoid loop()
{// Call the current pattern function once, updating the 'leds' arraygPatterns[gCurrentPatternNumber]();// send the 'leds' array out to the actual LED stripFastLED.show();  // insert a delay to keep the framerate modestFastLED.delay(1000/FRAMES_PER_SECOND); // do some periodic updatesEVERY_N_MILLISECONDS( 20 ) { gHue++; } // slowly cycle the "base color" through the rainbowEVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically
}#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0]))void nextPattern()
{// add one to the current pattern number, and wrap around at the endgCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns);
}void rainbow()
{// FastLED's built-in rainbow generatorfill_rainbow( leds, NUM_LEDS, gHue, 7);
}void rainbowWithGlitter()
{// built-in FastLED rainbow, plus some random sparkly glitterrainbow();addGlitter(80);
}void addGlitter( fract8 chanceOfGlitter)
{if( random8() < chanceOfGlitter) {leds[ random16(NUM_LEDS) ] += CRGB::White;}
}void confetti()
{// random colored speckles that blink in and fade smoothlyfadeToBlackBy( leds, NUM_LEDS, 10);int pos = random16(NUM_LEDS);leds[pos] += CHSV( gHue + random8(64), 200, 255);
}void sinelon()
{// a colored dot sweeping back and forth, with fading trailsfadeToBlackBy( leds, NUM_LEDS, 20);int pos = beatsin16( 13, 0, NUM_LEDS-1 );leds[pos] += CHSV( gHue, 255, 192);
}void bpm()
{// colored stripes pulsing at a defined Beats-Per-Minute (BPM)uint8_t BeatsPerMinute = 62;CRGBPalette16 palette = PartyColors_p;uint8_t beat = beatsin8( BeatsPerMinute, 64, 255);for( int i = 0; i < NUM_LEDS; i++) { //9948leds[i] = ColorFromPalette(palette, gHue+(i*2), beat-gHue+(i*10));}
}void juggle() {// eight colored dots, weaving in and out of sync with each otherfadeToBlackBy( leds, NUM_LEDS, 20);byte dothue = 0;for( int i = 0; i < 8; i++) {leds[beatsin16( i+7, 0, NUM_LEDS-1 )] |= CHSV(dothue, 200, 255);dothue += 32;}
}

点击上传程序,等待程序上传成功,即可发现LED布灵布灵的闪起来了呢:

4. 总结

到此我们的安装过程已经完成,可以进行ESP32-S2的开发了,但是现在很多库还没有对ESP32-S2进行适配,比如我尝试了下u8g2库去驱动OLED,就没有成功,因此还是有很多问题的哦,期待各开源库的完善~

《ESP32-S2 笔记》 Arduino 上的开发环境搭建相关推荐

  1. 【S32K】S32K144入门笔记(1) 从零开始进行开发环境搭建

    0.目录 文章目录 0.目录 1. 起因 2. 开发环境 2.1 软件开发环境选择 2.2 S32DS 2.2.1 下载&安装 2.2.2 Demo工程 2.3 硬件开发板选择 2.3.1 硬 ...

  2. 【Android基础笔记01】Android开发环境搭建和HelloWorld

    最近手头项目3.0版本要上线了, 没有那么多工作压力了, 抽空看了看之前在云笔记上做的笔记 都是一些基础知识 给大家分享出来吧 一.什么是Android?[了解 ] Android(中文俗称安卓)是一 ...

  3. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程

    LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...

  4. 树莓派开发笔记(一) 开发环境搭建

    开发环境搭建 开发环境搭建 硬件准备 系统烧录 系统配置 基本配置 其他配置 安装开发软件 开发环境搭建 硬件准备 SD-Card 树莓派(本人使用的英国版 RS 3B) 5V 2A 供电 Windo ...

  5. ESP32+Arduino+VS code开发环境搭建+BLINK

    关于ESP32开发工具 之前一直都有在看关于这个芯片的内容,这个国产的芯片有两种开发方式,一个是内置的ESP-IDF,一个是Arduino开发方式.之前一直没搞懂这两者的区别. 后来发现其实说白了ES ...

  6. (SenchaTouch+PhoneGap)开发笔记(2)开发环境搭建二

    一.Java环境和Android SDK  1.安装JDK和JRE JRE会在JDK安装完成后自动出现安装界面. 安装完成后,设置环境变量 JAVA_HOME    D:\Program Files\ ...

  7. nrf52840开发笔记(一)------开发环境搭建

    0 目录 暂无 前言 目标是搭建nrf52840单片机的运行环境,硬件用的是官方提供的DEMO,所以不涉及硬件问题,主要是IDE的建立.使用的是KEIL5.其中会涉及nrf52840常用的开发工具以及 ...

  8. cocos2dx3.3在Win7(64位)上Android开发环境搭建(提要)

    一.使用的工具 Win7 64位 jdk1.8.0_25 (jdk-8u25-windows-x64.exe) adt-bundle-windows-x86_64-20140702 (adt-bund ...

  9. MAC OS X10 10上Android开发环境搭建

    由于Google官方已经不提供Adt-Bundle下载了,主推AndroidStudio.可以从这个链接下载http://www.androiddevtools.cn.上面不光有adt-bundle, ...

最新文章

  1. UITableView——reloadData与reloadSection性能比较
  2. Spring Cloud Gateway 原生的接口限流该怎么玩
  3. 软件项目管理0714:简化的必要性
  4. is transfer = C ( only read dynamically) not supported in one order scenario
  5. Ghost安装之后,键盘出现字符出现乱码
  6. 【免费毕设】PHP论文格式化系统(系统+论文)
  7. LeetCode 458. 可怜的小猪(信息论方法)
  8. Machine Learning - III. Linear Algebra Review线性代数 (Week 1, Optional)
  9. python3 centos7-linux 安装
  10. 背包之01背包、完全背包、多重背包详解
  11. 如何解决Flash “此Flash Player 与您的地区不相容,请重新安装Flash”的提示?
  12. gitbook生成目录toc
  13. 钉钉邮箱登录入口_清博舆情钉钉小程序上线 ,五大优势三大亮点助力工作更高效...
  14. matlab 常值函数,matlab常用数值函数大全
  15. jsp中获取不到servlet中的ArrayList
  16. Java技术栈学习路线
  17. 中国新四大发明诞生 主打吃逛买以互联网为主
  18. 闲鱼卖家近期卖出后纠纷4次,请谨慎交易怎么办?
  19. 公民身份号码 校验码 检证程序
  20. 开启火狐浏览器的账号密码导入功能

热门文章

  1. 麦包包:如何靠电子商务建立品牌
  2. python运行电脑要求_别这样直接运行python命令,否则电脑等于“裸奔”
  3. cas入门之二十五:ticket清理器
  4. SpringBoot+vue+elementui实现前后端分离的化妆品销售商城网站
  5. 基于Java的电梯模拟系统
  6. 那些常用的HTML标签
  7. GCP 上的人工智能实用指南:第三、四部分
  8. 非遗苏绣惊艳亮相央视,科技蓝海助力苏绣传承!
  9. C#检测U盘是否插入
  10. 对前端程序员非常友好的人脸检测接口——face-api.js的介绍和demo