Skip to content

Magix — Arduino

Place the two-way mirror into the frame first. Then, place your screen directly behind it, facing the mirror. When you power on the Arduino, the text will shine through the mirror coating.


Once you understand the basics, you can combine them to perform "Legendary Spells." Here are three classic Arduino Magix projects for the intermediate mage.

Have you ever watched a sci-fi movie where a character looks at a mirror and sees the weather, their schedule, and the news floating before their eyes? That isn't Hollywood CGI anymore. It’s one of the most popular projects in the maker community, often referred to as "Arduino Magix." arduino magix

While the term might sound like a fantasy, it refers to the very real process of combining a simple Arduino (or ESP8266) with a two-way mirror to create a Smart Magic Mirror.

In this post, we will guide you through the concepts, the components, and the steps needed to bring this illusion to life. Place the two-way mirror into the frame first


Upload StandardFirmata to Arduino. Then in Max use [maxuino] (third‑party package) – control pins directly from Max without reprogramming.

Maxuino gives you virtual knobs that control real servos/LEDs, and vice versa. Once you understand the basics, you can combine


Here is a basic snippet to get you started. This code connects to a Wi-Fi network and prints a simple message—the foundation of any smart mirror.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";
void setup() 
  Serial.begin(115200);
// Connect to Wi-Fi
  WiFi.begin(ssid, password);
  Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) 
    delay(500);
    Serial.print(".");
Serial.println("");
  Serial.println("Wi-Fi Connected!");
  Serial.println("The Magix is ready.");
void loop() 
  // Here is where you would fetch API data and update the screen
  // For now, we just print to the Serial Monitor
  Serial.println("Mirror Active...");
  delay(5000);

Search