Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ElektroPortrait1

🤖⚙️ Elektro

A full-scale ESP8266-controlled tribute to Westinghouse's legendary Elektro robot, built from recycled metal for Nerdearla 2025.

Elektro is a large-scale animatronic robot built for the Nerdearla 2025 technology conference in Buenos Aires, Argentina.

Inspired by the humanoid robot created by Westinghouse in the late 1930s, this version combines traditional metal fabrication, salvaged components, an ESP8266 NodeMCU, a DFPlayer Mini, a high-torque servo, amplified audio, Wi-Fi remote control, and a motorized smoke effect.

The robot can:

  • 🗣️ deliver prerecorded announcements
  • 😮 move its jaw while speaking
  • 💨 perform a coordinated smoking sequence
  • 😷 cough
  • 📡 create its own Wi-Fi Access Point
  • 📱 accept commands through a browser
  • 🔄 operate autonomously between remote interactions

The body was built by Mauro de Giuseppe and students from EPS School No. 1 in General Las Heras, Buenos Aires, while the electronics and software were developed by Roni Bandini.


✨ Features

  • 🤖 Full-scale humanoid robot
  • ♻️ Body fabricated primarily from recycled metal
  • 📡 ESP8266 NodeMCU controller
  • 🌐 Self-hosted Wi-Fi Access Point
  • 📱 Browser-based remote control
  • 🗣️ Prerecorded speech and event announcements
  • 🎵 DFPlayer Mini audio playback
  • 🔊 Stereo audio amplification
  • 😮 Servo-controlled jaw synchronized with speech
  • 💨 Motorized smoke mechanism
  • 😷 Coordinated cough routine
  • 🔇 Remote mute/unmute
  • 🔄 Autonomous announcements
  • 🎲 Randomized speech selection
  • 🖼️ Embedded vintage Elektro artwork in the control interface
  • 📜 MIT licensed

🕰️ The original Elektro

The original Elektro was developed by Westinghouse in Mansfield, Ohio, during the late 1930s and became one of the best-known attractions at the 1939 New York World's Fair.

At approximately 2.1 meters tall, Elektro could perform numerous demonstrations including:

  • walking
  • talking
  • responding to voice commands
  • counting
  • moving its head and arms
  • distinguishing colored light
  • inflating balloons
  • smoking cigarettes

Its speech used prerecorded audio, while its control system relied on relays, motors, gears, and other electromechanical technology.

The surviving original Elektro is preserved at the Mansfield Memorial Museum in Ohio.

Historical references


🏗️ Nerdearla 2025 recreation

The modern Elektro was built for Nerdearla 2025.

The finished robot stands approximately two meters tall, weighs around 176 lb / 80 kg, and was constructed largely from discarded machinery and household equipment.

Recycled components used for the body included:

  • 25-liter air compressor tanks
  • refrigeration tanks
  • refrigerator drums
  • steel curtain tubes
  • shock absorbers
  • bearings
  • stove parts
  • washing-machine parts
  • other salvaged steel components

The pieces were cut, welded, assembled, and polished using conventional metalworking techniques.

The structural work was led by Mauro de Giuseppe, together with students from EPS School No. 1 in General Las Heras.


🧠 Electronics architecture

                     ┌────────────────────┐
                     │    Smartphone      │
                     │      Browser       │
                     └─────────┬──────────┘
                               │
                               │ Wi-Fi
                               ▼
                     ┌────────────────────┐
                     │ ESP8266 NodeMCU    │
                     │                    │
                     │ Access Point       │
                     │ HTTP server        │
                     │ Automation logic   │
                     └───┬────┬─────┬────┘
                         │    │     │
                ┌────────┘    │     └─────────┐
                ▼             ▼               ▼
        ┌─────────────┐ ┌──────────┐  ┌─────────────┐
        │ DFPlayer    │ │  Servo   │  │ Motor Driver│
        │ Mini        │ │          │  │             │
        └──────┬──────┘ └────┬─────┘  └──────┬──────┘
               │             │               │
               ▼             ▼               ▼
        ┌─────────────┐   Steel Jaw      5 V Fan
        │ NS4110 Amp  │                  / Smoker
        └──────┬──────┘
               │
          ┌────┴────┐
          ▼         ▼
       Speaker   Speaker

🧰 Electronic parts

Component Purpose
ESP8266 NodeMCU Amica Main controller and Wi-Fi server
DFPlayer Mini MP3 playback
microSD card Audio storage
NS4110 stereo amplifier Audio amplification
2 × 20 W / 4 Ω speakers Robot voice
High-torque metal-gear servo Jaw movement
Motor driver / H-bridge Smoke fan control
5 V fan Airflow for smoke effect
Dual 5 V / 12 V power supply Electronics and amplifier
Jumper wires / terminals Interconnection

DFPlayer Mini

DFRobot DFPlayer Mini

Library:

DFRobot/DFRobotDFPlayerMini


♻️ Salvaged electronics

Several components in the original build were reused from previous equipment.

These included:

  • speakers from a home-theater system
  • an ESP8266 development board
  • a metal-gear servo
  • a 5 V cooling fan
  • a dual-voltage power supply from an old Iomega Zip Drive

The reused Iomega supply provides:

5 V  → ESP8266, DFPlayer, fan
12 V → NS4110 amplifier

🔌 ESP8266 pinout

The current firmware defines:

Function ESP8266 pin
Jaw servo D5
Motor driver A1A D3
Motor driver A1B D4
DFPlayer RX D2
DFPlayer TX D1

From the source:

const int servoPin = D5;

const int A1A = D3;
const int A1B = D4;

const int playerRxPin = D2;
const int playerTxPin = D1;

🎵 Audio system

The audio path is:

microSD
   │
   ▼
DFPlayer Mini
   │
   │ DAC
   ▼
NS4110 stereo amplifier
   │
   ├──────────────┐
   ▼              ▼
20 W speaker   20 W speaker

The DFPlayer communicates with the ESP8266 through SoftwareSerial at:

9600 baud

The player starts at maximum library volume:

player.volume(30);

Audio files used by the project are stored under:

audios/

Examples include:

01BienvenidoANerdearla.mp3
02MiNombreEsElektro.mp3
03Ley2.mp3
04Ley1.mp3
05Ley3.mp3
06bostezo.mp3
...

Copy the audio files to the DFPlayer microSD card while preserving their numeric ordering.


🗣️ Voice

The project audio was generated using the Josh voice from ElevenLabs and later processed in Audacity to improve intelligibility and output level in a noisy conference environment.

The firmware currently defines:

const int howManyAudios = 33;

and selects different groups of audio tracks for generic speech, event announcements, coughing, and the smoking routine.


😮 Jaw synchronization

The jaw is driven by a metal-gear servo attached to:

D5

The normal speech movement range is:

const int minPos = 20;
const int maxPos = 70;

While an audio track is playing, the firmware repeatedly chooses a random jaw position:

int pos = random(minPos, maxPos + 1);
myservo.write(pos);

The interval between movements also varies:

const int minDelay = 150;
const int maxDelay = 300;

This creates an approximate speech synchronization without requiring phoneme or waveform analysis.

When playback finishes, the jaw returns to:

myservo.write(90);

💨 Smoke mechanism

A small 5 V fan is connected through the motor driver.

The fan is mechanically coupled to a custom funnel designed in Autodesk Fusion 360 and 3D printed.

The smoke routine coordinates:

Open jaw
   ↓
Preparation pause
   ↓
Fan ON
   ↓
Jaw movement
   ↓
Fan OFF
   ↓
Pause
   ↓
Repeat
   ↓
Occasional cough

The firmware currently performs:

const int smokingRounds = 10;

cycles.

During the sequence, the robot coughs automatically after selected rounds.

🔥 The original installation used a cigarette as part of the historical Elektro reference. Any reproduction involving heat, flame, smoke, or combustible materials requires suitable fire precautions and compliance with venue rules. A theatrical smoke source can be substituted for exhibition use.


😷 Cough routine

The cough command:

  1. changes the jaw position
  2. plays audio track 11
  3. waits briefly
  4. returns control to the caller
void cough() {
    myservo.write(0);
    speak(11);
    delay(1000);
}

The routine is also called automatically during the smoke sequence.


📡 Wi-Fi remote control

Elektro creates its own Wi-Fi network using:

WiFi.softAP(ssid, password);

The current defaults are:

const char* ssid = "Elektro";
const char* password = "AAAAAAAAAAAAAAAA";

Change the password before using the robot at an event or public location.

The web server runs on:

port 80

After startup, the ESP8266 prints the Access Point IP address to the Serial Monitor.

A common ESP8266 SoftAP address is:

192.168.4.1

Use the address printed by your board.


📱 Web interface

Open the Elektro IP address from a phone or computer connected to its Wi-Fi network.

The embedded control interface provides four commands:

┌──────────┐ ┌──────────┐
│  Speak   │ │   Mute   │
└──────────┘ └──────────┘

┌──────────┐ ┌──────────┐
│  Smoke   │ │  Cough   │
└──────────┘ └──────────┘

The entire HTML application is embedded directly inside:

elektro.ino

including a vintage Elektro image stored as Base64 data.

No separate web server or Internet connection is required.


🌐 HTTP API

The browser interface calls four simple HTTP endpoints.

Endpoint Action
/api/speak Play a random speech track
/api/mute Toggle mute state
/api/smoke Start the smoke routine
/api/cough Trigger cough

Example:

GET /api/speak

Response:

...Elektro spoke!

The API also makes it possible to control Elektro from another application rather than using the included web interface.


🔄 Autonomous mode

Remote control is optional.

The main loop continues running when nobody is connected:

void loop() {
    server.handleClient();
    ...
}

After an idle interval, Elektro alternates between:

  • generic phrases
  • Nerdearla announcements

Tracks are selected randomly.

Conceptually:

Idle
  ↓
Random phrase
  ↓
Idle
  ↓
Random announcement
  ↓
Idle
  ↓
Repeat

This allowed Elektro to continue functioning as an autonomous conference installation while still accepting manual commands.


🥚 Encoded-message easter egg

The project documentation also describes an easter egg in which Elektro occasionally broadcasts an encoded message using ggwave, an audio-based data transmission format.

ggwave:

github.com/ggerganov/ggwave


🚀 Installation

1. Clone the repository

git clone https://github.com/ronibandini/elektro.git
cd elektro

Repository structure:

elektro/
├── audios/
│   ├── 01BienvenidoANerdearla.mp3
│   ├── 02MiNombreEsElektro.mp3
│   └── ...
├── LICENSE
├── README.md
└── elektro.ino

2. Install ESP8266 support

Install the ESP8266 Arduino core:

ESP8266 Arduino Core

The original controller is an:

ESP8266 NodeMCU Amica

3. Install DFPlayer library

Install:

DFRobotDFPlayerMini

The sketch includes:

#include "DFRobotDFPlayerMini.h"

The other required libraries are provided by the ESP8266/Arduino environment:

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <Servo.h>
#include <SoftwareSerial.h>

4. Prepare the microSD card

Copy the contents of:

audios/

to the DFPlayer Mini microSD card.

Preserve the numeric order of the tracks because the firmware addresses them by track number.


5. Configure Wi-Fi

Change:

const char* ssid = "Elektro";
const char* password = "AAAAAAAAAAAAAAAA";

to the credentials you want the robot to expose.


6. Upload

Open:

elektro.ino

in Arduino IDE.

Select the appropriate ESP8266 NodeMCU board configuration and upload the sketch.

Open Serial Monitor at:

115200 baud

Startup output includes:

Elektro started
DFPlayer ok.
AP started: Elektro
IP address:
...
HTTP server started

🔬 Ideas for extending the project

  1. 💡 Control the chest lamps — add the relay-controlled retro lamps planned during the original build and expose them through the web interface.

  2. 🎭 Upgrade the smoke system — replace the original cigarette-based mechanism with a controllable theatrical smoke or vapor generator.

  3. 🎙️ Improve speech synchronization — use audio-envelope analysis or prerecorded timing data to make jaw motion follow speech more accurately.


📰 External references

🛠️ Hackster.io

Making an Elektro robot for Nerdearla Conference

Read the complete project on Hackster.io

The project article documents:

  • construction of the recycled-metal body
  • ESP8266 electronics
  • DFPlayer audio
  • jaw mechanism
  • smoke system
  • Wi-Fi administration
  • power supply
  • Nerdearla installation
  • project collaborators
  • source code

Published September 25, 2025.


🔧 Hackaday.io

Making an Elektro

Making an Elektro — Hackaday.io

The Hackaday.io project page documents the full-scale build and links directly to the GitHub source code.

It covers the recycled-metal construction, audio system, servo-controlled jaw, smoke mechanism, Wi-Fi interface, and ggwave easter egg.


✍️ Medium

Fabricando un robot Elektro

Fabricando un robot Elektro — Medium

Spanish-language project article covering the construction of the Nerdearla Elektro.

This article is also linked from the GitHub repository's About section.


La aventura de silenciar parlantes en Nerdearla 2025

Nerdearla 2025 article — Medium

Pre-event article announcing the Nerdearla appearance and the plan to exhibit a steel Elektro built approximately to the dimensions of the original.


💼 LinkedIn

Elektro at Nerdearla 2025

Project post on LinkedIn

Post-event documentation covering the completed robot, the EPS N°1 collaboration, recycled construction, speech, amplified audio, jaw motion, smoke mechanism, ggwave easter egg, and Wi-Fi administration.


📦 Ecosyste.ms

Elektro open-source project index

Elektro topic — Ecosyste.ms

The repository is indexed as:

ronibandini/elektro
Elektro robot for Nerdearla 2025

with the project topics:

esp8266
robot
elektro
servo-motor
dfplayer-mini

It is also included in the Ecosyste.ms DFPlayer Mini project index:

DFPlayer Mini projects — Ecosyste.ms


🎪 Nerdearla

Elektro was created for Nerdearla 2025, a technology conference held in Buenos Aires, Argentina.

Nerdearla

The robot was exhibited at CC Konex during the 2025 event.


📚 Historical references

Mansfield Memorial Museum

ELEKTRO the Westinghouse Robot

The museum preserves the surviving original Elektro and documents its Westinghouse and World's Fair history.


IEEE Spectrum

Elektro the Moto-Man Had the Biggest Brain at the 1939 World's Fair

Detailed history of Westinghouse's early robotics program, Televox, and Elektro.


🔗 You may also be interested in...

Other projects by Roni Bandini involving robots, automata, speech, servos, and reused hardware.

🧑‍🔧 Animatronic Head

Arduino animatronic head with face detection and servo-controlled head, eyes, and mouth movement.

A smaller platform for experimenting with many of the same mechanical ideas used in Elektro.

github.com/ronibandini/AnimatronicHead


📚🧸 Borges Furby

A modified 1998 Furby transformed into a Jorge Luis Borges animatronic using Arduino and DFPlayer Mini.

Like Elektro, the project combines prerecorded speech, mechanical movement, salvaged hardware, and a DFPlayer-based audio system.

github.com/ronibandini/furby


🦷📰 Yrigoyen

Chattering-teeth automaton that reads headlines with an optimistic tone.

Built around a DFRobot UNIHIKER and servo-driven mechanical mouth, combining software-generated speech with a physical automaton.

github.com/ronibandini/yrigoyen


⚠️ Safety

Elektro is a large steel machine containing moving mechanical parts, high-current audio equipment, and multiple supply voltages.

For reproductions or modifications:

  • secure the robot against tipping
  • keep hands clear of the jaw and servo linkage
  • isolate exposed electrical terminals
  • provide appropriate fusing
  • use a common electrical ground where required
  • ensure adequate wire gauge for the amplifier and other high-current loads
  • keep combustible materials away from electronics and power supplies
  • follow venue rules for smoke, flame, and moving installations

The original smoke sequence should not be reproduced in a public installation without suitable fire controls.


📜 License

Elektro is released under the MIT License.

See LICENSE for details.


👤 Credits

Electronics, firmware and project

Roni Bandini

Metal fabrication

Mauro de Giuseppe

Construction

Students from EPS School No. 1 — General Las Heras, Buenos Aires, Argentina

Elektro was built through the combination of recycled materials, metalworking, embedded electronics, software, and collaborative fabrication for Nerdearla 2025.

Releases

Packages

Contributors

Languages