Sunday, March 21, 2010

Fonera 1-wire continued... The Display

OWFS supports HD44780 character LCDs on the 1-wire bus. The most common interface is with a DS2408 8-pin GPIO to 1-Wire chip. The interface from hobby-boards runs the display in 4-bit mode, so 3 GPIO lines are left over for buttons and whatnot. I based my design on their schematic.

The SOIC8 is an NE555 in monostable mode. It provides timed backlight control. When a button is pressed the backlight will stay on for about 20 seconds then turn off.

OWFS (theoretically) supports this interface with the LCD_H module.
In ideal-land I'd hook up my hobby-boards clone and type
printf "Hello World">/ow/29.xxxxxxxxxx/LCD_H/message
and that would actually work. Well, as it turns out: Not so much.

It would seem that OWFS 2.7p13-1 has a broken LCD_H module. I've tested with 2.6.5 in an Ubuntu VM where it worked fine. With 2.7p13-1 however, all I got was garbage for the output.
There's a bug report here, that may or may not describe the same issue. If it does then it would seem that the bug has been ignored for several years. Nice!

Problem is I'm not ready to devote days to building a crosscompile environment for mips/OpenWrt because of some random bug. Since byte-based access to the GPIO-port worked it was faster to just re-implement the protocol. Which I did.. in PHP.. (it's just a testing script at this point, so adapt as needed if you wish to use it. Should be easy to figure out.)


  1. Love the work you've put in. I have started building my own house and am at the first fix stage.
    Having run Cat6 everywhere, I'm thinking of a combination of things like 1-wire/dmx-512/x10 etc to drive my house.
    I love the idea of a timed backlight.. any chance you could post a diagram of the mods made to the hobby boards design?

    Many thanks,
    Nanna H

  2. Thanks :) Sure thing.
    There are a few problems with it though.
    1, The schematic looks terrible
    2, The RJ11 pin connections are wrong
    3, The RJ11 socket's on the wrong side
    4, The spacing is ALL wrong (for my display module anyway). (Ideally I'd have liked to fit the display between the buttons and the RJ11 socket but mine doesn't fit at all. Had to raise the connector so that the screen sits on top of them)

    There's a chance I'll correct it if I ever build another one.

    Let me know if you end up building it or basing a design on it. :)

    Good Luck!