n0xa / m5stick-nemo

M5 Stick C firmware for high-tech pranks
Other
798 stars 162 forks source link

M5Stick-NEMO

Firmware for high-tech pranks on M5Stack ESP32 Devices

M5-Nemo Matrix Logo Logo by @unagironin

Archived

As announced earlier this year, M5Stick-NEMO has been archived and is no longer under active development. The project exceeded all of my personal goals and it was amazing to see the community come together, get excited about the project, contribute to it, and get inspired by it.
As far as I am concerned, the project reached the limit of what the M5Stick family is capable of, for these sort of tricks and pranks, without adding external hardware such as SD Cards, radio modems, larger LEDs, RFID modules or other things. The battery life is also sub-optimal for driving these external peripherals. Many feature requests revolve around support for these external devices, and I don't have the resources or time to add these, but the good news is others have carried on the spirit with, honestly, better features. One project that has a lot of promise is CatHack.

So long, and thanks for all the fish!

Name and Background

NEMO started a personal project to help me learn more about ESP32 development with the Arduino IDE. I decided to replicate a few common, trending pranks that were getting a lot of attention in the tech community, as a challenge to myself, and to also better understand these attacks.
NEMO is named after the small, clever and stubborn fish in Finding Nemo. This project stands in contrast to another high-tech gadget that's associated with certain sea-dwelling creatures. I did want to prove that there are a lot of things you can do with a small development kit and some curiosity. I have no delusions of superseding the capabilities of any similar device with this project. It's just for fun, and my own education.

M5-Nemo on M5StickC family and M5Cardputer

My Changelog

My ToDo list

Features

User Interface

There are three main controls:

NEMO Portal

In NEMO Portal mode, NEMO activates an open WiFi Hotspot named "Nemo Free WiFi" (configurable in portal.h) with DNS, DHCP and Web servers activated.

Install from M5Burner

This is the absolute easiest way to get NEMO

Install .bin files manually with esptool.py

Building from Source

If you want to customize NEMO or contribute to the project, you should be familiar with building NEMO from source.

Building from Source (with Arduino CLI)


# Install m5stack boards
arduino-cli core install m5stack:esp32  --additional-urls https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json --log-level warn --verbose

# Install required library
arduino-cli lib install M5Cardputer --log-level warn --verbose
arduino-cli lib install IRRemoteESP8266 --log-level warn --verbose

# Compile sketch
arduino-cli compile --fqbn m5stack:esp32:m5stack_cardputer -e --build-property build.partitions=huge_app --build-property upload.maximum_size=3145728 ./m5stick-nemo.ino

esptool.py --chip esp32s3 merge_bin --output final.bin 0x0000 m5stick-nemo.ino.bootloader.bin 0x8000 m5stick-nemo.ino.partitions.bin 0x10000 m5stick-nemo.ino.bin

esptool.exe write_flash -z 0 final.bin

Building from Source (Docker)

# This will build an image will all required libraries based on the configured platform, and it will compile, output and merge binaries
# By default this will compile for the M5Cardputer in en-us locale, ./config/.env.M5Cardputer
./scripts/docker-build.sh 

# If you want to select a different build config you can pass it as a parameter. See ./configs/ for various configurations
./scripts/docker-build.sh ./config/.env.M5Cardputer

# Binary files will be output to ./build
ls ./build

# This will flash the build output from the build step, it reuses the container image from the previous step.
# By default this will compile for the M5Cardputer in en-us locale, ./config/.env.M5Cardputer
./scripts/flash.sh --device=/dev/ttyusb0 

# If you passed a different build config make sure to pass it along to the flash script
./scipts/flash.sh --device=/dev/ttyusb0 --build-config=./config/.env.M5Cardputer

Troubleshooting

Reporting Bugs

Please report bugs via GitHub Issues. These are easier to track than comments on social media posts, M5Burner entries, etc. If something isn't working, please include:

Contributing

Contributions are welcome.

Things I'd like help on:

Things I probably won't merge in: