algorithmic modeling for Rhino



Firefly offers a set of comprehensive software tools dedicated to bridging the gap between Grasshopper, (a free plug-in for Rhino) the Arduino microcontroller and other input/output devices. 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.

Location: Cambridge, MA
Members: 448
Latest Activity: on Friday

Firefly Experiments

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.

Key Features

  • 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.

Discussion Forum


Hey guys!I'm trying to stop the kinect through a script but it's not very fast. Indeed, I need to stop the kinect because my script is very heavy and I need to refresh when I finish some task. The best way will be to get an access to the play…Continue

Started by Ludwigh. Last reply by Andy Payne on Friday.

Kinect Status: Undefined 8 Replies

Hi all, i am trying to run the skeleton component for kinekt, but I am getting the following warning: Kinect Status: Undefined, hence I am not able to make the component work.... any ideas?Kinect is connected when I check the kineck console..Running…Continue

Started by Ed Tibuzzi. Last reply by gözdenur demir May 15.

Problems to see data from Arduino MEGA 2560 2 Replies

Hi. I am new with Grasshopper and firefly and my problem is with an Arduino MEGA 2560 with four sensors RHT03 (humidity and temp sensors). I can see the data from the serial monitor of Arduino (eight columns of numbers with humidity and temperature…Continue

Tags: mega2560, arduino, firefly

Started by Rafael. Last reply by Rafael Apr 16.

Firefly and arduino sketch 2 Replies

Andy,I was wondering if it is possible to use the firefly as well as a sketch defined within arduino to run at the same time.Basically, I am looking to run a simple arduino sketch as a serial write i believe to an Arduino Uno while using other…Continue

Started by Chris Kelusak. Last reply by Chris Kelusak Apr 14.


Comment Wall


You need to be a member of Firefly to add comments!

Comment by xiao-g on April 18, 2015 at 12:50am

Hello All,

I just installed Firefly 64bit for Rhino5. But when I have trouble to launch grasshopper when it loads Firefly.X. It pops a warning as the image attached. 

Could anyone kindly suggest how to solve it? Many many thanks!

Comment by Juan Sepulveda on March 1, 2015 at 8:17am

Hello everybody,

I share the video from the Adaptive Facade Workshop that European Facade Network organized in Lucerne in November 2014, all the students used Firefly for the mock-ups...

Comment by Andy Payne on February 25, 2015 at 4:55pm

Hi Kwanphil.  Unfortunately, at this moment it is not possible to load in an mp3 file directly.  You could play it over the speakers and use the other audio components to read in the microphone data... but reading in an mp3 file isn't currently supported.

Comment by kwanphil cho on February 25, 2015 at 12:58pm

Hi. thank you for letting me in the group. Just quick question. is there any way to bring mp3 file and play in firefly? I would like to extract data from specific mp3 file if it is possible. Any advice will be greatly appreciated. Thank in advance.

Comment by Justin Hare on January 14, 2015 at 7:41am

Andy, I was previously running Windows via Bootcamp and it worked fine. I had an issue after updating to Yosemite that lost the partition so I reinstalled everything and decided to go the Parallels route. Might not have been the best idea. 

Comment by Andy Payne on January 14, 2015 at 7:38am

Justin, was this working before on a different system configuration?

Comment by Justin Hare on January 14, 2015 at 7:26am

Help! Switched to using Parallels and now Kinect doesn't work. I know there is an issue with Kinect not properly connecting in other programs. I haven't had any luck finding a solution. Any suggestions?

Comment by awkweird on December 2, 2014 at 11:32pm

Thank you for advice Mr.Andy. I am almost finished my project, however I have another question that is eliminating my pc from the entire work. Which means uploading these grasshopper codes to Arduino. I have seen the CodeGene component but quite not sure whether Ardiuno itself could handle the computing process of Leap motion data. Should i use arduino with usb connection? or other device that would be connection between leapmotion and Arduino board?
Here is my multiple Servo motor connection video.

Comment by Andy Payne on November 12, 2014 at 5:56pm

Amartuvshin, please see this thread about controlling multiple servos

Comment by awkweird on November 12, 2014 at 9:16am

Thank you Mr.Andy. It really helps a lot!
I switched the cables, and now servo works fine. However still some problem with the LEDs. The reason is my resisters are not 220 in my opinion. I've checked resister calulator and i installed on my bread. 
I have one more question. what if i want to control more servo motors individually. Do i need more arduinos or some other device to connect with my arduino uno?
This picture is showing what I am testing right now.Thank you. Have a great day!


Members (448)



Search Grasshopper


  • Add Photos
  • View All

© 2015   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service