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

CodeCell - Going to Sleep

CodeCell - Schlafen gehen

Energieeffizienz ist für viele eingebettete Anwendungen entscheidend, insbesondere für solche, die Batteriestrom benötigen. In dieser Anleitung erfahren Sie, wie Sie CodeCell in den Energiesparmodus versetzen und mithilfe eines Näherungssensors aktivieren.

Den Ruhemodus von CodeCell verstehen

Für Anwendungen, die eine vollständige Stromabschaltung erfordern, können Sie einen Schalter in Reihe mit der Batterie schalten. So können Sie das Gerät manuell ein- und ausschalten. Alternativ können Sie CodeCell in den Ruhemodus versetzen und bei Sensoraktivität aktivieren.

CodeCell hat einen durchschnittlichen Ruhestrom von 689 μA. Obwohl dieser Wert höher sein kann als für manche Ultra-Low-Power-Anwendungen erforderlich, arbeiten wir aktiv daran, den Stromverbrauch in der nächsten Version zu optimieren und gleichzeitig die Größe beizubehalten.

Aufgrund der geringen Größe und der begrenzten Anzahl an Pins des ESP32C3 konnten wir keinen dedizierten Interrupt-Pin für die Sensoren zum Aufwecken des Geräts integrieren. Ein echter Hardware-Interrupt wäre zwar ideal, Sie können CodeCell jedoch auch in den Ruhemodus versetzen, indem Sie vor dem Aufwecken regelmäßig die Sensoraktivität prüfen.

Implementieren des Ruhemodus

Der folgende Code veranschaulicht, wie CodeCell in den Ruhemodus wechselt und aufwacht, wenn eine Nähe erkannt wird.

 
#include <CodeCell.h>

 CodeCell myCodeCell;

 void setup() {
 Serial.begin(115200);

 delay(60); // Waking up from Sleep - add a small delay for Serial
 if (myCodeCell.WakeUpCheck()) {
 // Initialize light sensor
 while (myCodeCell.Light_Init() == 1) {
 delay(1);
 myCodeCell.LightReset(); // If sensor not responding, reset it
 }
 delay(40);
 myCodeCell.Light_Read(); // Read value from light sensor
 if (myCodeCell.Light_ProximityRead() < 10) { 
myCodeCell.Sleep(1); // Wenn immer noch keine Nähe erkannt wird, gehe zurück in den Ruhezustand und überprüfe nach 1 Sekunde erneut
 }
 }

 myCodeCell.Init(LIGHT); // Zeit zum Aufwachen – Initialisiert alle CodeCell-Peripheriegeräte
 }

 void-Schleife() {
 if (myCodeCell.Run(10)) { // Alle 10 Hz ausführen
 wenn (myCodeCell.Light_ProximityRead() < 10) {
 myCodeCell.Sleep(1); // Wenn keine Nähe erkannt wird, gehe in den Ruhezustand und überprüfe nach 1 Sekunde erneut
 }
 }
 }

So funktioniert es:

  1. Beim Booten initialisiert CodeCell den Lichtsensor und prüft die Nähe.

  2. Wenn keine Nähe erkannt wird, wechselt CodeCell für 1 Sekunde in den Ruhemodus.

  3. Jede Sekunde wird CodeCell kurz aktiviert, prüft die Nähe und geht bei Bedarf wieder in den Ruhezustand.

  4. Wenn eine Nähe erkannt wird, wird CodeCell vollständig aktiviert und initialisiert alle Peripheriegeräte.

Abschluss

Mit diesem Beispiel können Sie CodeCell deutlich stromsparender gestalten und es so für batteriebetriebene Anwendungen optimieren. Wir arbeiten kontinuierlich daran, CodeCell für Anwendungen mit geringem Stromverbrauch zu optimieren. Bleiben Sie dran für Updates und Verbesserungen!

Vollständigen Artikel anzeigen

CodeCell: Reading the Roll, Pitch & Yaw

CodeCell: Lesen von Roll-, Nick- und Gierungswinkel

In dieser Anleitung erfahren Sie, wie Sie mit der CodeCell die Rotation direkt messen, indem Sie den Roll-, Nick- und Gierwinkel ablesen. Das Verständnis dieser Winkel ist entscheidend für Anwendungen wie Robotik, Drohnen und Bewegungsverfolgung, bei denen präzise Orientierungsdaten benötigt werden.

Roll-, Nick- und Gieren verstehen

CodeCell ist mit einem Bewegungssensor BNO085 ausgestattet, der Daten von Beschleunigungsmesser, Gyroskop und Magnetometer zur Berechnung von Rotationsvektoren kombiniert. Diese Vektoren helfen dabei, die Ausrichtung des Geräts im Raum in Bezug auf Roll-, Nick- und Gierbewegungen zu bestimmen:

  • Rollen : Drehung um die X-Achse (Neigung nach links oder rechts)
  • Pitch : Drehung um die Y-Achse (Neigung nach vorne oder hinten)
  • Gieren : Drehung um die Z-Achse (nach links oder rechts drehen)

Durch die kontinuierliche Überwachung dieser Werte bietet CodeCell Orientierungsfeedback in Echtzeit und ist daher für eine Vielzahl bewegungsbasierter Anwendungen nützlich.

Lesen von Roll-, Nick- und Gierungsbewegungen mit CodeCell

Um die Drehwinkel zu lesen, folgen Sie diesem einfachen Beispiel. Dieser Code initialisiert den Bewegungssensor von CodeCell und gibt kontinuierlich die Roll-, Nick- und Gierwerte auf dem seriellen Monitor aus.

 #include <CodeCell.h>

 CodeCell myCodeCell;

 float Roll = 0.0;
 float Pitch = 0.0;
 float Yaw = 0.0;

 void setup() {
 Serial.begin(115200); // Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial.

 myCodeCell.Init(MOTION_ROTATION); // Initializes Rotation Sensing
 }

 void loop() {
 if (myCodeCell.Run(10)) { // Run every 10Hz
 myCodeCell.Motion_RotationRead(Roll, Pitch, Yaw);
 Serial.printf("Roll: %.2f°, Pitch: %.2f°, Yaw: %.2f°\n", Roll, Pitch, Yaw);
 }
 }

Erläuterung des Codes:

  1. Initialisieren Sie den CodeCell-Bewegungssensor, um Rotationswerte zu lesen.

  2. Lassen Sie den Sensor mit 10 Hz (alle 100 ms) laufen, um aktuelle Daten zu erhalten.

  3. Drucken Sie die Roll-, Nick- und Gierwinkel in Grad auf dem seriellen Monitor.

Dies bietet eine genaue Möglichkeit, die Ausrichtung von CodeCell in Echtzeit zu messen.

Verwenden von Rotationsdaten zur Servosteuerung

Eine praktische Anwendung des Auslesens von Roll-, Nick- und Gierwinkel ist die Steuerung eines Servomotors basierend auf der Ausrichtung von CodeCell. Das folgende Beispiel bildet den Nickwinkel auf die Position des Servos ab.

 #include <CodeCell.h>
 #include <ESP32Servo.h>

 CodeCell myCodeCell;
 Servo myservo;

 float Roll = 0.0;
 float Pitch = 0.0;
 float Yaw = 0.0;
 int servo_angle = 0;

 void setup() {
 Serial.begin(115200); // Set Serial baud rate to 115200
 myCodeCell.Init(MOTION_ROTATION); // Initializes rotation sensing
 myservo.attach(1); // Attaches the servo on pin 1 to the servo object
 }

 void loop() {
 if (myCodeCell.Run(10)) {
 // Read rotation angles from the BNO085 sensor
 myCodeCell.Motion_RotationRead(Roll, Pitch, Yaw);

 // Convert the pitch angle to a servo angle
 servo_angle = abs((int)Pitch);
 servo_angle = (180 - servo_angle); 

// Begrenzen Sie den Servowinkel auf den Bereich 0-60 Grad
 wenn (Servowinkel > 60) {
 Servowinkel = 60;
 } sonst wenn (Servowinkel < 0) {
 Servowinkel = 0;
 }

 Serial.println(servo_angle); // Drucke den Servowinkel zum Debuggen
 myservo.write(servo_angle); // Servoposition einstellen
 }
 }

Erläuterung:

  • Ordnet den Nickwinkel zu, um die Servoposition zu steuern.

  • Begrenzt den Servowinkel auf einen sicheren Bereich (0–60 Grad), um übermäßige Bewegungen zu vermeiden.

  • Verwendet 10-Hz-Updates, um eine gleichmäßige Reaktion zu gewährleisten.

Abschluss

Durch das direkte Auslesen von Roll-, Nick- und Gierbewegungen können Sie mit CodeCell erweiterte bewegungsbasierte Anwendungen freischalten. Passen Sie die Beispiele an und integrieren Sie sie in Ihre eigenen Projekte. Weitere Beispiele und technische Dokumentation finden Sie im CodeCell GitHub Repository !

Vollständigen Artikel anzeigen

Understanding CodeCell Charging

Grundlegendes zum CodeCell-Laden

Die CodeCell bietet flexible Stromversorgungsoptionen und kann entweder über den LiPo-Akkuanschluss, ein USB-C-Kabel oder beide gleichzeitig mit Strom versorgt werden. Dies gewährleistet die Anpassungsfähigkeit an verschiedene Anwendungsfälle.

  • LiPo-Batterieanschluss: Entwickelt für einen sicheren und einfachen Batterieanschluss ohne Löten.
  • USB-C-Anschluss: Fungiert als Stromquelle, Ladeanschluss und Programmierschnittstelle.

Die Energieverwaltung übernimmt der Batteriemanagement-Chip BQ24232 , der Dynamic Power-Path Management (DPPM) unterstützt. Dadurch kann die CodeCell mit externer Stromversorgung betrieben und gleichzeitig der Akku geladen werden. Der Ladevorgang erfolgt in drei Hauptphasen:

  1. Konditionierende Vorladung – Sorgt für sicheres Laden tiefentladener Batterien.
  2. Laden mit konstantem Strom – Bietet eine stabile Laderate, bis die Batterie einen bestimmten Spannungsschwellenwert erreicht.
  3. Laden mit konstanter Spannung – Hält eine konstante Spannung aufrecht, während der Strom allmählich reduziert wird, um den Ladezyklus abzuschließen.

Der BQ24232-Chip regelt die Ausgangsspannung und unterstützt eine maximale Leistung von 1500 mA bei Stromversorgung über den LiPo-Akku und 450 mA bei Stromversorgung über USB.

Standard-Ladeparameter

Der Ladestrom des LiPo-Akkus ist standardmäßig auf 90 mA eingestellt. Dies ist für den optionalen 170 mAh LiPo-Akku optimiert und gewährleistet eine sichere und ausgewogene Laderate.

Fortgeschrittene Anwender, die den Ladestrom ändern möchten, können dies durch den Austausch des 0402-Widerstands R12 tun. Diese Änderung erfordert jedoch präzise Lötkenntnisse, da 0402-Komponenten extrem klein sind. Weitere Details finden Sie im Datenblatt des BQ24232.

Ladeanzeigen

Die CodeCell-Bibliothek bietet mithilfe der integrierten RGB-LED visuelles Feedback zum Lade- und Stromstatus:

  • Warnung bei niedrigem Batteriestand: Wenn die Batteriespannung unter 3,3 V fällt, blinkt die LED zehnmal rot und das Gerät wechselt in den Ruhemodus, um Strom zu sparen.
  • Ladevorgang: Während des Ladevorgangs über USB leuchtet die LED blau. Sobald der Akku vollständig geladen ist, wechselt die LED zu einer atmenden Lichtanimation.
  • Batteriebetriebener Modus: Wenn das Gerät ausschließlich mit Batteriestrom betrieben wird, leuchtet die LED grün und führt eine Atemlichtanimation aus.

Lesen des Batteriestatus

Um den Energiestatus der CodeCell zu lesen, können Benutzer die Funktion PowerStateRead() verwenden:

  • 0 = Betrieb mit LiPo-Batteriestrom
  • 1 = Betrieb über USB-Stromversorgung
  • 2 = Der Stromstatus wird initialisiert
  • 3 = LiPo-Batterie ist schwach
  • 4 = LiPo-Akku ist vollständig geladen
  • 5 = LiPo-Akku wird geladen

Hinweis: Diese Funktion ist ab Softwareversion v1.2.8 verfügbar. Stellen Sie daher sicher, dass Sie die Firmware aktualisiert haben. Die CodeCell bleibt während des Ladevorgangs betriebsbereit. Wenn Sie den Betrieb unterbrechen möchten, empfehlen wir Ihnen, den Ladezustand abzufragen.

Ablesen von Batteriespannung und -stand

Zum Lesen der Batteriespannung können Sie die Funktion BatteryVoltageRead() oder BatteryLevelRead() verwenden, um den Batterieprozentsatz zu lesen.

Bei BatteryLevelRead() liegt der zurückgegebene Wert zwischen 1 und 100 % . Wenn der Akku geladen wird, wird 101 zurückgegeben. Wenn die CodeCell nur über USB ohne Akku mit Strom versorgt wird, wird 102 zurückgegeben.

Abschluss:

Mit diesen Informationen haben Sie nun ein umfassendes Verständnis der Funktionsweise des Ladesystems von CodeCell, einschließlich seines Standardverhaltens und seiner Anpassungsoptionen!

Vollständigen Artikel anzeigen

Understanding CodeCell Circuitry

CodeCell-Schaltkreise verstehen

CodeCell ist ein kompaktes Modul mit dem ESP32-C3, verschiedenen Stromversorgungsoptionen und integrierten Sensoren – und das alles in einem winzigen Formfaktor von 1,85 cm Breite. Diese Eigenschaften machen es zu einem leistungsstarken Werkzeug für eine Vielzahl von Anwendungen.

In diesem ersten Abschnitt machen wir uns zunächst mit der Schaltung der CodeCell vertraut. Anschließend führen wir Sie durch die einfachen Schritte zur Einrichtung Ihrer CodeCell.

Um die Schaltkreise genauer zu verfolgen, sehen Sie sich hier die CodeCell-Schaltpläne an .

ESP32-C3-Modul

Das Herzstück der CodeCell ist das ESP32-C3-Modul, ein kompakter Mikrocontroller, der für seine Maker-freundliche Bauweise im IoT-Bereich bekannt ist. Er kombiniert eine Arduino-kompatible Architektur mit integrierten WLAN- und Bluetooth Low Energy (BLE)-Funktionen.

Die PCB-Antenne des ESP32-C3-Moduls ist seitlich, abseits von anderen Komponenten, positioniert, um Störungen zu minimieren und die Signalübertragung und den Signalempfang zu verbessern. Diese Platzierung trägt dazu bei, den Einfluss von Masseflächen oder anderen leitfähigen Oberflächen, die die Antennenleistung beeinträchtigen könnten, zu reduzieren. Tests haben gezeigt, dass die Leistung der Antenne bei batteriebetriebenen Anwendungen unbeeinträchtigt bleibt. Beim Anschließen des USB-C-Kabels zum Laden treten nur minimale Störungen auf, da diese Kabel typischerweise abgeschirmt sind.

Der ESP32-C3 bietet 4 MB Flash und 400 KB SRAM und ist damit für die meisten Anwendungen geeignet. Sein 32-Bit-RISC-V-Single-Core-Prozessor mit bis zu 160 MHz bewältigt effizient verschiedene Aufgaben. Der ESP32-C3 verfügt außerdem über einen USB-Seriell/JTAG-Controller, der das erneute Flashen von CodeCell über den USB-C-Anschluss ermöglicht und die serielle Kommunikation sowie das Debugging erleichtert.

Energieverwaltung

Die CodeCell bietet flexible Stromversorgungsoptionen. Sie kann über den LiPo-Akkuanschluss, ein USB-C-Kabel oder beides mit Strom versorgt werden.

  • LiPo-Akkuanschluss: Ermöglicht einen sicheren und einfachen Akkuanschluss ohne Löten.
  • USB-C-Anschluss: Dient einem doppelten Zweck – der Stromversorgung und der Programmierung des Geräts.

Die Energieverwaltung übernimmt der Batteriemanagement-Chip BQ24232, der Dynamic Power-Path Management (DPPM) unterstützt. Dadurch kann CodeCell mit Strom versorgt und gleichzeitig der Akku geladen werden. Der Ladevorgang erfolgt in drei Phasen:

  1. Konditionierungsvorladung
  2. Konstantstromladen
  3. Laden mit konstanter Spannung

Die Ausgangsspannung wird über den BQ24232-Chip geregelt und unterstützt bis zu 1500 mA bei Stromversorgung über den LiPo-Akku und 450 mA über USB.

Der Ladestrom des LiPo-Akkus ist standardmäßig auf 90 mA eingestellt, um eine sichere Laderate für den optionalen 170-mAh-LiPo-Akku zu gewährleisten. Fortgeschrittene Benutzer können diese Rate anpassen, indem sie den 0402-Widerstand R12 nach der Formel R = 870/Ichrg ersetzen. Diese Änderung wird nur für Personen empfohlen, die Erfahrung mit dem Löten von 0402-Komponenten haben. Weitere Informationen finden Sie im Datenblatt des BQ24232.

Die CodeCell-Bibliothek bietet visuelles Feedback zum Stromstatus über die integrierte adressierbare RGB-LED:

  • Warnung bei niedrigem Batteriestand: Blinkt 10 Mal rot und wechselt in den Ruhemodus, wenn die Batteriespannung unter 3,3 V fällt.
  • Ladevorgang: Die LED leuchtet während des Ladevorgangs blau und wechselt bei vollständiger Ladung zu einer Atemlichtanimation.
  • Batteriebetriebener Modus: LED-Leuchten Grün mit einer Atemlichtanimation, wenn ausschließlich mit Batteriestrom gearbeitet wird.

Die Platine enthält außerdem 100-µF-Kondensatoren für eine stabile Stromversorgung und TVS-Dioden zum ESD-Schutz. Ein 3,3-V-Low-Dropout-Regler (LDO) (NCP177) liefert einen stabilen 500-mA-Ausgang mit einem Dropout von 200 mV bei maximalem Strom.

GPIO- und Stromanschlüsse

Das kompakte Design der CodeCell erforderte eine sorgfältige Platzierung der GPIO- und Stromversorgungsanschlüsse. Die Platine ist in Funktionsbereiche unterteilt:

  • Niedrige Seite:
    • 3 Stromanschlüsse: Masse (GD), 3,3 V (3V3) und 5 V-Eingang (5V0) (zum Laden über USB verwendet).
    • I2C SDA- und SCL-Pins: Zum Anschluss externer digitaler Sensoren, die bei Nichtgebrauch auch als GPIOs verwendet werden können.
  • Andere zwei Seiten:
    • Jede Seite verfügt über:
      • 1 Erdungsstift (GD)
      • 1 Spannungsausgangspin (VO)
      • 3 GPIO-Pins (IO1, IO2, IO3, IO5, IO6, IO7) – alle als PWM-Pins konfigurierbar, wobei IO1, IO2 und IO3 auch als ADC-Pins dienen.

Sensorfunktionen

Die CodeCell ist mit integrierten Sensoren ausgestattet, um ihre Funktionalität zu verbessern:

  • VCNL4040 Lichtsensor:

    • Misst Umgebungslicht und Nähe bis zu 20 cm .
    • Verwendet ein 16-Bit-Design mit hoher Auflösung und integriertem IRED und ADC.
    • In der CodeCell-Bibliothek für eine optimierte Sensorauflösung vorkonfiguriert.
  • Optionaler 9-Achsen-Bewegungssensor BNO085:

    • Enthält einen 3-Achsen-Beschleunigungsmesser, ein Gyroskop und ein Magnetometer .
    • Verfügt über Sensorfusionsalgorithmen für genaue Bewegungsdaten, darunter:
      • Rollen, Nicken, Gieren
      • Bewegungszustands- und Aktivitätserkennung
      • Schrittzählung und Tipperkennung

Unsere CodeCell-Bibliothek vereinfacht die Sensorkonfiguration und das Lesen jedes Sensors.

Was ist mit dem BOOT-Pin?

Viele ESP32-Entwicklungsboards verfügen über RST- (Reset) und BOOT- Tasten. Der ESP32-C3 auf CodeCell kann jedoch automatisch über die Arduino IDE in den Boot-Modus wechseln, wodurch diese Tasten überflüssig werden und ein kleinerer Formfaktor möglich wird.

Wenn bei der CodeCell eine Ausnahme auftritt (die zu kontinuierlichen Zurücksetzungen führt), kann sie zum erneuten Flashen manuell in den Bootmodus gezwungen werden:

  1. Verbinden Sie den SCL-Pin und den GND-Pin mit einem Kabel .
  2. Ziehen Sie den USB-Stecker ab und schalten Sie den Akku aus (falls angeschlossen).
  3. Schließen Sie den USB-Anschluss erneut an .
  4. Programmieren Sie die CodeCell mit neuer Firmware neu.
  5. Entfernen Sie das kurzgeschlossene Kabel und stellen Sie die Stromversorgung wieder her.

Wenn Sie diese Schritte befolgen, wird die CodeCell wieder zum Leben erweckt.

Was ist in der Box?

Jedes CodeCell-Paket enthält:

  • 1x CodeCell-Modul
  • 4x M1.2 Schrauben
  • 3 Sätze Buchsenleisten (Löten optional)
  • 1x Batteriekabel (1,25 mm Rastermaß)
  • Optional: 170 mAh 20C LiPo-Akku (23 x 17,5 x 8,7 mm, 4,6 g, mit einer 1,25 mm Buchse)

Vollständigen Artikel anzeigen

CodeCell Basics: Your First Steps

CodeCell-Grundlagen: Ihre ersten Schritte

Wenn Sie gerade erst die CodeCell in die Hände bekommen haben, erwartet Sie ein Leckerbissen. Dieses winzige Modul wurde entwickelt, um Ihre DIY-Projekte mit zahlreichen Funktionen auf einer pfenniggroßen Platine zu vereinfachen. In dieser Anleitung führen wir Sie durch :

  • Was macht eine CodeCell aus? Und wie funktioniert ihre Schaltung?
  • So richten Sie Ihre CodeCell ein und verwenden sie
  • Erste Schritte mit Beispielen
  • Erklären Sie alle verfügbaren Bibliotheksfunktionen und wie Sie diese in Ihrem Projekt verwenden können

Was macht eine CodeCell aus?

CodeCell ist ein kompaktes und vielseitiges Modul mit dem ESP32-C3, mehreren Stromversorgungsoptionen und integrierten Sensoren – und das alles in einem winzigen Formfaktor von 1,85 cm Breite. Diese Funktionen machen es zu einem leistungsstarken Werkzeug für eine Vielzahl von Anwendungen.

In diesem ersten Abschnitt machen wir uns zunächst mit der Schaltung vertraut, aus der die CodeCell besteht. Danach gehen wir die einfachen Schritte zum Einrichten Ihrer CodeCell durch.

ESP32C3-Modul

Das Herzstück der CodeCell ist das ESP32C3-Modul, ein kompakter Mikrocontroller, der für seine Maker-Freundlichkeit im IoT-Bereich bekannt ist. Er kombiniert eine Arduino-kompatible Architektur mit integrierten Wi-Fi- und Bluetooth Low Energy (BLE)-Funktionen. Diese Integration bietet die gängigsten Konnektivitätsoptionen bei gleichzeitig kleinem Formfaktor.

Die PCB-Antenne des ESP32C3-Moduls ist auf einer Seite, entfernt von anderen Komponenten, positioniert, um Störungen zu minimieren und die Signalübertragung und den Signalempfang zu verbessern. Diese Platzierung trägt dazu bei, den Einfluss von Masseflächen oder anderen leitfähigen Oberflächen zu reduzieren, die die Antennenleistung beeinträchtigen könnten. Die Komponenten auf der Unterseite befinden sich innerhalb des empfohlenen Abstands für die Antenne. Beim Testen haben wir festgestellt, dass die Leistung der Antenne durch die minimalen Störungen eines USB-C-Kabels nicht beeinträchtigt wird, da diese Kabel normalerweise abgeschirmt sind.

Der ESP32-C3 bietet mit 4 MB Flash und 400 KB SRAM reichlich Speicher und kann damit die meisten typischen Anwendungen ausführen. Sein 32-Bit-RISC-V-Single-Core-Prozessor mit bis zu 160 MHz erledigt verschiedene Aufgaben effizient. Diese Kombination aus Speicher und Rechenleistung macht den ESP32-C3 für ein breites Anwendungsspektrum geeignet.

Das ESP32C3-Modul unterstützt auch einen USB-Seriell-/JTAG-Controller, sodass wir die CodeCell über den USB-C-Anschluss erneut flashen und serielle Daten zur Kommunikation und zum Debuggen senden können.

Energieverwaltung

Die CodeCell bietet Flexibilität bei den Stromversorgungsoptionen. Sie kann über den LiPo-Batterieanschluss, ein USB-C-Kabel oder beides mit Strom versorgt werden.

Mit dem LiPo-Batterieanschluss ist es einfacher als je zuvor, die Batterie sicher anzuschließen, ohne dass Lötarbeiten erforderlich sind oder das Risiko eines versehentlichen Kurzschlusses besteht.

Der USB-C-Anschluss dient zwei Zwecken: Er wird sowohl zum Betreiben des Geräts als auch zum Neuprogrammieren verwendet. Diese Multi-Power-Option wird durch den Batteriemanagement-Chip BQ24232 ermöglicht, der über dynamisches Power-Path-Management (DPPM) verfügt, das das System mit Strom versorgen und gleichzeitig und unabhängig die Batterie laden kann. Der Ladevorgang der Batterie wird in drei Phasen gesteuert: Konditionierungsvorladung, konstanter Strom und konstante Spannung. Zum Schutz der Batterie wird die Ausgangsspannung (Vo) durch den BQ24232-Chip geregelt. Dieser Ausgang unterstützt einen maximalen Ausgangsstrom von 1500 mA bei Stromversorgung durch die LiPo-Batterie und 450 mA bei Stromversorgung über USB.

Standardmäßig ist der Ladestrom des LiPo-Akkus auf 90 mA eingestellt, was eine ausgewogene und sichere Laderate für den optionalen 170-mAh-LiPo-Akku gewährleistet. Darüber hinaus muss der 0402-Widerstand R12 abgelötet und durch einen neuen Widerstand gemäß der Formel (R = 870/Ichrg) ersetzt werden, wenn man die Laderate anpassen möchte. Dies wird nur Lötprofis empfohlen, die sich nicht davor scheuen, mit winzigen 0402-Komponenten zu kämpfen! Weitere Informationen zum Laden des Akkus finden Sie im Datenblatt des BQ24232.

Die CodeCell- Bibliothek kann über die integrierte adressierbare RGB-LED visuelles Feedback zum Batterie-/USB-Stromstatus liefern:

  • Warnung bei schwacher Batterie: Wenn die Batteriespannung unter 3,3 V fällt, blinkt die LED zehnmal rot und das Gerät wechselt in den Ruhemodus. Dadurch wird Strom gespart, bis das Gerät wieder an ein USB-Ladegerät angeschlossen wird.
  • Ladevorgang: Während des Ladevorgangs unterbricht die CodeCell Anwendungsprozesse, lässt die LED blau leuchten und wartet, bis der Akku vollständig geladen ist. Sobald der Akku vollständig geladen ist, führt die LED eine atmende Lichtanimation aus, die den von den Sensoren erkannten Näherungsabstand anzeigt.
  • Batteriebetrieben: Wenn das USBC getrennt und über die Batterie betrieben wird, leuchtet die CodeCell wieder grün und führt eine Atemlichtanimation aus, um die von den Sensoren erkannte Annäherungsdistanz anzuzeigen.

Die Leistungsregelung wird zusätzlich durch mehrere Entkopplungskondensatoren unterstützt, darunter bis zu zwei Massenkondensatoren mit jeweils 100 µF, die neben dem Batterieanschluss platziert sind. Diese Kondensatoren sind mit den 3,3-V- und den Vo-Ausgangspins verbunden, um eine stabile Stromversorgung zu gewährleisten. Zusätzlich verfügt die Platine über zwei TVS-Dioden zum Schutz; eine schützt die 5-V-USB-Eingangsspannung (Vin) und die andere die Ausgangsspannung (Vo). Diese TVS-Dioden bieten Schutz vor elektrostatischen Entladungen (ESD) und können wiederholte ESD-Schläge über dem im internationalen Standard IEC 61000-4-2 festgelegten Höchstwert sicher absorbieren, ohne dass es zu Leistungseinbußen kommt.

Die Platine enthält außerdem einen integrierten 3,3-V-Low-Dropout-Regler (LDO), der eine stabile Stromversorgung für die Niederspannungskomponenten gewährleistet. Dieser winzige NCP177-LDO-Chip kann bis zu 500 mA Ausgangsstrom mit einer typisch niedrigen Dropout-Spannung von 200 mV bei 500 mA ausgeben.

    GPIO- und Stromversorgungspins

    Angesichts des kompakten Designs bestand die größte Herausforderung darin, die GPIO-Pins optimal zu nutzen. Wir haben dies erreicht, indem wir jede der drei verfügbaren Seiten der CodeCell je nach Anwendung in verschiedene E/A-Abschnitte unterteilt haben. Außerdem haben wir Stromanschlüsse an den Kanten des Moduls platziert, um den Anschluss an verschiedene Stromquellen zu erleichtern. So können Sie andere Module, Sensoren und Aktoren an verschiedenen Seiten anschließen.

    Auf der Unterseite werden 3 von 5 Pins für die Stromversorgung verwendet: ein Erdungspin (GD), ein 3,3-V-Logikpegel-Stromversorgungspin (3V3) und ein 5-V-Eingangsladepin (5V0). Dieser 5V0-Pin ist mit der USB-Eingangsspannung verbunden. Das bedeutet, dass Sie ihn verwenden können, um 5 V Strom zu erhalten, wenn USB angeschlossen ist, oder Sie können ihn als Stromeingang zum Laden verwenden, anstatt USB zu verwenden. Die anderen 2 Pins sind die I2C-SDA- und SCL-Pins zum Hinzufügen externer digitaler Sensoren. Wenn Sie keine externen Sensoren und die Licht-/Bewegungssensoren verwenden, können diese I2C-Pins als GPIOs eingerichtet werden.

    Die anderen beiden Seiten verfügen jeweils über einen Erdungsstift (GD) und einen Spannungsausgangsstift (VO). Jede Seite verfügt außerdem über 3 programmierbare GPIO-Pins (IO1, IO2, IO3, IO5, IO6, IO7), die alle als PWM-Pins konfiguriert werden können ( ideal für den direkten Anschluss einer H-Brücke zur Aktuator-/Motorsteuerung ). IO1, IO2 und IO3 können auch als ADC-Pins verwendet werden.

    Sensorfunktionen

    Zu den herausragenden Merkmalen der CodeCell gehören die integrierten Sensoren. Jede Einheit ist mit einem integrierten Lichtsensor ausgestattet. Außerdem ist ein optionaler Bewegungssensor erhältlich, um die Bewegungserkennung Ihres Projekts zu verbessern – besonders nützlich für Roboter und Wearables!

    • VCNL4040 Lichtsensor: Dieser Sensor misst sowohl Lichtstärke als auch Nähe bis zu 20 cm. Er verfügt über ein 16-Bit-Design mit hoher Auflösung, das einen Näherungssensor, einen Umgebungslichtsensor und einen Hochleistungs-IRED in einem kompakten Gehäuse vereint. Durch die Integration von Fotodioden, Verstärkern und einem Analog-Digital-Wandler auf einem einzigen Chip bietet er erweiterte Funktionalität. Die I2C-Konfiguration ist direkt in die CodeCell- Bibliothek eingebettet und stellt sicher, dass der Sensor automatisch initialisiert wird, um seine Sensorauflösung zu optimieren.
    • Optionaler 9-achsiger BNO085-Bewegungssensor: Dieser fortschrittliche IMU-Sensor ist ein teures Upgrade, aber wir glauben, dass er die Investition wert ist! Er erweitert die Fähigkeiten der CodeCell mit einem integrierten 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskop und 3-Achsen-Magnetometer + die fortschrittlichen Sensorfusionsalgorithmen des BNO085 kombinieren die Daten dieser Sensoren, um die Bewegungsdaten des Sensors genau zu bestimmen, wie: Winkelrotationsmessung (Rollen, Nicken, Gieren), Bewegungszustand (z. B. auf dem Tisch, stationär, in Bewegung), Bewegungsaktivität (z. B. Fahren, Gehen, Laufen), Beschleunigungsmessermessungen, Gyroskopmessung, Magnetometermessung, Schwerkraftmessung, lineare Beschleunigungsmessung, Tipperkennung, Schrittzähler. 

    Als Nächstes werden wir uns damit befassen, wie die CodeCell -Bibliothek sowohl die Konfiguration dieser Sensoren als auch das Lesen ihrer Daten vereinfacht.

    Was ist mit dem BOOT-Pin?

    Einige ESP32-Entwicklungsboards verfügen sowohl über eine RST-Taste (Reset) als auch eine BOOT -Taste, um das Gerät manuell in den Programmiermodus zu versetzen. Der ESP32-C3, wie beispielsweise der auf dem CodeCell-Modul, kann jedoch bei Verwendung der Arduino IDE automatisch über die serielle Schnittstelle in den Bootmodus wechseln. Das bedeutet, dass die CodeCell keine dedizierten RST- oder BOOT-Tasten benötigt, wodurch wir sie so klein machen konnten.

    In dem seltenen Fall, dass Ihre CodeCell einfriert oder eine Ausnahme auftritt (was dazu führt, dass sie kontinuierlich zurückgesetzt wird), können Sie sie manuell in den Bootmodus zwingen, um die Firmware neu zu flashen. Befolgen Sie dazu einfach diese Schritte:

    • Verbinden Sie ein Kabel zwischen dem SCL-Pin und dem GND-Pin.
    • Entfernen Sie das USB-Kabel und schalten Sie den Akku aus (sofern angeschlossen).
    • Schließen Sie den USB-Anschluss erneut an.
    • Programmieren Sie Ihre CodeCell mit neuem Code neu – stellen Sie sicher, dass Ihr Code nicht den Fehler enthält, der das Problem verursacht hat.
    • Entfernen Sie das kurzgeschlossene Kabel zwischen dem SCL-Pin und dem GND-Pin. Schalten Sie Ihre Batterie wieder ein, falls sie angeschlossen ist.

    Wenn Sie diese Schritte befolgen, wird Ihre CodeCell wieder zum Leben erweckt.

    Wie richten Sie Ihre CodeCell ein und verwenden sie?

      Um die Programmierung noch einfacher zu machen, CodeCell Die Bibliothek bietet eine breite Palette an Funktionen zum Initialisieren, Lesen und Verwalten von Sensoren und Strom. In diesem Abschnitt erklären wir alles, was Sie über die Einrichtung Ihres Geräts und seiner Bibliothek wissen müssen.

      Auspacken Ihrer CodeCell

      Beginnen wir mit dem, was Sie in der Box finden. Abhängig von den Optionen, die Sie beim Bezahlvorgang ausgewählt haben, finden Sie in der Box:

      1. CodeCell: Der Star der Show, Ihre kleine, aber leistungsstarke Platine mit dem ESP32-C3-Modul, programmierbaren GPIO-Pins und Sensoren.
      2. Schrauben: Vier M1,2 x 6 mm Schrauben zur sicheren Befestigung der CodeCell in Ihren Projekten.
      3. Header: Drei Sätze Buchsenleisten, die je nach Wahl ungelötet oder gelötet geliefert werden können.
      4. Akku/Kabel: Je nach Auswahl beim Bezahlvorgang erhalten Sie entweder ein kostenloses Akkukabel zum Anschluss Ihres eigenen Akkus an den Bordanschluss der CodeCell oder einen 170mAh 20C LiPo-Akku mit vorverlötetem Kabel. Dieser optionale Akku misst 23 x 17,5 x 8,7 mm und wiegt nur 4,6 Gramm. Klicken Sie hier, wenn Sie auf das Datenblatt des Akkus zugreifen möchten.

      CodeCell zum ersten Mal einschalten

      Beginnen wir mit dem Einstecken eines USB-C-Kabels! Sobald Ihre CodeCell mit Strom versorgt wird, sollte sie:

      • Initialisierung: Richtet die internen Peripheriegeräte ein und konfiguriert die integrierten Sensoren. Sobald dies abgeschlossen ist, wird eine „Hello World“-Nachricht auf dem seriellen Monitor ausgegeben.
      • Stromprüfung: Überwacht den Stromstatus, prüft, ob der Akku angeschlossen ist und ob er geladen wird. Wenn kein Akku zum Laden angeschlossen ist, wird eine atmende Lichtanimation mit der integrierten RGB-LED abgespielt. Die Animationsgeschwindigkeit ändert sich je nach Nähe des Lichtsensors. Bringen Sie Ihre Hand näher an den Sensor, um ihn zu verlangsamen. Bewegen Sie Ihre Hand weg, um ihn wieder zu beschleunigen! Die LED blinkt blau oder grün, je nachdem, ob die Platine über USB oder Akku mit Strom versorgt wird. Wenn der Akku geladen wird, bleibt die LED statisch blau, bis er vollständig geladen ist.

      Einrichten Ihrer CodeCell

      Der nächste Schritt besteht darin, die CodeCell mit der Arduino IDE zu verbinden und eine Skizze auszuführen:

      1. USB-Verbindung: Verbinden Sie Ihre CodeCell mit einem Standard-USB-C-Kabel mit Ihrem PC. Dieses Kabel versorgt die Platine nicht nur mit Strom, sondern ermöglicht auch die Neuprogrammierung.
      2. Installieren Sie die Arduino IDE: Wenn Sie neu in der Arduino-Welt sind, keine Sorge, laden Sie einfach die neueste kostenlose Version der Arduino IDE-Software von der offizielle Arduino-Website .
      3. URL des ESP32-Board-Managers hinzufügen: Wenn Sie noch nie einen ESP32 verwendet haben, öffnen Sie die Arduino IDE und navigieren Sie zu „Datei > Einstellungen“. Geben Sie im Feld „Zusätzliche Board-Manager-URLs“ Folgendes ein: „ https://dl.espressif.com/dl/package_esp32_index.json “ und klicken Sie dann auf „OK“. Gehen Sie dann zu „Tools > Board > Boards Manager“. Suchen Sie nach „ESP32“ und klicken Sie auf „Installieren“.
      4. Wählen Sie die Platine aus: Der nächste Schritt besteht darin, unsere Platine auszuwählen. Gehen Sie zu „Tools > Platine“ und wählen Sie „ESP32C3 Dev Module“. In einigen Wochen können Sie direkt nach „CodeCell“ suchen, aber im Moment funktioniert die Auswahl von „ESP32C3 Dev Module“ einwandfrei, da es sich um den Mikrocontroller handelt, der an Bord der CodeCell verwendet wird.
      5. Port auswählen: Gehen Sie zu „Tools > Port“ und wählen Sie den COM-Port aus, der Ihrer CodeCell entspricht.
      6. Andere Einstellungen: Navigieren Sie zu „Tools > USB_CDC_On_Boot“ und stellen Sie sicher, dass es aktiviert ist, wenn Sie den seriellen Monitor verwenden möchten. Stellen Sie außerdem die Taktfrequenz auf 160 MHz ein.

      Nachdem Ihre IDE vollständig eingerichtet ist, können wir nun mit der Installation der Bibliothek „CodeCell“ fortfahren. Gehen Sie dazu zu „Sketch > Bibliothek einbinden > Bibliotheken verwalten“ – der „Bibliotheksmanager“ sollte sich öffnen. Geben Sie einfach „CodeCell“ ein und klicken Sie auf „Installieren“, um die neueste Version von CodeCell herunterzuladen.

      Wir aktualisieren diese Bibliothek kontinuierlich und fügen neue Funktionen hinzu. Stellen Sie daher sicher, dass Sie die neueste Version verwenden.

      Um sich schnell mit dieser Bibliothek vertraut zu machen, gehen Sie zu „Datei > Beispiele > CodeCell“, wo Sie mehrere Beispiele finden, die Sie für Ihre Projekte verwenden und ändern können. Wir empfehlen, mit dem Beispiel „GettingStarted“ zu beginnen, das nur wenige Codezeilen enthält, aber alle mit CodeCell verfügbaren Sensorfunktionen erklärt.

      Sobald Sie eine Beispielskizze ausgewählt haben, klicken Sie auf die Schaltfläche „Hochladen“, um den Code auf Ihre CodeCell zu flashen. Öffnen Sie nach dem Hochladen den seriellen Monitor „Tools > Serieller Monitor“, um serielle Daten von Ihrer CodeCell anzuzeigen.

      Hier sind einige zusätzliche CodeCell- Tutorials, die Ihnen den Einstieg in verschiedene Anwendungen erleichtern:

      • Tiefe Gesten
      • Tipperkennung​
      • Nähe
      • Automatisches Dimmen
      • Schrittzähler
      • Winkelsteuerung
      • Persönliche Aktivitätsraten
      • Drahtlose Fernbedienung
      • KI-Eingabeaufforderung
      • Alexa Lichtsteuerung

      CodeCell-Bibliotheksfunktionen

      Um den Code genauer zu untersuchen, wollen wir alle Funktionen aufschlüsseln und erklären, was jede einzelne macht:

      CodeCell initialisieren

      Der erste Schritt bei der Nutzung der CodeCell besteht darin, es zu initialisieren. Dies geschieht mit der Funktion `myCodeCell.Init()`, mit der Sie die Sensoren angeben können, die Sie aktivieren möchten.

      Verfügbare Sensormakros:

      • LICHT – Aktiviert die Lichterkennung.
      • BEWEGUNGSBESCHLEUNIGUNGSMESSER - Aktiviert die Beschleunigungsmessung.
      • BEWEGUNGSGYRO - Aktiviert die Gyroskoperkennung.
      • BEWEGUNGSMAGNETOMETER - Aktiviert die Magnetometer-Erkennung.
      • BEWEGUNG_LINEAR_ACC - Aktiviert die lineare Beschleunigungserfassung.
      • BEWEGUNG_SCHWERKRAFT - Aktiviert die Schwerkrafterkennung.
      • BEWEGUNGSROTATION - Aktiviert die Rotationserkennung.
      • BEWEGUNG_DREHUNG_OHNE_MAG - Ermöglicht Rotationserkennung ohne Magnetometer.
      • BEWEGUNGSSCHRITTZÄHLER - Aktiviert den Schrittzähler.
      • BEWEGUNGSZUSTAND - Aktiviert die Bewegungszustandserkennung.
      • BEWEGUNGSTIPPMELDER - Aktiviert den Tippdetektor.
      • MOTION_ACTIVITY – Aktiviert die Bewegungsaktivitätserkennung.


      Sie können mehrere Makros mit dem Operator „+“ kombinieren, um mehrere Sensoren gleichzeitig zu initialisieren.

      Energiemanagement

      Die Funktion `myCodeCell.Run()` ist für die Energieverwaltung von entscheidender Bedeutung. Diese Funktion sollte innerhalb der Funktion `loop()` aufgerufen werden, um den Batteriestatus zu verwalten und eine optimale Energienutzung sicherzustellen.

      Funktionsverhalten:

      • Die Funktion gibt alle 100 ms „true“ zurück, was für zeitbasierte Vorgänge verwendet werden kann.
      • Es steuert die integrierte LED, um verschiedene Stromzustände anzuzeigen:
        • Rotes Blinken (10-mal blinkend) – Batteriespannung unter 3,3 V, Wechsel in den Ruhemodus.
        • Grüne LED (Atem-Animation) – Batteriebetrieben
        • Blaue LED (statisch) – Akku wird geladen
        • Blaue LED (Atemanimation) – Vollständig aufgeladen und betriebsbereit.

      Sensordaten auslesen

      Nach der Initialisierung der Sensoren können Sie deren Daten mithilfe verschiedener von der Bibliothek bereitgestellter Funktionen lesen. Hier ist ein kurzer Überblick über die verfügbaren Funktionen:

      Lichtsensorfunktionen:

      • Light_ProximityRead() – Liest den Näherungswert vom Lichtsensor.
      • Light_WhiteRead() – Liest die Weißlichtintensität vom Lichtsensor.
      • Light_AmbientRead() – Liest die Umgebungslichtintensität vom Lichtsensor.

      Funktionen des Bewegungssensors:

      • Motion_AccelerometerRead(float &x, float &y, float &z) – Liest Beschleunigungsdaten entlang der x-, y- und z-Achse.
      • Motion_GyroRead(float &x, float &y, float &z) – Liest Daten zur Rotationsgeschwindigkeit entlang der x-, y- und z-Achse.
      • Motion_MagnetometerRead(float &x, float &y, float &z) – Liest Daten zur magnetischen Feldstärke entlang der x-, y- und z-Achse.
      • Motion_GravityRead(float &x, float &y, float &z) – Liest Schwerkraftvektordaten entlang der x-, y- und z-Achse.
      • Motion_LinearAccRead(float &x, float &y, float &z) – Liest lineare Beschleunigungsdaten entlang der x-, y- und z-Achse.
      • Motion_TapRead(uint16_t &x) – Liest die Anzahl der erkannten Taps.
      • Motion_StepCounterRead(uint16_t &x) – Liest die Anzahl der gezählten Schritte.
      • Motion_RotationRead(float &roll, float &pitch, float &yaw) – Liest Winkelrotationsdaten (Rollen, Nicken, Gieren).
      • Motion_RotationNoMagRead(float &roll, float &pitch, float &yaw) – Liest Winkelrotationsdaten ohne Verwendung des Magnetometers.
      • Motion_StateRead(uint16_t &x) – Liest den aktuellen Status (z. B. „Auf dem Tisch“, „Stationär“, „Bewegung“).
      • Motion_ActivityRead(uint16_t &x) – Liest die aktuelle Aktivität (z. B. Fahren, Gehen, Laufen).

      Anwendungsbeispiel:


      Ruhezustand, Energiesparen, Diagnose- und LED-Funktionen

      Die CodeCell umfasst mehrere Funktionen zur Verwaltung des Ruhe- und Energiesparmodus:

      • WakeUpCheck() - Überprüft den Grund für das Aufwachen des Geräts. Wenn das Gerät durch ein Timer-Ereignis aufgewacht ist, gibt es „true“ zurück, andernfalls „false“.
      • Sleep(uint16_t sleep_sec) – Versetzt das Gerät für eine bestimmte Dauer in Sekunden in den Tiefschlafmodus. Es konfiguriert die erforderlichen Pins und Sensoren für einen geringen Stromverbrauch, bevor es in den Schlafmodus wechselt.
      • USBSleep(bool cable_polarity) - Verwaltet den Ruhemodus des Geräts, wenn der Akkustand niedrig ist oder wenn das Gerät über USB aufgeladen wird. Es beendet die Anwendung und bereitet das Gerät auf den Ruhemodus vor, um bei Bedarf eine Neuprogrammierung zu ermöglichen.
      • PrintSensors() - Druckt die aktuellen Messwerte aller initialisierten Sensoren auf den seriellen Monitor. Diese Funktion ist besonders nützlich zum Debuggen und zur Datenprotokollierung.
      • BatteryRead() – Diese Funktion liest und gibt die Batteriespannung zurück, wenn der USB-C-Anschluss getrennt wird.
      • LED_Breathing(uint32_t rgb_color_24bit) – Diese Funktion wird im Run()-Handler verwendet, um die integrierte LED zu steuern und einen Atmungseffekt mit einer bestimmten Farbe zu erzeugen. Der Parameter „rgb_color_24bit“ ist ein 24-Bit-Farbwert, der die RGB-Farbe darstellt. Seien Sie bei der Verwendung dieser Funktion vorsichtig, da die Funktion „Run“ Ihre LED-Farbe überschreiben könnte.
      • LED(uint8_t r, uint8_t g, uint8_t b) - Diese Funktion legt die Farbe der integrierten adressierbaren LED mithilfe des RGB-Modells fest, wobei „r“, „g“ und „b“ 8-Bit-Werte sind, die die roten, grünen und blauen Komponenten der Farbe darstellen. Jede Komponente reicht von 0 bis 255. Seien Sie bei der Verwendung dieser Funktion vorsichtig, da die Funktion „Ausführen“ Ihre LED-Farbe überschreiben könnte.

      Glückwunsch!

      Sie haben jetzt Ihre ersten Schritte mit CodeCell gemacht. Tauchen Sie tiefer in die Bibliotheksbeispiele ein, erkunden Sie Sensorintegrationen und beginnen Sie, Ihre innovativen Projekte mit CodeCell zum Leben zu erwecken!



      Vollständigen Artikel anzeigen

      CodeCell: Making a Wifi Remote

      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!

        Vollständigen Artikel anzeigen

        CodeCell: Ai Prompt

        CodeCell: KI-Eingabeaufforderung

        In diesem Build untersuchen wir, wie man den ESP32-C3 von CodeCell so konfiguriert, dass er Googles Gemini AI für Arduino-basierte Interaktionen nutzt. Sie erfahren, wie Sie eine Eingabeaufforderung über den seriellen Monitor senden und in einem zweiten Beispiel, wie die CodeCell automatisch einen Witz basierend auf der Näherungserkennung auslösen kann. Dieses Projekt ist ideal für alle, die ihren IoT-Projekten KI-Funktionen hinzufügen möchten.

        Was Sie lernen werden

        • So richten Sie die CodeCell für KI-Eingabeaufforderungsinteraktionen über den ESP32-C3 ein.
        • So senden Sie mithilfe der Arduino IDE und des seriellen Monitors Eingabeaufforderungen an Gemini AI.
        • So verwenden Sie den Näherungssensor von CodeCell, um automatisch einen Witz auszulösen.

        Über CodeCell und Google Gemini

        In diesem Beispiel verwenden wir Googles Gemini-Modell zur Generierung von Inhalten auf der Grundlage von Benutzereingaben oder Sensordaten. In diesem Tutorial verwenden und modifizieren wir das von „techiesms“ erstellte Codebeispiel . Das vollständige Tutorial finden Sie hier.

        Mit den WiFi-Funktionen des ESP32-C3 können Sie HTTP-Anfragen an die Gemini-API von Google stellen und so eine Echtzeitinteraktion mit der KI ermöglichen. Egal, ob Sie nach Textantworten fragen oder kreative Ergebnisse wie Witze generieren, diese Integration ist unkompliziert zu implementieren.

        Projektübersicht

        Im ersten Beispiel senden Sie Eingabeaufforderungen direkt über den seriellen Monitor, und die CodeCell sendet diese Eingabe zur Verarbeitung an die Google Gemini AI. Die Antwort der KI wird an den seriellen Monitor zurückgesendet, begrenzt auf 100 Token. Im zweiten Beispiel löst der Näherungssensor der CodeCell eine Eingabeaufforderung an die KI aus und fordert sie auf, einen Witz zu generieren, wenn sie ein Objekt erkennt. Dieses Setup kann für unterhaltsame interaktive Projekte verwendet werden, bei denen das Gerät mithilfe von KI-basierten Inhalten auf seine Umgebung reagiert.

        So erhalten Sie den Gemini-API-Schlüssel

        Bevor wir die Gemini AI in unser ESP32-C3-Setup integrieren, müssen wir zunächst einen API-Schlüssel generieren und diesen testen. Befolgen Sie die folgenden Schritte, um Ihren API-Schlüssel zu erstellen. Anschließend können Sie ihn auch mit einer Software wie Postman testen.

        Schritt 1: Generieren des API-Schlüssels für Google Gemini

        1. Öffnen Sie Ihren Browser und suchen Sie nach Gemini API
        2. Klicken Sie auf das erste angezeigte Ergebnis. Dadurch gelangen Sie zur API-Dokumentationsseite von Google.
        3. Klicken Sie anschließend auf die Schaltfläche „ API-Schlüssel in Google AI Studio abrufen “ und dann auf „API-Schlüssel erstellen“.
        4. Sobald der API-Schlüssel generiert ist, kopieren Sie ihn an einen sicheren Ort. Sie benötigen ihn für die nächsten Schritte.

        Schritt 2: Testen der API mit Postman

        Da wir nun den API-Schlüssel haben, können wir ihn mit der Postman-Anwendung testen. Postman ist ein kostenloses Tool, mit dem Sie HTTP-Anfragen stellen und die Antworten anzeigen können.

        1. Laden Sie zunächst Postman von der offiziellen Website herunter und installieren Sie es. Den Download-Link finden Sie hier .
        2. Öffnen Sie nach der Installation Postman und erstellen Sie bei Bedarf ein neues Konto.
        3. Sobald Sie angemeldet sind, klicken Sie auf das +-Symbol, um eine neue Anfrage zu erstellen.
        4. Wählen Sie POST als Anforderungstyp, da wir eine Eingabeaufforderung an die Gemini-KI senden.
        5. Ändern Sie für die URL diese URL mit Ihrem API-Schlüssel, den Sie in Schritt 1 generiert haben: https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=YOUR_API_KEY

        Schritt 3: Konfigurieren von Headern und Body in Postman

        Nachdem Sie die URL eingegeben haben, müssen wir die Anforderungsheader und den Anforderungstext einrichten.

          1. Gehen Sie in Postman zum Abschnitt „Header“ und fügen Sie einen neuen Header hinzu.
          2. Setzen Sie den Header-Schlüssel auf Content-Type und den Wert auf application/json .
          3. Klicken Sie nun auf die Registerkarte „Body“ , wählen Sie „raw“ aus und stellen Sie das Format auf „JSON“ ein.
          4. Fügen Sie im Textkörper den folgenden JSON-Code ein:
         
        {
         "contents": [
         {
         "parts": [
         {
         "text": "Who are you?"
         }
         ]
         }
         ],
         "generationConfig": {
         "maxOutputTokens": 100
         }
         }
        

        In diesem Beispiel stellen wir der KI eine einfache Frage: „Wer bist du?“ und setzen die maximale Anzahl an Token auf 100. Token steuern die Länge der von der KI generierten Antwort. Wenn Sie das Token-Limit verringern (z. B. 20 Token), wird die Antwort kürzer. Sie können mit verschiedenen Werten für maxOutputTokens experimentieren, um zu sehen, wie sich dies auf die Antwortlänge auswirkt.

        Schritt 4: Senden der Anfrage

        1. Wenn alles eingerichtet ist, klicken Sie auf die Schaltfläche „Senden“ .
        2. Postman sendet die Anfrage an die Gemini-KI und nach einigen Sekunden sollten Sie eine Antwort sehen.
        3. Wenn alles erfolgreich war, wird der Status 200 OK angezeigt. Dies bedeutet, dass die Anforderung ohne Fehler verarbeitet wurde.
        4. Der Antworttext enthält die von der KI generierte Antwort. In diesem Fall sollten Sie etwa Folgendes sehen: "I am a large language model trained by Google."


        Wie erfolgt die Eingabeaufforderung mit CodeCell?

        Nachdem Sie die API generiert und ihre Funktionsfähigkeit überprüft haben, können Sie mit dem nächsten Schritt fortfahren: der Integration dieser API in Ihr CodeCell-Projekt.

        Beispiel 1: AI-Eingabeaufforderung über den seriellen Monitor

        Unten finden Sie den Beispielcode, der Ihnen den Einstieg erleichtert. In diesem Beispiel reagiert die KI auf Textaufforderungen, die Sie über den seriellen Monitor senden. Denken Sie daran, die Platzhalter durch Ihre WLAN-Anmeldeinformationen und das Gemini-API-Token zu ersetzen.

         
        #include <Arduino.h>
         #include <WiFi.h>
         #include <HTTPClient.h>
         #include <ArduinoJson.h>
         #include <CodeCell.h>
        
         CodeCell myCodeCell;
        
         const char* ssid = "SSID"; //Enter your SSID
         const char* password = "PASSWORD"; //Enter your password
         const char* Gemini_Token = ""; //Enter your Gemini token
         const char* Gemini_Max_Tokens = "100";
         String res = "";
        
         void setup() {
         Serial.begin(115200);
        
         WiFi.mode(WIFI_STA);
         WiFi.disconnect();
        
         while (!Serial);
        
         // Wait for WiFi connection
         WiFi.begin(ssid, password);
         Serial.print("Connecting to ");
         Serial.println(ssid); 
        während (WiFi.status() != WL_CONNECTED) {
         Verzögerung (1000);
         Serial.print(".");
         }
         Serial.println("verbunden");
         Serial.print("IP-Adresse: ");
         Serial.println(WiFi.localIP());
         }
        
         void schleife() {
         während (!Serial.available());
        
         während (Serial.available()) {
         char add = Serial.read();
         res += hinzufügen;
         Verzögerung(1);
         }
        
         int len ​​= res.length();
         res = res.substring(0, länge - 1);
         res = "\"" + res + "\"";
        
         HTTPClient https;
        
         wenn (https.begin("https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=" + String(Gemini_Token))) {
         https.addHeader("Inhaltstyp", "application/json");
         String-Nutzlast = "{\"Inhalt\": [{\"Teile\":[{\"Text\":" + res + "}]}],\"GenerationConfig\": {\"maxOutputTokens\": " + String(Gemini_Max_Tokens) + "}} ";
        
         int httpCode = https.POST(Nutzlast);
        
         wenn (httpCode == HTTP_CODE_OK) {
         String-Antwort = https.getString();
         doc(1024);
         deserializeJson(Dokument, Antwort); 
        String-Antwort = doc["Kandidaten"][0]["Inhalt"]["Teile"][0]["Text"];
         antwort.trim();
        
         Serial.println(Antwort);
         } anders {
         Serial.printf("[HTTPS] POST fehlgeschlagen, Fehler: %s\n", https.errorToString(httpCode).c_str());
         }
         https.ende();
         } anders {
         Serial.printf("[HTTPS] Verbindung konnte nicht hergestellt werden\n");
         }
        
         res = "";
         }
        

        Beispiel 2: KI-Eingabeaufforderung über Näherungssensor auslösen

        In diesem Beispiel wird der Näherungssensor der CodeCell verwendet, um eine Eingabeaufforderung auszulösen, wenn ein Objekt in der Nähe erkannt wird. Die KI antwortet mit einem Witz.

         
        #include <Arduino.h>
         #include <WiFi.h>
         #include <HTTPClient.h>
         #include <ArduinoJson.h>
         #include <CodeCell.h>
        
         CodeCell myCodeCell;
        
         const char* ssid = "SSID"; //Enter your SSID
         const char* password = "PASSWORD"; //Enter your password
         const char* Gemini_Token = ""; //Enter your Gemini token
         const char* Gemini_Max_Tokens = "100";
         String res = "";
        
         void setup() {
         Serial.begin(115200);
        
         myCodeCell.Init(LIGHT); // Initializes proximity sensing
         
        WiFi.Modus(WIFI_STA);
         WiFi.trennen();
        
         während (!Seriell);
        
         WiFi.begin(ssid, Passwort);
         Serial.print("Verbindung wird hergestellt mit ");
         Serial.println(ssid);
         während (WiFi.status() != WL_CONNECTED) {
         Verzögerung (1000);
         Serial.print(".");
         }
         Serial.println("verbunden");
         Serial.print("IP-Adresse: ");
         Serial.println(WiFi.localIP());
         }
        
         void schleife() {
         wenn (myCodeCell.Run(10)) {
         uint16_t Nähe = myCodeCell.Light_ProximityRead();
        
         wenn (Nähe > 100) {
         Serial.println("Hier ist ein neuer Witz...");
         myCodeCell.LED(0, 0xFF, 0); // LED auf Grün setzen, wenn Nähe erkannt wird
        
         res = "\"Erzähl mir einen einzigartigen Witz\"";
        
         HTTPClient https;
        
         wenn (https.begin("https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=" + String(Gemini_Token))) {
         https.addHeader("Inhaltstyp", "application/json");
         String-Nutzlast = "{\"Inhalt\": [{\"Teile\":[{\"Text\":" + res + "}]}],\"GenerationConfig\": {\"maxOutputTokens\": " + String(Gemini_Max_Tokens) + "}} ";
         
        int httpCode = https.POST(Nutzlast);
        
         wenn (httpCode == HTTP_CODE_OK) {
         String-Antwort = https.getString();
         doc(1024);
         deserializeJson(Dokument, Antwort);
         String-Antwort = doc["Kandidaten"][0]["Inhalt"]["Teile"][0]["Text"];
         antwort.trim();
        
         Serial.println(Antwort);
         } anders {
         Serial.printf("[HTTPS] POST fehlgeschlagen, Fehler: %s\n", https.errorToString(httpCode).c_str());
         }
         https.ende();
         } anders {
         Serial.printf("[HTTPS] Verbindung konnte nicht hergestellt werden\n");
         }
        
         res = "";
         }
         }
         }
        

        Tipps zur Anpassung

        • Verschiedene Eingabeaufforderungen: Versuchen Sie, die Eingabeaufforderungen anzupassen, um der KI verschiedene Fragen zu stellen oder Befehle für kreative Ausgaben zu geben.
        • Experimentieren Sie mit anderen Sensoren: Sie können verschiedene KI-Reaktionen basierend auf Eingaben von anderen CodeCell-Sensoren wie Bewegungs- oder Lichtsensoren auslösen.

        Abschluss

        Dieses Projekt zeigt, wie Sie mithilfe der Gemini-API von Google KI-Reaktionen in Ihre CodeCell-Projekte integrieren. Indem Sie die WiFi-Funktionen des ESP32-C3 nutzen, können Sie interaktive Geräte erstellen, die auf Benutzereingaben oder Umgebungsfaktoren reagieren und so Ihre IoT-Builds intelligenter und ansprechender machen.

        Experimentieren Sie mit dem Code und passen Sie die Eingabeaufforderungen an Ihre Projekte an!

        Vollständigen Artikel anzeigen

        CodeCell: Alexa Lighting

        CodeCell: Alexa-Beleuchtung

        In diesem Build untersuchen wir, wie man das integrierte LED-Licht der CodeCell mithilfe der Espalexa -Bibliothek konfiguriert, mit der Alexa Geräte wie Smart Lights steuern kann. Wir führen Sie durch den Prozess der Verbindung der CodeCell mit Ihrem WLAN, der Einrichtung der Espalexa-Bibliothek und der Aktivierung der Sprachsteuerung für die integrierte LED über Alexa.


        Was Sie lernen werden

        • So richten Sie CodeCell für die Verbindung mit WLAN ein.
        • So verwenden Sie die Espalexa-Bibliothek , um die integrierte LED über Alexa zu steuern.
        • So konfigurieren Sie Alexa, damit die CodeCell als intelligentes Licht erkannt wird.

        Über die Espalexa-Bibliothek

        Die Espalexa -Bibliothek vereinfacht die Alexa-Integration für ESP32-Projekte. Sie erstellt ein virtuelles intelligentes Licht, das Alexa über Sprachbefehle steuern kann, ohne dass eine komplexe Einrichtung oder Cloud-Dienste erforderlich sind. Mithilfe dieser Bibliothek kann Ihre CodeCell als intelligentes Gerät fungieren, z. B. eine Glühbirne, die Alexa ein-, ausschalten oder dimmen kann.

        Projektübersicht

        In diesem Projekt wird die CodeCell so eingerichtet, dass sie eine Verbindung zu Ihrem WLAN-Netzwerk herstellt. Sobald die Verbindung hergestellt ist, kann Alexa das integrierte LED-Licht per Sprachbefehl steuern, egal ob es vollständig eingeschaltet (grün) oder ausgeschaltet (keine Farbe) ist.

        Beispiel:

        Nachfolgend finden Sie den Beispielcode, der Ihnen den Einstieg erleichtert. Aktualisieren Sie die WLAN-Anmeldeinformationen mit Ihren Netzwerkdetails und folgen Sie den Kommentaren im Code, um jeden Schritt zu verstehen.

         
        #include <Espalexa.h>
         #include <WiFi.h>
         #include <CodeCell.h>
        
         CodeCell myCodeCell;
        
         // WiFi credentials
         const char* ssid = "SSID"; //Change to your SSID
         const char* password = "PASSWORD"; // Change to your password
        
         // Alexa object
         Espalexa espalexa;
        
         // Function to handle Alexa commands
         void alexaCallback(uint8_t brightness) {
         // Handle brightness (or ON/OFF) commands here
         if (brightness == 255) {
         myCodeCell.LED(0, 0xFF, 0); // Full brightness, green light
         } else if (brightness == 0) {
         myCodeCell.LED(0, 0, 0); // Turn off the LED
         }
         }
         
        void setup() {
         //Seriell zum Debuggen initialisieren
         Seriell.begin(115200);
         myCodeCell.Init(LIGHT); /*Initialisiere die Lichterkennung*/
        
         // Mit WLAN verbinden
         WiFi.begin(ssid, passwort);
         während (WiFi.status() != WL_CONNECTED) {
         Verzögerung (500);
         Serial.print(".");
         }
         Serial.println("WLAN verbunden");
        
         // Ein Gerät zu Alexa hinzufügen
         espalexa.addDevice("MeineLED", alexaCallback);
        
         // Espalexa starten
         espalexa.begin();
         }
        
         void schleife() {
         espalexa.loop(); // Alexa-Anfragen verarbeiten
         }
        

        So fügen Sie Ihr Gerät zur Alexa-App hinzu

        Nachdem Sie den Code hochgeladen und die CodeCell mit dem WLAN verbunden haben, müssen Sie das Gerät im nächsten Schritt zu Ihrer Alexa-App hinzufügen. Befolgen Sie diese Schritte, um es mit Alexa zu koppeln:

        1. Öffnen Sie die Alexa-App: Öffnen Sie auf Ihrem Smartphone die Alexa-App.
        2. Gehen Sie zu Geräten: Tippen Sie unten auf dem Bildschirm auf die Registerkarte „Geräte“.
        3. Neues Gerät hinzufügen: Tippen Sie oben rechts auf das „+“-Symbol und wählen Sie „Gerät hinzufügen“.
        4. Licht auswählen: Da die CodeCell als intelligentes Licht angezeigt wird, wählen Sie „Licht“ als Gerätetyp.
        5. Nach Geräten suchen: Alexa sucht jetzt nach neuen Geräten in Ihrem Netzwerk. Warten Sie, bis „MyLED“ (oder der Name, den Sie in Ihrem Code verwendet haben) erkannt wird.
        6. Einrichtung abschließen: Sobald es erkannt wurde, tippen Sie auf Ihr CodeCell-Gerät und folgen Sie den Anweisungen, um die Einrichtung abzuschließen.
        7. Testen Sie das Gerät: Versuchen Sie nach Abschluss der Einrichtung, einen Befehl wie „Alexa, schalte MyLED ein“ oder „Alexa, schalte meine MyLED aus“ zu geben, um die integrierte LED zu steuern!

        Mit diesen Schritten ist die integrierte LED Ihrer CodeCell jetzt vollständig in Ihr Smart-Home-Setup integriert und Sie können sie mit Alexa-Sprachbefehlen oder der Alexa-App steuern!

        Tipps zur Anpassung

        • Experimentieren Sie mit Farben: Ändern Sie die LED-Farbausgabe in der Funktion alexaCallback() , um je nach Helligkeitsstufe von Alexa unterschiedliche Farben zu verwenden. Sie können RGB-Werte verwenden, um verschiedene Effekte zu erzeugen.
        • Fügen Sie weitere LEDs hinzu: Steuern Sie RGB-Streifenlichter oder NeoPixels über die GPIOs der CodeCell .
        • Zusätzliche Steuerelemente: Erweitern Sie das Projekt, indem Sie mehrere LED-Steuerpunkte hinzufügen oder mit anderen CodeCell- Funktionen wie Bewegungserkennung oder Lichtüberwachung kombinieren.

        Abschluss

        Dieses Projekt zeigt, wie Sie CodeCell mithilfe der Espalexa -Bibliothek in Alexa integrieren, um das integrierte LED-Licht zu steuern. Wenn Sie diesem Beispiel folgen, können Sie mit CodeCell ganz einfach sprachaktivierte Projekte erstellen und so IoT-Funktionen in Ihre Hände bekommen!

        Werden Sie mit den Anpassungsoptionen kreativ und erwecken Sie mit der Alexa-Integration noch mehr Ihrer Projekte zum Leben!

        Vollständigen Artikel anzeigen

        CodeCell: Depth Gestures

        CodeCell: Tiefengesten

        In diesem Build untersuchen wir, wie wir den integrierten Näherungssensor der CodeCell verwenden können, um Tiefengesten zu erkennen und zwei FlatFlaps zu steuern, wobei ihre Winkel basierend auf den Näherungswerten variiert werden. Dieses Projekt zeigt eine einzigartige Möglichkeit, interaktive Roboter, Aktuatoren, Motoren oder Licht zu erstellen, die auf Handbewegungen reagieren.


        Was Sie lernen werden

        • So richten Sie die CodeCell für die Tiefengestenerkennung mithilfe des Näherungssensors ein.
        • So steuern Sie zwei FlatFlaps mithilfe von Näherungsdaten aus der CodeCell .
        • Ein Verständnis dafür, wie die winzige DriveCell integriert wird, um FlatFlaps zu steuern.

        Über den Näherungssensor von CodeCell

        Die CodeCell ist mit einem VCNL4040-Näherungssensor ausgestattet, der Entfernungen bis zu 20 cm messen kann. Mithilfe von Infrarotlicht erkennt der Sensor Objekte in seiner Reichweite und misst die Reflexion des emittierten IR-Lichts, um die Entfernung zu schätzen. Auf diese Weise können Sie reaktionsfähige Verhaltensweisen basierend auf der Nähe eines Objekts erstellen, was es ideal für interaktive Gesten macht.

        Tiefengesten basieren auf den Näherungsdaten des integrierten Sensors der CodeCell . Indem Sie Ihre Hand oder andere Objekte näher an den Sensor heran oder weiter davon weg bewegen, können Sie dynamische Eingaben erstellen, die verschiedene Aktionen auslösen. In diesem Projekt werden die Näherungsdaten verwendet, um den Winkel von zwei FlatFlaps zu steuern, die mit zwei DriveCells (H-Brücken-Treibern) verbunden sind.

        Projektübersicht

        In diesem Beispiel liest die CodeCell kontinuierlich Näherungsdaten und passt den Winkel von zwei FlatFlaps an, je nachdem, wie nah das Objekt ist. Wenn sich das Objekt nähert oder entfernt, ändert sich der Winkel der FlatFlaps , was eine einfache, aber effektive Methode zur gestenbasierten Tiefensteuerung darstellt.

        Die beiden FlatFlaps werden an zwei DriveCells (H-Brückentreiber) gelötet, die Pin-zu-Pin-kompatibel mit der CodeCell sind. Diese Komponenten werden dann auf einer 3D-gedruckten Halterung verbunden, um einen niedlichen kleinen Flappy-Bot zu erstellen! Vergessen Sie nicht, ein Wackelauge hinzuzufügen, um ihm mehr Persönlichkeit zu verleihen!

        Unten finden Sie den Beispielcode, der Ihnen den Einstieg erleichtert. Stellen Sie sicher, dass Ihre CodeCell ordnungsgemäß über USB-C angeschlossen ist und die FlatFlaps mit den beiden DriveCells verbunden sind. Folgen Sie den Kommentaren im Code, um jeden Schritt zu verstehen.

        Beispiel

         #include <CodeCell.h>
         #include <DriveCell.h>
        
         #define IN1_pin1 2
         #define IN1_pin2 3
         #define IN2_pin1 5
         #define IN2_pin2 6
        
         DriveCell FlatFlap1(IN1_pin1, IN1_pin2);
         DriveCell FlatFlap2(IN2_pin1, IN2_pin2);
        
         CodeCell myCodeCell;
        
         void setup() {
         Serial.begin(115200); // Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial.
        
         myCodeCell.Init(LIGHT); // Initializes Light Sensing
        
         FlatFlap1.Init();
         FlatFlap2.Init();
         
        FlatFlap1.Tone();
         FlatFlap2.Tone();
         }
        
         void schleife() {
         wenn (myCodeCell.Run(10)) {
         // Läuft alle 100ms
         uint16_t Nähe = myCodeCell.Light_ProximityRead();
         Serial.println(Nähe);
         wenn (Nähe < 100) {
         // Bei Annäherungserkennung flattern die FlatFlaps
         FlatFlap1.Run(1, 100, 400);
         FlatFlap2.Run(1, 100, 400);
         } anders {
         // Passen Sie den FlatFlap-Winkel basierend auf der Nähe an
         Nähe = Nähe - 100;
         Nähe = Nähe / 10;
         wenn (Nähe > 100) {
         Nähe = 100;
         }
         FlatFlap1.Drive(0, Näherung);
         FlatFlap2.Drive(0, Näherung);
         }
         }
         }
        

        Tipps zur Anpassung

        • Schwellenwerte anpassen: Ändern Sie die Näherungsschwellenwerte und Skalierungsfaktoren im Code, um die Reaktionsfähigkeit der FlatFlaps nach Ihren Wünschen zu optimieren.
        • Erweitern Sie die Funktionalität: Erwägen Sie das Hinzufügen weiterer CodeCell- Sensorfunktionen, wie etwa Bewegungserkennung oder Lichtsensorik, um die Funktionalität Ihres Flap-Bots zu erweitern!
        • Erstellen Sie individuelle Designs: Verwenden Sie 3D-Druck, um einen einzigartigeren Roboter zu erstellen und ihn persönlicher zu gestalten.

        Abschluss

        Dieses Projekt zeigt, wie Sie den Näherungssensor der CodeCell für Tiefengesten verwenden und die Winkel von FlatFlaps basierend auf der Objektentfernung steuern. Experimentieren Sie mit dem Code, passen Sie die Parameter an und erwecken Sie Ihren eigenen Flappy-Bot zum Leben!

        Vollständigen Artikel anzeigen

        CodeCell: Predicting your Activity

        CodeCell: Vorhersage Ihrer Aktivität

        In dieser Anleitung erfahren Sie, wie Sie den integrierten Bewegungssensor der CodeCell so konfigurieren, dass er Ihre persönliche Aktivität errät und auf einem OLED-Bildschirm anzeigt. Er dient zur Erfassung verschiedener Zustände wie Gehen, Laufen, Radfahren, Treppensteigen und Autofahren!

        Wie kann CodeCell Ihre Aktivität vorhersagen?

        Der Bewegungssensor der CodeCell kann verschiedene persönliche Aktivitäten anhand von Bewegungsmustern kategorisieren. Anhand dieser Muster versucht der BNO085-Sensor zu erraten, welche Aktivität gerade ausgeführt wird. Zu diesen Aktivitäten gehören Gehen, Laufen, Radfahren, Autofahren und mehr.

        Die CodeCell- Bibliothek erleichtert Ihnen das direkte Lesen der Aktivität ohne komplexen Code.

        Beispiel:

        In diesem Beispiel überwacht die CodeCell kontinuierlich die persönliche Aktivitätsschätzung des BNO085. Die Aktivität mit der höchsten Wahrscheinlichkeit wird dann mithilfe der Adafruit SSD1306-Bibliothek auf einem OLED-Bildschirm angezeigt. Dieses Setup eignet sich ideal für tragbare Aktivitätsmonitore oder Fitnesstracker, die Echtzeit-Feedback zu körperlichen Aktivitäten liefern.

        Beachten Sie, dass es bei manchen Aktivitäten 10–30 Sekunden dauern kann, bis sie erkannt werden, da dies hauptsächlich von der Ausrichtung der CodeCell und ihrem Montageort abhängt.

        Unten finden Sie den Beispielcode für den Einstieg. Stellen Sie sicher, dass Ihre CodeCell über USB-C angeschlossen ist und Ihr OLED-Display über die Masse-, 3V3- und I2C-Pins (SDA und SCL) korrekt mit der Unterseite der CodeCell verbunden ist.

        Folgen Sie den Kommentaren im Code, um jeden Schritt zu verstehen.

         
        #include <CodeCell.h>
         #include <Wire.h>
         #include <Adafruit_GFX.h>
         #include <Adafruit_SSD1306.h>
        
         CodeCell myCodeCell;
        
         /* Configure the OLED Display */
         #define SCREEN_WIDTH 128 // OLED display width, in pixels
         #define SCREEN_HEIGHT 32 // OLED display height, in pixels
        
         #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
         #define SCREEN_ADDRESS 0x3C // Address of the OLED display
         Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
        
         int read_timer = 0;
        
         void setup() { 
        Serial.begin(115200); // Stellen Sie die serielle Baudrate auf 115200 ein. Stellen Sie sicher, dass Tools/USB_CDC_On_Boot aktiviert ist, wenn Sie die serielle Schnittstelle verwenden.
        
         myCodeCell.Init(MOTION_ACTIVITY); // Initialisiert die Aktivitätserkennung.
        
         if (!display.begin(SSD1306_SWITCHCAPVCC, BILDSCHIRMADRESSE)) {
         Serial.println(F("SSD1306-Zuweisung fehlgeschlagen"));
         }
        
         display.clearDisplay();
         display.setTextSize(1);
         display.setTextColor(SSD1306_WHITE);
         Anzeige.Anzeige();
         Verzögerung (2000);
         }
        
         void-Schleife() {
         wenn (myCodeCell.Run(10)) {
         wenn (Lesetimer < 10) {
         lese_timer++;
         } anders {
         // Alle 1 Sekunde aktualisieren
         Lesetimer = 0;
         display.clearDisplay();
         display.setCursor(32, 16);
         display.print(F("Aktivität: "));
         display.setCursor(32, 24);
         Schalter (myCodeCell.Motion_ActivityRead()) {
         Fall 1:
         display.print("Fahren");
         brechen;
         Fall 2:
         display.print("Radfahren");
         brechen; 
        Fall 3:
         Fall 6:
         display.print("Gehen");
         brechen;
         Fall 4:
         display.print("Still");
         brechen;
         Fall 5:
         display.print("Kippen");
         brechen;
         Fall 7:
         display.print("Läuft");
         brechen;
         Fall 8:
         display.print("Treppe");
         brechen;
         Standard:
         display.print("Lesen..");
         brechen;
         }
         Anzeige.Anzeige();
         }
         }
         }
        

        Tipps zur Anpassung

        • Mit anderen Sensoren kombinieren: Integrieren Sie zusätzliche Sensoren, die in der CodeCell verfügbar sind, wie etwa die Schrittzählung für eine umfassendere Fitnessüberwachung.

        Abschluss

        Dieses Projekt zeigt, wie der Bewegungssensor der CodeCell persönliche Aktivitäten überwacht und die Ergebnisse auf einem OLED-Bildschirm anzeigt. Dieser grundlegende Aufbau bildet die Grundlage für die Entwicklung fortschrittlicherer Aktivitätsüberwachungssysteme.

        Experimentieren Sie mit dem Code und den Einstellungen, um Ihr eigenes personalisiertes Wearable zu erstellen!

        Vollständigen Artikel anzeigen

        CodeCell: Making a Step Counter

        CodeCell: Einen Schrittzähler erstellen

        In dieser Anleitung erfahren Sie, wie Sie mit dem integrierten Bewegungssensor von CodeCell die Schrittzahl messen und diese auf einem OLED-Display anzeigen können. So können Sie CodeCell ganz einfach in Ihren eigenen Schrittzähler oder sogar Fitness-Tracker verwandeln!

        Wie werden Schritte gezählt?

        CodeCell ist mit einem BNO085-Bewegungssensor ausgestattet, der die Daten eines Beschleunigungsmessers, eines Gyroskops und eines Magnetometers kombiniert, um bestimmte Bewegungsmuster zu verfolgen und festzustellen, ob ein Schritt ausgeführt wurde. Jeder Schritt wird einem Zähler hinzugefügt, und die CodeCell- Bibliothek erleichtert das Auslesen dieser Schrittzahlen.

        In diesem Beispiel überwacht die CodeCell kontinuierlich die Anzahl der Schritte und aktualisiert diese. Diese wird dann mithilfe der Adafruit SSD1306-Bibliothek auf einem OLED-Bildschirm angezeigt.

        Beispiel:

        Unten finden Sie den Beispielcode für den Einstieg. Stellen Sie sicher, dass Ihre CodeCell ordnungsgemäß über USB-C angeschlossen ist und Ihr OLED-Display korrekt mit der Unterseite der CodeCell verdrahtet ist. Dort können Sie die Masse-, 3V3- und I2C-Pins (SDA und SCL) verwenden.

        Folgen Sie den Kommentaren im Code, um jeden Schritt zu verstehen.

         
        #include <CodeCell.h>
         #include <Wire.h>
         #include <Adafruit_GFX.h>
         #include <Adafruit_SSD1306.h>
        
         CodeCell myCodeCell;
        
         /* Configure the OLED Display */
         #define SCREEN_WIDTH 64 // OLED display width, in pixels
         #define SCREEN_HEIGHT 32 // OLED display height, in pixels
        
         #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
         #define SCREEN_ADDRESS 0x3C // Address of the OLED display
         Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
        
         uint16_t step_counter = 0;
         
        void setup() {
         Serial.begin(115200); // Stellen Sie die serielle Baudrate auf 115200 ein. Stellen Sie sicher, dass Tools/USB_CDC_On_Boot aktiviert ist, wenn Sie die serielle Schnittstelle verwenden.
        
         myCodeCell.Init(MOTION_STEP_COUNTER); // Initialisiert die Schrittzählung und Aktivitätserkennung.
        
         if (!display.begin(SSD1306_SWITCHCAPVCC, BILDSCHIRMADRESSE)) {
         Serial.println("Anzeigefehler");
         }
        
         display.clearDisplay();
         display.setTextSize(1);
         display.setTextColor(SSD1306_WHITE);
         Anzeige.Anzeige();
         Verzögerung (2000);
         }
        
         void-Schleife() {
         if (myCodeCell.Run(10)) { //Alle 10 Hz ausführen
        step_counter = myCodeCell.Motion_StepCounterRead(); //Schrittzähler lesen

        display.clearDisplay();
        display.setCursor(32, 16); // In der oberen linken Ecke beginnen
        display.print(F("Schritte: "));
        display.print(Schrittzähler);
        display.display(); //Anzeige aktualisieren
        } }

        Tipps zur Anpassung

        • Erweitern Sie die Funktionalität: Integrieren Sie zusätzliche Funktionen wie Schrittziele, Entfernungsschätzungen oder Aktivitätsverfolgung im Zeitverlauf.
        • Mit anderen Sensoren kombinieren: Fügen Sie andere Sensorfunktionen wie die Motion Personal Activity Sensing von CodeCell hinzu, um einen umfassenderen Fitness-Tracker zu erstellen.

        Abschluss

        Dieses Projekt zeigt, wie Sie den Bewegungssensor von CodeCell als Schrittzähler nutzen und die Schrittzahl auf einem OLED-Bildschirm anzeigen können. Experimentieren Sie mit dem Code, um Ihr eigenes tragbares Fitnessgerät zu erstellen. Weitere Codebeispiele und technische Dokumentation finden Sie im CodeCell GitHub Repository !

        Vollständigen Artikel anzeigen

        CodeCell: Controlling a Servo-Motor

        CodeCell: Steuerung eines Servomotors

        In dieser Anleitung erfahren Sie, wie Sie mit der CodeCell einen Servomotor steuern. Außerdem erfahren Sie, wie Sie die Winkelposition des Servos mithilfe der CodeCell steuern können. Dies ist besonders nützlich für Roboteranwendungen wie Kardanringe oder die Winkelstabilitätskontrolle.

        Was ist ein Servomotor?

        Ein Servomotor ist ein Drehantrieb, der eine präzise Steuerung der Winkelposition ermöglicht. Er besteht aus einem Motor mit Getriebe und einem Sensor zur Positionsrückmeldung und wird häufig in der Robotik, Automatisierung und Stabilisierung eingesetzt.

        Wie liest man den Winkel?

        CodeCell ist mit einem BNO085-Bewegungssensor ausgestattet, der Daten von Beschleunigungsmesser, Gyroskop und Magnetometer kombiniert, um Rotationsvektoren zu berechnen. Diese Vektoren werden von CodeCell verarbeitet, um Roll-, Nick- und Gierwinkel basierend auf der räumlichen Ausrichtung des Geräts zu ermitteln.

        In diesem Beispiel überwacht unsere CodeCell kontinuierlich den Neigungswinkel, um die Position eines Servomotors zu steuern und dynamisch auf Ausrichtungsänderungen zu reagieren. Der Neigungswert dient zur Einstellung der Servomotorposition, sodass dieser sich je nach Neigung des Geräts drehen kann.

        Beispielcode

        Unten finden Sie einen Beispiel-Codeausschnitt für den Einstieg. Stellen Sie sicher, dass Ihre CodeCell ordnungsgemäß über USB-C angeschlossen ist. Überprüfen Sie außerdem, ob Ihr Servomotor über USB-C mit Strom versorgt werden kann (CodeCell kann über USB-C bis zu 500 mA und über eine Batterie bis zu 1500 mA liefern). Passen Sie die Winkelgrenzen im Code entsprechend an.

        Für dieses Beispiel müssen Sie die Bibliothek „ESP32Servo“ installieren, um den Servomotor mit Ihrer CodeCell zu steuern. Folgen Sie den Kommentaren im Code, um die einzelnen Schritte zu verstehen.

         #include <codecell.h>
         #include <ESP32Servo.h>
        
         CodeCell myCodeCell;
         Servo myservo;
        
         float Roll = 0.0;
         float Pitch = 0.0;
         float Yaw = 0.0;
         int servo_angle = 0;
        
         void setup() {
         Serial.begin(115200); // Set Serial baud rate to 115200. Enable Tools/USB_CDC_On_Boot if using Serial
         myCodeCell.Init(MOTION_ROTATION); // Initializes rotation sensing
         myservo.attach(1); // Attaches the servo on pin 1 to the servo object
         }
        
         void loop() {
         if (myCodeCell.Run(10)) {
         // Read rotation angles from the BNO085 sensor
         myCodeCell.Motion_RotationRead(Roll, Pitch, Yaw);
        
         // Convert the pitch angle to a servo angle
         servo_angle = abs((int)Pitch);
         servo_angle = (180 - servo_angle);
        
         // Limit the servo angle to the range 0-60 degrees
         if (servo_angle > 60) { 
        Servowinkel = 60;
         } sonst wenn (Servowinkel < 0) {
         Servowinkel = 0;
         }
         anders{
         //Überspringen
         }
        
         Serial.println(servo_angle); // Drucke den Servowinkel zum Debuggen
         myservo.write(servo_angle); // Servoposition einstellen
         }
         }
        

        Tipps zur Anpassung

        Diese grundlegende Funktionalität kann erweitert werden, um komplexere Interaktionen zu erstellen, wie zum Beispiel:

        • Steuerung mehrerer Servos: Erweitern Sie den Code, um mehrere Servos gleichzeitig zu steuern.
        • Bereich anpassen: Passen Sie den Servo-Bewegungsbereich an Ihren spezifischen Servomotor an, indem Sie die im Code für servo_angle festgelegten Grenzwerte anpassen. In diesem Beispiel verwenden wir einen Mikroservo mit einem 60-Grad-Bereich. Einige Servomotoren sind mechanisch nicht linear, daher müssen Sie möglicherweise Winkelfehler kompensieren.
        • Mit anderen Sensoren kombinieren: Nutzen Sie zusätzliche Sensoren, wie die Näherungs- und Lichtsensoren von CodeCell, um interaktive und reaktionsfähige Projekte zu erstellen.
        • Zur Stabilisierung verwenden: Implementieren Sie dieses Setup, um Plattformen wie Kardanringe zur Kamera- und Sensorstabilisierung zu stabilisieren.

          Abschluss

          Dieses Projekt zeigt, wie Sie einen Servomotor mit CodeCell und dessen Bewegungssensorfunktionen steuern. Experimentieren Sie mit dem Code, erstellen Sie eigene Projekte und besuchen Sie das CodeCell GitHub Repository für weitere Codebeispiele und technische Dokumentation!

          Vollständigen Artikel anzeigen


          « Vorherige 1 2 3 Nächste »
          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.