Pi Chips

This site is sponsored by ByVac and maintained by Jim Spence. The devices on this site are an evolution of the BV devices. The main motivation was for the Raspberry Pi but not restricted to that device. The Rpi  has a serial interface on the GPIO bus and so is convenient but this also makes devices that use serial useful to all other devices that support serial and that as far as I know is just about every PC, operating system and microcontroller.

The serial protocol used has been developed over many years, protocol is probably too strong a word as like all good things it is incredibly simple, just requiring an address byte at the start and a CR (13) byte at the end. In fact it started out more complex and has become simpler as time has passed - like water going through a purifying filter.

Apart from being simple the main advantage is that more than one device can be connected to the serial bus, this leads to being able to automatically detect what devices are on the bus and of course only two wires are required for many devices. Having used both I2C and serial for a long time I can say that the serial protocol is superior particularly when it comes to larger blocks of data. Another problem with I2C is that it is implemented in different ways on different hosts and so whilst it may work with simple devices, as intended, when more demands are made it can fall over. This is not a problem for serial as it is so simple there is nothing to get wrong.

As a caveat to above, the main problems with a serial interface was round the handshaking that was implemented a long time ago when devices were cumbersome and people knew no better. There is considerable confusion over CTS,RTS,DTI... and all of the other handshaking lines. If these are completely ignored then the serial bus becomes useful and easy. If necessary, and sometimes it is then the CTS,RTS lines can be implemented at a later stage.


Having used many and written a few languages I thought that the Python indentation system was a bit daft. But all languages have there little foibles. What I can say is that because of the support this is a superbe language for cross development - I really mean Windows and Linux, I can't afford a Mac so have no experience of them. There are no (none zero) code changes required from one platform to another, for anybody who has had to struggle between the serial port differences on the platforms will know how much of a god send this is. I also find it quite pleasant to use but what is often overlooked for a user experience is that it can be used fully at a lower level and then as experience increases more advanced features can be used.

The easy thing to do is use the command line interface, but from a user point of view a GUI is much better and in fairness some things such as changing values on an EEPROM is VERY much easier using a GUI but these are HARD.

I have absolutely no doubt that a group will come up with a GUI development platform for Python that mimics Visual Basic or other similar platform that let you place the objects on a window without regard to the underlying code. (come back Boacontructor).

For now (late 2013) I have to use Glade and write separate event code which at the moment is okay but every time I change my mind about the layout (quite often) I have to modify the generated code.