Arduino: Ethernet: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 178: Linha 178:


;Arduíno Leonardo: O '''Arduíno Leonardo''' usa a '''Serial''' exclusivamente para comunicação com a '''porta USB'''. Para comunicação serial TTL (5V) nos pinos 0 (RX) and 1 (TX) deve-se utilizar a '''Serial1'''.
;Arduíno Leonardo: O '''Arduíno Leonardo''' usa a '''Serial''' exclusivamente para comunicação com a '''porta USB'''. Para comunicação serial TTL (5V) nos pinos 0 (RX) and 1 (TX) deve-se utilizar a '''Serial1'''.
==Comunicação sem fio com Wireless Shield e Xbee==
O '''[https://www.arduino.cc/en/Main/ArduinoWirelessShield Wireless Shield]''' permite a '''comunicação serial sem fio''' baseado no módulo '''[http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/zigbee-mesh-module/xbee-zigbee Xbee]''' da Digi.
[[Arquivo:Arduino_WirelessSDShield.jpg|300px]]
===Configuração do Wireless Shield===
A placa '''Wireless Shield''' possui uma '''chave de configuração''' da comunicação serial entre o módulo '''Xbee''' e o '''microcontrolador do Arduino''' e o '''conversor serial USB''' (ver: https://www.arduino.cc/en/Main/ArduinoWirelessShield):
[[Arquivo:WirelessShield_SD_switchUSB.png|100px]]
*'''Posição micro''': O pino Dout do módulo Wireless é conectado ao pino RX do microcontrolador do Arduino e o pino Din ao pino TX do microcontrolador. '''O módulo sem fio se comunica de forma serial com o microcontrolador do Arduino.''' Destaca-se que os pinos TX e RX do microcontrolador também continuam conectados aos pinos RX e TX do conversor serial USB. Desta forma, dados transmitidos pelo microcontrolador serão enviados simultaneamente ao módulo sem fio e a serial USB. Neste modo o microcontrolador do Arduino não pode ser programado via USB.
*'''Posição USB''': O pino Dout do módulo Wireless é conectado ao pino RX do conversor serial USB e o pino Din ao pino TX  do conversor serial USB. '''O módulo sem fio se comunica diretamente com o computador.''' Para usar este modo o microcontrolador do Arduíno deve ser programado com um '''sketch vazio''':
void setup() { }
void loop() { }
;Xbee Explorer USB: A placa '''Wireless Shield''' com a chave na '''posição USB''' e o '''microcontrolador do Arduíno''' programado com '''sketch vazio''' se comporta como um módulo '''Xbee Explorer USB''', com o Xbee se comunicando diretamente com o computador.
[[Arquivo:XbeeExplorerUSB.png|200px]]
===Exemplo de utilização===
Exemplo de comunicação usando a '''configuração padrão''' dos módulos '''Xbee''', apresentado em https://www.arduino.cc/en/Guide/ArduinoWirelessShield:
*Para fazer a carga de programas no microcontrolador do Arduíno, colocar a '''chave''' do módulo wireless na '''posição USB'''.
*Em um dos Arduínos com módulo Wireless carregar o programa
Exemples->Communication->Physical Pixel
:Este programa faz o Arduíno acender ou apagar o led da porta 13 a partir do envio do caracter H ou L a partir do '''monitor serial'''. Testar o funcionamento do programa com a chave do módulo wireless na '''posição USB'''. Em seguida desconectar o Arduíno da interface USB e mudar a chave do módulo wireless para a '''posição micro'''.
<syntaxhighlight lang="c">
//  Physical Pixel
const int ledPin = 13; // the pin that the LED is attached to
int incomingByte;      // a variable to read incoming serial data into
void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}
void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}
</syntaxhighlight>
*Em outro Arduíno com módulo wireless, carregar o programa abaixo com chave do módulo wireless na '''posição USB'''. Verificar o funcionamento do programa no '''monitor serial'''. Depois de carregado o programa mudar a chave do módulo wireless para a '''posição micro'''.
<syntaxhighlight lang="c">
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  Serial.print('H');
  delay(1000);
  Serial.print('L');
  delay(1000);
}
</syntaxhighlight>
*Para '''testar a comunicação serial sem fio''', conectar o primeiro Arduíno na fonte de alimentação e verificar se a comunicação entre os Arduínos acontece, fazendo o led piscar.
**Caso não haja comunicação, tente restabelecer a '''configuração padrão''' ('''''default''''') nos módulos '''Xbee''' (veja abaixo).
;Arduíno Leonardo: O '''Arduíno Leonardo''' usa a '''Serial''' exclusivamente para comunicação com a '''porta USB'''. Para comunicação serial TTL (5V) nos pinos 0 (RX) and 1 (TX) deve-se utilizar a '''Serial1'''.
===Endereçamento dos módulos Xbee===
Vários parâmetros precisam ser configurados para que os módulos Xbee possam se comunicar:
#Os dispositivos precisam estar na mesma '''rede''', definida pelo parâmetro '''ID''';
#Os dispositivos precisam usar o mesmo '''canal''', definido pelo parâmetro '''CH''';
#O '''endereço destino''' (DH e DL) determina qual módulo da rede receberá os dados:
#*Se o '''DH = 0''' e o '''DL < 0xFFFF''' (i.e. 16 bits), o dado transmitido pelo módulo será recebido por qualquer módulo cujo '''endereço''' de 16-bit '''MY''' é igual a '''DL''';
#*Se o '''DH = 0''' e o '''DL = 0xFFFF''', o dado transmitido será recebido por '''todos''' os módulos (''broadcast'');
#*Se o '''DH &ne; 0''' e o '''DL > 0xFFFF''', o dado transmitido será recebido somente pelo módulo cujo '''número serial''' seja igual ao '''endereço destino''' (i.e. '''SH = DH''' e '''SL = DL''').
Síntese de alguns parâmetros:
{| border=1
|-
| '''Parâmetro''' || '''Descrição''' || '''Valor default'''
|-
| ID || Identificador de rede || 3332
|-
| CH || Canal || C
|-
| SH SL || Numero de série || Diferente para cada módulo
|-
| MY || Endereço do módulo || 0
|-
| DH DL || Endereço destino || 0
|-
| BD || Vazão da comunicação serial (bps) || 3 (9600 bps)
|}
===Configuração do módulo Xbee===
Para a configuração do módulo Xbee é interessante utilizar o software [http://www.digi.com/support/productdetail?pid=3352 XCTU] da Digi ou o [http://www.moltosenso.com/ moltosenso Network Manager], os quais apresentam facilidades para configuração e atualização dos módulos wireless.
;Exemplo de configuração com o software moltosenso Network Manager: Baixar e instalar o software '''moltosenso Network Manager IRON 1.0''' (''Free''):
*Na guia '''''Port Setup''''' é possível verificar a configuração da porta, clique em '''''Open Port''''' e verifique se o dispositivo foi detectado;
*Clique no dispositivo e verifique as informações do mesmo em '''''Current Device''''';
[[Arquivo:moltosenso.png|400px]]
*Na guia '''''Node Settings''''' é possível selecionar o módulo e verificar seus parâmetos de configuração;
[[Arquivo:moltosenso2.png|400px]]
*Para '''restaurar os parâmetros ''default''''' do dispositivo clique em '''''Restore All''''' e depois em '''''Write Permanently''''';


==Referências==
==Referências==

Edição das 13h17min de 30 de outubro de 2021

Arduíno: Comunicação e Rede

Comunicação Serial

Conceitos sobre comunicação serial e paralela

Comunicação Serial no Arduíno

Veja referência sobre comunicação Serial no Arduíno.

O Arduíno UNO possui uma porta serial (Serial) (também referida como UART) e se comunica através dos pinos 0 (RX) e 1 (TX), assim como com o computador via USB. Se você utiliza a comunicação serial não pode utilizar os pinos 0 e 1 como entradas e saídas.

Também é possível utilizar o monitor serial, disponível na IDE do Arduíno, para comunicação bidirecional com uma placa Arduíno conectada em uma porta USB.

Não é possível utilizar as portas seriais do Arduíno diretamente em uma comunicação com uma interface RS232, pois esta usa tensões de -12 V e 12 V.

Outras placas Arduíno
  • O Arduíno Leonardo usa a Serial exclusivamente para comunicação com a porta USB. Para comunicação serial nos pinos 0 (RX) and 1 (TX) deve-se utilizar a Serial1.
  • O Arduíno Mega tem três portas de comunicação serial adicionais: Serial1, Serial3 e Serial3.

Laboratório 1: Comunicação serial entre dois Arduínos

Monitor Serial
O monitor serial permite enviar dados do computador ao Arduíno pela interface serial USB.
Comunicação entre dois Arduínos
  • Conectar com um par de fios os dois Arduínos através das portas seriais de ambos os microcontroladores: TX->RX e RX<-TX;
  • Carregar no receptor o programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel;
  • Carregar no emissor o código abaixo:
 //emissor  
 int num = 0;
 void setup(){
  Serial.begin(9600);
 }
 void loop(){
  Serial.write('H');
  delay(2000);
  Serial.write('L');
  delay(2000);
 }
 }
  • Observar a comunicação serial a partir do led piscando no receptor e também monitorar a troca de mensagens a partir do monitor serial.

Configuração do SimulIDE para comunicação serial com Arduíno

É possível realizar comunicação serial entre um Arduíno rodando no SinulIDE e um Arduíno conectado a porta USB do computador.

  • No Arduíno conectado a USB, verificar a partir da IDE a porta de comunicação que está sendo utilizada: ttyACM0 (p.ex.);
  • No Arduíno no SimulIDE, clicar com o botão direito do mouse sobre a placa e selecionar Open Serial Port;
  • No bloco Uart que vai abrir, clicar com o botão direito do mouse e selecionar properties;
  • Escrever em port name o nome da porta serial;
  • Clicar em Open para ativar a porta (deve indicar sucesso com o botão vermelho).

Comunicação usando módulo Ethernet

O módulo Ethernet (Ethernet Shield), juntamente com a biblioteca Ethernet [1], permite que um Arduíno se conecte a Internet. Esta biblioteca provê funcionalidades tanto para cliente quanto par servidor, além de permitir a conexão com a rede local tanto usando IP fixo, DHCP e também usando DNS.

O Ethernet Shield 2 permite conectar o Arduíno a rede local e a Internet com conector RJ45 e velocidade de 10/100 Mbps. A conexão do shield com o Arduíno é realizada pelo barramento SPI (Serial Peripheral Interface), que faz uso dos pinos 10, 11, 12 e 13 do Arduíno para comunicação e necessita da biblioteca SPI.h. O SPI é uma interface de comunicação serial síncrona usada para comunicação em distâncias curtas. O Ethernet Shield possui ainda um slot para cartão SD e usa o pino 4 para controlar o pino de seleção do cartão SD.

Para uso do módulo Ethernet há uma serie de exemplos prontos (Examples from Libraries).

Labortório 2: Web Server

Este laboratório mostra como utilizar um Ethernet Shield juntamente com o Arduíno para criar um Web Server que forneça informações sobre sensores conectados a entradas analógicas [2].

Procedimentos
  • Conectar o Shield Ethernet a placa Arduíno e a rede local (usando cabos de rede CAT 5/6 e conector RJ45);
  • Carregar o programa exemplo:Arquivo/Exemplos/Ethernet/Web Server;
  • Conectar alguns sensores as entradas analógicas do Arduíno para monitorar via Web (Pode Modificar o programa exemplo em função dos sensores que utilizar);
  • Testar o acesso ao servidor Web a partir de um navegador.

Comunicação com Módulo Bluetooth

O módulo Bluetooth permite interagir com o Arduíno, por exemplo, utilizando um aplicativo em um smartphone.

Um módulo Bluetooth bastante utilizado é o HC06 (ver: http://www.instructables.com/id/Add-bluetooth-to-your-Arduino-project-ArduinoHC-06):

Pinagem e conexão com o Arduíno

Este módulo apresenta 6 pinos, mas com apenas 4 pinos é possível colocar o mesmo para funcionar e fazer o Arduíno interagir dispositivos Bluetooth.

            _________
           |         |
           |         |
           |         |
           |Bleutooth|
           |         |
           |   HC06  |
           |         |
           |         |
           |_________|
             | | | |
     Vcc ----+ | | +---- Txd
     Gnd ------+ +------ Rxd

Cuidados com a conexão do módulo Bluetooth HC06 com o Arduíno:

  • O HC06 funciona com alimentação Vcc=3,3V, a qual também é fornecida pelo Arduino ao lado da alimentação de 5V;
  • Na comunicação serial, como o Arduíno fornece 5V, é necessário utilizar um divisor de tensão na entrada Rxd do HC06, conforme exemplo abaixo:

VRxd = R2/(R1 + R2).5
Exemplo:
R1=470 Ω, R2=1 KΩ -> VRxd = 3,4 V

Teste do módulo bluetooth

PhysicalPixel
Permite acender e apagar led a partir de aplicativo Android pareado com módulo Bluetooth:
  • Carregar no Arduíno o programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel;
  • Abrir aplicativo Bluetooth Terminal e parear com módulo Bluetooth;
  • Acender a apagar led 13 com caracteres H e L.

Exemplos de programas de aplicação

Fonte: http://www.instructables.com/id/Add-bluetooth-to-your-Arduino-project-ArduinoHC-06

Echo Code
Permite enviar uma string ao Arduíno via Bluetooth e receber de volta a mesma string no monitor serial.
 String message; //string that stores the incoming message
 void setup()
 {
   Serial.begin(9600); //set baud rate
 }
 void loop()
 {
   while(Serial.available())
   {//while there is data available on the serial monitor
     message+=char(Serial.read());//store string from serial command
   }
   if(!Serial.available())
   {
     if(message!="")
     {//if data is available
       Serial.println(message); //show the data
       message=""; //clear the data
     }
   }
   delay(1000); //delay
 }
Led Code
Permite acender e apagar um led conectado ao Arduíno enviando caracteres via Bluetooth de um smartphone ou outro dispositivo Bluetooth.
 char blueToothVal;           //value sent over via bluetooth
 char lastValue;              //stores last state of device (on/off)
 void setup()
 {
  Serial.begin(9600); 
  pinMode(13,OUTPUT);
 }
 void loop()
 {
   if(Serial.available())
   {//if there is data being recieved
     blueToothVal=Serial.read(); //read it
   }
   if (blueToothVal=='n')
   {//if value from bluetooth serial is n
     digitalWrite(13,HIGH);            //switch on LED
     if (lastValue!='n')
       Serial.println(F("LED is on")); //print LED is on
     lastValue=blueToothVal;
   }
   else if (blueToothVal=='f')
   {//if value from bluetooth serial is n
     digitalWrite(13,LOW);             //turn off LED
     if (lastValue!='f')
       Serial.println(F("LED is off")); //print LED is on
     lastValue=blueToothVal;
   }
   delay(1000);
 }

Smartphone Android

Para enviar caracteres de um Smartphone Android para o módulo Bluetooth pode-se utilizar aplicativos como o Bluetooth Serial Port Terminal ou Bluetooth V2.1 SPP Terminal

Arduíno Leonardo
O Arduíno Leonardo usa a Serial exclusivamente para comunicação com a porta USB. Para comunicação serial TTL (5V) nos pinos 0 (RX) and 1 (TX) deve-se utilizar a Serial1.

Referências


Evandro.cantu (discussão) 19h13min de 29 de outubro de 2021 (-03)