Connect two raspberry Pis using USB cable or USB-serial - raspberry-pi

I'm working on a project where I need two raspberry pis to communicate and the ethernet port is not free, I'm not allowed to make any changes to the GPIO pins, and I'm forced to use the USB port due to hardware considerations. Is it possible for them to communicate using a direct USB cable, or perhaps using two USB-RS232 cables?
Thanks!
Siddharth

I would use the TTL serial pins on the GIO header. See https://elinux.org/images/1/13/Adafruit-connection.jpg
You could create your own simple null modem serial cable - consisting of 3 jumper cables.
Connect pins
6 <--> 6
8 <--> 10
10 <--> 8
If you can't use the GPIO header - you can do a USB to USB connection using USBNET. http://www.linux-usb.org/usbnet/

Is it possible for them to communicate using a direct USB cable, or perhaps using two USB-RS232 cables?
You fail to mention exactly which Raspberry Pi version(s) you are using.
Only the Raspberry PI Zero can be used as a USB Gadget.
Since USB is a master-slave(s) interface & protocol, you cannot simply connect two Raspberry PI 1/2/3 boards together using USB, because that would be a master-to-master connection.
If you look hard enough for a (passive) USB Type A (male) to Type A (male) cable, you can find them, but it's a bogus connection that will not work.
There are active USB host-to-host cables (which contain a shared gadget), but support can be an issue.
You could connect a Raspberry PI 1/2/3 to a Raspberry PI Zero by USB, so long as the Zero's USB port was configured as a USB ACM CDC gadget.
However one simple solution is your alternative of installing USB-to-RS232 adapters to each board. A null-modem cable of three wires would suffice unless you needed hardware flow-control.
An alternative solution is installing USB-to-Ethernet adapters to each board (with static IP addresses, i.e. an ad-hoc connection). This approach provides a much faster connection than an RS-232 link, and is easily utilized by applications.

Related

How to convert USB to TTL in software?

I'm a totally newbie and interested in physical programming like raspberry pi's. Is there any way to get the data which is intended to go to a "USB to TTL converter device" through USB(e.g. the output of a flashing software), read it and convert it to TTL using Python or C language? I mean something like:
Compiler --> avrdude --> Ethernet port of the compiler host PC --> Ethernet port of a Raspberry Pi --> Pins of the Raspberry Pi --> avr microcontroller
My question is about the code which I should run on the Raspberry Pi to do all the work required on that side. I'm guessing in this specific example it's possible to install avrdude on the Raspberry Pi and pipe the compiled code from the PC to the avrdude on the pi but I'm looking for a general solution that can be used with all microcontrollers, essentially turning the Raspberry Pi into a transparent, Ethernet connected, USB to TTL converter, either existing libraries or directions to how to write such code and where to read the documentations.
Edit1: There's a C language library called pigpio already installed on the Raspberry Pi OS and it can output UART. But I don't know how to read the USB data coming to the Raspberry Pi through its Ethernet port and convert it to UART data.
Edit2: I Changed USB port to Ethernet port since you can't connect two computers directly through USB. The data coming from the PC is still intended for USB to TTL converters since that's how avrdude and similar softwares are written(I guess it'll be "USB over Ethernet").

Ethernet port not working on Raspberry Pi with GPIO pins connected

Raspberry Pi model: 3B
Running Raspbian OS
Recently I bought a Hyperpixel 2.1 round, which uses all of the GPIO ports. Whenever I plug the Raspberry Pi into my network switch, it is unable to connect to the network with the Hyperpixel attached. However, when I removed the Hyperpixel, the Ethernet capability came back.
I'm fairly sure it's a software issue given that there shouldn't be any problems with running all gpio pins in addition to Ethernet.
Is this a quirk with the Raspberry Pi that it doesn't like having all GPIO ports occupied as well as Ethernet? And how would I potentially go about fixing this, perhaps through command line or in the boot config?

Communicate Between two Matlab Sessions Using Data Transfer Cable

We have a shared PC in our LAB, connected to a Vector Network Analyzer (VNA). The PC communicates with the VNA through GPIB port, using Matlab functions. For my work, i need to acquire real-time data from the VNA into my own PC, which is few meters away from the VNA PC. I dont want to have wireless solutions due to the interference that might happen. I intend to buy a USB data transfer cable to connect the Matlab. But i couldn't find in google any similar idea to do so. I was wondering is such a solution practical? Does anybody has the same experience? And will be any problem regarding the drivers?
in USB bus systems there can only be one USB host all other devices are in USB device mode.in most cases the USB controllers of PCs are not capable of USB device mode, they all want to be USB host. in other bus systems like I2C this is called master-slave architecture
if you are lucky one of your PCs can be set to device mode and in this case this will work but your chances are very slim (because of the problem with the USB host and USB device mode)
https://unix.stackexchange.com/questions/195765/is-usb-to-usb-data-transfer-between-two-linux-oses-possible
a better solution would be to use ethernet
there are also modules in MATLAB for real-time communication over ethernet (Real-Time Transmit and Receive over Ethernet)
if your pcs have unused ethernet ports use an ethernet crossover cable (http://en.wikipedia.org/wiki/Ethernet_crossover_cable) and connect the pcs (i.e. http://www.ccm.net/faq/6340-connect-pcs-using-a-crossover-ethernet-cable)
else use an ethernet switch (or hub) to establish the ethernet communication between the pcs
beside MATLAB for communication you can use i.e. ssh or install a vnc server on one of the machines and remote-control it with a vnc client on the other,...
USB
with USB-to-ethernet adapters (ebay,...) you can use ethernet over usb when connecting the usb-to-ethernet adapters via a ethernet crossover cable
another possibility is to use two USB-to-serial adapters and connect them with a RS-232 crossover cable and then use RS-232 protocol for communication (putty,...)

How to connect Raspberry PI and PROFIBUS?

I have a task to connect PROFIBUS (field bus technology by Siemens) to my Raspberry Pi. I need to make my Raspberry pi as a master and others devices as a slaves.
Let me know if you have any idea about how to make this connection. I am totally new in this topic and have no idea about this.
You might have a look at this project: https://bues.ch/cms/automation/profibus
When I understand it correctly, Profibus (Modbus) ist implemented by RS-485, that is not directly supported by the Raspberry Pi GPIOs.
You have to buy an extra shield or an USB to RS-485 Adapter.
There is also a library to send/receive data using modbus-protocol:
http://libmodbus.org/

Getting 'Server is at 0.0.0.0' on serial monitor - in webserver

I bought a new Arduino Ethernet Shield and hooked it to the Arduino Uno.
I am trying to set the IP address of the device to 192.168.1.177 tried File-> Examples -> Ethernet-> Webserver.
When I upload this - I get a "server is a 0.0.0.0'message in serial monitor !
My IP is set to 192.168.1.177 and setup a mac address of 0xB8, 0x27, 0xEB, 0x98, 0x46, 0x61 in the webserver code.
Appreciate any help in setting this IP address. ( I tried other combinations as well )
The Arduino Ethernet shield is mounted on the Arduino Uno, and connections are lined up .
i fix this problem by pressing firmly the shield to the board
This can manifest from many different causes. I ran into this and figured out that in my case, my the USB port + cable were not allowing sufficient power to the Ethernet chip.
I have 3 cables, 6in, 3ft, and 6ft. Only the 6" one had sufficiently low voltage drop to power the shield.
I honestly couldn't believe it, but there was a 0.1V drop between the 6in and the 6ft cables. When plugged into A USB 3.0 port with the Arduino loaded, I measured ~4.5V for the working 6in cable vs ~4.4V for the non-working 6ft cable.
I have 3 types of USB ports: 1.1, 2.0, and 3.0. Only the USB 3.0 ports provided enough power to power the shield. Thus for my case, I had to use the shortest USB cable on the 3.0 port.
When the Arduino's 5V rail was sufficiently sagging, the 3.3 Linear Regulator entered dropout mode and on all the non-working configurations I saw ~3.1V on the Ethernet shield's 3.3V rail, which is apparently sufficient to cause this symptom.