Am einfachsten verbinden Sie CodeCell mit einer Fernbedienung über unsere MicroLink Bluetooth-App . Mit dieser können Sie Ihrem Projekt schnell Schaltflächen, Schieberegler und einen Joystick hinzufügen. Dies wird hier alles erklärt. In dieser Anleitung konzentrieren wir uns jedoch auf die Konfiguration des ESP32-C3 von CodeCell als WLAN-Fernbedienung, die die Kommunikation zwischen zwei Geräten ermöglicht.
Der ESP32-C3 von CodeCell ist WLAN-fähig und ermöglicht so die drahtlose Kommunikation. Mit ESP-NOW können wir mit minimalem Aufwand eine direkte Gerätekommunikation herstellen. Diese Anleitung zeigt, wie man zwei Geräte koppelt, wobei eines als sensorbasierte Fernbedienung und das andere zum Empfangen und Verarbeiten der übertragenen Daten verwendet wird.
In diesem Beispiel koppeln wir zwei CodeCell -Geräte. Gerät 1 erfasst Sensordaten und sendet sie über WLAN mithilfe des ESP-NOW-Protokolls an Gerät 2. Wir beginnen mit einem einfachen Setup, bei dem der Näherungssensor von Gerät 1 die integrierte LED von Gerät 2 steuert. Im zweiten Beispiel sendet Gerät 1 Winkeldaten, und Gerät 2 verarbeitet diese, um die Motordrehzahl anzupassen.
Bevor Sie die Kommunikation zwischen den beiden CodeCell- Geräten herstellen können, benötigen Sie zunächst die MAC-Adresse des Empfängers. Diese MAC-Adresse wird im Code des Senders verwendet, um sicherzustellen, dass das richtige Gerät die Daten empfängt.
Gehen Sie folgendermaßen vor, um die MAC-Adresse des Empfängers zu erhalten:
XX:XX:XX:XX:XX:XX
ausgegeben. Kopieren Sie diese Adresse, da Sie sie für den Absendercode benötigen. Dieses Beispiel zeigt, wie Näherungssensordaten von Gerät 1 an Gerät 2 gesendet werden, das die Daten zum Ein- oder Ausschalten seiner integrierten LED verwendet.
#include <esp_now.h>
#include <WiFi.h>
#include <CodeCell.h>
CodeCell myCodeCell;
uint8_t receiverMAC[] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX }; // Ersetzen durch die MAC-Adresse des Empfängers
void setup() {
Serial.begin(115200);
myCodeCell.Init(LIGHT); // Initialisiert die Lichterkennung
// WLAN im Stationsmodus initialisieren
WiFi.modus(WIFI_STA);
Serial.println(WiFi.macAddress());
// ESP-NOW initialisieren
wenn (esp_now_init() != ESP_OK) {
Serial.println("Fehler beim Initialisieren von ESP-NOW");
zurückkehren;
}
// Peer registrieren
esp_now_peer_info_t PeerInfo;
memcpy(peerInfo.peer_addr, receiverMAC, 6);
peerInfo.channel = 0;
peerInfo.encrypt = falsch;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Peer konnte nicht hinzugefügt werden");
zurückkehren;
}
}
void-Schleife() {
wenn (myCodeCell.Run(10)) {
uint16_t ProxRead = (myCodeCell.Light_ProximityRead()) >> 4; // Näherungswert ermitteln und durch 16 dividieren
Serial.println(ProxRead);
esp_err_t Ergebnis = esp_now_send(receiverMAC, (uint8_t *)&ProxRead, sizeof(ProxRead));
wenn (Ergebnis == ESP_OK) {
Serial.println("Daten erfolgreich gesendet");
} anders {
Serial.println("Sendefehler");
}
}
}
#include <esp_now.h>
#include <WiFi.h>
#include <CodeCell.h>
CodeCell myCodeCell;
void setup() {
Serial.begin(115200);
myCodeCell.Init(LIGHT); // Initializes Light Sensing
// Initialize WiFi in Station mode
WiFi.mode(WIFI_STA);
Serial.println(WiFi.macAddress());
// Initialize ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Register the receive callback
esp_now_register_recv_cb(onDataRecv);
}
// Receive callback function
void onDataRecv(const esp_now_recv_info *recvInfo, const uint8_t *incomingData, int len) {
uint16_t Remote_Value;
memcpy(&Remote_Value, incomingData, sizeof(Remote_Value));
Serial.println(Remote_Value);
myCodeCell.LED(0, Remote_Value, 0); // Control onboard LED brightness
}
void loop() {
// Nothing to do here
}
In diesem zweiten Beispiel verbinden wir zwei Motoren mit zwei DriveCells mit dem Empfänger. Gerät 1 liest Winkeldaten von seinen Bewegungssensoren und sendet sie an Gerät 2, das die Geschwindigkeit zweier Motoren basierend auf den empfangenen Daten anpasst.
Wenn Sie für dieses Beispiel unterschiedliche Geräte verwenden, denken Sie daran, die neue MAC-Adresse des Empfängers auszulesen und die Platzhalter-MAC-Adresse im Code des Absenders zu ersetzen.
#include <esp_now.h>
#include <WiFi.h>
#include <CodeCell.h>
CodeCell myCodeCell;
uint8_t receiverMAC[] = {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}; // Replace with receiver's MAC address
int Roll_Control = 0;
float Roll = 0.0;
float Pitch = 0.0;
float Yaw = 0.0;
void setup() {
Serial.begin(115200);
myCodeCell.Init(MOTION_ROTATION); // Initialize motion sensing
// Initialize WiFi in Station mode
WiFi.mode(WIFI_STA);
Serial.println(WiFi.macAddress());
// Initialize ESP-NOW
wenn (esp_now_init() != ESP_OK) {
Serial.println("Fehler beim Initialisieren von ESP-NOW");
zurückkehren;
}
// Peer registrieren
esp_now_peer_info_t PeerInfo;
memcpy(peerInfo.peer_addr, receiverMAC, 6);
peerInfo.channel = 0;
peerInfo.encrypt = falsch;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Peer konnte nicht hinzugefügt werden");
zurückkehren;
}
}
void-Schleife() {
wenn (myCodeCell.Run(10)) {
myCodeCell.Motion_RotationRead(Rollen, Neigen, Gieren);
Rollen = Rollen + 180;
Wurf = (Wurf * 100) / 180;
Rollen = beschränken(Rollen, 0, 200) / 2;
Roll_Control = (uint8_t)Roll;
Serial.println(Roll_Control);
esp_now_send(receiverMAC, (uint8_t *)&Roll_Control, Größe von(Roll_Control));
}
}
#include <esp_now.h>
#include <WiFi.h>
#include <CodeCell.h>
#include <DriveCell.h>
#define IN1_pin1 2
#define IN1_pin2 3
#define IN2_pin1 5
#define IN2_pin2 6
CodeCell myCodeCell;
DriveCell Motor1(IN1_pin1, IN1_pin2);
DriveCell Motor2(IN2_pin1, IN2_pin2);
void setup() {
Serial.begin(115200);
myCodeCell.Init(LIGHT); // Lichtsensor initialisieren
Motor1.Init();
Motor2.Init();
// WLAN im Stationsmodus initialisieren
WiFi.modus(WIFI_STA);
Serial.println(WiFi.macAddress());
// ESP-NOW initialisieren
wenn (esp_now_init() != ESP_OK) {
Serial.println("Fehler beim Initialisieren von ESP-NOW");
zurückkehren;
}
// Den Empfangs-Callback registrieren
esp_now_register_recv_cb(onDataRecv);
}
void onDataRecv(const esp_now_recv_info *recvInfo, const uint8_t *incomingData, int len) {
int Rollgeschwindigkeit = 0;
memcpy(&Roll_Speed, eingehende Daten, Größe von(Roll_Speed));
wenn (Rollgeschwindigkeit > 50) {
Motor1.Antrieb(1, Rollgeschwindigkeit);
Motor2.Drive(1, Roll_Speed);
} anders {
Rollgeschwindigkeit = 100 - Rollgeschwindigkeit;
Motor1.Antrieb(0, Rollgeschwindigkeit);
Motor2.Drive(0, Roll_Speed);
}
Serial.println(Roll_Speed);
}
void-Schleife() {
wenn (myCodeCell.Run(10)) {}
}
Anhand dieser Beispiele können Sie zwei CodeCell -Geräte für die WLAN-Kommunikation mit ESP-NOW konfigurieren. Die Beispiele zeigen, wie Sie Näherungs- und Winkeldaten zwischen Geräten senden und diese für die Echtzeitsteuerung von LEDs und Motoren nutzen.
Sie können diese Projekte gerne erweitern, indem Sie weitere Sensoren oder zusätzliche Funktionen integrieren, um die Funktionalität Ihres Remote-Systems zu verbessern!
Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!
© 2025 Microbots.