Attempting to get SF Weathershield communicating with Ableton Live via "connection kit"

Hey there,

I’ve scoured this and other forums trying to find the answer to these questions, and although I’ve found partial answers, many of them are multiple years old and never quite answer the questions I have in a succinct manner.

My goal is to use the Sparkfun Weathershield (DEV-13956 ROHS) (https://www.sparkfun.com/products/13956), to send pin data to Ableton Live via the connection kit, and use those pins’ incoming data to adjust parameters in the DAW.

I admit I am new to this, but have been diligently researching, self educating, and working with a friend who’s pretty experienced in a lot of this stuff. However, this is where he and I are both getting stuck:

The weather board uses the I2C protocol and these two libraries ( Si7021 and MPL3115A2) to send data to the computer.

Unfortunately, the Ableton connection kit only can communicate with Arduino via Standard Firmata… Is there a way to use code from the Si7021 and MPL3115A2 libraries to read the pins, and still send the pin data out via the Standard Firmata protocol? Is it possible to just read the pins without using the Si7021 and MPL3115A2 libraries and then just run standard Firmata on the Uno? Is a library required to receive the actual pin voltage/data? Or are the Si7021 and MPL3115A2 libraries just used to convert that voltage/data into named readouts that are associated and named to the things they are measuring? Hopefully that makes sense…

Overall, I’d love to just see the sensor voltage/data on the pins and then use Standard Firmata to send that along to the comp. Perhaps someone has modded the code to be able to achieve this? I was reading about using Maxuino + MIDI conversion and sending the midi internally to the DAW with an internal MIDI bus, but all the threads and topics I found about this were YEARS old and I am hoping there have been developments since then that may make this easier.

Hopefully I understand and I am explaining this well enough… Perhaps this is all just over my head… Please ask me any questions that I can answer to help clarify exactly what I am trying tot accomplish here.

Thank you!

Hello electronicanonymous and thanks for posting.

I don’t know enough about Ableton live to help much but if it can accept serial input, that might be a better way to connect rather than I2C.

What I’d recommend is considering having the Weather Shield on it’s own Arduino and using that Arduino to read from the shield. Then, pass the data from the Weather shield / Arduino onto a second Arduino running firmata.

That way you don’t need to worry about merging all the functions needed to operate the shield with the firmata firmware.

Thank you for your response Chris! That’s a great call and luckily I have two Arduinos already, so this is doable with my current gear.

My buddy (who knows more about this than I do) came to my studio today and we started to get this setup, we got the libraries installed to the weatherboard Arduino (and we’re seeing the incoming weather data flowing correctly), and got Standard Firmata installed on the second one, but we have a few other questions regarding your answer:

•How do you recommend we attach the Weather board Arduino (I’ll call it WB) to the Firmata Arduino? -(I’ll call it FB). Do we wire out of the TX port on the WB into the RX port on the FB? Is there a different set of ports to use from one to the other?

•Is there any code manipulation/modification we need to do on the WB to tell it to print the incoming values back out thru specific ports? Or do the WB libraries ( Si7021 and MPL3115A2) already send that data back out from pre-defined ports without changing the code? if so, which ports are they?

•When looking at the breakout Weatherboard schematic (https://cdn.sparkfun.com/assets/1/1/4/ … _V12.pdf) . it appears that Digital pins 9,10,11 are unused. If we do have to add something to the code to send that data back out, would we direct it to come back out of those pins (1 pin per sensor/data stream ie: Wind speed on pin D9, humidity on pin D10, and temp on D11? ).

Please let me know how you intended the communication of the WB data to get to the FB (physical connection-wise, and data stream wise) and It should be the missing piece we need to get this working.

Thank you so much for your time and expertise.

•How do you recommend we attach the Weather board Arduino (I’ll call it WB) to the Firmata Arduino? -(I’ll call it FB). Do we wire out of the TX port on the WB into the RX port on the FB? Is there a different set of ports to use from one to the other?

I’d use the TX pin on the weather shield Arduino and connect that to the RX pin on the second Arduino. I’ve not yet used Firmata so I’m not sure how it handles serial communication. If it’s possible to use software serial in Firmata, that might be a better option.

•Is there any code manipulation/modification we need to do on the WB to tell it to print the incoming values back out thru specific ports? Or do the WB libraries ( Si7021 and MPL3115A2) already send that data back out from pre-defined ports without changing the code? if so, which ports are they?

The libraries don’t specify where the output should go, that’s done in your code. Your code needs to either print out to Serial on pin D1 or software serial on a free I/O pin.

•When looking at the breakout Weatherboard schematic (https://cdn.sparkfun.com/assets/1/1/4/ … _V12.pdf) . it appears that Digital pins 9,10,11 are unused. If we do have to add something to the code to send that data back out, would we direct it to come back out of those pins (1 pin per sensor/data stream ie: Wind speed on pin D9, humidity on pin D10, and temp on D11? ).

Pins 9,10,11 and 13 are all free. Pin 12 is free as well unless you’ve closed the PRES-INT jumper on the shield. From your descriptions, it doesn’t sound like you have though. You would need to modify your code to send data out those pins. Unfortunately we can’t assist you with modifying your code.

Thank you so much Chris! I’ll look into all of this and follow up here if anything else needs clarification.