I am doing a project where I need to send data from my PC to multiple Sparkfun Thing Devs based on conditions. The data is in the same format every time and for every board and consists of a couple of numbers. The thing is I need to send such type of data a couple times a second because I need to have real-time response in the boards(in the range of milliseconds). Basically, the project is music related and I am analyzing sound on my PC and I need to sent the data to the boards and react at realtime. I need the communication to be wireless and I need to be able to address the different boards separately.
Can you guide me with some possible(and fast) solutions about the topic. I act to the data I receive a couple times a second, thus the realtime aspect. I thought of using messaging queues, but I didn’t find a viable solution. The server solution seems slow for the purpose. Also, I would like to be able to program the Thing Devs wirelessly, but I suppose this is more of an ESP topic. Thank you!
There is a multicast IP protocol to send data from one to many. But I don’t know how this works with ESP8266 and Sparkfun Things. You might want to research that and look for others that have done projects based on this:
I actually need the simplest possible solution, just need the data to be received in a margin of milliseconds after the send. Considering it is 5-6 integers(even shorts as the maximal value is 4095) the payload will be around 20-24 bytes per packet. Like I said, I need this to happen a couple times a second though.
Have you tried the unicast approach? Sending each Thing a packet in turn and change IP addressing to the next one. What was the rate achieved?
Bandwidth-wise that should not be a problem for multicast. As long as the wifi network isn’t congested. Finding the right library or code that does multicast-networking together with the AT-commandset in the Things might not be so simple. Again, haven’t done any of this with ESP8266s, in arduino-mode or AT-mode. Can’t help with the details.
Thank you for the input. I haven’t tried multicasting because it seems to me as a bit overkill, especially, like you said, in finding the proper library to do so. I investigated a bit more and I will try doing it with messaging and MQTT. I’ll host a broker on my PC and I did find an easy to use library for ESP/Arduino which will act as the subscribers.
So, this might be for another thread but I might as well ask here because it is connected. I’m planing to connect the Thing Dev to a PCA9685(https://learn.adafruit.com/16-channel-pwm-servo-driver/). I’ve used it with arduino already, but I’m not sure how exactly to connect it to the Thing. Considering these:
Based on the third link the servo driver would function. But the output level of the PWM pins for the servo’s is equal to Vcc. So 3.3 volt in this case. It would depend on the servo’s if that is a sufficient high to drive them. I don’t know what their minimal input high voltage level is.
I am not driving servo motors. I am actually driving 12V LED strips through IRLB8721 MOSFETs(https://www.adafruit.com/product/355) using the PWM pins of the servo driver. Considering this:
“The threshhold voltage is also very low, less than 2.5V so you can control it directly from a microcontroller running on 2.8V, 3.3V or 5V logic.” stated in the link above, I should be okay, right?
The minmum threshold voltage increases with the amount of current that must flow through the mosfet. Below 4 amp per mosfet it’s probably ok. Look at figure 1 and 2 of the mosfet datasheet.
The LED strips are 5 meters long at most. They draw about 1.2A per meter at full brightness(for the 3 channels). So, considering the worst possible case, we have 5 * 1.2A = 6A total for the whole strip. We have a MOSFET for each channel so we come up with 2A per MOSFET, so I suppose I’ll be safe. Thank you so much for the input.