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: 608
Latest Activity: Sep 19

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

How to Sync with ABB robot controller? 2 Replies

Hey There. A quick question: is there any way to synch Arduino/Firefly with HAL?I have a tool attached to my robot arm and I kinda manually control it through Arduino. I need to use Firefly to parametrically and maybe in almost real time (if…Continue

Tags: IRC5, Arduino, ABB, Firefly, Robot

Started by Mehdi FarahBakhsh. Last reply by Mehdi FarahBakhsh Jun 17.

can you help me understand firefly / firmata? 2 Replies

hi all,several of us (arch. grad students and our professor at portland state univ) are trying to get our ultrasonic range sensors working on our arduino unos in grasshopper. we have dl'ed firefly and run the main firmata. at that point everything…Continue

Started by mart schaefer. Last reply by Troy Baverstock Apr 18.

Arduino Write Error

Hello I installed Firefly 64bit and Arduino 1.6.5 (someone says that Firefly doesn't work with newer versions). When I upload Firmata to my Arduino UNO, "UNO Read" works, but when I try "UNO Write", it works for maybe half a second and…Continue

Started by Petr Vacek Mar 16.

Slow stepper motor 1 Reply

Hello,, I am trying to send data directly from firefly mega write to a stepper motor with the firefly firmata.. I got the sequence of pulses that need to be sent.. problem is that it is not being sent fast enough.. I have a 1 ms timer rotating…Continue

Started by Zayed. Last reply by Zayed Oct 19, 2018.


Loading… Loading feed

Comment Wall


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

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 Amaraa 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 Amaraa 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!

Comment by Andy Payne on November 11, 2014 at 9:43am

Hi Amartuvshin.  Thanks for posting the images... they're really helpful.  I think what's going on is a hardware issue.  Looking at your circuit, I think you have the 5V and GND lines coming from your servo connected to the wrong wires.  If you look at the servo and the three wires coming from it, you'll notice a brown, red, and yellow.  The brown wire needs to be connected to GND, but it looks like you've connected it to the 5V line.  The red wire on the servo need to be conencted to the 5V line, but it's connected to GND.  I think because these are reversed, it's causing the connection to your serial port to drop which is why you aren't seeing it show up under the Serial Ports in the IDE.  

My suggestion would be to first close Grasshopper/Rhino.  You don't necessarily need to do this, but it will ensure that you don't have the COM port open.  Then, switch the hardware wires and see if the COM port shows back up in the IDE.  If it does, then try to re-upload the Firefly Firmata to make sure it's properly loaded.  If it gets uploaded properly, then go ahead and re-open Grasshopper/Rhino and see if the example file works properly.

Comment by Amaraa on November 11, 2014 at 9:34am

Hello?  I am trying rotating objects using firefly. The thing is It's my first time using arduino and firefly plugin.
I am starting with the sample files that come with the firefly installation. which is Firefly_01_Actuation.
But I am facing problem relating to the serial port. 
It works fine connected and suddenly after uploading the Firmata to the board, shows error on the grasshopper. 
The Uno Write says no connection to the device. And i checked the Arduino program, surprisingly Serial port is not active. 
More interestingly Arduino Uno shows the Uno is on COM10 port. 
I installed WinAVR and followed all the instruction from Firefly-Primer_1006. 
Please help me. 
Thank you

Comment by Emanuele Calabrò on September 26, 2014 at 12:53pm

it's an old screenshot, sorry

Comment by Andy Payne on September 26, 2014 at 12:53pm

Lastly, could you start a discussion topic about this issue instead of just posting to the wall.  That will help us track any issues and keep the comment wall more clean.  Thanks.

Comment by Andy Payne on September 26, 2014 at 12:52pm

PS, the 1023 value you're getting is not actually correct.  Either you have a hardware circuit error, which is causing your voltage to saturate around 5V (and thus the pin is returning it's maximum value of 1023) or you never actually got the firmata installed and it's returning some other number.


Members (608)






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2019   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service