Tutoriel ESP32 38/55 - Contrôle de la LED RVB depuis votre téléphone mobile | Kit d'apprentissage IoT ESP32 de SunFounder
Na boyekoli oyo, tokotalela ndenge ya kokamba mbwaki ya RGB na kozalisa module ya ESP32 longwa na kit ya koyekola ya SunFounder ESP32. Na kotinda mitindo longwa na esaleli na yo ya mobile, okoki kobongola langi ya mbwaki to kozimisa yango mobimba. Projet oyo esalelaka makoki ya ESP32, na kosalela Wi-Fi mpe Bluetooth oyo ezali na kati mpo na kokangama mpe kokamba na ndenge ya pete.

Mbwaki ya RGB ezali na mbwaki misato ya moko-moko: motane, vert, mpe bleu, oyo ekoki kosangisama mpo na kosala balangi ndenge na ndenge. Na projet oyo, okoyekola ndenge ya kokangisa mbwaki ya RGB na ndenge ya semba mpe kosala programme ya ESP32 mpo na koyanola na mitindo ya Bluetooth. Tutoriel ekotambolisa yo mpe na bingambo ya code oyo esengeli mpo na kosala fonctionnalité oyo (na vidéo na 02:15).
Hardware Explicado
Bingambo ya liboso mpo na projet oyo ezali microcontroller ya ESP32 mpe mbwaki ya RGB. ESP32 ezali module ya makasi oyo ezali na Wi-Fi mpe Bluetooth na kati, oyo esalaka ete ezala malamu mpo na application ya IoT. Na projet oyo, ekosalela lokola serveur mpo na koyamba mitindo longwa na esaleli ya mobile mpe kokamba mbwaki ya RGB na ndenge yango.
Mbwaki ya RGB ezali na ba pins minei: pin moko ya commune (so anode to cathode) mpe ba pins misato mpo na balangi ya moko-moko. Pin ya commune ekangisami na source ya puissance to na mabele, kasi ba pins misato mosusu ekangisami na ba GPIO pins ya ESP32 na nzela ya ba résistances mpo na kokitisa courant mpe kobatela ba mbwaki. Configuration oyo epesaka ndenge ya kokamba na ndenge ya sikisiki na congé ya langi na langi, mpo na kosala balangi mingi.
Détails ya Datasheet
| Fabricant | SunFounder |
|---|---|
| Numéro ya partie | Mbwaki ya RGB |
| Type ya pin commune | Anode commune / Cathode commune |
| Tension ya liboso (V) | 2.0 - 3.2 V |
| Courant maximal ya liboso (A) | 20 mA |
| Courant typique (A) | 15 mA |
| Résolution ya langi | 8 bit (0-255) |
| Paquet | Through-hole / SMD |
- Kokamba ete ba valeurs ya résistances ezala malamu (mingi mpenza 220 Ohm) mpo na kokitisa courant na nzela ya canal ya langi na langi.
- Kotala configuration ya pin commune (anode to cathode) liboso ya kokangisa.
- Kosalela PWM mpo na kokitisa mpe kosangisa balangi na kobongola signal oyo etindami na mbwaki na mbwaki.
- Kozala na bokebi na kokangisa mpo na kokima ba courts-circuits; kokangisa pin moko na moko.
- Komeka langi na langi na moko-moko nsima ya installation mpo na kondima ete kokangisa ezali malamu.
Mikano ya Kokangisa

Mpo na kokangisa mbwaki ya RGB na ESP32, banda na kotia mbwaki ya RGB na breadboard. Pin ya molai ezali pin ya commune, oyo okokangisa na tension positive (mpo na anode commune) to na mabele (mpo na cathode commune). Soki ozali kosalela anode commune, kangisa pin ya molai na pin ya 3.3V na ESP32. Mpo na cathode commune, kangisa yango na pin ya GND.
Na sima, kamata ba résistances misato ya 220 Ohm mpe kangisa suka moko ya résistance na suka na ba pins ya RGB ya mbwaki. Kangisa ba suka mosusu ya ba résistances na ba GPIO pins ya ESP32: kangisa pin ya motane ya mbwaki na GPIO 27, pin ya vert na GPIO 26, mpe pin ya bleu na GPIO 25. Na suka, kamba ete pin ya commune ekangisami na ndenge ya malamu kolanda configuration na yo (anode to cathode).
Ba Exemples ya Code & Explication
Code ya projet oyo ebandi na kopesa ba pins oyo ekangisami na mbwaki ya RGB. Exemple oyo elakisaki ndenge ba pins batangami:
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
Awa, redPin, greenPin, mpe bluePin bapesami ba numéros spécifiques ya GPIO na ESP32 mpo na canal ya langi na langi ya mbwaki ya RGB.
Na fonction ya setup, Bluetooth ebandisami, mpe ba paramètres ya PWM esalelami. Exemple oyo elakisaki ebandiseli oyo:
void setup() {
Serial.begin(115200); // Bandisa port ya série
setupBLE(); // Bandisa Bluetooth BLE
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
Code oyo ebandisaka communication ya série mpe esalelaka fonctionnalité ya Bluetooth wuta ntango ekangisaka ba pins ya mbwaki ya RGB na ba canaux ya PWM mpo na kokamba.
Na suka, fonction ya loop etalaka soki ba messages ya Bluetooth eyambami mpe ebongolaka langi ya mbwaki na ndenge yango:
if (value == "red") {
setColor(255, 0, 0); // Motane
Serial.println("red");
}
Na eteni oyo, soki valeur oyo eyambami ezali "red", mbwaki ekotiama na congé ya motane mobimba na kosalela fonction setColor.
Mpo na kososola code mobimba, esengeli kotala tutoriel ya vidéo epai code mobimba ezali na nse ya article.
Démonstration / Nini Okomona
Ntango nyonso esili kokangisama mpe code etindami, okokoka kokamba mbwaki ya RGB longwa na esaleli na yo ya mobile na nzela ya Bluetooth. Na kotinda mitindo lokola "red", "green", "blue", etc., okomona mbwaki ebongolaka balangi na ndenge yango. Soki otindi "LED_off", mbwaki ya RGB ekokufa. Kamba ete otala moniteur ya série mpo na ba messages ya débogage mpo na kondima ete mitindo eyambami na ndenge ya malamu (na vidéo na 10:45).
Ba Timestamps ya Vidéo
- 00:00 Ebandeli
- 1:59 Nini RGB LED?
- 6:01 Ndimbola ya langi ya RGB
- 10:01 Lokasa ya mikanda
- 11:19 Ndimbola ya bobongisi ya singa
- 13:34 Kopona carte ya ESP32 mpe COM port na Arduino IDE
- 15:15 Code ya Arduino
- 18:02 Emoniseli ya kokamba RGB LED na ntango ozali kosalela telefone na yo
#include "BLEDevice.h"
#include "BLEServer.h"
#include "BLEUtils.h"
#include "BLE2902.h"
// Define RGB LED pins
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Define PWM frequency and resolution
const int freq = 5000;
const int resolution = 8;
// Define the Bluetooth device name
const char *bleName = "ESP32_Bluetooth";
// Define the received text and the time of the last message
String receivedText = "";
unsigned long lastMessageTime = 0;
// Define the UUIDs of the service and characteristics
#define SERVICE_UUID "8785d8b3-9d23-473b-aee5-3fabe2ba9583"
#define CHARACTERISTIC_UUID_RX "b2bcd13b-aab6-4660-92ae-40abf6941fce"
#define CHARACTERISTIC_UUID_TX "4219d86a-d701-4fd2-bd84-04db50f70fe2"
// Define the Bluetooth characteristic
BLECharacteristic *pCharacteristic;
void setup() {
Serial.begin(115200); // Initialize the serial port
setupBLE(); // Initialize the Bluetooth BLE
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
void loop() {
// When the received text is not empty and the time since the last message is over 1 second
// Send a notification and print the received text
if (receivedText.length() > 0 && millis() - lastMessageTime > 1000) {
Serial.print("Received message: ");
Serial.println(receivedText);
pCharacteristic->setValue(receivedText.c_str());
pCharacteristic->notify();
receivedText = "";
}
// Read data from the serial port and send it to BLE characteristic
if (Serial.available() > 0) {
String str = Serial.readStringUntil('\n');
const char *newValue = str.c_str();
pCharacteristic->setValue(newValue);
pCharacteristic->notify();
}
}
// Define the BLE server callbacks
class MyServerCallbacks : public BLEServerCallbacks {
// Print the connection message when a client is connected
void onConnect(BLEServer *pServer) {
Serial.println("Connected");
}
// Print the disconnection message when a client is disconnected
void onDisconnect(BLEServer *pServer) {
Serial.println("Disconnected");
}
};
// Define the BLE characteristic callbacks
class MyCharacteristicCallbacks : public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string value = std::string(pCharacteristic->getValue().c_str());
if (value == "led_off") {
setColor(0, 0, 0); // turn the RGB LED off
Serial.println("RGB LED turned off");
} else if (value == "red") {
setColor(255, 0, 0); // Red
Serial.println("red");
}
else if (value == "green") {
setColor(0, 255, 0); // green
Serial.println("green");
}
else if (value == "blue") {
setColor(0, 0, 255); // blue
Serial.println("blue");
}
else if (value == "yellow") {
setColor(255, 150, 0); // yellow
Serial.println("yellow");
}
else if (value == "purple") {
setColor(80, 0, 80); // purple
Serial.println("purple");
}
}
};
// Initialize the Bluetooth BLE
void setupBLE() {
BLEDevice::init(bleName); // Initialize the BLE device
BLEServer *pServer = BLEDevice::createServer(); // Create the BLE server
// Print the error message if the BLE server creation fails
if (pServer == nullptr) {
Serial.println("Error creating BLE server");
return;
}
pServer->setCallbacks(new MyServerCallbacks()); // Set the BLE server callbacks
// Create the BLE service
BLEService *pService = pServer->createService(SERVICE_UUID);
// Print the error message if the BLE service creation fails
if (pService == nullptr) {
Serial.println("Error creating BLE service");
return;
}
// Create the BLE characteristic for sending notifications
pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
pCharacteristic->addDescriptor(new BLE2902()); // Add the descriptor
// Create the BLE characteristic for receiving data
BLECharacteristic *pCharacteristicRX = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
pCharacteristicRX->setCallbacks(new MyCharacteristicCallbacks()); // Set the BLE characteristic callbacks
pService->start(); // Start the BLE service
pServer->getAdvertising()->start(); // Start advertising
Serial.println("Waiting for a client connection..."); // Wait for a client connection
}
void setColor(int red, int green, int blue) {
// For common-anode RGB LEDs, use 255 minus the color value
ledcWrite(redPin, red);
ledcWrite(greenPin, green);
ledcWrite(bluePin, blue);
}
Common Course Links
Common Course Files
Mokili na bisika
-
DokumentasiESP32 Tutorial 38/55 - SunFounder doc page for Bluetooth RGB LEDdocs.sunfounder.com
Fichiers📁
Aucun fichier disponible.