🎉 Black Friday is Here! Enjoy Up to 35% Off ~ Offer Ends November 30th!
Dans cette version, nous allons découvrir comment configurer l'ESP32-C3 du CodeCell pour utiliser l'IA Gemini de Google pour les interactions basées sur des invites Arduino. Vous apprendrez comment envoyer une invite via le moniteur série et, dans un deuxième exemple, comment le CodeCell peut déclencher automatiquement une blague en fonction de la détection de proximité. Ce projet est idéal pour tous ceux qui cherchent à ajouter des capacités d'IA à leurs projets IoT.
Dans cet exemple, nous utilisons le modèle Gemini de Google pour générer du contenu en fonction des entrées utilisateur ou des données de capteur. Tout au long de ce tutoriel, nous utiliserons et modifierons l' exemple de code créé par « techiesms » - Regardez le tutoriel complet ici.
Grâce aux capacités Wi-Fi de l'ESP32-C3, vous pouvez effectuer des requêtes HTTP vers l'API Gemini de Google, ce qui permet une interaction en temps réel avec l'IA. Que vous demandiez des réponses textuelles ou que vous génériez des résultats créatifs comme des blagues, cette intégration est simple à mettre en œuvre.
Dans le premier exemple, vous enverrez des invites directement via le moniteur série, et le CodeCell enverra cette entrée à l'IA Google Gemini pour traitement. La réponse de l'IA est imprimée sur le moniteur série, limitée par 100 jetons. Dans le deuxième exemple, le capteur de proximité du CodeCell déclenchera une invite à l'IA, lui demandant de générer une blague lorsqu'il détectera un objet. Cette configuration peut être utilisée pour des projets interactifs amusants où l'appareil répond à son environnement à l'aide de contenu basé sur l'IA.
Avant d'intégrer l'IA Gemini dans notre configuration ESP32-C3, nous devons d'abord générer une clé API et la tester. Suivez les étapes ci-dessous pour créer votre clé API, puis vous pouvez également la tester à l'aide d'un logiciel comme Postman.
Maintenant que nous avons la clé API, nous pouvons la tester à l'aide de l' application Postman . Postman est un outil gratuit qui vous permet de faire des requêtes HTTP et de voir les réponses.
https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=YOUR_API_KEY
Une fois l'URL entrée, nous devons configurer les en-têtes et le corps de la demande.
{
"contents": [
{
"parts": [
{
"text": "Who are you?"
}
]
}
],
"generationConfig": {
"maxOutputTokens": 100
}
}
Dans cet exemple, nous posons une question simple à l'IA : « Qui êtes-vous ? » et nous définissons le nombre maximal de jetons à 100. Les jetons contrôlent la longueur de la réponse générée par l'IA. Si vous réduisez la limite de jetons (par exemple, 20 jetons), la réponse sera plus courte. Vous pouvez tester différentes valeurs pour maxOutputTokens
pour voir comment cela affecte la longueur de la réponse.
"I am a large language model trained by Google."
Une fois que vous avez généré et vérifié que l'API fonctionne, vous pouvez passer à l'étape suivante : intégrer cette API dans votre projet CodeCell.
Vous trouverez ci-dessous un exemple de code pour vous aider à démarrer. Dans cet exemple, l'IA répondra aux invites de texte que vous envoyez via le moniteur série. N'oubliez pas de remplacer les espaces réservés par vos identifiants Wi-Fi et votre jeton API Gemini.
#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);
tandis que (WiFi.status() != WL_CONNECTED) {
délai(1000);
Série.print(".");
}
Serial.println("connecté");
Serial.print("Adresse IP : ");
Série.println(WiFi.localIP());
}
boucle vide() {
tandis que (!Serial.available());
tandis que (Serial.available()) {
char add = Serial.lire();
res += ajouter;
retard(1);
}
int len = res.length();
res = res.substring(0, len - 1);
res = "\"" + res + "\"";
Client HTTP https;
si (https.begin("https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=" + String(Gemini_Token))) {
https.addHeader("Type de contenu", "application/json");
Chaîne de charge utile = "{\"contenu\": [{\"parties\":[{\"texte\": " + res + "}]}],\"generationConfig\": {\"maxOutputTokens\": " + String(Gemini_Max_Tokens) + "}} ";
int httpCode = https.POST(charge utile);
si (httpCode == HTTP_CODE_OK) {
Réponse de chaîne = https.getString();
Document dynamiqueJsonDocument doc(1024);
deserializeJson(doc, réponse);
Chaîne de réponse = doc["candidats"][0]["contenu"]["parties"][0]["texte"];
réponse.trim();
Serial.println(réponse);
} autre {
Serial.printf("[HTTPS] Échec du POST, erreur : %s\n", https.errorToString(httpCode).c_str());
}
https.end();
} autre {
Serial.printf("[HTTPS] Impossible de se connecter\n");
}
res = "";
}
Cet exemple utilise le capteur de proximité de CodeCell pour déclencher une invite lorsqu'un objet est détecté à proximité. L'IA répondra avec une blague.
#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
mode.WiFi(WIFI_STA);
WiFi.déconnecter();
tandis que (!Série);
WiFi.begin(ssid, mot de passe);
Serial.print("Connexion à ");
Série.println(ssid);
tandis que (WiFi.status() != WL_CONNECTED) {
délai(1000);
Série.print(".");
}
Serial.println("connecté");
Serial.print("Adresse IP : ");
Série.println(WiFi.localIP());
}
boucle vide() {
si (myCodeCell.Run()) {
uint16_t proximité = myCodeCell.Light_ProximityRead();
si (proximité > 100) {
Serial.println("Voici une nouvelle blague...");
myCodeCell.LED(0, 0xFF, 0); // Réglez la LED sur Vert lorsque la proximité est détectée
res = "\"Raconte-moi une blague unique\"";
Client HTTP https;
si (https.begin("https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=" + String(Gemini_Token))) {
https.addHeader("Type de contenu", "application/json");
Chaîne de charge utile = "{\"contenu\": [{\"parties\":[{\"texte\": " + res + "}]}],\"generationConfig\": {\"maxOutputTokens\": " + String(Gemini_Max_Tokens) + "}} ";
int httpCode = https.POST(charge utile);
si (httpCode == HTTP_CODE_OK) {
Réponse de chaîne = https.getString();
Document dynamiqueJsonDocument doc(1024);
deserializeJson(doc, réponse);
Chaîne de réponse = doc["candidats"][0]["contenu"]["parties"][0]["texte"];
réponse.trim();
Serial.println(réponse);
} autre {
Serial.printf("[HTTPS] Échec du POST, erreur : %s\n", https.errorToString(httpCode).c_str());
}
https.end();
} autre {
Serial.printf("[HTTPS] Impossible de se connecter\n");
}
res = "";
}
}
}
Ce projet montre comment intégrer les réponses de l'IA dans vos projets CodeCell à l'aide de l'API Gemini de Google. En exploitant les capacités Wi-Fi de l'ESP32-C3, vous pouvez créer des appareils interactifs qui réagissent aux entrées de l'utilisateur ou aux facteurs environnementaux, rendant ainsi vos créations IoT plus intelligentes et plus attrayantes.
Expérimentez avec le code et personnalisez les invites en fonction de vos projets !
Soyez le premier informé des nouveaux projets et bénéficiez d'offres intéressantes !
© 2024 Microbots.