ECE434 Project - Bictochat

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.

Packaging
If you have hardware, consider Small Build, Big Execuition for ideas on the final packaging.

Installation Instructions
Source code available on the Github Bictochat repository

Give step by step instructions on how to install your project.


 * Include your github path as a link like this to the read-only git site: https://github.com/MarkAYoder/gitLearn.
 * Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
 * Include a Makefile for your code if using C.
 * Include any additional packages installed via apt. Include install.sh and setup.sh files.
 * Include kernel mods.
 * If there is extra hardware needed, include links to where it can be obtained.

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.

Highlights
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

Conclusions
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.