Menü
Microbots
0
  • Lernen
  • Geschäft
    • Module & Technik
    • Maker-Packs
    • Werkzeuge und Ausrüstung
    • Robots & Displays
    • Alle Produkte
  • Gemeinschaft
    • Education
    • Software
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Deutsch
  • Ihr Warenkorb ist leer
Microbots
  • Lernen
  • Geschäft
    • Module & Technik
    • Maker-Packs
    • Werkzeuge und Ausrüstung
    • Robots & Displays
    • Alle Produkte
  • Gemeinschaft
    • Education
    • Software
  • Um
    • Unsere Geschichte
    • Kontakt
    • FAQs
  • Sprache

  • 0 0

CodeCell: WLAN-Fernbedienung

In dieser Anleitung erfahren Sie, wie Sie den ESP32-C3 von CodeCell so konfigurieren, dass er als WLAN-Fernbedienung zur Kommunikation zwischen zwei Geräten verwendet werden kann.

    Der ESP32-C3 von CodeCell ist mit WLAN-Funktion ausgestattet und ermöglicht so eine drahtlose Kommunikation. Mit ESP-NOW können wir mit minimalem Einrichtungsaufwand eine direkte Kommunikation von Gerät zu Gerät herstellen. Diese Anleitung zeigt, wie man zwei Geräte koppelt, wobei man eines als sensorbasierte Fernbedienung und das andere zum Empfangen und Reagieren auf die übertragenen Daten verwendet.


    Was Sie lernen werden

    • So richten Sie zwei CodeCell- Geräte für die Kommunikation über WLAN und 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 werden wir zwei CodeCell- Geräte koppeln. Gerät 1 sammelt 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 auf Gerät 1 die integrierte LED auf Gerät 2 steuert. Im zweiten Beispiel sendet Gerät 1 Winkeldaten und Gerät 2 verarbeitet die Daten, um die Motordrehzahl anzupassen.


    Abrufen der MAC-Adresse des Empfängers

    Bevor Sie eine Kommunikation zwischen den beiden CodeCell- Geräten herstellen können, müssen Sie zunächst die MAC-Adresse des Empfängers ermitteln. Diese MAC-Adresse wird im Code des Absenders verwendet, um sicherzustellen, dass das richtige Gerät die Daten empfängt.

    Um die MAC-Adresse des Empfängers zu ermitteln, gehen Sie folgendermaßen vor:

    1. Laden Sie zunächst den Code des Empfängers ( Gerät 2 ) auf Ihre CodeCell hoch. Dadurch wird das WLAN initialisiert und seine eindeutige MAC-Adresse auf dem seriellen Monitor angezeigt.
    2. Öffnen Sie nach dem Hochladen des Codes auf Gerät 2 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 ausgedruckt. Kopieren Sie diese Adresse, da Sie diese 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 der 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() {
     Seriell.begin(115200);
     myCodeCell.Init(LIGHT); // Initialisiert die Lichterkennung
    
     // WiFi 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 Peer-Info;
     memcpy(peerInfo.peer_addr, Empfänger-MAC, 6);
     peerInfo.channel = 0;
     peerInfo.encrypt = falsch;
    
     wenn (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 abrufen 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 der beiden 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());
     
    // 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 Peer-Info;
     memcpy(peerInfo.peer_addr, Empfänger-MAC, 6);
     peerInfo.channel = 0;
     peerInfo.encrypt = falsch;
    
     wenn (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;
     Rollen = (Rollen * 100) / 180;
     Rollen = Einschränkung(Rollen, 0, 200) / 2;
     Roll_Control = (uint8_t)Rollen;
    
     Serial.println(Roll_Control);
     esp_now_send(Empfänger-MAC, (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); 
    Antriebszellenmotor2 (IN2_Pin1, IN2_Pin2);
    
     void setup() {
     Seriell.begin(115200);
     myCodeCell.Init(LIGHT); // Lichtsensor initialisieren
     Motor1.Init();
     Motor2.Init();
    
     // WiFi 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;
     }
    
     //Registriere den Empfangs-Callback
     esp_now_register_recv_cb(onDataRecv);
     }
    
     void onDataRecv(const esp_now_recv_info *recvInfo, const uint8_t *incomingData, int len) {
     int Roll_Speed ​​= 0;
     memcpy(&Roll_Speed, eingehende Daten, Größe von(Roll_Speed));
    
     wenn (Roll_Speed ​​> 50) {
     Motor1.Antrieb(1, Roll_Speed);
     Motor2.Antrieb(1, Roll_Speed);
     } anders {
     Rollgeschwindigkeit = 100 - Rollgeschwindigkeit;
     Motor1.Antrieb(0, Roll_Speed);
     Motor2.Antrieb(0, Roll_Speed);
     }
     Serial.println(Roll_Speed);
     }
    
     void schleife() {
     wenn (myCodeCell.Run(10)) {}
     }
    

    Abschluss

    Anhand dieser Beispiele können Sie zwei CodeCell- Geräte so konfigurieren, dass sie mit ESP-NOW über WLAN kommunizieren. Die Beispiele zeigen, wie Sie Näherungs- und Winkeldaten zwischen Geräten senden und die Daten zur Echtzeitsteuerung von LEDs und Motoren nutzen können.

    Erweitern Sie diese Projekte gerne durch die Integration weiterer Sensoren oder zusätzlicher Funktionen, um die Funktionalität Ihres Remote-Systems zu verbessern!

    • Teilen:


    Vollständigen Artikel anzeigen

    Linking Your CodeCell to the MicroLink App
    Linking Your CodeCell to the MicroLink App

    Vollständigen Artikel anzeigen

    Debugging CodeCell
    Debugging CodeCell

    Vollständigen Artikel anzeigen

    CodeCell: Connecting with BLE
    CodeCell: Connecting with BLE

    Vollständigen Artikel anzeigen

    Sozial

    Github

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

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

    © 2025 Microbots.