Como podemos ativar a comunicação serial entre um XBee S2C e um Raspi 3 através da porta USB?
Para esse propósito, eu uso o XBee explorer dongle do Sparkfun . Eu tenho vários desta combinação para criar uma rede ZigBee e testar um protocolo codificado em C. No entanto, estou tendo problemas na leitura de /dev/ttyUSB0
. BTW, o problema pode estar no lado do remetente.
Os XBees estão sendo executados com a configuração da interface serial fornecida abaixo:
115200 baudrate
No parity
1 stop bit
3 character times for packetization timeout
CTS flow control is enabled
RTS flow control is disabled
API mode is enabled
API output mode is native
Por isso, inicializei a porta no meu código conforme abaixo:
int initport(int fd)
{
int portstatus = 0;
struct termios options;
// Get the current options for the port...
tcgetattr(fd, &options);
// Set the baud rates to 9600...'textB' un
cfsetispeed(&options, B115200);
cfsetospeed(&options, B115200);
// Enable the receiver and setSTX local mode...
options.c_cflag |= (CLOCAL | CREAD);
//options.c_cflag &= ~PARENB;
//options.c_cflag &= ~CSTOPB; //When these are disabled the XBee receives data.
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
//options.c_cflag |= SerialDataBitsInterp(8); /* CS8 - Selects 8 data bits */
options.c_cflag &= ~CRTSCTS; // disable hardware flow control
options.c_iflag &= ~(IXON | IXOFF | IXANY); // disable XON XOFF (for transmit and receive)
//options.c_cflag |= CRTSCTS; /* enable hardware flow control */
options.c_cc[VMIN] = 200; //min carachters to be read
options.c_cc[VTIME] = 5; //Time to wait for data (tenths of seconds)
// Set the new options for the port...
//tcsetattr(fd, TCSANOW, &options);
//Set the new options for the port...
tcflush(fd, TCIFLUSH);
if (tcsetattr(fd, TCSANOW, &options)==-1)
{
perror("On tcsetattr:");
portstatus = -1;
}
else
portstatus = 1;
return portstatus;
}
Eu queria fazer essa pergunta aqui porque acredito que preciso fazer algumas modificações em alguns arquivos, como /boot/config.txt
e / ou /boot/cmdline.txt
. Na minha pesquisa na web, esse tipo de modificação apareceu, mas não funcionou no meu caso.
Finalmente, os Raspis estão executando a versão mais recente do Raspbian Jessie e do kernel Linux 4.9.35-v7 +.
$uname -a
Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux
$cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
Por favor, não hesite em perguntar qualquer outro detalhe sobre minha configuração.
Obrigado antecipadamente.