Menü
Microbots
0
  • Machen
    • Erste Schritte
    • Maker-Builds
    • Ausbildung
  • Geschäft
    • Maker-Module
    • Maker-Pakete
    • Werkzeuge und Ausrüstung
    • Roboter & Displays
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Deutsch
  • Ihr Warenkorb ist leer
Microbots
  • Machen
    • Erste Schritte
    • Maker-Builds
    • Ausbildung
  • Geschäft
    • Maker-Module
    • Maker-Pakete
    • Werkzeuge und Ausrüstung
    • Roboter & Displays
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Sprache

  • 0 0

CodeCell: Erstellen einer WLAN-Fernbedienung

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.

    Was Sie lernen werden

    • So richten Sie zwei CodeCell -Geräte für die Kommunikation über WLAN und das ESP-NOW-Protokoll ein.
    • So verwenden Sie eine CodeCell , um die integrierte LED eines anderen Geräts mithilfe der Näherungserkennung zu steuern.
    • So senden Sie Winkelmesswerte von einem CodeCell -Gerät an ein anderes und passen die Motordrehzahl entsprechend an.

    Projektübersicht

    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.


    Abrufen der MAC-Adresse des Empfängers

    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:

    1. Laden Sie zunächst den Code des Empfängers ( Gerät 2 ) in Ihre CodeCell hoch. Dadurch wird das WLAN initialisiert und seine eindeutige MAC-Adresse auf dem seriellen Monitor angezeigt.
    2. Nachdem Sie den Code auf Gerät 2 hochgeladen haben, öffnen Sie den seriellen Monitor des Arduino. Sobald das Gerät initialisiert ist, sollte die MAC-Adresse angezeigt werden.
    3. Die MAC-Adresse wird im Format XX:XX:XX:XX:XX:XX ausgegeben. Kopieren Sie diese Adresse, da Sie sie für den Absendercode benötigen.
    4. Ersetzen Sie die Platzhalter-MAC-Adresse im Code des Absenders (Gerät 1) durch die MAC-Adresse, die Sie gerade von Gerät 2 erhalten haben. Dadurch wird sichergestellt, dass Gerät 1 Daten an den richtigen Empfänger sendet.

    Beispiel 1: Fernsteuerung der LED mit Näherungssensor

    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.

    Gerät 1 (Absender)

     
    #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");
     }
     }
     }
    

    Gerät 2 (Empfänger)

     
    #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
     }
    

    Beispiel 2: Senden von Winkeldaten zur Steuerung der Motordrehzahl

    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.

    Gerät 1 (Absender)

     
    #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));
     }
     }
    

    Gerät 2 (Empfänger)

     
    #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!

    • Teilen:

    Sozial

    Github

    • Um
    • Software
    • Ausbildung
    • Kontakt
    • FAQs
    • Bedingungen
    • Rückerstattung-Politik
    • Datenschutzrichtlinie

    Erfahren Sie als Erster von neuen Projekten und sichern Sie sich spannende Angebote!

    © 2025 Microbots.