ΠΡΠΎΡΠΎΠΊΠΎΠ» I2C ΡΡΠ°Π» ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ β ΠΎΡ ΠΏΡΠΎΡΡΡΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ OLED-Π΄ΠΈΡΠΏΠ»Π΅Π΅Π². ESP32, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» "ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ", Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ: ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ, Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΎΠ²ΡΠ΅ "Π·Π°Π²ΠΈΡΠ°Π΅Ρ". ΠΡΠΈΡΠΈΠ½Π° ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊΡΠΎΠ΅ΡΡΡ Π² Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π»ΠΈΠ½ΠΈΡΠΌΠΈ SDA (Serial Data) ΠΈ SCL (Serial Clock).
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ΅ΠΎΡΠΈΡ β Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ ΠΏΠΈΠ½Ρ SDA ΠΈ SCL Π½Π° ΡΠ°Π·Π½ΡΡ
Π²Π΅ΡΡΠΈΡΡ
ESP32 (ΠΎΡ ESP32-DevKitC Π΄ΠΎ ESP32-S3), Π½ΠΎ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ: ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠ½ΡΡΡ Π»ΠΈΠ½ΠΈΠΈ ΡΠ΅Π·ΠΈΡΡΠΎΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ 90% Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Wire.h, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΠ½ΠΎΠ³Π΄Π° I2C-ΡΠΊΠ°Π½Π΅Ρ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½Π½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ESP32 β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ°ΡΡ ΠΏΠΈΠ½Ρ I2C, ΡΡΠΎ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡ
Π΅ΠΌ.
Π Π°ΡΠΏΠΈΠ½ΠΎΠ²ΠΊΠ° SDA ΠΈ SCL Π½Π° ESP32: Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ: "ΠΠ΄Π΅ Π½Π° ΠΌΠΎΠ΅ΠΉ ΠΏΠ»Π°ΡΠ΅ ESP32 Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ SDA ΠΈ SCL?" ΠΡΠ²Π΅Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠ»Π°Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΡ, Π½ΠΎ Π΅ΡΡΡ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ESP32-DevKitC V4 (ΡΠ°ΠΌΠΎΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ) ΠΏΠΈΠ½Ρ SDA ΠΈ SCL ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π½Π° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°Ρ
GPIO21 ΠΈ GPIO22 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π° ESP32-WROOM-32 Π² ΡΠΎΡΠΌΠ°ΡΠ΅ DIP ΡΡΠΈ ΠΏΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Π½ΠΎΠΆΠΊΠΈ. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ, Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π΅ΡΡΠΉΡΠ΅ΡΡ Ρ datasheet Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡ.
- πΉ ESP32-DevKitC:
GPIO21 (SDA),GPIO22 (SCL) - πΉ ESP32-CAM:
GPIO13 (SDA),GPIO14 (SCL)(Π½ΠΎ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΈΠ½Ρ) - πΉ ESP32-S3:
GPIO8 (SDA),GPIO9 (SCL)ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ - πΉ TTGO T-Display:
GPIO21/22, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²Π°ΡΡ Ρ Π΄ΠΈΡΠΏΠ»Π΅Π΅ΠΌ
ΠΠ°ΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ESP32 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ
I2C-ΠΏΠΎΡΡΠ° (I2C0 ΠΈ I2C1), Π½ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΡΡ (GPIO19/18 ΠΈΠ»ΠΈ GPIO25/26 Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ) ΡΠ°ΡΡΠΎ Π·Π°Π½ΡΡ flash-ΠΏΠ°ΠΌΡΡΡΡ. ΠΠΎΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΊΡΠ°Ρ
Ρ ΡΠΈΡΡΠ΅ΠΌΡ.
- ESP32-DevKitC
- ESP32-CAM
- ESP32-S3
- TTGO T-Display
- ΠΡΡΠ³Π°Ρ
ΠΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ: ΠΏΠΎΡΠ΅ΠΌΡ Π±Π΅Π· Π½ΠΈΡ I2C Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ
ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ I2C Π½Π° ESP32 β ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΡ
ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² Π½Π° Π»ΠΈΠ½ΠΈΡΡ
SDA ΠΈ SCL. ΠΡΠΎΡΠΎΠΊΠΎΠ» I2C ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΎΡ (open-drain), ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: Π±Π΅Π· Π²Π½Π΅ΡΠ½ΠΈΡ
ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ², ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΡ
Π»ΠΈΠ½ΠΈΠΈ ΠΊ VCC, ΡΠΈΠ³Π½Π°Π» ΠΏΡΠΎΡΡΠΎ "ΠΏΡΠΎΠ²Π°Π»ΠΈΡΡΡ" Π² Π½ΠΎΠ»Ρ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² β 4.7 ΠΊΠΠΌ ΠΈΠ»ΠΈ 10 ΠΊΠΠΌ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΄Π»ΠΈΠ½Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠ² ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° ΡΠΈΠ½Π΅. Π‘Π»ΠΈΡΠΊΠΎΠΌ Π½ΠΈΠ·ΠΊΠΎΠ΅ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1 ΠΊΠΠΌ) ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠ΅ΡΠ΅Π³ΡΠ΅Π²Ρ ΠΈ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π°, Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 47 ΠΊΠΠΌ) β ΠΊ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π½Π° Π²ΡΡΠΎΠΊΠΈΡ
ΡΠΊΠΎΡΠΎΡΡΡΡ
.
| ΠΠ»ΠΈΠ½Π° ΡΠΈΠ½Ρ | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ² | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠ΅Π·ΠΈΡΡΠΎΡ | ΠΠ°ΠΊΡ. ΡΠΊΠΎΡΠΎΡΡΡ |
|---|---|---|---|
| ΠΠΎ 10 ΡΠΌ | 1-3 | 10 ΠΊΠΠΌ | 400 ΠΊΠΡ |
| 10-50 ΡΠΌ | 3-10 | 4.7 ΠΊΠΠΌ | 100 ΠΊΠΡ |
| 50-100 ΡΠΌ | 10+ | 2.2 ΠΊΠΠΌ | 50 ΠΊΠΡ |
| ΠΠΎΠ»Π΅Π΅ 1 ΠΌ | ΠΡΠ±ΠΎΠ΅ | 1 ΠΊΠΠΌ + Π±ΡΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ | 10 ΠΊΠΡ |
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ESP32 Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΡΠ΅Π·ΠΈΡΡΠΎΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ Wemos D1 Mini ESP32), Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΡΠΎΠ²Π½Π΅ΠΉ. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡ Π΅ΠΌΡ Π²Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ°ΠΉΠΊΠΎΠΉ!
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° I2C Π² Arduino IDE: ΠΏΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ I2C Π½Π° ESP32 Π² Arduino IDE ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Wire.h. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ β Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡ ΠΈ ΡΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠ»Π°ΡΡ.
ΠΠΎΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° ΡΠΈΠ½Π΅ I2C:
#include <Wire.h>
void setup() {
Serial.begin(115200);
Wire.begin(); // ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ I2C Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΏΠΈΠ½Π°Ρ
(SDA=21, SCL=22 Π΄Π»Ρ ESP32-DevKitC)
}
void loop() {
byte error, address;
int nDevices = 0;
Serial.println("Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ I2C...");
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if(error == 0) {
Serial.print("Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ: 0x");
Serial.println(address, HEX);
nDevices++;
}
}
if(nDevices == 0) Serial.println("Π£ΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ");
delay(5000);
}
ΠΡΠ»ΠΈ ΡΠΊΠ°Π½Π΅Ρ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅:
- π ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
SDA/SCL(ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ°Π½Π½ΡΠ΅ ΠΏΠΈΠ½Ρ β ΡΠ°ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°!). - π ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ Π·Π°Π·Π΅ΠΌΠ»Π΅Π½ΠΈΡ (
GND) ΠΌΠ΅ΠΆΠ΄Ρ ESP32 ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ. - π ΠΠ°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡΠΈΠΊΠΈ ΡΡΠ΅Π±ΡΡΡ
3.3V, Π΄ΡΡΠ³ΠΈΠ΅ β5V). - π ΠΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ (ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ β ΠΏΡΠΈΡΠΈΠ½Π° 80% ΠΏΡΠΎΠ±Π»Π΅ΠΌ).
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ SDA/SCL|
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ|
ΠΠ±ΡΠΈΠΉ GND ΠΌΠ΅ΠΆΠ΄Ρ ESP32 ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ|
ΠΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΄Π°ΡΠ°ΡΠΈΡΡ|
ΠΠ°Π³ΡΡΠΆΠ΅Π½ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ-->
ΠΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΈΠ½ SDA/SCL: ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ GPIO
Π£Π½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ESP32 β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ°ΡΡ ΠΏΠΈΠ½Ρ Π΄Π»Ρ I2C. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ SPI-Π΄ΠΈΡΠΏΠ»Π΅Π΅ΠΌ ΠΈΠ»ΠΈ SD-ΠΊΠ°ΡΡΠΎΠΉ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Wire.begin() Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠ΅ ΠΏΠΈΠ½Ρ:
Wire.begin(19, 18); // SDA Π½Π° GPIO19, SCL Π½Π° GPIO18
ΠΠ΄Π½Π°ΠΊΠΎ Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ:
- ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ Ρ flash-ΠΏΠ°ΠΌΡΡΡΡ: ΠΠΈΠ½Ρ
GPIO6-GPIO11ΡΠ°ΡΡΠΎ Π·Π°Π½ΡΡ flash, ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΡΠ±ΠΎΡ. - ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΎΠΊΡ: ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ GPIO (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
GPIO34-GPIO39) ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄Ρ. - ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ: I2C1 (Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΡΡ) ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ ESP32.
ΠΠ»Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ:
- πΉ
GPIO21/22β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΠΈΠ½Ρ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΡΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ². - πΉ
GPIO19/18β Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π½Π΅ Π·Π°Π½ΡΡ Π»ΠΈGPIO18ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΎΠΉ. - πΉ
GPIO25/26β ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ESP32-WROOM, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²Π°ΡΡ Ρ DAC.
ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΈΠ½ I2C ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ delay(100) ΠΏΠΎΡΠ»Π΅ Wire.begin() β ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ½Ρ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΠ»Π°ΡΠ°Ρ
.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ I2C Π½Π° ESP32. ΠΠΎΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ESP32 ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΡ ΠΎΠ΄ΠΈΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π½Π° Π»ΠΈΠ½ΠΈΡΡSDA/SCL. ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΠΏΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅ΡΡΠΎΠΌ!
| Π‘ΠΈΠΌΠΏΡΠΎΠΌ | ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° | Π Π΅ΡΠ΅Π½ΠΈΠ΅ |
|---|---|---|
| Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΡΠΊΠ°Π½Π΅ΡΠΎΠΌ | ΠΡΡΡΡΡΡΠ²ΡΡΡ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ | ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ 4.7 ΠΊΠΠΌ ΠΊ VCC |
ESP32 Π·Π°Π²ΠΈΡΠ°Π΅Ρ ΠΏΡΠΈ Wire.begin() |
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΠΈΠ½ Ρ flash-ΠΏΠ°ΠΌΡΡΡΡ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ GPIO (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 21/22) |
| ΠΡΠΈΠ±ΠΊΠΈ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ (NACK) | Π‘Π»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ½Ρ | Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Wire.setClock(100000) (100 ΠΊΠΡ) |
| ΠΠΎΠΌΠ΅Ρ ΠΈ Π½Π° Π»ΠΈΠ½ΠΈΠΈ SDA/SCL | ΠΠ»ΠΈΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄Π° Π±Π΅Π· ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΈΡΡΡ ΠΏΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΠ΅ Π΄Π»ΠΈΠ½Ρ |
ΠΡΠΎΠ±ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ "Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠ΅ΠΌ" ESP32 ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ I2C. Π§Π°ΡΡΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΡΠΈΠ½Π΅ "Π·Π°Π²ΠΈΡΠ°Π΅Ρ" ΠΈ Π½Π΅ ΠΎΡΠΏΡΡΠΊΠ°Π΅Ρ Π»ΠΈΠ½ΠΈΡ SDA. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΠ±ΡΠΎΡ ΡΠΈΠ½Ρ:
void i2c_reset() {
pinMode(SDA, INPUT_PULLUP);
pinMode(SCL, INPUT_PULLUP);
delay(10);
for(int i = 0; i < 9; i++) {
pinMode(SCL, OUTPUT);
digitalWrite(SCL, LOW);
delayMicroseconds(5);
pinMode(SCL, INPUT_PULLUP);
delayMicroseconds(5);
}
Wire.begin();
}
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ²
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡ ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ I2C-ΡΡΡΡΠΎΠΉΡΡΠ² ΠΊ ESP32: Π΄Π°ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ BME280, OLED-Π΄ΠΈΡΠΏΠ»Π΅Ρ SSD1306 ΠΈ Π³ΠΈΡΠΎΡΠΊΠΎΠΏΠ° MPU6050. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΠΌ ΡΡ Π΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄.
1. BME280 (ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°, Π²Π»Π°ΠΆΠ½ΠΎΡΡΡ, Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅)
- πΉ ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
VCC β 3.3V,GND β GND,SDA β GPIO21,SCL β GPIO22. - πΉ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°:
Adafruit_BME280(ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π· Library Manager). - πΉ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ: ΠΠ°ΡΡΠΈΠΊ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ β Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΊ
5V!
2. SSD1306 (OLED-Π΄ΠΈΡΠΏΠ»Π΅ΠΉ 128x64)
- πΉ ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ BME280, Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π°Π΄ΡΠ΅Ρ (ΠΎΠ±ΡΡΠ½ΠΎ
0x3CΠΈΠ»ΠΈ0x3D). - πΉ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°:
Adafruit_SSD1306+Adafruit_GFX. - πΉ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ: ΠΠΈΡΠΏΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²Π°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Π½Π° ΡΠΈΠ½Π΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Wire.setClock(400000)Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ.
3. MPU6050 (Π³ΠΈΡΠΎΡΠΊΠΎΠΏ/Π°ΠΊΡΠ΅Π»Π΅ΡΠΎΠΌΠ΅ΡΡ)
- πΉ ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
VCC β 5V(Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ),INT β GPIO(ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ). - πΉ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°:
MPU6050_light(Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ). - πΉ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ: ΠΠ°ΡΡΠΈΠΊ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ β Π±Π΅Π· Π½Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ Π½Π΅ΡΠΎΡΠ½ΡΠΌΠΈ.
ΠΠΎΡΠ΅ΠΌΡ MPU6050 Π²ΡΠ΄Π°ΡΡ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ?
ΠΡΠ»ΠΈ Π³ΠΈΡΠΎΡΠΊΠΎΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠ»ΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅:
1. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ VCC (Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ 5V, Π° Π½Π΅ 3.3V).
2. ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΡ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² (Π±Π΅Π· Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ).
3. ΠΠ΄ΡΠ΅Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ 0x68 ΠΈ 0x69 β ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠ° AD0 ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±ΠΈΡ).
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° I2C Π½Π° ESP32
ΠΠ»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ² Π½Π° ΡΠΈΠ½Π΅ I2C Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠΎΠ²Π΅ΡΠΎΠ²:
1. Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠΈΠ½Ρ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ESP32 ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠΊΠΎΡΠΎΡΡΠΈ 100 ΠΊΠΡ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ 400 ΠΊΠΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 1 ΠΠΡ. Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ:
Wire.setClock(400000); // 400 ΠΊΠΡ
2. ΠΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²
ΠΡΠ»ΠΈ Π½Π° ΡΠΈΠ½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ I2C-ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, TCA9548A). ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠΈΠ½, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ESP32.
3. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
ΠΡΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π΅ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Saleae ΠΈΠ»ΠΈ DSLogic) ΠΊ Π»ΠΈΠ½ΠΈΡΠΌ SDA/SCL. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ:
- πΉ ΠΠΎΡΠ΅ΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ (Π»ΠΈΠ½ΠΈΡ
SCL"Π·Π°Π»ΠΈΠΏΠ°Π΅Ρ" Π²LOW). - πΉ ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ (Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ
0VΠΈ3.3V). - πΉ ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ² (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π°Π΄ΡΠ΅Ρ).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°Π΄ΡΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ I2C. ΠΠ΅Π· Π½Π΅Π³ΠΎ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡ Π΅ΠΌ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² "ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠΊΠ°".
FAQ: ΠΎΡΠ²Π΅ΡΡ Π½Π° ΡΠ°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ 5V-ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΊ 3.3V ESP32?
ΠΠ°, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½ΡΠ΅ ΠΊ 3.3V Π²Ρ
ΠΎΠ΄Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Arduino-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ). ΠΠ»Ρ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΡΠ΅Π±ΡΡΡΠΈΡ
ΡΡΡΠΎΠ³ΠΎ 5V Π½Π° SDA/SCL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, TXB0104 ΠΈΠ»ΠΈ BSS138).
β οΈ ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ 5V Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ GPIO ESP32 ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎΠΌΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°!
ΠΠΎΡΠ΅ΠΌΡ I2C-ΡΠΊΠ°Π½Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π½ΠΎ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ?
ΠΡΠΎ ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ:
- πΉ ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ Π±Π°ΠΉΡ).
- πΉ Π‘Π»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠΈΠ½Ρ (ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅
Wire.setClock(50000)). - πΉ ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ Π½Π° ΡΠΈΠ½Π΅ (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π°Π΄ΡΠ΅ΡΠ°).
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π² Serial, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΠΉ.
ΠΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ I2C-ΡΡΡΡΠΎΠΉΡΡΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π²Π° BME280)?
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ I2C-ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, BME280) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ SDO/SA0. ΠΡΠ»ΠΈ Π°Π΄ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅:
- πΉ I2C-ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, TCA9548A).
- πΉ ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ).
ESP32 Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ?
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ Π»ΠΈ ΠΏΠΈΠ½Ρ
SDA/SCLΠ² Π½ΠΎΠ²ΠΎΠΌ ΡΠΊΠ΅ΡΡΠ΅. - ΠΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΠ΅Ρ Π»ΠΈ I2C Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
SPIΠΈΠ»ΠΈUART). - ΠΠ΅ ΡΠ±ΠΈΠ»ΠΈΡΡ Π»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
Wire(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ½Ρ).
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΡΠ°ΡΡΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠΊΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Wire ΠΈ ΡΠΊΠ°Π½Π΅ΡΠΎΠΌ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ I2C ΠΈ SPI ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° ESP32?
ΠΠ°, ESP32 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ², Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π°:
- πΉ ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ ΠΏΠΈΠ½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
GPIO23ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈ Π΄Π»ΡSPI, ΠΈ Π΄Π»ΡI2C). - πΉ Π£ΡΠΎΠ²Π½ΡΠΌΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ SPI-ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π°
5V, Π° I2C Π½Π°3.3V). - πΉ ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ (ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΈΠ½Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π»Π°Π³ΠΈ).