LCD Nokia 5110

Jan 05
2011

..como tinha prometido, aqui fica o meu post/tutorial de como colocar este rapaz a funcionar…

Ora bem, depois de alguns mails trocados com quem de direito, aka Filipe Valpereiro e Carlos Rodrigues la consegui por isto a funcionar, mas a realidade é que tive “sorte”.

Sorte porquê? porque devido a não ler tudo ate ao fim podia ter queimado o LCD assim sem mais nem menos, é que este menino funciona a 3.3V e quando se diz 3.3V SAO mesmo TODOS OS PINS, nao é so o VCC…e eu como sou toto nao sabia disso. Devia ter lido o Datasheet!!

Mas felizmente nao queimou e a prova disso é que no dia 31 mandei um tweet com uma imagem do LCD a dizer HAPPY NEW YEAR, hehe…para fugir um pouco ao clássico “Hello World”.

Bem ja chega de conversa e vamos ao que interessa. Existem duas maneira de ligar isto a correcta e que funciona, e a menos correcta, mas que continua a funcionar…ainda estou a espera de ter confirmação se é seguro usar assim.

Para ja vao precisar da seguinte lista de material:

  • 1 x Nokia 5110 LCD
  • 6 x Resistencias de 10K
  • 8 x Jumper Cables
  • 1 x Arduino

Nota: se usarem um arduino que funcione a 3.3V nao precisam de resistencias, podem ligar o LCD directamente!

Depois de terem este material todo é so ligarem os pins com a seguinte ordem:

Nota: Estas ligaçoes sao especificamente para o Nokia 5110 LCD se usarem outro convem verem os pins que veem indicados “normalmente” por tras da board do LCD. no meu caso vinham e sao estas:

O que da as seguintes ligaçoes:

  • LCD —– > Arduino
  • 1 ———> 3.3V
  • 2 ———> GND
  • 3 ———> D7
  • 4 ———> D6
  • 5 ———> D5
  • 6 ———> D4
  • 7 ———> D3
  • 8 ———> (Este eu não liguei porque são os leds do LCD, mas por motivos de teste podem ligar em qualquer um desde que o PIN esteja HIGH)

E afinal onde é que colocamos as resistências???

Ok aqui entra a minha duvida, que talvez quem perceba mais de electronica possa esclarecer, ha duas maneiras de ligar, eu para ja estou a usar uma que assume que a board do LCD tenha um Diodo que assegura que nao queima, mas ha maneiras mais correctas segundo me informou tanto o Filipe Valpereiro com o Carlos Rodrigues, estes dois a quem gabo a paciência para me aturarem os mais 😉 eu ja tinha metido um filtro para spam para mim mesmo…hehe..

O melhor mesmo é verem este Tutorial da Sparkfun que explica tudo como devem fazer, e depois se não vos agradar ou quiserem arriscar fazer a minha maneira passem para o parágrafo seguinte.

Eu liguei metendo nada mais nada menos do que uma resistência de 10K entre cada pin do LCD e cada pin do Arduino, e ei esta a funcionar as mil maravilhas, pelo menos por enquanto ainda nao vi fumo, seja ele branco ou de outra cor qualquer… Por isso voces é que sabem, é a vossa responsabilidade!

Note-se que este desenho é apenas a titulo ilustrativo e a minha primeira experiencia, falhada, diga-se de passagem 😉 com o Fritzing, mas da para perceberem a ideia…

Apesar de so estarem 6 resistencias se quiserem ligar o Pin 8 do LCD (LED) ao arduino o esquema é o mesmo, é so meterem la uma resistencia de 10K.

Em seguida depois de tudo ligado e conferido, so teem que sacar a LIB Arduino Library ( Thanks to Carlos Rodrigues) instalarem no vosso local do costume, e carregarem o exemplo que vem com a LIB ou simplesmente copiarem o seguinte sketch.

/*
 * PCD8544 - Interface with Philips PCD8544 (or compatible) LCDs.
 *
 * Copyright (c) 2010 Carlos Rodrigues
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
 
/*
 *
 * Since these LCDs are +3.3V devices, you have to add extra components to
 * connect it to the digital pins of the Arduino (not necessary if you are
 * using a 3.3V variant of the Arduino, such as Sparkfun's Arduino Pro).
 */
 
#include
 
// A custom glyph (a smiley)...
static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };
 
static PCD8544 lcd;
 
void setup() {
  // PCD8544-compatible displays may have a different resolution...
  lcd.begin(84, 48);
 
  // Add the smiley to position "0" of the ASCII table...
  lcd.createChar(0, glyph);
}
 
void loop() {
  // Just to show the program is alive...
  static int counter = 0;
 
  // Write a piece of text on the first line...
  lcd.setCursor(0, 0);
  lcd.print("Hello, World!");
 
  // Write the counter on the second line...
  lcd.setCursor(0, 1);
  lcd.print(counter, DEC);
  lcd.write(' ');
  lcd.write(0);  // write the smiley
 
  delay(500);
  counter++;
}

E se de facto tiverem tudo bem ligado deverá aparecer um glorioso “Hello World” no vosso lcd com um pequeno smiley e um numero a incrementar.

Confesso que a mim não me aconteceu isso da primeira vez, porque primeiro como ja mencionei estava a ligar a 5V e segundo porque não estava a olhar correctamente para os pins de um lado e de outro.  Por isso em caso de duvida ligem usando este esquema que aqui vos coloco.

Se por acaso, depois quiserem mudar a ordem dos pins no Arduino, teem que alterar directamente na lib PCD8544.h que tem quase no incio algo tipo

// The pins used by this library...
#define PCD8544_SCLK  8  /* clock       (display pin 2) */
#define PCD8544_SDIN  4  /* data-in     (display pin 3) */
#define PCD8544_DC    5  /* data select (display pin 4) */
#define PCD8544_RESET 6  /* reset       (display pin 8) */
#define PCD8544_SCE   7  /* enable      (display pin 5) */

E que como podem constatar este é o meu, e ja foi alterado. mudei o pin 3 para pin 8 uma vez que estou a usar o pin 3 para outra shield.

E pronto, penso que mais simples que isto não pode ser, é mesmo como dizem no site, “Plug and Pray” 😉

Como sempre dúvidas, ajudas e mais importante sugestões são muito bem vindas…

Programar o Xbee usando o Arduino

Dec 14
2010

Em primeiro lugar, se tiverem um Arduino que nao seja o UNO, escusam de ler o resto do post porque isto so acontece, aparentemente com o Arduino UNO.

Entao, queriam programar o Xbee com o X-CTU usando o ARduino UNO? Pois bem a resposta é:

NAO É POSSIVEL!!

Ou pele menos eu nao consegui. Fiz todos os testes e mais alguns, li resmas e resmas de paginas e nada, inclusive estive em conferencia com o Filipe Valpereiro da Inmotion.pt ontem a tentarmos tudo…ate que encontrei uma que me disse realmente o que precisava de saber e isto apos ter lido a documentaçao de como instalar o X-CTU e algo muito importante, que podem ou nao ter que instalar, que são os Drivers de FTDI.

À, já agora, convém mencionar também que o X-CTU infelizmente ainda só funciona em Windows, por isso se como eu usarem mac ou linux, terão que recorrer a outra maquina ou então a um VirtualBox, Wine ou VMware.

Voltando à NÃO programaçao com o Arduino Uno.

Bem, para resumir, a instalação não é possivel por que o arduino uno não tem o chip ftdi, como podem ver neste link para um forum que encontrei aqui. Ora, se não tem esse chip entao não pode ser usado como “serial port” para o Xbee shield. Simples nao? bahhhh que gaita… isto obriga-me a ter que adquirir um XBee Explorer USB, ate porque os Xbee’s Pro 2.5 nao veem configurados de fábrica prontos a usar.

Por isso amigos, se estavam a pensar poupar 20 euritos, ja foram…tem mesmo que ser! A nao ser que… sim é verdade quem tiver ai para casa perdido um Arduino Duemilanove, podem usar estes mesmo para programar os xbee’s usando o X-CTU. Quem me manda a mim querer o topo de gama, bah!

Podem ver Aqui como o fazer, seus sortudos…

Boa sorte, e ja agora se descobrirem uma maneira de usar o X-CTU com o Arduino Uno avisem, porque há muita gente a precisar de o fazer… 20 euros sempre são 20 euros pa…a crise anda aí 😉

Peças novas e a sua soldadura!

Dec 14
2010

Ora bem…

Chegaram na segunda feira, depois de umas atribuladas voltas a procura da estaçao de correios certa, os meus XBee Pro 50mW Series 2.5 Wire Antenna e as respectivas Arduino Stackable Header – 6 Pin e as Arduino Stackable Header – 8 Pin!

Nao vou para ja fazer uma revisao sobre isto porque ainda nao as consegui usar devidamente…afinal falta-me algo, para poder programar os XBee…

Num post mais a frente, falarei sobre os Xbee. ja agora a peça é um XBee Explorer USB.

Bem, mas antes de poder usar os xbee’s e as respectivas shield’s que ja tinha falado num post anterior, avizinhava-se uma longa noite de soldadura porque são qualquer coisa como 64 soldaduras nas duas placas para ter os terminais soldados.

Depois de muitos videos youtube, la vi como é que “teoricamente” se soldava e meti mãos a obra… o resultado foi melhor do que o que estava a espera, passados 30 minutos ja tinha a primeira placa toda soldada, e mais ou menos 1 hora depois tinha as placas ligadas nos arduinos com umas belas soldaduras…

Um Howto muito importante que eu vi esta no site da sparkfun.com e explica como fazer o assembling destes shields. Vejam o GPS Shield Assembly Guide, apesar de ser para o GPS Shield, o principio é o mesmo.

E como nao podia deixar de ser, aproveitei quando fui soldar o segundo shield para fazer um pequeno timelapse…

Divirtam-se:

Mais para a frente ja vou colocar um post sobre a programação e a parte de realmente usar o xbee para comunicar entre dois arduinos.

Como sempre, eu não percebo nada disto, por isso não me responsabilizo por coisas que possam danificar o vosso material, mas ei, eu também estou a aprender 😉

Follow Me