Networking and Communications

Build a wired &/or wireless network with at least two nodes.

Laser Networks

This week I wanted to experiment with making a laser network.

Making the transmitter

I dismantled a cheap red laser pointer. Bridged the onboard switch and then lasercut a new casing for the lens. Leaving the two power wires exposed so that they could be connected to a fab circuit.

It was initially powered by 2xAAA batteries (3V), and I created a MOSFET circuit on a breadboard to supply it that voltage whilst testing. Later on Jose Pablo pointed out to me that it was only drawing about 36mA, so I later made the decision to use the output pin directly from my Barduino.

Following the Spiral Development workflow I went through a couple of iterations for the receiver. I made cases to shield the electronics from ambient light noise. Beginning with a large balsa wood enclosure and a solar panel, then making a smaller plastic enclosure and finishing with an even smaller plastic enclosure with a phototransistor as the laser sensor.

After demonstrating the assignment to Neil I took on-board his advice that solar panels are incredibly slow for this type of application and whilst discussing it with Ramin he lent me his "TSL230RD Light-to-Frequency Convertor" which is an incredibly sensistive (and tunable) photodetector. Once I had this in my receiver, and after I tweaked the settings a little I could realiably increase the transmission speed ten-fold.


TSL230RD Light-to-Frequency Convertor

For my initial transmission I just wanted to send the de-facto message "HELLO WORLD" and print it via serial from the receiver's board. I chose an arbitrarily slow bit rate and tried to transmit it as regular binary without any kind of start, stop or checksum/parity bit. I quickly found that this wasn't really suitable and remembered learning about Manchester Encoding at university so re-encoded my data using that and added a start and stop bit.

Now that I had two receiving nodes I was able to theoretically determine which one would act upon the message by embedding a specific start bit.

V1 Source Code

This was reasonably successful and I managed to transmit the message about 10m inside the hall of the building I'm working in (IaaC, Barcelona).

Whilst I was doing this, a Fab Academy graduate, Guillem Camprodon, came over to me and suggested that I look at Neil Gershenfeld's work on Internet Zero. I read the paper and realised that up until this point I'd somehow fashioned a very crude version of it.

I2C

Incase you missed it I also did a bit of networking with a Master and Slave board in the input devices.