Github: Here\n Webserver: Here


We wanted to create a project that was both fun and technically challenging to us, and allowed us to work with languages we were confident in while exploring new topics.

What it does

The project takes in a user input from a microcontroller, to display a 32x16 bit image, compresses it into pixel information, sends it to a server and the server displays it. The user is prompted for a drawing from the server, and anyone can join the server and "guess" what the user is drawing. All display is done using I2C.

How we built it

We took an esp32 and uses some LED matrixes of our own to create a visual display, then used an arduino uno to process analog input from a joystick as the esp only has 1 analog read. After this we connected the esp to the internet, and using the http protocol, we transmitted and received data in sync with server events. The server opens websocket connections with multiple users to join and view the drawing updating in real time from the LED matrix. We have a selection of 40 prompts randomly picked and sent to an oled controlled by the ESP that prompts the user to draw.

The game loop consists of users guessing the prompt, and then in order of joining the users are picked as the "artist", and that user draws on the LED screen.

Challenges we ran into

  • The ESP8266 only had one analog input, and we needed two to read a joystick.
  • Balancing http requests for performance and quality -Synchronizing multiple clients with the hardware through the use of websockets and http

Accomplishments that we're proud of

  • Connecting an esp8266 and managing server-client synchronization
  • Displaying and updating a custom display interface dynamically over the internet

What we learned

  • http protocols
  • websockets
  • interfacing with the esp8266
  • I2C ## What's next for Pict-IoT
Share this project: