This electronic sign project uses an ESP8266 broadcasting an SSID. It allows users to connect to the network where they can interact with a web server that allows an authenticated user to change the text on a dot matrix display (MAX7219). Non-authenticated users can attempt to hack the web server to change the text.
Most of the code used to communicate to the MAX7219 dot matrix display was taken from Micro Controllers Lab https://microcontrollerslab.com/max7219-led-dot-matrix-display-esp8266-nodemcu-tutorial/.
NOTE: This project is intentionally insecure. It is meant to be hacked.
- ESP8266
- MAX7219 Dot Matrix Display
- Micro USB cable
- Computer with the Arduino IDE (or PlatformIO; however, the instructions below will use the Arduino IDE)
- Wires
- Library MD_Parola
- Library MD_MAX72XX
- Additional Boards http://arduino.esp8266.com/stable/package_esp8266com_index.json
- SSID: hackable-sign
- Web portal: http://192.168.4.1
- Web portal username: admin
- Web portal password: 31337
On line 52 you can find the default text. This is the text that the device will display on boot. There is no persistence when you change the text from the web interface.
String text = "~~ Default I Guess ~~";
On lines 57 and 58 you'll find the web console default credentials. There is no password to connect to the sign via WiFi. The credentials are only for when you actually try to change the text.
const char* http_username = "admin";
const char* http_password = "raspberry";
On line 64 you'll find the IP address of the web interface. You should be able to change it to anything you want within the 192.168.4.0/24 range but this is not very important. The important thing to know is that this will be how you access the web interface to change the text. By default you'd go to http://192.168.4.1.
IPAddress local_IP(192, 168, 4, 1);
On line 43 you can change the SSID. The default is "Hackable Microcontroller Sign".
const char* ssid = "Hackable Microcontroller Sign";
And lastly on line 45 you can change the network password. The default is "system76".
The following table shows how to connect the pins on the MAX7219 display to the ESP8266 using wires. If the ESP8266 has pins pre-sodered you can use the female to female wires that typically come bundled with the MAX7219.
+---------------------+
| MAX7219 | ESP8266 |
+---------------------+
| VCC | 3.3V |
| GND | GND |
| DIN | D7 |
| CS | D8 |
| CLK | D5 |
+---------------------+
Add the ESP8266 board to the Arduino IDE (from https://github.com/esp8266/Arduino)
- Download and install Arduino IDE 1.x or 2.x
- Start Arduino and open the Preferences window
- Enter
https://arduino.esp8266.com/stable/package_esp8266com_index.json
into the File>Preferences>Additional Boards Manager URLs field of the Arduino IDE. You can add multiple URLs, separating them with commas. - Open Boards Manager from Tools > Board menu and install esp8266 platform (and don't forget to select your ESP8266 board from Tools > Board menu after installation).
- In Arduino IDE go to Tools>Manage Libraries (CTRL + SHFT + I)
- You will need to install two libraries:
MD_MAX72xx
andMD_Parola
- Search for
MD_MAX72xx
and install the library.- You will be asked if you want to install "ALL" dependencies. Select "Install ALL"
- If you do not select "Install ALL" you will need to also install the library
MD_Parola