Digital Communications

Spring 2020

The questions below are due on Tuesday February 23, 2021; 11:59:00 PM.
 
You are not logged in.

If you are a current student, please Log In for full access to the web site.
Note that this link will take you to an external site (https://shimmer.csail.mit.edu) to authenticate, and then you will be redirected back to this page.
Back to Exercise 02

This is one of the only, possibly THE ONLY, design exercise that can be done in pairs for 2020.

For this design exercise, you are to build, from scratch, your own optical data transmission protocol just like those discussed in lecture 2. The system you'll deploy this on will be comprised of two ESP32's, each equipped with a bright red LED and a phototransistor (a light-sensitive transducer), allowing the devices to both receive and transmit optical signals.

imu hookup

High level Design. ESP32 #1 sends information to ESP32 #2 over the LED. ESP32 #2 can do the same back to ESP32 #1

1) Specifications for 2020

  • The system must be capable of transmitting data at over 500 BAUD (bits per second on average)
  • The system must use the phototransistor provided (data sheet here)
  • The system must use the red LED provided (though you can borrow a laser module if you'd like as well to get better range)
  • The system should be able to transmit and receive text messages. While you're free to use any representation of the alphabet, we strongly suggest you utilize the standard ASCII encoding since that might be easiest to deploy. (ASCII Character encoding here: ASCII TABLE)

We strongly recommend measuring the signal from the phototransistor using an analog input and then thresholding it in your code. You should also drive your red LED through a ~200 Ohm resistor to prevent blowing up the LED.

Your video should demonstrate successful transmission and reception of the data on both sides. Demonstrate the maximum range of your system. If you grabbed a laser module, feel free to show the system's range with the laser as well.

It is up to you to create your own protocol. You've only got one "channel" so you can't use a synchronous (clocked) protocol. It can be similar to UART (with an agreed-upon bit rate), or you can use an approach where the packet has a starting synchronization preamble.

Parts are available in any lab or office hours. Just ask staff

  • You must submit a Design Exercise Write-up. Use (the template file provided here). Read this file since it has some instructions about what to include.
  • You must upload all of your code that you used in your design. Failure to upload code will result in significant point loss. This includes if you just forgot. Screenshots of your file's last modified date in My Computer are not evidence that the file has not been changed. They must be uploaded.
  • You must also upload your video to YouTube or any other site that has a timestamp associated with it and is accessible by the staff. Do not upload it to a private video sharing thing where the staff can't see it. Youtube, Google Drive, TikTok (shudder) will all work. Just test the link. Enter the link in the third box below.

Submit your writeup here: No file selected

Submit all of your code here as a zip file: No file selected

Enter the url for the video

Problem Status:
A Python Error Occurred:

Error on line 2 of Python tag (line 108 of source):
    kerberos = cs_user_info['username']

KeyError: 'username'

This problem will not be marked as done (100) until graded by the staff. If you have filled it out, it will appear as with a note saying "Work Submitted" on the main ex02 page.

Back to Exercise 01