Hello everyone. I've been successfully using the Arduino node until now. I have a query regarding its compatibility.
Does the Arduino node only work with the StandardFirmata/StandardFirmataPlus sketches loaded onto the Arduino board, or does it work with the other Firmata sketches (AnalogFirmata) as well?
yes is only supports the standard firmata. Most often people find it almost as easy to write their own application specific Arduino code and then send direct via generic serial or ethernet, etc.
Is serial communication as effective as Firmata in terms of speed of sending data?
Firmata is limited to ca. 56000 bit/sec. And it has lot's of overhead, because it's using a MIDI standard to communicate.
Serial speed can be set as you wish.
You can start with "standard" 115000 baud,
or higher = 1Mbit
or even reduce it for long distance cable (30-1200m) to 9600 baud.
What many people forget to set:
parity &
flow control
Personally I like "xOn/xOff" flow control + "Even" parity bit set, because it worked best in "electrical noisy" environment (pizza kitchens) while I was using Serial-POS-printers 10-20 years ago.
I also recommend (and really, I'm shocked, why nobody does) to start the communication with a specific identification string. Like a "board name" or "serial-number".
Why?
Because whenever you plug your Arduino into a different USB > it will change the path to that device.
So if you are using other things too, or more of the same board, they can accidentally mixed up!
If this is only a "hobby project", than it does not matter. But in real life scenarios:
Imagine you are trying to switch a light bulb at Pin7 >>
but an other board is responding and may cause and accident. (Like cutting off a head of a baby under a roller shutter or exploding the heating system...)
A good way to avoid that is to access it via /dev/serial/by-id. If you run ls /dev/serial/by-id
you should be able to see the device. For example a usb serial device might appear as:
ls /dev/serial/by-id
usb-1a86_USB2.0-Ser_-if00-port0
Then in the serial node you can use /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0
Usually that is a unique name that does not change if the device is unplugged and plugged back in again, wheres in that situation it might well move from /dev/ttyUSB0 to /dev/ttyUSB1
Any system that, if it goes wrong, can cause injury or significant damage must have multiple independent safety controls, so that no one fault can cause the problem. In fact in the case of serious injury then probably there should be more than two independent systems. In the case of the boiler exploding then there should be (and certainly will be in any correctly installed system) safety valves that open in the case of overpressure. Mine has at least three such safety valves I think.
Another example with less serious consequences is my home heating control system. I have left in all the standard systems (room stats and so on) and added mine in such a way that that any fault in my part of the system should do no worse than leave the heating off, or fall back to using the room stats, which are set a little higher than the normal room temperature that my system controls.