ESP32-S2-DEVKITC-1R ボード情報
キーコンポーネント | 説明 |
---|---|
ESP32-S2-SOLOまたはESP32-S2-SOLO-U | ESP32-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電源オンLED | USB電源がボードに接続されるとオンになります。 |
USB-UARTブリッジ | 単一のUSB-UARTブリッジチップは、最大3Mbpsの転送速度を提供します。 |
ピンヘッダー | 使用可能なすべてのGPIOピン(フラッシュ用のSPIバスを除く)は、ボード上のピンヘッダーに分割されています。詳細については、ヘッダーブロックを参照してください。 |
ESP32-S2USBポート | ESP32-S2フルスピードUSBOTGインターフェース、USB1.1仕様に準拠。このインターフェイスは、ボードへの電源供給、チップへのアプリケーションのフラッシュ、およびUSB1.1プロトコルを使用したチップとの通信に使用されます。 |
リセットボタン | このボタンを押して、システムを再起動します。 |
起動ボタン | ダウンロードボタン。ブートを押したままリセットを押すと、シリアルポートを介してファームウェアをダウンロードするためのファームウェアダウンロードモードが開始されます。 |
USB-UARTポート | ボードへの電源供給、チップへのフラッシュアプリケーション、およびオンボードUSB-UARTブリッジを介したチップとの通信に使用されるMicro-USBポート。 |
RGB LED | GPIO18によって駆動されるアドレス指定可能なRGBLED。 |
5 V〜3.3 V LDO | 5V電源を3.3V出力に変換するパワーレギュレータ。 |
J1ピンヘッダー(I:入力, O:出力, T:高インピーダンス)
ピンNo | 名前 | タイプ | 機能 |
1 | 3V3 | 電源 | 3,3v電源 |
2 | 3V3 | 電源 | 3,3v電源 |
3 | RST | I | CHIP_PU(RESETスイッチ) |
4 | 4 | I / O / T | RTC_GPIO4、GPIO4、TOUCH4、ADC1_CH3 |
5 | 5 | I / O / T | RTC_GPIO5、GPIO5、TOUCH5、ADC1_CH4 |
6 | 6 | I / O / T | RTC_GPIO6、GPIO6、TOUCH6、ADC1_CH5 |
7 | 7 | I / O / T | RTC_GPIO7、GPIO7、TOUCH7、ADC1_CH6 |
8 | 15 | I / O / T | RTC_GPIO15、GPIO15、U0RTS、ADC2_CH4、XTAL_32K_P |
9 | 16 | I / O / T | RTC_GPIO16、GPIO16、U0CTS、ADC2_CH5、XTAL_32K_N |
10 | 17 | I / O / T | RTC_GPIO17、GPIO17、U1TXD、ADC2_CH6、DAC_1 |
11 | 18 | I / O / T | RTC_GPIO18、GPIO18、U1RXD、ADC2_CH7、DAC_2、CLK_OUT3、RGB LED(RGB LED) |
12 | 8 | I / O / T | RTC_GPIO8、GPIO8、TOUCH8、ADC1_CH7 |
13 | 3 | I / O / T | RTC_GPIO3、GPIO3、TOUCH3、ADC1_CH2 |
14 | 46 | I | GPIO46 |
15 | 9 | I / O / T | RTC_GPIO9、GPIO9、TOUCH9、ADC1_CH8、FSPIHD |
16 | 10 | I / O / T | RTC_GPIO10、GPIO10、TOUCH10、ADC1_CH9、FSPICS0、FSPIIO4 |
17 | 11 | I / O / T | RTC_GPIO11、GPIO11、TOUCH11、ADC2_CH0、FSPID、FSPIIO5 |
18 | 12 | I / O / T | RTC_GPIO12、GPIO12、TOUCH12、ADC2_CH1、FSPICLK、FSPIIO6 |
19 | 13 | I / O / T | RTC_GPIO13、GPIO13、TOUCH13、ADC2_CH2、FSPIQ、FSPIIO7 |
20 | 14 | I / O / T | RTC_GPIO14、GPIO14、TOUCH14、ADC2_CH3、FSPIWP、FSPIDQS |
21 | 5V | 電源 | 5V電源 |
22 | G | GND | 接地 |
J3ピンヘッダー
ピンNo | 名前 | タイプ | 働き |
---|---|---|---|
1 | G | G | 接地 |
2 | TX | I / O / T | U0TXD、GPIO43、CLK_OUT1(USB to UARTコネクタに接続) |
3 | RX | I / O / T | U0RXD、GPIO44、CLK_OUT2(USB to UARTコネクタに接続) |
4 | 1 | I / O / T | RTC_GPIO1、GPIO1、TOUCH1、ADC1_CH0 |
5 | 2 | I / O / T | RTC_GPIO2、GPIO2、TOUCH2、ADC1_CH1 |
6 | 42 | I / O / T | MTMS、GPIO42 |
7 | 41 | I / O / T | MTDI、GPIO41、CLK_OUT1 |
8 | 40 | I / O / T | MTDO、GPIO40、CLK_OUT2 |
9 | 39 | I / O / T | MTCK、GPIO39、CLK_OUT3 |
10 | 38 | I / O / T | GPIO38、FSPIWP |
11 | 37 | I / O / T | SPIDQS、GPIO37、FSPIQ |
12 | 36 | I / O / T | SPIIO7、GPIO36、FSPICLK |
13 | 35 | I / O / T | SPIIO6、GPIO35、FSPID |
14 | 0 | I / O / T | RTC_GPIO0、GPIO0(BOOTスイッチ) |
15 | 45 | I / O / T | GPIO45 |
16 | 34 | I / O / T | SPIIO5、GPIO34、FSPICS0 |
17 | 33 | I / O / T | SPIIO4、GPIO33、FSPIHD |
18 | 21 | I / O / T | RTC_GPIO21、GPIO21 |
19 | 20 | I / O / T | RTC_GPIO20、GPIO20、U1CTS、ADC2_CH9、CLK_OUT1、USB_D+(USBコネクタに接続) |
20 | 19 | I / O / T | RTC_GPIO19、GPIO19、U1RTS、ADC2_CH8、CLK_OUT2、USB_D-(USBコネクタに接続) |
21 | G | GND | 接地 |
22 | G | GND | 接地 |
回路図
SCH_ESP32-S2-DEVKITC-1_V1_20210508ESP32-S2-SOLO-N4R2 コントローラ情報
ピンの機能表
ストラップピン
1)GPIO0,GPIO46(起動方法選択)
Pin | デフォルト | SPI起動 | ダウンロード起動 |
GPIO0 | pull-up(1) | 1 | 0 |
GPIO46 | pull-down(0) | don’t-care | 0 |
2)GPIO45(VDD_SPI電圧選択)
PIn | デフォルト | 3.3V | 1.8V |
GPIO45 | Pull-down(0) | 0 | 1 |
3)GPIO46(起動時のROMメッセージ出力するか/しないか)
Pin | デフォルト | 出力する | 出力しない |
GPIO46 | pull-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 Speed | 921600 |
CPU Frequency | 240MHz(WiFi/BT) |
Flash Frequency | 80MHz |
Flash Mode | QIO |
Flash Size | 4M(32Mb) |
Partation Scheme | Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) |
Core Debug Level | なし |
PSRAM | Disable |
シリアルポート | |
ボード情報を取得 |
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 Speed | 921600 |
CPU Frequency | 160MHz |
Flash Frequency | 80MHz |
Flash Mode | QIO |
Flash Size | 2M(1M SPIFFS) |
Crystal Frequency | 26MHz |
Reset Method | nodemcu |
Debug port | Disable |
Debug Level | なし |
IwIP Variant | v2 Lower Memory |
VTable | Flash |
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を制御 |
GSM | GSMシールドの制御 |
Keyboard | |
LiquidCrystal | キャラクタ液晶ディスプレイの制御 |
Mouse | |
Robot Control | |
Rbot IR Remote | |
Robot Moter | |
Servo | サーボモーターの制御 |
SpacebrewYun | |
Stepper | ステッピングモーターの制御 |
TFT | TFT液晶の制御 |
Temboo |
提供されたライブラリ | 内容 |
aruduinoOTA | |
BuletoothSerial | |
DNS Server | |
EEPROM | arduino内蔵のEEPROMのread/write |
ESP RainMaker | 音声アシスタント、電話アプリ、クラウドバックエンドなどのAIOT |
ESP32 | |
ESP32 Async UDP | |
ESP32 BLE arduino | |
ESPmDNS | |
Ethernet | Ethnetシールドを用いたイーサネット接続 |
FFat | |
FS | |
HTTPClient | |
HTTPUpdate | |
HTTPUpdateServer | |
LittleFS | |
NetBIOS | |
Preferences | |
SD | SDカードのアクセル |
SD_MMC | マルチメティアカード(MMC)のアクセル |
SPI | SPI通信 |
SPIFFS | |
SimpleBLE | |
Ticker | |
USB | |
Update | |
WebServer | |
WiFi | |
WiFIClientSecure | |
WiFiProv | |
Wire | I2C通信 |
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 Uno | ESP8266 | ESP32 | ESP32-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 | ピンの状態が変わった時 |
RISING | LOWからHIGHに変わった時 |
FALLING | HIGHからLOWに変わった時 |
ONLOW | LOWの時 |
ONHIGH | HIGHの時 |
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を記入
ライブラリィを作る