ECE434 Project - Bictochat

Revision as of 13:54, 19 November 2019 by Mulholbn (talk | contribs)
Jump to: navigation, search

thumb‎ Embedded Linux Class by Mark A. Yoder

Team members: Brendan Mulholland, Isaac Lau and Zachary Forster

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: I'm looking forward to seeing this.

Score:  10/100

(Inline Comment)


Executive Summary

Picture that summarizes the project.

The goal of this project is to allow multiple Beaglebones equipped with LCD touch screens to draw together in a sort of collaborative whiteboard. In other words, when one user draws in the drawing app on their screen, the result appears on all connected clients.

This is achieved by using a TCP socket server that transfers X, Y, and color data to allow real-time drawing on multiple Beaglebones.

Ultimately, we were successful in creating a shared canvas in which multiple clients can draw.


We created some small wooden enclosures to house the BeagleBones and mount the screens screens so that all of the wiring would be hidden. The enclosures are the same for all of the three devices we used to display our project.

This image shows the cases we made to house our project

The cases as shown have a hole cut out for the wiring for the display and a hole on the side for the usb cable that attaches the Bone to the host computer.

Installation Instructions

Source code available on the Github Bictochat repository

Install the display driver using the pinout provided on the pinout list on Github

User Instructions

Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.


Here is where you brag about what your project can do.

Include a YouTube demo the audio description.

Theory of Operation


The system takes x, y data from a mouse connected to the BeagleBone as well as pixel color data and sends it to the server that all of the devices connect to. The server then broadcasts the data back to all of the connected client devices so that the client can draw the pixel in the correct x, y location on the screen. With this implementation, all connected devices can draw at the same time and the server will handle which pixels on the shared screens are drawn to. Additionally, the server handles different colored pixels overlapping by drawing on the last received pixel's color.

The figure to the right shows the general flow of data through the system where the client collects the information to be drawn to the screen, sends it to the server, the server receives that data and shares it with all connected clients and those clients draw on their screens based on what is sent to them by the server.

Work Breakdown

Brendan Mulholland: Setting up drivers to enable the Beaglebone to communicate and draw on the TFT display.

Isaac Lau: Setting up communication via TCP socket server to send data between clients and server.

Zach Forster: Assisted in implementing communication and designed physical housing.

Future Work

Some future suggestions for this project include:

- Getting a better touch screen so that touch could be used to draw on the screen instead of a mouse

- Creating a user interface that could switch between multiple chat rooms

- Have the server keep track of who is connected so that users could set up custom chat rooms


In conclusion, this project didn't turn out how we originally planned because of the constraints involving the quality of the hardware (the resistive touch screen) but we are happy with the functionality of the project being able to draw on a shared screen. Furthermore, we think it wouldn't be too difficult to modify this project to use a larger display preferably with capacitive touch sensing that would make it more feasible to rely on the touch screen for drawing to the shared display.

thumb‎ Embedded Linux Class by Mark A. Yoder