Here are some tips you should read carefully and consider for your project, in no particular order.
These include comments from previous students that they provided in their reports. The most valuable input you can get is from those that have already gone through the experience.
A good designer is an experienced designer that learns from their own previous work and the experience of others. We build ever more complex widgets. There is no time to rediscover what others have already done and learned.
For example, if you are building something using video, you should first get a simple design that takes in video, stores frames in memory, and then displays the frames. Once that is working, then you can start doing things to process the frames knowing that you have the basic input and output working. This way you can also see what effects you are having on the video by the processing that you are doing.
A common source of problems is at the interfaces, which can be hardware/hardware, hardware/software, and software/software interfaces. These problems are often not revealed until you try to integrate the pieces of your design, which means you are already late in your design cycle, and panicking to get your project done.
The software/software interfaces are usually easier to deal with because there it is much easier to debug. The interfaces involving hardware are much more difficult.
Get your interfaces working first! Even if you intend to build some custom block of hardware, you can usually figure out a way to build and test the interface using some simple dummy internal logic first.
Once the interfaces have been developed and tested, it makes it much easier to work on the separate pieces and be confident that the integration will work later with little difficulty resulting in much less panic! It is very difficult to isolate problems when testing an entire system.