1- Managing the send / recieve modes by soft will most likely result in failure for the communication
[Ref.Link to be inserted here]
I am trying to hook up a Tristar TS-MPPT-60 to a Raspberry Pi using an RS-485 chip connected to the Raspberry Pi UART, and eventually add my Arduinos to the network.
I have some MAX485 chips and a SparkFun RS-485 BOB to do my tests.
2- To let the Raspberry Pi control the RTS / CTS you need access to pins 30 and 31
Here is what I got hooked up, but not tested yet:
Original image: http://www.homegenie.it/forum/index.php?topic=208.0
3- To use the UART you need to have it released by the Raspberry Pi internal use (undesired traffic):
The MakeFile is broken. Do not forget to fix this code for the gpio_setfunc function to compile:
In the Makefile change the line:
cp $(BINARIES) $(SCRIPTS) $(BINDIR)
cp $(BINARIES) $(BINDIR)
To make this restart safe, we put the command into
# Enable CTS + RTS on P5 header for onboard serial
/usr/local/bin/gpio_setfunc 31 ALT3
/usr/local/bin/gpio_setfunc 30 ALT3
3-Here is a sample of code that should allow to communicate with slaves.
pymodbus rtu RS-485 communication
Pay attention to the corrections below, the code block in the previous link.
temps = client.read_input_registers(30001, 4, unit=0x0a) # Address, count, slave address
coil = client.read_coils(10001, 8, unit=0x0a) # Address, count, slave address
In the sample code, replace the undesired USB port with the TTL one:
All of this is untested, but that is a resume of all my findings up to now.
Now my latest issue is that the slave has a big 12 V mark on the Modbus port. Will my Raspberry Pi get fried? I'll keep you posted.
As Chris pointed out in the comments below, that amateur setup is untested and might fry your pi.
You've got MAX485 connected to 5V and its D/R/DE/RE pins connected to Pi's GPIO >directly. This isn't safe as GPIO pins are designed to operate at 3.3V whereas >the R pin will send 5V signals (not sure if the other pins ever send 5V signals >from MAX485). This mistake seems so common and yet I haven't read someone >saying they actually burnt their pi doing that, so maybe it's usually fine, but >technically you should use a 5V to 3.3V level converter. Or replace MAX485 with >MAX3485 and power via 3.3Vcc pin.