ESP32-S2-DEVKITC-1R ボード情報

キーコンポーネント説明
ESP32-S2-SOLOまたはESP32-S2-SOLO-UESP32-S2-SOLOとESP32-S2-SOLO-Uは、2つの汎用Wi-Fiモジュールです。ESP32-S2-SOLOにはオンボードPCBアンテナが付属しており、ESP32-S2-SOLO-Uには外部アンテナ用のコネクタが付属しています。ボード上のESP32-S2-SOLOまたはESP32-S2-SOLO-Uには、4 MBのフラッシュ、または4MBのフラッシュと2MBのPSRAMがチップに埋め込まれている場合があります。
3.3V電源オンLEDUSB電源がボードに接続されるとオンになります。
USB-UARTブリッジ単一のUSB-UARTブリッジチップは、最大3Mbpsの転送速度を提供します。
ピンヘッダー使用可能なすべてのGPIOピン(フラッシュ用のSPIバスを除く)は、ボード上のピンヘッダーに分割されています。詳細については、ヘッダーブロックを参照してください。
ESP32-S2USBポートESP32-S2フルスピードUSBOTGインターフェース、USB1.1仕様に準拠。このインターフェイスは、ボードへの電源供給、チップへのアプリケーションのフラッシュ、およびUSB1.1プロトコルを使用したチップとの通信に使用されます。
リセットボタンこのボタンを押して、システムを再起動します。
起動ボタンダウンロードボタン。ブートを押したままリセットを押すとシリアルポートを介してファームウェアをダウンロードするためのファームウェアダウンロードモードが開始されます。
USB-UARTポートボードへの電源供給、チップへのフラッシュアプ​​リケーション、およびオンボードUSB-UARTブリッジを介したチップとの通信に使用されるMicro-USBポート。
RGB LEDGPIO18によって駆動されるアドレス指定可能なRGBLED。
5 V〜3.3 V LDO5V電源を3.3V出力に変換するパワーレギュレータ。

J1ピンヘッダー(I:入力, O:出力, T:高インピーダンス)

ピンNo名前タイプ機能
13V3電源3,3v電源
23V3電源3,3v電源
3RSTICHIP_PU(RESETスイッチ)
44I / O / TRTC_GPIO4、GPIO4、TOUCH4、ADC1_CH3
55I / O / TRTC_GPIO5、GPIO5、TOUCH5、ADC1_CH4
66I / O / TRTC_GPIO6、GPIO6、TOUCH6、ADC1_CH5
77I / O / TRTC_GPIO7、GPIO7、TOUCH7、ADC1_CH6
815I / O / TRTC_GPIO15、GPIO15、U0RTS、ADC2_CH4、XTAL_32K_P
916I / O / TRTC_GPIO16、GPIO16、U0CTS、ADC2_CH5、XTAL_32K_N
1017I / O / TRTC_GPIO17、GPIO17、U1TXD、ADC2_CH6、DAC_1
1118I / O / TRTC_GPIO18、GPIO18、U1RXD、ADC2_CH7、DAC_2、CLK_OUT3、RGB LED(RGB LED)
128I / O / TRTC_GPIO8、GPIO8、TOUCH8、ADC1_CH7
133I / O / TRTC_GPIO3、GPIO3、TOUCH3、ADC1_CH2
1446IGPIO46
159I / O / TRTC_GPIO9、GPIO9、TOUCH9、ADC1_CH8、FSPIHD
1610I / O / TRTC_GPIO10、GPIO10、TOUCH10、ADC1_CH9、FSPICS0、FSPIIO4
1711I / O / TRTC_GPIO11、GPIO11、TOUCH11、ADC2_CH0、FSPID、FSPIIO5
1812I / O / TRTC_GPIO12、GPIO12、TOUCH12、ADC2_CH1、FSPICLK、FSPIIO6
1913I / O / TRTC_GPIO13、GPIO13、TOUCH13、ADC2_CH2、FSPIQ、FSPIIO7
2014I / O / TRTC_GPIO14、GPIO14、TOUCH14、ADC2_CH3、FSPIWP、FSPIDQS
215V電源5V電源
22GGND接地

J3ピンヘッダー

ピンNo名前タイプ働き
1GG接地
2TXI / O / TU0TXD、GPIO43、CLK_OUT1(USB to UARTコネクタに接続)
3RXI / O / TU0RXD、GPIO44、CLK_OUT2(USB to UARTコネクタに接続)
41I / O / TRTC_GPIO1、GPIO1、TOUCH1、ADC1_CH0
52I / O / TRTC_GPIO2、GPIO2、TOUCH2、ADC1_CH1
642I / O / TMTMS、GPIO42
741I / O / TMTDI、GPIO41、CLK_OUT1
840I / O / TMTDO、GPIO40、CLK_OUT2
939I / O / TMTCK、GPIO39、CLK_OUT3
1038I / O / TGPIO38、FSPIWP
1137I / O / TSPIDQS、GPIO37、FSPIQ
1236I / O / TSPIIO7、GPIO36、FSPICLK
1335I / O / TSPIIO6、GPIO35、FSPID
140I / O / TRTC_GPIO0、GPIO0(BOOTスイッチ)
1545I / O / TGPIO45
1634I / O / TSPIIO5、GPIO34、FSPICS0
1733I / O / TSPIIO4、GPIO33、FSPIHD
1821I / O / TRTC_GPIO21、GPIO21
1920I / O / TRTC_GPIO20、GPIO20、U1CTS、ADC2_CH9、CLK_OUT1、USB_D+(USBコネクタに接続)
2019I / O / TRTC_GPIO19、GPIO19、U1RTS、ADC2_CH8、CLK_OUT2、USB_D-(USBコネクタに接続)
21GGND接地
22GGND接地

回路図

SCH_ESP32-S2-DEVKITC-1_V1_20210508

ESP32-S2-SOLO-N4R2 コントローラ情報

ピンの機能表

ストラップピン

1)GPIO0,GPIO46(起動方法選択)

PinデフォルトSPI起動ダウンロード起動
GPIO0pull-up(1)10
GPIO46pull-down(0)don’t-care0

2)GPIO45(VDD_SPI電圧選択)

PInデフォルト3.3V1.8V
GPIO45Pull-down(0)01

3)GPIO46(起動時のROMメッセージ出力するか/しないか)

Pinデフォルト出力する出力しない
GPIO46pull-down(0)下記のノート参照下記のノート参照

ノート(eFuse UART_PRINT_CONTROLの値によって4つの処理を行う)

0:eFuse UART_PRINT_CONTROLの値が0の時、GPIO46の設定とは関係なく、起動時正常に出力する

1:eFuse UART_PRINT_CONTROLの値が1かつGPIO46が0の時、起動時は正常に出力します。ただしGPIO46が1の時、出力は無効です。

2:eFuse UART_PRINT_CONTROLの値が2かつGPIO46が0の時、起動時の出力は無効です。ただしGPIO46が1の時、正常に出力します。

3:eFuse UART_PRINT_CONTROLの値が3の時、出力は無効であり、GPIO46によって制御されません。

回路図

電気仕様

1)電源電圧 3.3V typ (3.0V~3.6V)

2)消費電流 500mA min

3)ピンの入力容量 2pF typ

4)プルアップ抵抗値 45kΩ typ

5)プルダウン抵抗値 45kΩ typ

4)Hiレベル出力時のsource電流 40mA typ

5)Lowレベル出力時のsink電流 28mA typ

参考回路図(UART,JTAG,Bootスイッチ,USB OTG,32.768kHzクリスタル、リセットスイッチ 例)

ESP32ボード情報

ダウンロードしたAruduino IDEにはESP32/ESP8266ボード情報がせっていされていませんので、これらボードの情報を追加します。

Aruduino IDEを立ち上げます。ファイル/環境設定をクリックする
「追加ボードマネージャのURL」欄に https://dl.espressif.com/dl/package_esp32_index.json を入力し、「OK」をクリックする
Aruduino IDEの ツール/ボード/ボードマネージャをクリック
ボードマネージャの「検索フィルタ」に[esp32]を入力しクリックすると「esp32 by Espressif Systems」が表示されます
右下の「インストール」をクリックし、インストールします
ボードマナージャーを閉じてAruduino IDEのツール/ボードをみると「ESP32 Dev Module」が追加されているので、これをクリックします
Aruduino IDEの ツール/ボード/ESP Dev Moduleの下にボードのパラメータが表示されていますので下表のように設定します

ボードESP32 Dev Module
Upload Speed921600
CPU Frequency240MHz(WiFi/BT)
Flash Frequency80MHz
Flash ModeQIO
Flash Size4M(32Mb)
Partation SchemeDefault 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
Core Debug Levelなし
PSRAMDisable
シリアルポート
ボード情報を取得

ESP8266ボード情報

同様にESP8266ボード情報の設定を行います
Aruduino IDEを立ち上げます。ファイル/環境設定をクリックする
「追加ボードマネージャのURL」欄に http://arduino.esp8266.com/stable/package_esp8266com_index.json を入力し、「OK」をクリックする
Aruduino IDEの ツール/ボード/ボードマネージャをクリック
ボードマネージャの「検索フィルタ」に[esp8266]を入力しクリックすると「esp8266 by ESP8266 Community」が表示されます
右下の「インストール」をクリックし、インストールします
ボードマナージャーを閉じてAruduino IDEのツール/ボードをみると「Generic ESP8266 Module」が追加されているので、これをクリックします
Aruduino IDEの ツール/ボード/ESP Dev Moduleの下にボードのパラメータが表示されていますので下表のように設定します。これはスイッチサイエンス社の[ESPr Developer]です

ボードGeneric ESP8266 Module
Upload Speed921600
CPU Frequency160MHz
Flash Frequency80MHz
Flash ModeQIO
Flash Size2M(1M SPIFFS)
Crystal Frequency26MHz
Reset Methodnodemcu
Debug portDisable
Debug Levelなし
IwIP Variantv2 Lower Memory
VTableFlash
Builtin Led 2
Erase Flash Only Sketch
シリアルポートCOM6
ボード情報を取得

Arduino IDEのインストール(windows10)

ブラウザでAruduino のWebサイト(https://www.arduino.cc/)にアクセスし、ページ上部の「SOFTWARE]メニューから「DOWNLOADS」を選択します。
ダウンロードページで「windows installer、for Windows7 and up」をクリックすると、ページの下の「JUST DOWNLOAD」をクリックします。ダウンローダーフォルダーにインストーラーがダウンロードされます。
インストーラーを起動し、Aruduino IDEをインストールします。

Aruduino IDE プログラム

void setup(){ //setup関数は最初に一回だけ実行される
        //様々な 初期設定を書く
}
void loop(){ //loop関数は繰り返し実行される
        //繰り返し実行するプログラムを書く
}

Arduinoライブラリ(Ver1.8.19)

arduinoライブラリ名内容
Bridge
Esplora
Firmataパソコンからシリアル接続でarduinoを制御
GSMGSMシールドの制御
Keyboard
LiquidCrystalキャラクタ液晶ディスプレイの制御
Mouse
Robot Control
Rbot IR Remote
Robot Moter
Servoサーボモーターの制御
SpacebrewYun
Stepperステッピングモーターの制御
TFTTFT液晶の制御
Temboo
提供されたライブラリ内容
aruduinoOTA
BuletoothSerial
DNS Server
EEPROMarduino内蔵のEEPROMのread/write
ESP RainMaker音声アシスタント、電話アプリ、クラウドバックエンドなどのAIOT
ESP32
ESP32 Async UDP
ESP32 BLE arduino
ESPmDNS
EthernetEthnetシールドを用いたイーサネット接続
FFat
FS
HTTPClient
HTTPUpdate
HTTPUpdateServer
LittleFS
NetBIOS
Preferences
SDSDカードのアクセル
SD_MMCマルチメティアカード(MMC)のアクセル
SPISPI通信
SPIFFS
SimpleBLE
Ticker
USB
Update
WebServer
WiFi
WiFIClientSecure
WiFiProv
WireI2C通信

IOピン(デジタル入出力、アナログ入力) ライブラリ

1) pinMode(pin,mode) pin:ピン番号 mode:INPUT/OUTPUT/INPUT_PULLUP

  例:pinMode(6,OUTPUT);  //GPIO6を出力に設定する

2)digitalWrite(pin,value) pin:ピン番号  value:HIGH/LOW

  例;digitalWrite(6,LOW) ; //GPIO6をLow(0)にする

3)digitalRead(pin) pin:ピン番号  戻り値:HIGH/LOW

  例: d = digitalRead(3) ; //GPIO3から入力する(1 or 0)

4)analogRead(pin) pin:ピン番号  戻り値:ESP32の場合0~3.3Vの入力時0~4095の値が返る

   例: a = analogRead(3) ; //GPIO3から入力する(0-3.3Vを0-4095に変換する)

PWM出力 ライブラリ

1)ledcSetup(channel,frequency,bit) チャンネル番号のPWMの初期設定(周波数、分解能)の設定を行う

channel:チャンネル番号(0ー15)、frequency:周波数、bit:ビット数(8の時256段階、16の時65536段階)

2)ledcAttachPin(pin,channel)    PWMチャンネルの初期設定をピン番号(GPIO)に割り当てる

pinピン番号:,channel:チャンネル番号

3)ledcWrite(channel,duty)     PWM出力をPWMチャンネルにdutyで設定された値で出力する

   channel:チャンネル番号,duty:デューティ(bitが8の時 0-255、bitが16の時 0-65535)

例:

void Setup(){

pinMode(5,OUTPUT); //GPIO5を出力

ledcSetup(0,1000,8); //PWMチャンネル0を1kHz,8bitにする

ledcAttachPin(5,0); //PWMチャンネル0をGPIO5にセットする

}

void loop(){

for(int i = 0; i<=255; i++){ //dutyを0-255まで変化させる

ledcWrite(0,i); //PWMチャンネル0をduty(i)の値で出力する

delay(10); //10mSec遅延

}

}

遅延ライブラリ

1)delay(ms) ms:遅らせる時間(ミリ秒)

2)delayMicroseconds(us) us:遅らせる時間(マイクロ秒)

Serial(シリアル通信)ライブラリ

1)Serial 戻り値:シリアル回線が利用可能なら真、NGなら偽が返る

2)serial.begin(speed) speed:シリアル通信の回線速度 

3)Serial.print(val) val:出力する値(整数、少数、文字、文字列)

4)Serial.print(val,format) format:出力する書式(BIN,OCT,DEC,HEX)

5)Serial.println(val)   valを出力した後に改行する

6)Serial.println(val,format)  formatで指定した形式でvalを出力した後に改行する     

Wire(I2C通信)ライブラリ

0)#include <Wire.h> //I2Cライブラリを読み込む

1)Wire.begin();  //Wireオブジェクトを初期化する

2)Wire.begin(sda,scl[,freq]);  //sda,scl:ピン番号 freq:I2C通信の周波数(デフォルトは100kHz)

3)Wire.beginTransmission(address); //address:アドレスのデバイスへI2C送信の準備をする

4)Wire.write(value);  //value:1バイトデータを送る

5)Wire.write(string);  //string:文字列を送る

6)Wire.write(data,length);  //data:複数バイトの配列  length:送信するバイト数

7)Wire.endTransmission() 

8)Wire.endTransmission(stop) 

9)Wire.requestForm(address,bytes) address:I2Cアドレス  bytes:要求するバイト数 I2Cアドレスでしたいするデバイスにbytesバイトにデータを要求する 

10)Wire.requestForm(address,bytes,stop) stop:trueを指定すると、受信後STOPを送ってI2Cバスを開放する。falseの場合は開放しない(デフォルトはtrue)

11)Wire.read() Wire.requestFormで要求したデーターを読む

I2Cインターフェース・キャラクタ・LCD

0)include<Wire.h>

include<LiquidCrystal_I2C.h>

1)LiquidCrystal_I2C lcd(0x3F,16,2) //lcd変数の宣言 0x3F:アドレス、16:16文字、2:2行)

2)初期化

void setup(){

lcd>init(); //ディスプレイの初期化

lcd/backlight(); //ディスプレイのバックライトON

}

void loop(){

lcd.setCursor(0,0); //左上にカーソルを移動

lcd.print(“yokohama”); //yokohama表示

}

その他メンバ関数

メンバ関数内容
clear()ディスプレイをクリアする
setCursor(列,行)表示位置を指定する
home()表示位置を左上にする
pront(文字)文字などを表示する
cursol()カーソルを表示する
noCursol()カーソルを消す
blink()カーソルを点滅させる
noBlink()カーソルは点滅させない
scrollDisplayLeft()左にスクロールする
scrollDisplatRight()右にスクロールする
backlight()バックライトON
noBacklight()バックライトOFF

SPIライブラリ

1)SPISettings(speed,dataOder,dataMode); SPI通信のモードを設定する

   speed:SPI通信スピード dataOder:MSBFIRSTまたはLSBFIRST dataMode:SPI_MODE0~SPI_MODE3 戻り値:SPISettingオブジェクト

例 SPISettings(2000,MSBFIRST,SPI_MODE0);

2)SPI.beginTransaction(SPISettings); SPI通信を開始する

  例 SPI.beginTransaction(SPISettings(20000,MSBFIRST,SPI_MODE0));

3)receivedVal = SPI.Transfer(val); SPI.transfer(buffer,size); SPI通信でデータを送り、応答があれば受信する

  val:送信するデータ buffer:送信するデーター配列 size:送信するデーターバイト数 戻り値:受信したデータ

  例 SPI.transfer(0x01);

4)SPI.endTransaction(); SPI通信を終了する

  戻り値:なし

SDカード

1)カードの種類

SDカード2GB迄
SDHCカード4~32GB
SDXCカード64GB以上

2)ハードウエア 電源電圧:3.3V

SDカードArduino UnoESP8266ESP32ESP32-S2
MOSI(DI)
MISO(DO)
SCK
CS
VCC
GND

3)ソフトウエア

3-0)#include <SPI.h>

#include <SD.h>

タイマー割り込み

1)#include<uTimerLib.h> //ライブラリを読み込む

2)TimerLibsetInterval_us(timerTask,1); //繰り返しマイクロ秒タイマー割り込みを設定する。

3)TimerLibsetInterval_s(timerTask,1); //繰り返し秒タイマー割り込みを設定する。

4)setTimeout_us(timerTask,1); //1回だけのマイクロ秒タイマー割り込みを設定する

5)setTimeout_s(timerTask,1); //1回だけの秒タイマー割り込みを設定する

6)TimerLib.clearTimer(); //タイマー割り込みを止める

<引数>timerTask:割り込み処理関数。1:タイマー割り込みまでの時間

ピンの状態変化による割り込み

1)attachInterrupt(割り込み番号、関数、モード)

   割り込み番号:GPIOのピン番号、関数:割り込み処理を行う関数の名前

   モード:割り込みを行うタイミングを記述する(下表)

モード:記述割り込み処理を行うタイミング
CHANGEピンの状態が変わった時
RISINGLOWからHIGHに変わった時
FALLINGHIGHからLOWに変わった時
ONLOWLOWの時
ONHIGHHIGHの時

2)割り込み処理関数(の前に[IRAN_ATTR]を記入する)  

   void IRAM_ATTR warikomi_syori(){

   割り込み処理を記述する

   }

3)割り込みをやめる

   detachIntrrupt(割り込み番号)

    割り込み番号:GPIOのピン番号

ユーザー関数   戻り値の型 関数名(引数1の型 引数1,引数2の型 引数2・・・・){ 関数の中身 } 

1)引数:引数がない場合はvoidを記入

 1-1)引数:値わたし(変数Xの値は変わらない)

       例:void kasan(int X){

X++;

}

X = 1;

kasan(X);

kasan関数を実行するとX=1になり変数Xは変化しない。

例:x = 1;

1-2)引数:参照わたし(変数Xの値は、関数によって変化する):複数の引数をわたし、関数によって処理を行った結果を得ることができる(戻り値は1つのみ)

       例:void kasan(int &X,int &Y){

X++;

Y = Y +10;

}

X = 1; Y = 7;

kasan(X,Y);

kasan関数を実行するとX=2、Y=17になる。

2)戻り値:戻り値がない場合はvoidを記入

ライブラリィを作る