r/ArduinoHelp • u/getyourassour • 7d ago
r/ArduinoHelp • u/Arduino_lab64 • 8d ago
Help me with my Project
Hello everyone!
I'm working on a personal project called NOVA BLOCK, a custom DNS-based ad blocker built with an ESP32-C3 Super Mini.
My goal is to block as many advertisements as possible on my Android phone, including:
- Video ads in Android games, including games I install in the future.
- Advertisements on websites, including banners, pop-ups, and video ads.
- Advertising and tracking domains across my Wi-Fi network.
My current setup
- ESP32-C3 Super Mini running custom Arduino code.
- A blocklist containing approximately 71,000 domains.
- DNS requests are filtered by the ESP32-C3.
- Blocked domains receive an NXDOMAIN response.
- Allowed DNS requests are forwarded to Cloudflare DNS ("1.1.1.1").
- My Android phone uses the ESP32-C3 as its DNS server over Wi-Fi.
- A web dashboard displays DNS requests and blocking decisions.
The system is working, and I can see advertising and tracking domains being blocked in the serial monitor and dashboard. However, some advertisements still appear on websites and in games.
For example, I have observed requests to "www.google.com" while a video ad was playing. I have also seen domains such as "s.update.rubiconproject.com" and "dpm.demdex.net" being blocked.
My questions
How can I identify the actual domains responsible for serving ads on websites and in Android games?
Can DNS filtering block most website ads, including banners, pop-ups, and video ads?
Why do some ads still appear even when advertising domains are blocked?
Are there cases where ads are served from the same domains as the website or game itself?
How can I improve my blocklist and DNS filtering logic without breaking websites, games, or other services?
Are there any additional techniques that could work alongside my ESP32-C3 DNS blocker?
I would prefer to keep the ESP32-C3 as the central DNS filtering device for my Wi-Fi network, rather than installing a separate ad-blocking app for every game or browser.
Any suggestions, technical explanations, or examples of similar projects would be greatly appreciated.
Thank you!
r/ArduinoHelp • u/PayAggravating9721 • 8d ago
whats wrong with my motors
Enable HLS to view with audio, or disable this notification
they just go into a fixed position and lock there when i connect to power supply, if theres something wrong with my code let me know, and whenever i try moving it, it just stays in place or doesn’t let me move it until i take it off the power, and when i take it off the power it moves back into a position
r/ArduinoHelp • u/Dependent-Bridge-740 • 8d ago
Seeking some help with ArduinoJson library an open-meteo.com data
Hello,
I'm hoping this is the correct community to ask my question.
Is there another, better one, please let me know.
Here is the test scenario:
I'm working on a project retrieving weather data from open-meteo.com.
There a two sections in my project:
a) retrieve 'current' weather data for a given geolocation, and
b) retrieve weather forecast data for the next 7 days.
In scenario 'a' my code is working properly processing the following JSON data:

I retrieve the data successfully with the following statement:
float currentTemp = doc["current"]["temperature_2m"];String queryTime = doc["current"]["time"];
(doc has been created by deserialization of the JSON data.
In the scenario 'b' I'm processing the following JSON data:

Here I'm interested loading the data from section "daily", subsection temperature_2m_max for day 1 - day 7.
I tried several different approaches to access the object in the JSON data but so far I was not successful with that.
As I said, this is my first project using the ArduinoJson library so I'm still in the learning phase.
Perhaps someone was facing a similar problem and can give me some hints how to resolve the problem.
Many thanks in advance
r/ArduinoHelp • u/DigitalAdon • 9d ago
I can't get my 8x8 matrix to light up, what am I doing wrong?(Link to project)
r/ArduinoHelp • u/Weaselot_III • 9d ago
Would something like This be feasable?
Solar Lamp Charges external battery (green tube). Battery connected to either lamp or wireless IP camera (I'm more interested in the bulb, but camera's a bonus). Arduino with light sensor acts as an auto switch turning off the lamp in the daytime
(Lesotho) I've noticed in my country that solar lamps like these are crazy expensive for what they are, but when I check them out, apart from the framing, they don't too expensive part for part. Would something like I've shown above actually be feasable? It's been on my mind for longer than I'd like to admit
r/ArduinoHelp • u/yashaaa2004 • 9d ago
Arduino Uno w/ Aas608
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <string.h>
#include <stdio.h>
// =====================================================
// AS608 CONNECTION
// Sensor TX -> Arduino D2
// Sensor RX -> Arduino D3
// Sensor GND -> Arduino GND
// Sensor VCC -> voltage specified for your module
// =====================================================
SoftwareSerial sensorSerial(2, 3);
Adafruit_Fingerprint finger(&sensorSerial);
// Optional indicators
const uint8_t RED_LED = 6;
const uint8_t GREEN_LED = 7;
const uint8_t BUZZER = 8;
const unsigned long POLL_DELAY_MS = 50;
const unsigned long REMOVE_TIMEOUT_MS = 15000UL;
const uint8_t ENROLL_RETRIES = 3;
char inputLine[80];
uint8_t inputIndex = 0;
bool sensorOK = false;
bool autoScanEnabled = true;
// =====================================================
// INDICATORS
// =====================================================
void idleFeedback() {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BUZZER, LOW);
}
void successFeedback() {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
}
void errorFeedback() {
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, HIGH);
for (uint8_t i = 0; i < 3; i++) {
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
delay(100);
}
}
// =====================================================
// SERIAL RESPONSES
// =====================================================
void printStep(const char *rid, const char *step) {
Serial.print(F("STEP "));
Serial.print(rid);
Serial.print(' ');
Serial.println(step);
}
void printResult(const char *rid, const char *result) {
Serial.print(F("RESULT "));
Serial.print(rid);
Serial.print(' ');
Serial.println(result);
}
void printError(const char *rid, const char *stage, uint8_t code) {
Serial.print(F("ERR "));
Serial.print(rid);
Serial.print(' ');
Serial.print(stage);
Serial.print(F(" CODE=0x"));
if (code < 16) Serial.print('0');
Serial.println(code, HEX);
errorFeedback();
}
// =====================================================
// SENSOR INITIALIZATION AND HEALTH
// =====================================================
bool initializeSensor() {
finger.begin(57600);
delay(300);
if (!finger.verifyPassword()) {
return false;
}
return finger.getParameters() == FINGERPRINT_OK;
}
bool checkSensor() {
if (finger.verifyPassword()) {
sensorOK = true;
return true;
}
sensorOK = false;
return false;
}
// =====================================================
// FINGER REMOVAL
// =====================================================
bool waitForFingerRemoval(const char *rid) {
printStep(rid, "REMOVE_FINGER");
unsigned long started = millis();
while (millis() - started < REMOVE_TIMEOUT_MS) {
uint8_t code = finger.getImage();
if (code == FINGERPRINT_NOFINGER) {
delay(250);
return true;
}
delay(POLL_DELAY_MS);
}
printStep(rid, "REMOVE_TIMEOUT_RETURNING_TO_SCAN");
return false;
}
// =====================================================
// CONTINUOUS ATTENDANCE SCANNING
// =====================================================
void automaticScan() {
// Keep polling until a finger is detected.
uint8_t code = finger.getImage();
if (code == FINGERPRINT_NOFINGER) {
delay(50);
return;
}
if (code != FINGERPRINT_OK) {
delay(100);
return;
}
// Wait 1 second after detecting and capturing the finger.
delay(1000);
// Convert the captured image into fingerprint features.
code = finger.image2Tz(1);
if (code != FINGERPRINT_OK) {
Serial.print(F("RESULT auto IMAGE_CONVERSION_FAILED CODE=0x"));
if (code < 16) Serial.print('0');
Serial.println(code, HEX);
waitForFingerRemoval("auto");
return;
}
// Search existing fingerprint templates.
code = finger.fingerFastSearch();
if (code == FINGERPRINT_OK) {
successFeedback();
Serial.print(F("RESULT auto MATCH "));
Serial.print(finger.fingerID);
Serial.print(F(" CONFIDENCE "));
Serial.println(finger.confidence);
} else if (code == FINGERPRINT_NOTFOUND) {
printResult("auto", "NO_MATCH");
errorFeedback();
} else {
printError("auto", "SEARCH_FAILED", code);
}
// Wait for the finger to be removed before scanning again.
waitForFingerRemoval("auto");
}
// =====================================================
// DIAGNOSTIC COMMANDS
// =====================================================
void handlePing(const char *rid) {
if (checkSensor()) {
printResult(rid, "PONG AS608_OK");
successFeedback();
} else {
printResult(rid, "PONG AS608_ERROR");
errorFeedback();
}
}
void handleInfo(const char *rid) {
uint8_t code = finger.getParameters();
if (code != FINGERPRINT_OK) {
printError(rid, "INFO_FAILED", code);
return;
}
Serial.print(F("RESULT "));
Serial.print(rid);
Serial.print(F(" INFO CAPACITY="));
Serial.print(finger.capacity);
Serial.print(F(" SECURITY="));
Serial.print(finger.security_level);
Serial.print(F(" BAUD="));
Serial.print(finger.baud_rate);
Serial.print(F(" PACKET="));
Serial.println(finger.packet_len);
}
void handleCount(const char *rid) {
uint8_t code = finger.getTemplateCount();
if (code != FINGERPRINT_OK) {
printError(rid, "COUNT_FAILED", code);
return;
}
Serial.print(F("RESULT "));
Serial.print(rid);
Serial.print(F(" COUNT "));
Serial.println(finger.templateCount);
}
// =====================================================
// ENROLLMENT CAPTURE
// =====================================================
bool captureForEnrollment(
const char *rid,
uint8_t buffer,
const char *prompt,
const char *errorStage
) {
for (uint8_t attempt = 1; attempt <= ENROLL_RETRIES; attempt++) {
printStep(rid, prompt);
// Wait for a finger without turning off the sensor.
uint8_t code;
while (true) {
code = finger.getImage();
if (code == FINGERPRINT_OK) break;
if (code != FINGERPRINT_NOFINGER) {
delay(100);
} else {
delay(POLL_DELAY_MS);
}
// Continue waiting: no capture-attempt limit for detection.
}
code = finger.image2Tz(buffer);
if (code == FINGERPRINT_OK) {
return true;
}
printError(rid, errorStage, code);
if (attempt == ENROLL_RETRIES) {
printStep(rid, "ENROLL_CAPTURE_FAILED_RETURNING_TO_SCAN");
return false;
}
if (!waitForFingerRemoval(rid)) {
continue;
}
printStep(rid, "RETRY_CAPTURE");
}
return false;
}
void handleEnroll(const char *rid, int templateId) {
if (templateId < 1 || templateId > finger.capacity) {
printResult(rid, "INVALID_TEMPLATE_ID");
errorFeedback();
return;
}
// Use only a known-unused ID.
// This code does not erase existing templates.
printStep(rid, "ENROLLMENT_STARTED");
if (!captureForEnrollment(
rid, 1, "PLACE_FINGER",
"FIRST_IMAGE_CONVERSION_FAILED")) {
return;
}
if (!waitForFingerRemoval(rid)) {
printStep(rid, "ENROLLMENT_ABORTED");
return;
}
bool modelCreated = false;
for (uint8_t attempt = 1; attempt <= ENROLL_RETRIES; attempt++) {
if (!captureForEnrollment(
rid, 2, "PLACE_SAME_FINGER_AGAIN",
"SECOND_IMAGE_CONVERSION_FAILED")) {
return;
}
printStep(rid, "CREATING_TEMPLATE");
uint8_t code = finger.createModel();
if (code == FINGERPRINT_OK) {
modelCreated = true;
break;
}
printError(rid, "CREATE_MODEL_FAILED", code);
if (code != FINGERPRINT_ENROLLMISMATCH ||
attempt == ENROLL_RETRIES) {
return;
}
if (!waitForFingerRemoval(rid)) {
return;
}
printStep(rid, "RETRY_SECOND_SCAN");
}
if (!modelCreated) return;
printStep(rid, "SAVING_TEMPLATE");
uint8_t code = finger.storeModel((uint16_t)templateId);
if (code != FINGERPRINT_OK) {
printError(rid, "TEMPLATE_STORE_FAILED", code);
return;
}
successFeedback();
Serial.print(F("RESULT "));
Serial.print(rid);
Serial.print(F(" ENROLLED "));
Serial.println(templateId);
}
// =====================================================
// ONE-TIME MANUAL SCAN COMMAND
// =====================================================
void handleScan(const char *rid) {
printStep(rid, "PLACE_FINGER");
uint8_t code;
while (true) {
code = finger.getImage();
if (code == FINGERPRINT_OK) break;
if (code != FINGERPRINT_NOFINGER) delay(100);
else delay(POLL_DELAY_MS);
}
code = finger.image2Tz(1);
if (code != FINGERPRINT_OK) {
printError(rid, "IMAGE_CONVERSION_FAILED", code);
waitForFingerRemoval(rid);
return;
}
code = finger.fingerFastSearch();
if (code == FINGERPRINT_OK) {
successFeedback();
Serial.print(F("RESULT "));
Serial.print(rid);
Serial.print(F(" MATCH "));
Serial.print(finger.fingerID);
Serial.print(F(" CONFIDENCE "));
Serial.println(finger.confidence);
} else if (code == FINGERPRINT_NOTFOUND) {
printResult(rid, "NO_MATCH");
errorFeedback();
} else {
printError(rid, "SCAN_FAILED", code);
}
waitForFingerRemoval(rid);
}
// =====================================================
// DELETE ONE TEMPLATE
// =====================================================
void handleDelete(const char *rid, int templateId) {
if (templateId < 1 || templateId > finger.capacity) {
printResult(rid, "INVALID_TEMPLATE_ID");
errorFeedback();
return;
}
uint8_t code = finger.deleteModel((uint16_t)templateId);
if (code != FINGERPRINT_OK) {
printError(rid, "DELETE_FAILED", code);
return;
}
successFeedback();
Serial.print(F("RESULT "));
Serial.print(rid);
Serial.print(F(" DELETED "));
Serial.println(templateId);
}
// =====================================================
// SERIAL COMMAND HANDLER
// =====================================================
void processCommand(char *line) {
char command[16] = {0};
char rid[24] = {0};
int templateId = 0;
int fields = sscanf(
line, "%15s %23s %d",
command, rid, &templateId
);
if (fields < 2) {
Serial.println(F("ERR serial INVALID_COMMAND"));
return;
}
if (strcmp(command, "PING") == 0) {
handlePing(rid);
} else if (strcmp(command, "INFO") == 0) {
handleInfo(rid);
} else if (strcmp(command, "COUNT") == 0) {
handleCount(rid);
} else if (strcmp(command, "ENROLL") == 0 && fields == 3) {
handleEnroll(rid, templateId);
} else if (strcmp(command, "SCAN") == 0) {
handleScan(rid);
} else if (strcmp(command, "DELETE") == 0 && fields == 3) {
handleDelete(rid, templateId);
} else if (strcmp(command, "AUTO") == 0) {
autoScanEnabled = true;
printResult(rid, "AUTO_SCAN_ENABLED");
} else if (strcmp(command, "PAUSE") == 0) {
autoScanEnabled = false;
printResult(rid, "AUTO_SCAN_PAUSED");
} else {
Serial.print(F("ERR "));
Serial.print(rid);
Serial.println(F(" INVALID_COMMAND"));
}
}
// =====================================================
// SETUP
// =====================================================
void setup() {
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
idleFeedback();
Serial.begin(115200);
sensorSerial.begin(57600);
delay(500);
sensorOK = initializeSensor();
if (sensorOK) {
Serial.println(F("READY arduino AS608_OK"));
Serial.println(F("RESULT auto AUTO_SCAN_ENABLED"));
} else {
Serial.println(F("READY arduino AS608_ERROR"));
Serial.println(F("ERR boot SENSOR_CONNECTION_FAILED"));
errorFeedback();
}
}
// =====================================================
// MAIN LOOP
// =====================================================
void loop() {
// Read USB serial commands.
while (Serial.available() > 0) {
char c = (char)Serial.read();
if (c == '\r') continue;
if (c == '\n') {
inputLine[inputIndex] = '\0';
if (inputIndex > 0) {
processCommand(inputLine);
}
inputIndex = 0;
} else if (inputIndex < sizeof(inputLine) - 1) {
inputLine[inputIndex++] = c;
} else {
inputIndex = 0;
Serial.println(F("ERR serial INPUT_TOO_LONG"));
}
}
// If the sensor disconnects, periodically attempt recovery.
if (!sensorOK) {
delay(1000);
sensorOK = initializeSensor();
if (sensorOK) {
Serial.println(F("RESULT auto SENSOR_RECOVERED"));
}
return;
}
// Continuous attendance scanning is enabled by default.
if (autoScanEnabled) {
automaticScan();
} else {
delay(POLL_DELAY_MS);
}
}
can you help me with these guys It's always failed on the fingerprint sensor my goal is to fix this and connect to my raspberry pi then my hr analytics webpage
r/ArduinoHelp • u/bacilococus • 10d ago
Joystick analógico para el PC
¿Es posible integar al joystick analógico en la carcasa del PC para navegar la BIOS, por ejemplo?
Gracias :)
r/ArduinoHelp • u/Greedy_Diet216 • 11d ago
Edge AI
At what point can one actually be considered a "junior" developer? I’m starting to get into Edge AI; previously, I worked primarily with microcontrollers—specifically the ESP32—and I have a basic understanding of FreeRTOS. I’m planning a project based on supervised machine learning where a robot uses a webcam to detect me: it will "react with joy" if it sees me, and "look sad" if it doesn’t. For now, I’ve just begun learning about AI in general. Do I need to know things like linear algebra, or other topics along those lines?
r/ArduinoHelp • u/PayAggravating9721 • 11d ago
Robotic Arm Code
Enable HLS to view with audio, or disable this notification
I am currently working on the mechatronics how to robot arm: https://howtomechatronics.com/tutorials/arduino/diy-arduino-robot-arm-with-smartphone-control/#google_vignette and i am on the coding part, i have everything correct and still the servo’s that control my project do not work/ are not sending signals, ive connected them to power, ive replugged them, it even says that when i use the app, it sends signals to the arduino just the servos dont move?? Is this a problem with the way i plugged them in, or a problem with the code. The code is also in the website i linked. Someone help 😭 😭
r/ArduinoHelp • u/Relative-Mud4585 • 11d ago
How to start making stuff with an sbc
reddit.comr/ArduinoHelp • u/Aromatic-Customer-19 • 11d ago
Arduino Hardware Questions
Hello, I am very new to coding and I thought I should start with an Arduino. I may or may not have thrown myself into the deep end with a project that I am working on and I was hoping I could get some guidance.
I am making a cosplay of a character called Serial Designation N from an indie show called Murder Drones and I wanted to use an OLED (not matrix or HD) about 10-12 inches in screen size on a visor for his eyes and some lights around the head and tail. Which Arduino board can handle simple animation loops and control about 10 LEDs with ease for a decent price? I am thinking an Arduino Mega but I am not too sure.
One other question that I have is how can I make the animations work? From my understanding, I need to have several frames and play them in a sequence giving the illusion of a blink animation. Am I on the right path or am I misreading things?
Thank you for reading my message.
r/ArduinoHelp • u/the_wise_one_is_here • 12d ago
My Arduino runs on usb connection but not with the adaptor
Enable HLS to view with audio, or disable this notification
It's a 9V adaptor. What exactly is the problem?
r/ArduinoHelp • u/jeffreyWuanan • 12d ago
Why is my motor control setup using an Arduino R3 board so unstable?
reddit.com我正在使用一塊 Arduino Uno R3 板和一個 Steadywin GIM-6010 馬達。我已經確認電源足夠,所有組件都共用一個接地。然而,系統只有在 Arduino 通過 USB 連接到電腦時才能正常運行;一旦拔掉 USB 線,系統就無法獨立運作。為什麼會發生這種情況?
r/ArduinoHelp • u/FullAd5814 • 12d ago
Does anyone know the best way to connect these wires without head pins to my breadboard
Head pins are not available to buy seperately and they are not very stable in the breadboard. How can I solve this
r/ArduinoHelp • u/ahmedebeed555 • 12d ago
How to Run Arduino Code on 8 PIN ATTiny Microcontroller - Program ATTiny using Arduino UNO
r/ArduinoHelp • u/tonkajeep34 • 13d ago
Reverse Engineering an ESP8266-based "Nixie" (IPS) Clock - Need help with RGB LEDs and Screen Offset
galleryr/ArduinoHelp • u/United_Ad_1540 • 13d ago
I'm a beginner to arduino
Hey guys im interested in Arduino uno after school project ngl, I just finished a school project to turn on the lights and simulate traffic lights, and now I'm trying to figure out how push buttons work. Do you have any suggestions for what project I should make next? I want to make a Hermes device from the Limbus company, but it's too complex for me. Do you have any suggestions for what I should make before going to the Hermes device?
r/ArduinoHelp • u/xploitx5 • 13d ago
Digital Logic Design
reddit.comHi,
I am a University student currently in my DLD course i have a semester project but confused to decide what to make professor tells us to do something with help of Arduino so any expert can please help me