Redact embedded voice assistant credentials

This commit is contained in:
2026-05-20 20:27:16 -07:00
parent 45f425be31
commit fec7d8406e

View File

@@ -1,148 +1,148 @@
// Include necessary libraries
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
// WiFi credentials
const char* ssid = "thetempleofdoom";
const char* password = "myhandsonmyself";
// Gemini API key
const char* geminiApiKey = "AIzaSyAzFzg_MAcwoH3O-nfriBjlFw5x6UBU5hk";
// Pin for the button
// IMPORTANT: Please verify the pin number for your button and update the value below.
const int buttonPin = 0;
// Display pins
// IMPORTANT: Please verify the pin numbers for your display and update the values below.
#define TFT_CS 5
#define TFT_DC 4
#define TFT_RST -1 // Reset pin (often not needed)
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize the button pin
pinMode(buttonPin, INPUT_PULLUP);
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Initialize the display
tft.begin();
tft.setRotation(3);
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(2);
tft.println("Hacker Voice Assistant");
tft.println("--------------------");
tft.setTextSize(1);
tft.print("IP: ");
tft.println(WiFi.localIP());
tft.setTextSize(2);
tft.println("\nReady for command...");
}
void loop() {
// Check if the button is pressed
if (digitalRead(buttonPin) == LOW) {
// Start a voice session
startVoiceSession();
// After the session, clear the screen and show the ready message again
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0,0);
tft.setTextSize(2);
tft.println("Hacker Voice Assistant");
tft.println("--------------------");
tft.setTextSize(1);
tft.print("IP: ");
tft.println(WiFi.localIP());
tft.setTextSize(2);
tft.println("\nReady for command...");
}
}
void startVoiceSession() {
// Clear the screen for the new session
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0,0);
tft.setTextSize(2);
// TODO: Add voice recording and processing code here
Serial.println("Button pressed, starting voice session...");
displayHackerText("Listening...");
// For now, we'll just send a test query to Gemini
delay(2000); // Simulate recording time
displayHackerText("Processing...");
String query = "Hello, Gemini!";
String response = sendToGemini(query);
// Display the response
displayHackerText("User: " + query);
displayHackerText("Gemini: " + response);
Serial.println("Gemini response: " + response);
}
String sendToGemini(String query) {
HTTPClient http;
String url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=";
url += geminiApiKey;
http.begin(url);
http.addHeader("Content-Type", "application/json");
StaticJsonDocument<200> doc;
JsonObject content = doc.createNestedObject("contents");
JsonArray parts = content.createNestedArray("parts");
JsonObject part = parts.createNestedObject();
part["text"] = query;
String requestBody;
serializeJson(doc, requestBody);
int httpResponseCode = http.POST(requestBody);
if (httpResponseCode > 0) {
String payload = http.getString();
StaticJsonDocument<1024> responseDoc;
DeserializationError error = deserializeJson(responseDoc, payload);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return "Error: Failed to parse response.";
}
if (responseDoc.containsKey("candidates")) {
const char* responseText = responseDoc["candidates"][0]["content"]["parts"][0]["text"];
return String(responseText);
} else {
return "Error: Invalid response from Gemini.";
}
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
return "Error: Unable to get response from Gemini.";
}
http.end();
return "";
}
void displayHackerText(String text) {
tft.println(text);
}
// Include necessary libraries
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
// WiFi credentials
const char* ssid = "REPLACE_WITH_WIFI_SSID";
const char* password = "REPLACE_WITH_WIFI_PASSWORD";
// Gemini API key
const char* geminiApiKey = "REPLACE_WITH_GOOGLE_API_KEY";
// Pin for the button
// IMPORTANT: Please verify the pin number for your button and update the value below.
const int buttonPin = 0;
// Display pins
// IMPORTANT: Please verify the pin numbers for your display and update the values below.
#define TFT_CS 5
#define TFT_DC 4
#define TFT_RST -1 // Reset pin (often not needed)
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize the button pin
pinMode(buttonPin, INPUT_PULLUP);
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Initialize the display
tft.begin();
tft.setRotation(3);
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(2);
tft.println("Hacker Voice Assistant");
tft.println("--------------------");
tft.setTextSize(1);
tft.print("IP: ");
tft.println(WiFi.localIP());
tft.setTextSize(2);
tft.println("\nReady for command...");
}
void loop() {
// Check if the button is pressed
if (digitalRead(buttonPin) == LOW) {
// Start a voice session
startVoiceSession();
// After the session, clear the screen and show the ready message again
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0,0);
tft.setTextSize(2);
tft.println("Hacker Voice Assistant");
tft.println("--------------------");
tft.setTextSize(1);
tft.print("IP: ");
tft.println(WiFi.localIP());
tft.setTextSize(2);
tft.println("\nReady for command...");
}
}
void startVoiceSession() {
// Clear the screen for the new session
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0,0);
tft.setTextSize(2);
// TODO: Add voice recording and processing code here
Serial.println("Button pressed, starting voice session...");
displayHackerText("Listening...");
// For now, we'll just send a test query to Gemini
delay(2000); // Simulate recording time
displayHackerText("Processing...");
String query = "Hello, Gemini!";
String response = sendToGemini(query);
// Display the response
displayHackerText("User: " + query);
displayHackerText("Gemini: " + response);
Serial.println("Gemini response: " + response);
}
String sendToGemini(String query) {
HTTPClient http;
String url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=";
url += geminiApiKey;
http.begin(url);
http.addHeader("Content-Type", "application/json");
StaticJsonDocument<200> doc;
JsonObject content = doc.createNestedObject("contents");
JsonArray parts = content.createNestedArray("parts");
JsonObject part = parts.createNestedObject();
part["text"] = query;
String requestBody;
serializeJson(doc, requestBody);
int httpResponseCode = http.POST(requestBody);
if (httpResponseCode > 0) {
String payload = http.getString();
StaticJsonDocument<1024> responseDoc;
DeserializationError error = deserializeJson(responseDoc, payload);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return "Error: Failed to parse response.";
}
if (responseDoc.containsKey("candidates")) {
const char* responseText = responseDoc["candidates"][0]["content"]["parts"][0]["text"];
return String(responseText);
} else {
return "Error: Invalid response from Gemini.";
}
} else {
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
return "Error: Unable to get response from Gemini.";
}
http.end();
return "";
}
void displayHackerText(String text) {
tft.println(text);
}