ECE434 Project - Bictochat
Embedded Linux Class by Mark A. Yoder
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
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.
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.
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.
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.
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.
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.
Embedded Linux Class by Mark A. Yoder