Arduino Cloud Assistant im Praxistest

Die Arduino-Cloud wurde vor wenigen Tagen mit einem AI-Assistenten ausgestattet. Dieser Artikel führt einige Experimente durch, um dem System auf den Zahn zu fühlen.

Einrichtung und Nutzung

Der AI Assistant lebt derzeit ausschließlich in der Arduino Cloud. Erste Amtshandlung ist das Besuchen der URL https://cloud.arduino.cc/download-agent/ unter Nutzung von Google Chrome (mit FireFox traten in Tests des Autors Probleme auf). Die Webseite liefert daraufhin ein natives Programm, das sich um die Weiterleitung angeschlossener Arduinos an den Webdienst kümmert. Wer den Installationsprozess en Detail sehen möchte, findet unter https://youtu.be/b49oNJLizGI ein Video auf Basis der hier besprochenen Prozedur.

Erzeugung einer Sinusschwingung

Ob der Verwendung eines Arduino Uno R4 WiFi bietet sich die Ansteuerung des DA-Wandlers an. Als Anfrage dient der folgende Prompt:

1
Create code to output a sine wave using one of the analog output pins.

Lohn der Mühen ist das Aufscheinen des in der Abbidung gezeigten Steuerelements. Neben dem Kopieren des Codes ist es auch möglich, die Rückmeldung direkt in das geöffnete Fenster zu platzieren.

Bildquelle: Autor

Der generierte Code ist folgender – interessant ist, dass für die Frequenzbestimmung auf einen anzuschließenden Rheostaten zurückgegriffen wird:

1
#include <AnalogWave.h>
2

3
// Create an instance of the AnalogWave library
4
AnalogWave wave;
5

6
// Variables for frequency control
7
const int potPin = A1;     // Potentiometer to control frequency
8
int frequency = 440;       // Default frequency in Hz (A4 note)
9

10
void setup() {
11
  // Initialize serial communication
12
  Serial.begin(9600);
13
  
14
  // Initialize the DAC
15
  wave.begin();
16
  
17
  Serial.println("Sine Wave Generator");
18
  Serial.println("Connect potentiometer to A1 to control frequency");
19
  Serial.println("Connect piezo/speaker to A0 (DAC output)");
20
}
21

22
void loop() {
23
  // Read the potentiometer value to adjust frequency
24
  int potValue = analogRead(potPin);
25
  
26
  // Map the pot value to a reasonable frequency range (100Hz to 2000Hz)
27
  frequency = map(potValue, 0, 1023, 100, 2000);
28
  
29
  // Generate and output the sine wave with the current frequency
30
  wave.sine(frequency);
31
  
32
  // Display current frequency every 500ms
33
  static unsigned long lastPrint = 0;
34
  if (millis() - lastPrint > 500) {
35
    Serial.print("Frequency: ");
36
    Serial.print(frequency);
37
    Serial.println(" Hz");
38
    lastPrint = millis();
39
  }
40
}

Ein Kompilationsversuch scheitert aufgrund des nicht korrekten Headers und einigen Fehlern in der Parametrierung der Methoden. Interessant ist, dass die Fehlerbehebung durch den AI-Assistenten komplett danebenschiesst.

Bildquelle: Autor

Die eigentliche Behebung erfolgt durch minimale Eingriffe im generierten Code:

1
#include <analogWave.h>
2

3
// Create an instance of the AnalogWave library
4
analogWave wave(DAC);
5

6
// Variables for frequency control
7
const int potPin = A1;     // Potentiometer to control frequency
8
int frequency = 440;       // Default frequency in Hz (A4 note)
9

10
void setup() {
11
  // Initialize serial communication
12
  Serial.begin(9600);
13
  
14
  // Initialize the DAC
15
  wave.begin(1000);

Lohn der Mühen ist das in der Abbildung gezeigte Programmverhalten.

Bildquelle: Autor

Ausgabe eines Strings am LED-Matrixdisplay

Das Vorhandensein der LED-Matrix auf dem R4 WiFi animiert im nächsten Schritt zu folgendem Prompt:

1
Please generate code which shows the two characters AI on the LED matrix display of the Arduino Uno R4 WiFi connected here

Diesmal generiert der AI-Assistent folgenden Code, der sich wie gewohnt integrieren lässt:

1
#include "Arduino_LED_Matrix.h"
2

3
ArduinoLEDMatrix matrix;
4

5
// Define the "AI" characters as a frame
6
const uint32_t ai_frame[] = {
7
  0x1C222222, // This forms the 'A'
8
  0x08101010, // This forms the 'I'
9
  0x00000000  // Empty row
10
};
11

12
void setup() {
13
  Serial.begin(115200);
14
  matrix.begin();
15
  
16
  // Load the "AI" frame
17
  matrix.loadFrame(ai_frame);
18
}
19

20
void loop() {
21
  // The frame stays displayed, nothing more needed in the loop
22
  // You could add code here to alternate between multiple frames if desired
23
}

Diesmal ist das Programm zwar kompilierbar, zeigt aber – wie im Foto ersichtlich – nicht den korrekten String am Display an.

Bildquelle: Autor

Zur Behebung empfiehlt sich die Nutzung des unter https://ledmatrix-editor.arduino.cc/ bereitstehenden Matrix-Editors, der – wie in der Abbildung gezeigt – eine WYSIWYG-Realisierung der anzuzeigenden Elemente erlaubt.

Bildquelle: Autor

Die Korrektur beschränkt sich abermals auf das Anpassen einiger Konstanten im Code:

1
// Define the "AI" characters as a frame
2
const uint32_t ai_frame[] = {
3
    0x62092,
4
    0x920f209,
5
    0x20920000,
6
    66
7
};

Lohn der Mühen ist nun das Erscheinen des korrekten Strings.

Bildquelle: Autor

Zusammenfassung und Bewertung

Wie viele andere AI-Assistenten gilt auch im Fall der Arduino-AI, dass das System vor Allem als “Helfer zur Literaturrecherche” nützlich ist. Wer sich mit der Arduino-Umgebung prinzipiell auskennt, kann sich Literaturrecherche ersparen. Massenkündigungen von Elektronikern dürften derzeit indes ausgeschlossen sein.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Weiterlesen