During the final week of the project, we finish each out the separate components and combined them to make the final product.
Joe implemented Uart communication between the fingerprint scanner and the PIC. This had been a problem during the past week, but the correct protocol for sending command packets to the fingerprint scanner from the PIC has now been implemented. Using the fingerprint scanner documentation with assistance from a library in C++ for Arduino found on Github, all the necessary fingerprint functionality could then be implemented. The fingerprint scanner is able to perform initiation, enroll, deletion, and fingerprint comparison functions. These were tested by displaying the response from the fingerprint scanner on the LCD display after each command was sent. The response would either return acknowledgement or error messages which could be interpreted using the fingerprint documentation. The fingerprint library was written so that functions could be performed completely after being initiated by one variable in main. The fingerprint scanner was also soldered to a nicer looking proto-board.
As far as sound production, Phil had an issue last week where he was unable to produce appropriate sound from the SD card. The music files were played at lower frequencies than they were supposed, causing the song to play slower than usual and had a large amount of static. Phil was initially using interrupts to send data out to the DAC. This was interrupting the process of reading from the SD and performing DMA transfer. Previously the interrupt triggered a DMA cell transfer and generated a chip select signal for the DAC. This was fixed by moving this functionality outside of the interrupt and little use of the main processor. Chip select was using output compare in dual compare mode. The DMA cell transferred was triggered using a timer. This allowed for a complete transfer of data to the DAC the wav files could be played at normal speeds.
Austin wired the board and did the interfaces. He stripped the board of its spaghetti wires and rewired it beautifully. He made displays for history, enroll, and enrollment list. History included a list ID’s who had rang the doorbell. Enroll includes a song selection screen as well as demo song functionality. He combined code from Phil’s SD card reader to work for the interface, which included creating wrappers and organizing data in a way that it could be used in the rest of the project. The screen and the DAC are on the same SPI channel, so unfortunately it is impossible to use the touch screen while listening to a song. We initially had the screen with the SD card reader, but it caused the SD card reader to stop. Enrollment list displays all the ID’s which are enrolled and the songs which they are mapped to. The ID’s come from the code that Joe worked on.
In the end, we all come together in order incorporate all of the elements into the fingerprint scanning doorbell. This took much effort from all group members to make their separate contributions work together.