Project

General

Profile

Resolved: Graphics Board won't display anything

Added by haiku about 1 year ago

Hi, I've been having a hard time getting my graphics board to display anything and I'm not sure what to try next. I thought I'd upload where I'm at here and hopefully someone can point me straight.

What I've done so far
I've followed the assembly instructions here (https://jeelabs.org/2010/11/16/assembling-the-graphics-board/) and I'm at the point where I should have the minimum set of parts soldered up to drive the display. The link to the 'glcd_demo.pde' seems to be dead but I found the 'glcd_demo.ino' code here (https://github.com/jcw/glcdlib/tree/master/examples/glcd_demo) which I'm assuming is the same?

// Demo display for the Graphics Boad
// 2010-11-14 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <GLCD_ST7565.h>
#include <JeeLib.h>
#include <avr/pgmspace.h>
#include "utility/font_clR6x8.h"

GLCD_ST7565 glcd;

void setup () {
    rf12_initialize(1, RF12_868MHZ);
    rf12_sleep(RF12_SLEEP);

    glcd.begin();
    glcd.backLight(255);
    glcd.setFont(font_clR6x8);

    // draw a string at a location, use _p variant to reduce RAM use
    glcd.drawString_P(40,  0, PSTR("GLCDlib"));
    glcd.drawString_P(10, 16, PSTR("ST7565 128x64 GLCD"));
    glcd.drawString_P(22, 32, PSTR("Graphics Board"));
    glcd.drawString_P(20, 48, PSTR("JeeLabs.org/gb1"));

    glcd.drawCircle(5, 5, 5, WHITE);
    glcd.fillCircle(121, 5, 5, WHITE);
    glcd.fillCircle(6, 58, 5, WHITE);
    glcd.drawCircle(121, 58, 5, WHITE);

    glcd.drawLine(40, 9, 81, 9, WHITE);
    glcd.drawLine(40, 11, 81, 11, WHITE);
    glcd.drawLine(0, 42, 14, 28, WHITE);
    glcd.drawLine(112, 42, 126, 28, WHITE);
    glcd.drawRect(0, 28, 127, 15, WHITE);

    glcd.refresh();

    Sleepy::powerDown(); // power consumption is now only the GLCD + backlight
}

void loop () {}

I'm using a JeeNode V6 with a USB bub 3 to power it. After I upload this code though nothing displays at all. I tried connecting the backlight and that seems to work fine. In fact if I change 'glcd.backLight(255)' to 'glcd.backLight(0)' the backlight turns off like I'd expect (although values in between do not gradually turn on the backlight with a dimmed brightness as I expected) which tells me something is working. I also tried the LED demo for the JeeNode just to make sure that's working and that worked fine. I also tried changing it from WHITE to BLACK in case I was trying to display white on a white background but it made no difference.

Here are a few images of my set-up:

The display showing nothing with backlight on behind it
display showing nothing with backlight behind it

The components I've soldered to the board
compenents soldered to board

Alternate view
alternate view

Close up of the resistor
resistor close up

Any help would be appreciated, as I said I'm not sure what I should try from here. Only things I can think of is maybe I'm running an old version of the demo code. I doubt the display itself is broken, and I haven't removed any of the protective films from it so I couldn't of accidentally removed one of the polarising filters.

IMG_7149.JPG (2.66 MB) IMG_7149.JPG display showing nothing with backlight behind it
IMG_7150.JPG (3.19 MB) IMG_7150.JPG compenents soldered to board
IMG_7151.JPG (2.72 MB) IMG_7151.JPG alternate view
IMG_7152.JPG (2.89 MB) IMG_7152.JPG resistor close up
2682
2683
2684
2685

Replies (39)

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

My board has 1 microF electrolytic caps where you have the blue ceramic devices.

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

I don't see:

ISR(WDT_vect) { Sleepy::watchdogEvent(); }

in the sketch, as per https://jeelabs.org/pub/docs/jeelib/classSleepy.html

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

A few of the yellow cap legs look like dry joints. One leg of the resistor also looks dry but it is working.

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

There is a very similar sketch in arduino/libraries/jeelib/examples/Ports/glcd_demo.ino which works fine on my display. I'm a little surprised that my board still works after all its time "resting".

https://github.com/jcw/jeelib/blob/master/examples/Ports/glcd_demo/glcd_demo.ino

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

Have you seen this page: https://jeelabs.net/projects/hardware/wiki/graphics_board

Particularly the "Contrast" section:

Contrast Setting
The optimum contrast for the display depends on the supply voltage and device to device variation. This can be an issue on the JeeNode USB for example, since its PWR rail is not 5v.
The default setting (defined in the cpp file) is usually close to optimum for an accurate 5.0v supply.
If you see an uneven display with embedded vertical ‘black bars’ similar to the example shown below, the contrast setting needs to be higher.
Change from the default with the GLCD library call glcd.begin(set_contrast_between_0x15_and_0x1A) e.g.

glcd.begin(0x1A);

My testing above was done on a Jeenode USB.

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

Thanks for the extra info JohnO.

I think the 1 microF electrolytic caps were replaced with the blue ones. Its says in the assembly instructions:

Update: The latest kit version ships with ceramic capacitors replacing the electrolytic capacitors. This gives longer life and simplifies the construction detail since these capacitors are not polarised. See the Wiki for more detail

Theres no pictures of the new ones but given the kit shipped with four of these blue caps and none of the electrolytic ones I'm guessing these are what the update refers to.

I tried adding ISR(WDT_vect) { Sleepy::watchdogEvent(); } to the code I was using but it made no difference.

I also tried the code you linked, I'm guessing #include <ST7565.h> refers to this library (https://github.com/adafruit/ST7565-LCD/tree/master/ST7565) which I downloaded and used. Again I got similar results, the back light worked and faded out beautifully but nothing appeared on the display.

I also gave all the pins a bit more love with the soldering iron on the graphics board and JeeNode just in case but that didn't change anything either. I soldered all the parts from the bottom of the board and they're all definitely connected even if the solder hasn't seeped through to the top of the board on all the pins.

Photo of the bottom of the board

Images of the Jeenode

Admittedly my soldering isn't very pretty but I think its all connected where it should be.

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

I don't see any solder on the panel connections, how are you making those links? I enclose two photographs of my board where I used headers to connect the panel. If I eventually assign a use to the board I will probably remove the headers and solder it directly.

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

Just tried actually soldering in the display headers instead of holding the display so that all its pins touched the holes but that changed nothing. I'm pretty sure its not the code but something to do with my wiring now though, gonna get the multimeter out and do some probing.

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

Alright I found this (https://forum.jeelabs.net/node/47.html) forum post where someone was reporting contrast problems with their display. In it some values for the voltages across the display pins are given by jcw. I measured the voltages for my display by connecting one of the boards ground pins to each display pin with a multimeter and these are the results I got.

Some of the pins I measured would rapidly loose voltage as I measured them, it felt like I was watching a capacitor discharge or something as the rate the voltage decreased slowed down as I measured them. I put a * next to these values and jotted down the highest value I saw.

Pins 13 - 20 all look good which is encouraging but the others are clearly off. JCW mentions a voltage multiplier in the thread I referred to which is what I'm guessing is not working here as most of the voltages are below what I'd expect.

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

About out of ideas here, tried soldering the solder jumper to P instead of I but that did nothing so I changed it back. I've been looking over this diagram to try and work out what's going wrong

The pink lines all come directly from the JeeNode and are all fine.
The yellow lines arn't used by the graphics board so you can ignore them.
The cyan line is all correct too with 0V

The red line is I guess where I need to focus, I measured the voltage before and after the resistor and before its 3.3V and after is like 2.8 or something. Thats what made me try soldering the jumper to P instead since the PWR line is 5.1V not 3.3V but yeah nothing changed. I'm guessing JP6 is the backlight, although I don't think you need the backlight connected for the display to work so maybe not.

I've ordered another display which will hopefully just work, but it'd be nice to know why this one died on me.

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

Might there be a problem with some of the Jeenode port lines for P1/P4?
How is the GND connection shared between the Jeenode and the Graphics card?

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

"Might there be a problem with some of the Jeenode port lines for P1/P4?"

Its possible, that's why I'm trying to trace all the lines and find the culprit. I think PWR, DIO and AIO are all fine given they just go straight to display pins 14 - 19 and those pins were ok. Looking at this image (https://jeelabs.net/attachments/502/jlpcb-111.png) I'm pretty sure the VCC line for all ports never touches anything to do with the display and is just brought out to other ports in case you want to use it. Which leaves the GND and the IRQ lines.

"How is the GND connection shared between the Jeenode and the Graphics card?"

If I've read the above image correctly you get something like this (GND is black):

So I think each ports GND pin is connected along with the negative pin for the backlight, display pins 6, 13 & 20, all the yellow caps and one of the blue ones. But then the IRQ line just connects to the GND line through the backlight so maybe its not the IRQ line that's the problem after all.

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

Perhaps a sketch to verify the basic DIO/AIO hi/lo operation of P1 & P4 with a resistor and a LED. Any caps shorted?

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

New board arrived, but was missing one of the blue ceramic capacitors so I couldn't use it. I ended up doing something I probably shouldn't have done and plugged the new display into the old board. It worked briefly and then died, specifically it pulsed the demo graphics twice slowly and is now the same as the old one as far as I can tell.

I feel like I'm killing displays here and I don't know why but I'm pretty sure its something very simple and it's going to be more than a little annoying when I find it out. At least I now know for sure its not the code, plus since I wasn't using the backlight at the time I also know its not a problem with the contrast or lighting.

I tried testing the capacitors to check if they're shortened and I think they're ok. I'm new to this so I might have done it wrong so I'll put my method here just in case. I disconnected the old graphics board from the JeeNode, set my multimeter to measure resistance and measured each cap. I could see the resistance increasing up to the max value I could measure for each cap. If I reversed the pins of my multimeter the value would swing back and go the other way, given these caps are not polarised I figured that was the correct behaviour.

Since the graphics displayed (albeit briefly) wouldn't that show the DIO/AIO pins are working? Its my understanding these are effectively the data pins which tell the display what to show right?

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

:-(

Sorry to read that haiku.

RE: Graphics Board wont display anything - Added by martynj about 1 year ago

`@haiku,

Something not right on the PWR line? Can you cut down the start up text string "glcd_demo" to a single character and monitor if you get more than one printed (this will happen if the processor is resetting)?

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

Hi martyn, thank for the suggestion.

If I change Serial.println("\n[glcd_demo]"); to Serial.println("b"); it still only prints out the single character 'b' over the serial monitor. I tried some other strings as well and they all came out as expected.

I never mentioned how I'm powering the JeeNode, I'm using a standard usb 2 cable from a USB 3 port on a laptop to the BUB.
laptop => usb3 port => usb2 cable => BUB 3 => JeeNode V6 => GLCD
Just in case that throws any alarms off for anyone.

RE: Graphics Board wont display anything - Added by JohnO about 1 year ago

I wonder if we could move the display code into the loop process and add a delay followed by a print of a loop counter. Loose the powerDown stuff.

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

Received the missing caps and a loaner BUB in the post today (thanks Martyn), but having a little trouble uploading sketches with it. This is a BUB 2 instead of a 3 like I've been using and its giving me these messages if I try and upload anything:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x84
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x84
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

I ran into this problem with the BUB 3 as well but it turned out the problem was I had it set to the wrong board type ('Arduino Duemilanove or Diecimila' instead of 'Arduino/Genuino Uno') but neither seem to be working for this one.

In the IDE I have COM5 selected as the port (the only option).

Im using the FTDI driver version 2.12.28.0 with the settings:
Bits per second: 57600
Data bits: 8
Parity: None
Stop Bits: 1
Flow control: None

All I've done to the board is solder on the female header so I can plug in the JeeNode.

The green and red led flash on the BUB 2 when I first plug it in but BOTH turn off straight away after that. Not sure if that's normal cause on the BUB 3 I know the red LED stays on.

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

JohnO, is this sort of what you mean?

#include <ST7565.h>
#include <JeeLib.h>
#define BGLIGHT 3 // Backlight (IRQ) Pin

ST7565 glcd(14, 4, 17, 7);
int iteration = 0;

void setup () {
    Serial.begin(57600);
    Serial.println("\n[glcd_demo]");
    rf12_initialize(1, RF12_868MHZ);
    rf12_sleep(RF12_SLEEP);

    glcd.st7565_init();
    glcd.st7565_command(CMD_DISPLAY_ON);
    glcd.st7565_command(CMD_SET_ALLPTS_NORMAL);
    glcd.st7565_set_brightness(0x15);


}

void loop () {
    glcd.clear();

    // draw a string at a location
    glcd.drawstring(40, 0, "ARDUINO");
    glcd.drawstring(10, 2, "ST7565 128x64 GLCD");
    glcd.drawstring(22, 4, "Graphics Board");
    glcd.drawstring(20, 6, "JeeLabs.org/gb1");

    glcd.drawcircle(5, 5, 5, WHITE);
    glcd.fillcircle(121, 5, 5, WHITE);
    glcd.fillcircle(6, 58, 5, WHITE);
    glcd.drawcircle(121, 58, 5, WHITE);

    glcd.drawline(40, 9, 81, 9, WHITE);
    glcd.drawline(40, 11, 81, 11, WHITE);
    glcd.drawline(0, 42, 14, 28, WHITE);
    glcd.drawline(112, 42, 126, 28, WHITE);
    glcd.drawrect(0, 28, 127, 15, WHITE);

    Serial.print("iteration:");
    Serial.println(iteration, DEC);
    iteration++;
    delay(500);
  }

I got rid of the backlight fade out, fade in stuff since I'm not using the backlight right now. I uploaded this with the BUB 3 and heres what it prints out:

iteration:
63
[glcd_demo]
iteration:0
iteration:1
iteration:2
iteration:3
iteration:4
iteration:5
iteration:6
iteration:7
iteration:8
iteration:9
iteration:10
iteration:11

If I'm honest I'm not sure where that first 63 comes from, especially since iteration isn't undefined at any point. But otherwise it looks like I'd expect.

RE: Graphics Board wont display anything - Added by martynj about 1 year ago

With the BUB II connected only to the host:
You will see TX & RX flash briefly during enumeration. Then Tools/Port should list the COMx to select.
Open up the Tools/Serial Monitor (57600 is correct for later, not important for this check)
Type random short lines - the TX led should blink for each line entry but nothing displays in the monitor box
Loop the TX and RX adjacent pins on the BUB (a paperclip will work if you don't have a jumper wire)
Repeat the typing - both TX & RX led should blink for each line entry and the entered text echoes correctly in the monitor box

The symptoms are classic of BUB not reaching a valid bootstrap - the bootloader is already validated since you are loading fresh sketches, ditto the TX/RX path, so something in the RESET logic?

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

Type random short lines - the TX led should blink for each line entry but nothing displays in the monitor box

Tried this just now and the TX led blinks as it should.

Loop the TX and RX adjacent pins on the BUB (a paperclip will work if you don't have a jumper wire)

Sorry not sure what you mean by this. Do you mean connect these two pins here?

RE: Graphics Board wont display anything - Added by martynj about 1 year ago

Sorry - I wasn't clear. The TX/RX pins on the 6pin interface. This is looping back the character stream from the BUB back into it's input.

RE: Graphics Board wont display anything - Added by haiku about 1 year ago

Ah, that would make way more sense. I just gave it a go and both LEDs blink as they should but nothing I type gets echoed back into the monitor box.

I have a suspicion its the cable I'm using, the only mini usb cables with data lines I have are over 3 metres long. Could it be the signal makes it to the BUB but not quite back again? I'll see if I can find a shorter one from somewhere tomorrow and try it instead.

RE: Graphics Board wont display anything - Added by martynj about 1 year ago

I expect the enumeration handshake would fail if there was a USB cable problem. That USB II was verified just before shipment so that you could have a known good device for debugging.

At this point, I suggest uninstalling the FTDI drivers completely and getting a fresh copy from their site.

The USB II uses the FT232R chip and the solder bridges are pre-set to what is required (5V power pass thru and regulated 3.3V logic levels)

The USB III uses the FT231X chip and the solder bridges should be the same.

With the USB III connected, the TX/RX/DTR/GND signals/paths must be good else avrdude would fail to talk to the bootloader. The bootloader is good, else the sketches would not download correctly.

CTS is active on the USB III but should be n/c (there is no trace to that interface pin on the JNv6)

That just leaves Vcc to validate. You are seeing ~5v on PWR, but that is a multimeter not a scope so glitches would be missed.
Hence the USB II substitution to eliminate Vcc issues.

(1-25/39)