Boa tarde,

alguém sabe me informar se existe a possibilidade de utilizar esse leitor juntamente com o Arduíno sem utilizar a biblioteca SPI?

Desde-já,

obrigada.

Exibições: 3468

Responder esta

Respostas a este tópico

Boa noite Stella, 

Achei isso :

https://playground.arduino.cc/Learning/MFRC522

The microcontroller and card reader uses SPI for communication (chip supports I2C and UART protocols but not implemented on library) (Maybe someone implements?)

O chip suporta além de SPI, os protocolos I2C e Serial . Mas parece que não tem biblioteca pronta. 

Com interface I2C :

https://forum.arduino.cc/index.php?topic=208136.0

Boa tarde José Gustavo,

No primeiro link ele diz que provavelmente não tem como fazer.

Já no segundo, eu não entendi bem.

José você sabe qual o protocolo padrão?

Pra mudar o protocolo devo fazer alguma modificação?

Obrigada José.

Por exemplo, se for usar I2C, terá que fazer as ligações para os pinos adequados.

E providenciar uma biblioteca para uso com o chip.

https://www.arduino.cc/en/reference/wire

http://www.arduinobr.com/arduino/i2c-protocolo-de-comunicacao/

Sim, certamente.

O SPI foi criado nos anos 80:

https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

Enquanto a dependencia por bibliotecas foi criada com o Arduino, lançado em 2005:

https://pt.wikipedia.org/wiki/Arduino

Até então tudo podia ser feito sem bibliotecas.

O Atmega possui a interface internamente, basta utilizar os registradores adequados.

A documentação para isso está disponivel em:

http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-AT...

http://www.atmel.com/images/Atmel-7810-Automotive-Microcontrollers-...

Entre outros documentos.

O Arduino e suas bibliotecas é um excelente produto, um atalho de conhecimento. Vc paga o preço da facilidade quando as coisas perdem o controle. Acontece muito quando vc precisa usar diversas bibliotecas ao mesmo tempo. Não sei se é o caso, mas em geral esse é o motivo que me leva as vezes de buscar alternativas a algumas.

Boa tarde,

gostei da sua explicação. Porém acredito que não entendi bem como fazer.

O que me sugeriu foi que eu acessasse diretamente os pinos do atmega e implementasse as funções da Biblioteca?

Desde já, obrigada. 

Os pinos não, mas os registradores internos.

Por ex as rotinas de inicialização e de transmissão estão na pagina 163 do primeiro documento.

Transcrevo aqui a transmissão para exemplificar:

void SPI_MasterTransmit(char cData)
{  /* Start transmission */
    SPDR = cData;
   /* Wait for transmission complete */
  while(!(SPSR & (1SPIF)));
}

Veja que o registrador SPDR quando recebe um byte automaticamente faz a transmissão (gera a sequencia de pulsos no pino) para vc. Depois de uma transmissão é preciso apenas esperar que o hardware de transmissão termine seu trabalho, que é feito com o while. 

Essa resposta embasa a afirmação de que é possivel fazer sem biblioteca, mas não responde como. Certamente as bibliotecas são de grande ajuda por facilitar o trabalho. Alguem fez o trabalho "sujo" pra vc.

Isso em termos de transmissão de bytes. Para saber quais bytes transmitir é preciso consultar o manual do aparelho. Ele deve conter o protocolo de comunicação. Seria preciso implementar ele. 

Acho que entendi.
Você saberia me informar se eu ligar :
Um Modulo RC522 e um modulo cartão SD
O RC522 nos pinos 8 ao 13
E o modulo SD no ICSP
Pode gerar conflito?

Liguei um GPS no pino 3 e 2 usando a Software Serial
Você sabe me informar se consigo usar o GPS por outro protocolo que não seja serial? SPI por exemplo?

E comunicar tudo via SPI, o GPS, o RC522 e o Modulo cartão?

Queria usar essas bibliotecas
#include
#include "LiquidCrystal_I2C.h"
#include
//#include
#include
#include
#include

Consegui utilizar todas juntas, mas quando incluo a SD. Trava. Pelo que eu vi devo fazer algo assim : http://www.arduinobr.com/arduino/i2c-protocolo-de-comunicacao/ se for utilizar o I2C, porém não intendi bem como fazer.

Desde já, obrigada.

Achei isso (Veja se o seu módulo possui a mesma pinagem) 

https://www.theengineeringprojects.com/2015/08/interfacing-rfid-rc5...

É esse mesmo.
Uma pergunta se eu ligar o reset em modo high eu "reinicio" o modulo?

Essa é a pinagem do chip do módulo - RC522 :

https://www.nxp.com/documents/data_sheet/MFRC522.pdf

Para alterar o protocolo de comunicação ( SPI, I2C ou Serial ) é necessário configurar esses pinos do chip (não sei se dá para alterar nesse módulo RC522) :

Se o seu módulo for esse, o pino de configuração IIC, que seleciona o protocolo I2C esta conectado no GND (nível 0) . Para poder usar o protocolo I2C, o pino IIC (pino 1 do chip) deverá ser nível 1 (3,3V). Teria que hackear a placa...

Para usar o protocolo Serial , o pino EA (pino 32 do chip) deverá ser nível 0 . E ele esta conectado no 3,3V (nível 1) . Teria que hackear a placa também. 

http://www.sunrom.com/p/mifare-rfid-readerwriter-1356mhz-rc522

Hoje eu fiz uma conferência no diagrama do meu Módulo RFID RC522.

E é exatamente o diagrama acima (enviado anteriormente). 

Todos os pinos da interface SPI estão conectados no Chip que funciona com níveis de tensão 3.3V.

Vi no Datasheet, que a tensão máxima que pode ser aplicada nesses pinos é de 4,5V. 

Por isso o Módulo funciona conectado diretamente no Arduino. (existe um risco remoto de danifica-lo)

Mas ao conectar um Módulo SD Card no barramento SPI, ocorre o seguinte problema. 

Como eu já informei, os pinos do SD Card possuem divisores de tensão para compatibilizar os pinos de 5V do Arduino com os pinos de 3,3V do SD Card. 

Quando um sinal de 3,3V do pino MISO ( isto é Slave Out) do RFID RC522 for apresentado, para o SD Card esse pino terá um nível de tensão muito baixo (devido aos resistores) e assim o Cartão deve travar. 

É isso que eu acho que acontece. 

Por isso recomendo que use o conversor de níveis de tensão para o Módulo RFID. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço