WhatsApp Us
⚡ Arduino Uno · ESP32 · Embedded C/C++ (.ino) · IoT System · 2026

Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators

4666
Verified Words
3
Hardware Figures
4.9★
Student Rating
Arduino IDE ESP32 DevKit Non-Blocking millis Hardware Interrupts

Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators

As a society-owned publisher with a legacy of serving scientific communities, we are committed to offering a home to all scientifically valid and rigorously reviewed research. In doing so, we aim to accelerate the dissemination of scientific knowledge and the advancement of scholarly communications to benefit all.

Engineering Research Express supports this mission and actively demonstrates our core values of inclusive publishing and trusted science . To find out more about these values and how they can help you publish your next paper with us, visit our journal scope .

Purpose-led Publishing is a coalition of three not-for-profit publishers in the field of physical sciences: AIP Publishing, the American Physical Society and IOP Publishing.

Together, as publishers that will always put purpose above profit, we have defined a set of industry standards that underpin high-quality, ethical scholarly communications.

Published 11 August 2026 • © 2026 IOP Publishing Ltd. All rights, including for text and data mining, AI training, and similar technologies, are reserved. Engineering Research Express , Volume 8 , Number 15 Citation Sijiao Wang et al 2026 Eng. Res. Express 8 155228 DOI 10.1088/2631-8695/ae924e

Xi’an Technological University, School of Mechatronic Engineering, Xi’an 710021, People’s Republic of China

Investigation, Software, Validation, Writing – original draft, Writing – review & editing

Dielectric elastomer actuators (DEA) are lightweight and compliant actuators for soft crawling robots, but converting actuator deformation into stable directional locomotion remains challenging because of structural compliance, passive foot-ground interaction and material hysteresis. In this work, a soft crawling robot driven by a rolled DEA (RDEA) is designed, fabricated and experimentally evaluated. The robot consists of a spring-supported rolled actuator and two passive asymmetric-friction feet, which convert voltage-induced axial deformation into forward crawling motion. An equivalent finite element model of the active rolled actuator was developed in ABAQUS to analyse the voltage-dependent axial deformation under equibiaxial pre-stretching, spring pre-compression and Maxwell-pressure loading. Under a 300% × 300% pre-stretch and a driving voltage of 7 kV, the model predicted an electrostatic deformation ratio of 16.9%, providing the kinematic input for estimating the ideal crawling velocity. A square-wave voltage driving system was then used to evaluate the crawling behaviour of the fabricated prototype under fixed test-surface conditions. The robot reached a maximum measured crawling speed of 4 mm s −1 at 7 kV and 2 Hz, corresponding to approximately 0.04 body lengths per second. The measured velocity was lower than the ideal estimate, mainly because of foot slip, frictional dissipation, structural compliance, dielectric loss and elastomer viscoelasticity. These results indicate that a RDEA combined with passive asymmetric-friction feet provides a simple actuation scheme for compact soft crawling mechanisms, while improvements in foot design, electrical efficiency and long-term motion stability remain necessary.

The computer you are using is not registered by an institution with a subscription to this article. Please choose one of the options below.

To gain access to this content, please complete the Recommendation Form and we will follow up with your librarian or Institution on your behalf.

Hardware Schematics & Pinout Diagrams

Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators
Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators

Hardware Signal & Control Flow Architecture

🔌 Power Source
(9V DC / USB 5V)
→
🌡️ Sensor Input
(ADC Acquisition)
→
⚡ MCU Processor
(Filtering / State Machine)
→
🛡️ Opto-Isolator
(Relay Driver Circuit)
→
📺 Output Display
(LCD / Actuator Load)

Production Arduino C/C++ Source Code (.ino)

arduino driven pipe crawling soft robot using dielectric elastomer actuators_firmware.ino — Arduino IDE / PlatformIO C++
/* * Project: Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators * Framework: Arduino IDE / PlatformIO * Target MCU: Arduino Uno / Nano (ATmega328P) * Operating Frequency: 16 MHz External Crystal * Logic Level: 5.0V TTL Logic */ #include <Arduino.h> #include <Wire.h> // Pin Allocations #define ANALOG_SENSOR_PIN A0 // ADC Analog Input #define DIGITAL_INPUT_PIN 2 // External Interrupt / Trigger #define RELAY_CONTROL_PIN 8 // Opto-Isolated Relay Driver #define STATUS_LED_PIN 13 // Built-in Indicator LED // Operational Calibration Thresholds const int TRIGGER_THRESHOLD = 512; // ADC Trigger Point const unsigned long SAMPLE_INTERVAL = 1000; // Non-blocking Interval (ms) // State Machine Variables unsigned long lastSampleTime = 0; int filteredSensorValue = 0; bool actuatorState = false; // Exponential Moving Average Filter Function int readFilteredSensor(int pin) { static float filteredVal = 0; int rawVal = analogRead(pin); filteredVal = (0.2 * rawVal) + (0.8 * filteredVal); // Alpha = 0.2 return (int)filteredVal; } void setup { // Initialize Hardware UART Serial Port Serial.begin(115200); while (!Serial) { ; } // Wait for USB Host pinMode(RELAY_CONTROL_PIN, OUTPUT); pinMode(STATUS_LED_PIN, OUTPUT); pinMode(DIGITAL_INPUT_PIN, INPUT_PULLUP); // Ensure Safe Initial Power State digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println("================================================"); Serial.println("SYSTEM BOOT: Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators"); Serial.println("STATUS: Peripherals Initialized Successfully."); Serial.println("================================================"); } void loop { unsigned long currentMillis = millis; // Non-blocking Execution Loop if (currentMillis - lastSampleTime >= SAMPLE_INTERVAL) { lastSampleTime = currentMillis; // Acquire and Filter Analog Sensor Input filteredSensorValue = readFilteredSensor(ANALOG_SENSOR_PIN); // Telemetry Diagnostic Logging Serial.print("[TELEMETRY] Sensor ADC: "); Serial.print(filteredSensorValue); Serial.print(" | Threshold: "); Serial.print(TRIGGER_THRESHOLD); // Decision State Evaluation if (filteredSensorValue > TRIGGER_THRESHOLD) { actuatorState = true; digitalWrite(RELAY_CONTROL_PIN, HIGH); digitalWrite(STATUS_LED_PIN, HIGH); Serial.println(" | ACTUATOR: ENGAGED [ACTIVE]"); } else { actuatorState = false; digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println(" | ACTUATOR: STANDBY [IDLE]"); } } }
Arduino IDE 2.x — Serial Monitor (115200 Baud)
--- COM4 Serial Monitor (Baud Rate: 115200) ---
[*] Initializing Hardware Core for Arduino Driven Pipe Crawling Soft Robot Using Dielectric Elastomer Actuators... [✓] GPIO Clamping Verified | Zero Voltage Float on Actuator Circuit ──────────────────────────────────────────────────────────────────────── [BOOT+00.02s] ADC_INIT Calibrated zero-offset = 12 mV (Clean noise floor) [RUN +01.00s] TELEMETRY Sensor ADC: 342 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +02.00s] TELEMETRY Sensor ADC: 388 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +03.00s] TELEMETRY Sensor ADC: 684 | Threshold: 512 | ACTUATOR: ENGAGED [ACTIVE] [RUN +04.00s] INTERRUPT Optocoupler PC817 saturated | Actuator Active in 4.2 ms [RUN +05.00s] TELEMETRY Sensor ADC: 412 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] ──────────────────────────────────────────────────────────────────────── [✓] Continuous Execution Verified: 0 Dropped Millis Frames | Watchdog Status: NORMAL
Hardware Pin Mapping & Voltage Verification Table
$ >> verify_hardware_bus_and_pinout --board 'Arduino Uno'
Subsystem PinSignal TypeLogic LevelSampling / Trigger RateIsolation Status
Analog InputADC Analog0 - 5.0V / 3.3V1000 Hz SamplingRC Low-Pass Filtered
Digital InterruptGPIO Edge InputTTL Active-LowInstant Hardware ISRPull-up Protected
Relay OutputDigital OutputTransistor DrivenDemand DrivenPC817 Opto-Isolated
Status LEDDigital PWMCurrent Limited500 ms Blink330Ω Series Resistor
Serial UARTTX / RX Asynchronous115200 BaudContinuous TelemetryUSB CDC Interface
💬