diff --git a/README.md b/README.md index b7f3bc8..d0d6f2f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # M5Stick-NEMO M5 Stick C firmware for high-tech pranks -## Name -NEMO is named after the small, clever and headstrong fish in Finding Nemo. This project stands in contrast to other gadgets that have become associated with certain sea-dwelling creatures. +## 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. ## Features * [TV B-Gone](http://www.righto.com/2010/11/improved-arduino-tv-b-gone.html) port (thanks to MrArm's [HAKRWATCH](https://github.com/MrARM/hakrwatch)) to shut off many infrared-controlled TVs, projectors and other devices @@ -12,6 +13,32 @@ NEMO is named after the small, clever and headstrong fish in Finding Nemo. This * EEPROM-backed Settings for rotation, brightness and, automatic dimming * Battery level and credits in settings menu +## Install from M5Burner +This is the absolute easiest way to get NEMO +* [M5Stick C Plus Quick Start](https://docs.m5stack.com/en/quick_start/m5stickc_plus/uiflow) has links to the M5Burner app for Linux, MacOS and Windows. This is the official tool to install UIFlow and other official firmware. I provide up-to-date binaries for NEMO there. +* Launch M5Burner +* Select "StickC" from the menu on the left +* Use the search at the top of the app to look for "NEMO For M5Stick C Plus" +* Click Download +* Click Burn + +## Install .bin files manually with esptool.py +* Install ESP-IDF tools per the [Espressif Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/) +* Open the esp-idf CMD tool (on Windows) - on Mac or Linux, esp-idf.py and esptool.py should be in the system path. +* esptool.py --port COMPORT -b 115200 write_flash -z 0x0 M5Nemo-VERSION.bin + * port may be a COM port e.g. COM4, COM11 on Windows. On Mac and Linux it will usually be in /dev such as /dev/ttyUSB0, /dev/ttyACM0 or /dev/cu.usbserial-3 + * M5Nemo-VERSION.bin should be a version you downloaded from a GitHub Release -- preferably the latest available. + ## Building from Source -* I have compiled successfully using Arduino IDE on Linux and Windows -* If app size is too large, you must switch partition schemes. Tools -> Partition Scheme -> No OTA (Large APP) +If you want to customize NEMO or contribute to the project, you should be familiar with building NEMO from source. +* Install Arduino IDE. I've used Arduino 1.8 on Linux and Windows, and Arduino 2.2 on Windows successfully. +* Install the M5Stack boards for Arduino IDE: In File -> Preferences, paste this URL into the "Boards Manager URLs" text box. Use commas between URLs if there are already URLs present. https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json +* If M5Stack -> M5Stick-C-Plus doesn't show up under Tools -> Boards, then use Tools -> Boards -> Boards Manager and search for M5Stack. This will install support for most of the M5Stack boards including the Stick C Plus. +* Ensure the M5Stick-C-Plus is selected in the boards menu. +* Install necessary libraries. In Sketch -> Include Library -> Library Manager, search for and install the following libraries and any dependencies they require: + * M5StickCPlus + * IRRemoteESP8266 +* Switch partition schemes. Tools -> Partition Scheme -> No OTA (Large APP) +* Compile and upload the project + + diff --git a/m5stick-nemo.ino b/m5stick-nemo.ino index 8531c39..071b613 100644 --- a/m5stick-nemo.ino +++ b/m5stick-nemo.ino @@ -9,6 +9,13 @@ #include "wifispam.h" #include #include +bool pct_brightness = true; /* set to false if the screen goes + to full brightness over level 2. + Useful range is about 7-15. + Set to true if the screen is too + dim no matter what level is set. + Some versions of the M5Stack lib + have a percentage range 0-100. */ int advtime = 0; String formattedDate; @@ -211,19 +218,31 @@ void dmenu_loop() { M5.Lcd.setCursor(0, 5, 1); M5.Lcd.println("SET BRIGHTNESS"); delay(1000); - cursor = brightness / 10; + if(pct_brightness){ + cursor = brightness / 10; + } else { + cursor = brightness + 5; + } timeset_drawmenu(11); while(digitalRead(M5_BUTTON_HOME) == HIGH) { if (digitalRead(M5_BUTTON_RST) == LOW) { cursor++; cursor = cursor % 11 ; timeset_drawmenu(11); - M5.Axp.ScreenBreath(10 * cursor); + if(pct_brightness){ + M5.Axp.ScreenBreath(10 * cursor); + } else { + M5.Axp.ScreenBreath(5 + cursor); + } delay(250); } } - brightness = 10 * cursor; - M5.Axp.ScreenBreath(brightness); + if(pct_brightness){ + brightness = cursor * 10; + } else { + brightness = cursor + 5; + } + M5.Axp.ScreenBreath(brightness); EEPROM.write(2, brightness); EEPROM.commit(); rstOverride = false;