In remote automation setups it can be very inconvenient to use a Raspberry Pi because of the need for a USB power supply. In a current setup of mine I have a bunch of CAN4VSCP boards and want to link them from a remote location to my central system. The Raspberry Pi Zero (W) is low cost, easy to work with and could serve as a good way to accomplish this.
In the official docs the recommendation for powering a Raspberry Pi Zero is 5V at 1.2 A power adapter. This is at first very disappointing for my project as a CAN4VSCP board only can deliver a maximum of one amp from +5V and the board itself takes about 100 mA of this.
But looking further reveals that the needed power is much less that the official requirements if just using WiFi and BT. 120mA is mentioned. Testing this I can verify this value but with some peaks up to 300 mA. Powering a Raspberry Pi Zero W from a CAN4VSCP board would therefore be possible.
I test this with a Vilnius A/D module that is feed with 24V from the CAN4VSCP bus and I experience no problems. The Vilnius A/D module have GND on pin 1 and +5V on pin 12 of the termination block and this can be a good place to get the power for the Raspberry Pi Zero. All 5V CAN4VSCP modules have +5V and GND somewhere on the termination block. Another possible location to get the power from is using the programming header, which also is available on all CAN4VSCP modules. This connector have +5V on pin 2 and GND on pin 3.
To reduce the power need I turn of HDMI on the board as discussed here and here. One can also turn of the LED’s to reduce power consumption even more. There is actually no need for this in my case.
To turnoff HDMI on startup add
@reboot /usr/bin/tvservice -o
to the root crontab job using
sudo crontab -e
This will turn of HDMI on startup. To put the same in /etc/rc.local is another option.
I will use a 3.3V TTL Frankfurt RS-232 module to connect to the CAN bus directly from the Raspberry Pi. Allowing a connection directly from the RX/TX GPIO pins. But more on this later in a separate howto.
I will try to use node-red together with the node-red-contrib-socketcan to connect this module with the main system. I can then choose to connect over MQTT or VSCP tcp/ip, websocket or whatever. It is mostly plug and play to set this up. I will do a separate howto about it to later. My concerns is that there may be a risk that this will be to slow for my needs and in that case I will do a separated link between socketcan and MQTT coded in C. But I will use node-red anyhow so it is still needed.
Installing node-red on a Raspberry Pi system (any Debian derived system) is very easy. Use the script at https://nodered.org/docs/getting-started/raspberrypi which looks like this
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
and after that everything is installed issue
sudo systemctl enable nodered
and
suso systemctl start nodered
to install node-red as an auto staring service.
Thats it.