Firefly offers a set of software tools dedicated to bridging the gap between Grasshopper (a free plug-in for Rhino) and micro-controllers like the Arduino. It allows near real-time data flow between the digital and physical worlds – enabling the possibility to explore virtual and physical prototypes with unprecedented fluidity.
Firefly Website: http://fireflyexperiments.com
Andy Payne [LIFT architects | Harvard GSD - Cambridge, MA]
Jason Kelly Johnson [Future Cities Lab | CCA San Francisco, CA]
As a generative modeling tool, Grasshopper offers a fluid visual interface for creating sophisticated parametric models, but by default, it lacks the ability to communicate with hardware devices such as programmable microcontrollers or haptic interfaces. Firefly fills this void. It is an extension to the Grasshopper’s parametric interface; combining a specialized set of components with a novel communication protocol (called the Firefly Firmata or Firmware) which together enable real-time communication between hardware devices and the parametric plug-in for Rhino.
- Read / Write to Arduino microcontrollers and other devices
- Visualize Sensor Data within Firefly / Grasshopper
- Control LEDS, Lights, Motors, Valves and more
- Control Stepper Motors (for 3d Printers and end effectors)
- Stream Web Cams and connect with Mobile Devices (iOS + Android) using OSC and UDP
- Connect to Internet Feeds and search XML Feeds
- Generate code to upload to an Arduino Board
- Basic sound input and processing tools
- Datalogging, counting and playback
- Machine Vision toolkit including edge detection, color filtering, convolution filtering and much more
- Kinect toolkit including skeleton tracking
A notable distinction for Firefly is that it is the first visual microcontroller programming environment designed specifically for a 3-D parametric CAD package (such as Rhino). This feature means that real-world data, acquired from various types of sensors or other input devices (video cameras, internet feeds, or mobile phone devices, etc.) can be used to explicitly define parametric relationships within a Grasshopper model. Firefly completes the communication feedback loop by allowing users the ability to send information from Grasshopper back to the microcontroller in order to incite specific actuations (ie. lights, motors, valves, etc). Ultimately, this workflow creates a new way to create interactive prototypes.