Robot Butterfly invites you to experience nature's elegance alongside it, while interacting with the surrounding wilderness! Available now as a kit to build yourself.
For more information, check out: robotzwrrl.xyz/robot-butterfly. As well, see the instructions to build your own!
Robot Butterfly's design files are released as open source hardware, provided under these unique terms: If you replicate it, please take a photo of it in nature and email it to me with the city and its nickname!
A 3D printable bugfix is available! The three pieces to print are:
The servo horn piece has been updated to work with the new horns that have an indent, rather than being flat in the previous version. The horn is placed on the side that has the arrow indicator. The fasteners go through holes #1 and #4. See photo below for reference.
The spacer back piece has been updated to have clearance for the chamfer around the switch housing on the enclosure. This provides a cleaner fit and smoother lid installation process.
The Butterfly Chonky board connects with Keystone and Boostlet!. Those two boards are also open source, and can be found in these repositories:
There are a few LEDs that are visible through the windows on the back of the enclosure.
On Chonky, there are two yellow 5 mm LEDs. On the left hand side, is D2. In the firmware, D2 is LED_COMMS_PIN (pin 5). On the right hand side, this is D1. In the firmware, D1 is LED_HEARTBEAT_PIN (pin 13).
LEDs from Keystone are also visible through the LED ports on the back side of the enclosure. As well, sometimes their brightness reflects in Chonky’s 5 mm LEDs. On the left hand side is power. The power LED is on all the time. On the right hand side are TX and RX. The TX and RX LEDs are activated whenever there is data on the serial port. This can be useful for a visual check, but it also just looks techno cool.
In the inaugural version, all the LEDs are yellow, which can sometimes make it tricky to visually differentiate between Chonky and Keystone's LEDs. This will be changed in a future production revision :)
| Piece | Layer height | Supports | Infill | Shells | Notes |
|---|---|---|---|---|---|
| enclosure_v1.0.stl | 0.25 mm DRAFT | Everwhere, Organic | 15% | 2 | - |
| neopixel_bracket_v1.0.stl | 0.25 mm DRAFT | Everwhere, Organic | 15% | 3 | Prints standing up |
| battery_bracket_v1.0.stl | 0.25 mm DRAFT | Supports to build platform | 15% | 2 | Hiya!' faces up, Top fill pattern: Octogram Spiral |
| lid_v1.1.stl | 0.25 mm DRAFT | None | 15% | 3 | Chamfer side down |
| servo_bracket_v1.0.stl | 0.25 mm DRAFT | None | 15% | 2 | Prints face down |
| servo_horn_indent_L_v1.0.stl | 0.20 mm QUALITY | None | 20% | 4 | - |
| servo_horn_indent_R_v1.0.stl | 0.20 mm QUALITY | None | 20% | 4 | - |
| cover_v1.0.stl | 0.25 mm DRAFT | None | 15% | 2 | Cool!' faces up |
| spacer_back_v1.1.stl | 0.25 mm DRAFT | None | 15% | 2 | Chamfer side down |
| spacer_front_v1.0.stl | 0.25 mm DRAFT | None | 15% | 2 | Chamfer side down |
| wing_L_v1.0.stl | 0.25 mm DRAFT | None | 15% | 3 | Top & bottom fill pattern: Archimedian Chords. Print 1st layer at a very slow speed. |
| wing_R_v1.0.stl | 0.25 mm DRAFT | None | 15% | 3 | Top & bottom fill pattern: Archimedian Chords. Print 1st layer at a very slow speed. |
Firmware is in active development
Download the Robot Butterfly library and install it into your Arduino library folder (for example: ~/Documents/Arduino/libraries).
In the Arduino IDE boards manager (Tools > Board > Board Manager), search for esp32. Under esp32 by Espressif Systems, choose 2.0.4, and install it.
In the Arduino IDE library manager (Tools > Manage Libraries), please install the following libraries with the designated versions:
- Streaming - v5.0.0
- movingAvg - v2.3.2
- MPU6050 - v1.4.3
- Adafruit Neopixel - v.1.12.4
- ESP32Servo - v3.0.6
- ServoEasing - v3.4.0
- DHT - v1.4.6
- Adafruit Unified Sensor - v1.1.15
- HC-SR04 - v1.1.3
Here's how to upload code to Robot Butterfly!
Please see steps above to ensure all dependencies are installed properly
-
Tools > Board > esp32 > Set board to ESP32 Dev Module
-
Tools > Set upload speed to 115200 baud (at the bottom of the menu)
-
Tools > Set CPU speed to 80 MHz (first setting after a divider in the menu)
-
Tools > Manage Libraries There are library dependencies that will need to be downloaded, see list above
-
Open a Robot Butterfly example sketch
-
Plug in Robot Butterfly
-
Tools > Port > Select the port
-
Upload
-
Congrats! You have uploaded code to Robot Butterfly!
For developers - here's how to make your own animation (servo and neopixel):
- Add identifier to enum servoAnimName
SERVO_ANIM_SOARING
- Add the run function prototype
void runServoAnim_soaring(struct ServoAnimation *animation);
- Write the run function
void runServoAnim_soaring(struct ServoAnimation *a) { ... }
- Write the init function
void initServoAnim_soaring(struct ServoAnimation *a) { ... }
- Add the case to setServoAnim
case SERVO_ANIM_SOARING: initServoAnim_soaring(a); break;
- Call the animation to run it!
setServoAnim(&servo_animation_alert, SERVO_ANIM_SOARING, SERVO_ANIM_ALERT); startServoAnim(&servo_animation_alert);
Please see this page for debugging FAQ.
Robot Butterfly (C) Copyright Erin RobotZwrrl, Robot Missions Inc.
05-30-24 v1.0
RobotZwrrl.xyz/robot-butterfly
This hardware is released under:
CERN Open Hardware License Version 2.0 - Permissive (CERN-OHL-P)
The software is released under:
The MIT License
https://opensource.org/license/mit
The documentation is released under:
CC-BY-SA-4.0
https://creativecommons.org/licenses/by-sa/4.0/
Disclaimer: Distributed as is. No warranty is given. Not responsible or liable for any damage or harm that result from this product.




