LusoRobótica - Robótica em Português

Electrónica => Electrónica Geral => Tópico iniciado por: zordlyon em 19 de Março de 2018, 00:05

Título: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 19 de Março de 2018, 00:05
Boa noite malta,

Ora bem eu estou aqui a inventar um sistema de "picagens" por rfid só para demonstração de conceito e queria perguntar se alguém já se deparou ou sabe me ajudar.

Eu estou a montar um Arduino Mega + Placa Ethernet + Leitor Rfid RC522 + LCD 16x2 acontece que tenho 3 coisas a pedir-me portas MISO, MOSI, SCK.

Pelo datasheet do LCD temos ali o D11 e D12 com MISO e MOSI (img1).
Pela placa de Ethernet dizem que os pinos são os mesmos (img2)
No leitor Rfid RC522 temos os mesmos pinos (img3)
Pelo que andei a ver do Arduino Mega temos os pinos distribuidos entre 50-53 (img4)

Portanto faltam-me pinos, quero pinos..  ;D ;D

Neste momento já tenho o Arduino Mega a funcionar com o Rfid e o Ethernet a escrever numa BD online impecável, mas ao ligar o LCD há partilha de pinos claramente, porque o Ethernet deixa de conectar-se à BD ou então o LCD fica "branco".

Se alguém me conseguir dar uma ajudinha agradecia.

Já agora este projecto depois posso fazer a partilha de todo o código para quem quiser fazer algo idêntico em casa.

Cumps,
André.



Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: ricardo-reis em 19 de Março de 2018, 00:26
boas.. já pensaste em usar o 16x2 por i2c em vez de spi?
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: jm_araujo em 19 de Março de 2018, 10:03
Se o LCD é como indicas, tem a clássica interface série e podes ligar o mesmo a que pinos te apetecer, não estás fixo ao MOSI/MISO.
Se usas a biblioteca LiquidCrystal já estás a passar os pinos como parâmetros ao construtor, é só mesmo mudar os mesmos fisicamente e refletir no código. Até está bem explicito na documentação da mesma:
https://www.arduino.cc/en/Reference/LiquidCrystalConstructor
Citar
Syntax

LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Parameters

rs: the number of the Arduino pin that is connected to the RS pin on the LCD

rw: the number of the Arduino pin that is connected to the RW pin on the LCD (optional)

enable: the number of the Arduino pin that is connected to the enable pin on the LCD

d0, d1, d2, d3, d4, d5, d6, d7: the numbers of the Arduino pins that are connected to the corresponding data pins on the LCD. d0, d1, d2, and d3 are optional; if omitted, the LCD will be controlled using only the four data lines (d4, d5, d6, d7).


Quer-me parecer que sofreste de um ataque de cut&paste na variante de falta de olhar crítico ;D


Se fosse SPI também com um bocado de jeito não há crise. SPI pode ser partilhado porque cada dispositivo tem de ter um SS (slave select) e só deve aceitar comandos e responder quando está selecionado.
Mais uma vez está na documentação:
https://www.arduino.cc/en/Reference/SPI
Citar
It is, however, possible to use any pin as the Slave Select (SS) for the devices. For example, the Arduino Ethernet shield uses pin 4 to control the SPI connection to the on-board SD card, and pin 10 to control the connection to the Ethernet controller.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 19 de Março de 2018, 10:19
Bom dia,

Ricardo obrigado pela dica, não coloquei essa hipótese porque como tenho a Ethernet directamente ligada no Arduino Mega a shield ocupa-me os pinos do ICSP.

jm_araujo, obrigado também e sim isto não está "bonito", foi copy+paste com os exemplos e só adequei à necessidade..(o prazo é 1 semana não me preocupei muito agora, depois tenho tempo para refazer isto mais bonito)  ::) ::) :P :P

De qualquer forma eu experimentei outros pinos como falas-te com a liquidCrystal mas sem sucesso, coloquei a ligação nos pinos 28-33 e tinha essa dúvida se era obrigatório usar os MISO/MOSI ou podia ser outro pin digital à escolha.

Logo quando chegar a casa, vou dar uma olhada mais a fundo na documentação e já digo algo.

Cumps,
André.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: vasco em 19 de Março de 2018, 11:29
Bom dia,

Podes postar uma foto do LCD ?

Hoje em dia é mais normal usar um backpack I2C que só precisa de 4 pinos do que gastar 16 pinos a ligar diretamente ao LCD, tá bem que o mega tem um monte de pinos, portanto deve ser apenas questão de escolheres pinos que não entrem em conflito com o que já estás a usar.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: ricardo-reis em 19 de Março de 2018, 13:46
não percebi a relação entre pinos ICSP e os do I2C..
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 19 de Março de 2018, 14:07
não percebi a relação entre pinos ICSP e os do I2C..

My mistake, li ICSP :P (hoje é segunda tenho desconto).
Por acaso i2C nao vi...
Edit: Estive a espreitar e tenho que comprar uma placa a parte para comunicar via i2c certo?
"esgana-me" um pouco o tempo, mas vou ponderar encomendar isso hoje e quarta está cá. Obrigado pela dica desconhecia. ;)


Olá Vasco, o LCD é este: https://www.banggood.com/pt/Keypad-Shield-Blue-Backlight-For-Arduino-Robot-LCD-1602-Board-p-79326.html?rmmds=search&cur_warehouse=CN

Mas não tem o shield porque eu dessoldei o LCD do shield.



Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: ricardo-reis em 19 de Março de 2018, 14:25
ou comprar a placa ou comprar o LCD já com ela.. sim..
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 19 de Março de 2018, 14:26
ou comprar a placa ou comprar o LCD já com ela.. sim..

Obrigado pela dica ;)
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 19 de Março de 2018, 22:34
Viva,

Só para avisar que já funciona.

Vou arrumar a fiarada e o código, e depois partilho cá o projecto.

De qualquer forma fui aos nossos fornecedores estrangeiros do outro lado do mundo e mandei vir LCD's com i2c para futuros projectos e quem sabe para depois melhorar este.. :)

Obrigado aos que contribuíram.. :)

Cumps,
André.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: ricardo-reis em 19 de Março de 2018, 22:55
vale a pena ir ver uns videos ao youtube das diferenças de desempenho nos displays i2c e spi, só pra ter uma ideia..

qual foi a solução? remapear os pinos do liquidCrystal?
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 19 de Março de 2018, 23:27
O problema estava na Shield que vinha com o LCD.

Aquilo tem um Keypad (que não precisava) e de alguma forma não inicializava o LCD só remapeando os pinos.

A solução passou por sacar o LCD fora e ficar somente com o LCD sem keypad e depois liga-lo normalmente dos pinos 22-27 e ficou logo a funcionar :)

Relativamente a ver os videos, depois vou dar uma vista de olhos :)

Cumps,
André.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: ricardo-reis em 19 de Março de 2018, 23:33
isso é bom, então..

outra solução podia passar por ligar X arduinos uns aos outros até teres pinos suficientes.. :D

serial/master
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 20 de Março de 2018, 09:33
Eheh sim verdade, mas overkill para isto :D
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: vasco em 20 de Março de 2018, 11:35
Com esses botões todos é provável que estejam ocupados uma serie de pinos, pelo que deve complicar escolher pinos que estão realmente livres.
A principio pensei que os pinos ao pé do potenciómetro azul era a interface i2c, só depois é que vi que eram 6 e estava lá escrito icsp, que para o caso do lcd não ajuda absolutamente nada.

Embora esteja completamente de acordo que displays bitmap oleds, lcd, etc, que devem ser SPI, considero ser irrelevante para os displays character based.

O backpack I2S pode ser comprado separadamente, pensei que hj em dia quase todos os lcd 16x2 já vinham com o backpack mas não, no e-bay vem quase tudo sem ele.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: ricardo-reis em 20 de Março de 2018, 15:00
pensei que hj em dia quase todos os lcd 16x2 já vinham com o backpack mas não, no e-bay vem quase tudo sem ele.

depende do que se procurar..
olha aqui um exemplo: https://www.ebay.com/sch/i.html?_nkw=16x2+i2c+display


zordlyon, sem duvida seria overkill, mas provavelmente tens mais que um arduino, e se tivesses que esperar por outro display, era solução.. ;)
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: senso em 20 de Março de 2018, 15:58
Ou usem logo um 128x64 OLED que custam tipo 1€ e falam SPI ou i2c, mais flexivel que um 16x2, e usa menos energia, e é gráfico.

Ou 3€ por um TFT 128x160 a cores.

Tenho lá por casa 10 16x2 que me custaram para ai 1.5€ cada um e não os uso porque funcionam a 5v e tenho muita tralha feita que nem sequer tem rail de 5v, só 3.3v..
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: ricardo-reis em 20 de Março de 2018, 16:02
eu tb prefiro os OLEDs, mas são muito mais pequenos.. n sei se dão pra esta aplicação..
OLEDs maiores ficam caros..
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 20 de Março de 2018, 19:26
Viva,

Aqui usei os 16x2 porque era o que tinha cá por casa... :)

Cumps,
André.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 26 de Março de 2018, 22:30
Malta obrigado pela ajuda, a demonstração serviu perfeitamente.

Nos próximos dias mais tardar até ao fim da próxima semana partilho o tutorial. :)

Cumps,
André.
Título: Re: Arduino + LCD 16x2 + Ethernet + Rfid 522
Enviado por: zordlyon em 07 de Abril de 2018, 15:47
Obrigado aos que me ajudaram, criei o tutorial, vou fechar este tópico.

Continuação em:
https://lusorobotica.com/index.php?topic=9319.msg104514#msg104514