Jiamin’s Status Report for 12/5

This week and the past week was spent in preparation for the demo that was on Monday, and making the final presentation slide deck for next Monday. We all met as a team as we continued to finish integration on the hardware side. Majority of the progress can be seen in the post titled “Team Status Report for 11/25”. Everything on the hardware side is basically done and I have given Iris the .bin file needed to flash the Nucleo, just in case if she needs it. I worked on on wiring the LEDs to signal I2C transmission to the Jetson Nano, and I have been coordinating with my friend at TechSpark to complete the enclosure. The RFID was being finicky if an user actually taps and touches the device since I think the expansion board becomes loose from the Nucleo board, and thus we made a clear acrylic enclosure for the RFID tag. I also painted our enclosure black so it has a more slick look. Rest of the time, I have just been helping Iris and Minji out when possible with the Jetson and Cloud stuff. Before we all left for break, we filmed a couple clips that we plan to use in our final presentation and final demo video. Overall, progress has been on track, and next week will be spent working on the blog post and final video.

 

Jiamin’s Status Report for 11/21

This week I contacted my friend who worked at TechSpark to help us out with our enclosure idea. We got all of our final pieces in, including the display monitor and power strip, so we were finally able to get the dimensions that were needed. The detailed photos are shown in this week’s team status report. Iris and I met to finish the integration between the Jetson Nano and Nucleo. We were finally able to get the strings to concatenate correctly on the Nano. For some reason when we are inactive for some period of time, we would lose the first byte of the string UID. We explored the possibility of a timing issue and considered maybe having the Nucleo do a memory write to the Nano. In the end, we modified the code to be able to get the correct string by having the user tap twice. With this change, we needed something to indicate to the user the read and sending of the string UID was not successful. Thus, tomorrow I will go into HH with the team to wire LEDs to a breadboard and to the GPIO pins of the Nano. Since we will be going into lab tomorrow, I will also test out the “wake up” signal again. I am still on track since most of the things on the hardware side is done, we are just figuring out the rest of the pieces for things to come together during integration. Next week, I am hoping we will have the CAD files for the enclosure ready but not sure if we will be able to laser cut the prototype. I heard from my friend that TechSpark is closing for students due to increased COVID cases 🙁 so we might have to reach out to a staff to do the laser cut for us. I will continue to work with the team as issues come up, and I will also see if Iris and Minji need any help on the IoT side.

Team Status Report for 11/14

This week we worked on hardware integration of the Nucleo and Jetson Nano for our Demo. We also met on Thursday with TechSpark to discuss how to make an enclosing for our hardware. We thought about just getting different enclosing for each component, but we feel that having everything in one thing would be best. We also made a purchase of a display monitor so that it can be embedded within our enclosing and be used as the display for user interface. The most significant risks that could jeopardize the success of the project is the accuracy of the temperature sensor since we don’t have a good way of testing human subjects with fevers. Although we did and will be testing various temperatures of objects to meet our past stated metrics. We changed our cloud implementation to be Python based instead of using Node.js since we are more familiar with Python even though there are more IOT stack examples using Node.js

Jiamin’s Status Report for 11/14

This week was spent in preparation for the demo that was on Wednesday. For the beginning of this week, I started looking into how to implement SPI and UART for serial communication. But in the end, we stuck with I2C for the Nucleo to Jetson Nano communication. I spent a good amount of time in HH debugging with an RPI 4 to figure out i2cdetect by testing with internal vs. external resistors, the voltages, and signals of different things using an oscilloscope. There was weird behavior with the RPI with setting the slave address of the Nucleo and trying to i2cdetect. But when we tried this directly with the Jetson, it worked on both busses! We were able to run i2cdetect on the Nano with the intended slave address. I was able to HAL_I2C_Slave_Transmit() the UID of the RFID tag. This was originally tested in a separate environment so then I also took some time integrating I2C peripherals and logic into the actual NFC environment. I tested this RFID tag reader with the CMU student ID and it is able to read the tag of the CMU ID. With the FSM I wrote last week and a little debugging, we were able to get things to transmit. We also tested slave receive, in the case that we plan on having the Nucleo receive a signal from the Jetson. However, there was some strange behavior when Iris and Minji tried to concatenate things on their end, so that will require further debugging. In addition, last week I thought I was able to get the disable auto power on for Jetson to work, but I realized I made a mistake. It turned out that I was sending 3.3V to the GND pin of the Jetson. While it worked for the 2-3 tries I attempted, it didn’t feel stable as a long term solution. After I tested things out the a voltmeter and with the intended voltages on the pins, I was no longer able to get the “wake up” signal to work. Overall, I am on track since I was able to get all the functionalities I wanted to get done on the Nucleo except for the “wake up” signal. Next week, I will look more into this logic and start thinking more about the enclosing we want to make for our whole system. We talked with TechSpark, and they suggested that we can look for individual enclosing that already exists online, but I think we will have to design our own to account for the temperature sensor and Nucleo expansion board.

Jiamin’s Status Report for 11/7

This week I worked on writing an fsm logic for reading, detecting, and sending the uid with the Jetson nano. I also wrote some dummy data to test that global signals within the files are working as expected. I wrote up all the code needed for the wake up signal and I2C at the beginning of the week. I met up with the team on Friday to integrate the system. The wakeup signal logic worked as expected but it would reboot the entire system if we didn’t keep it shorted. Thus, we will need to re-adjust the function of our wake up logic to maybe something like: turn off the Jetson after X amount of time at some idle state. The big issue right now istthat I2C integration was not successful. I was never able to detect the Jetson nano when wired with i2c. However, I was able to detect the temperature sensor and an arduino uno’s i2c. I am not sure what is causing the issue with the nano i2c. Another issue on the Jetson Nano side is that the second set of I2C busses does not work. The temperature sensor right now works using bus 0 on Jetson Nano but it breaks when using bus 1. That is also something we will have to debug if I can get I2C to work on bus 0 of the nano with the nucleo board. Due to these issues, I am slightly behind schedule. Next week’s goals are to try working with an RPI 4 to see if the Nucleo can detect the RPI. I will also look into SPI and UART transmission more. SPI is not looking like a good option right now due to the lack of documentation with the Jetson. UART does not provide bi-directional communication.

Team Status Report for 10/31

The most significant risks right now is if the facial detection algorithm is too laggy. It’s mentioned more in Iris’s status report, but we were planning on taking advantage of pre trained models that boast high accuracy numbers, but we found out that its very computation heavy and makes the Jetson Nano run very slowly. We are pivoting towards a more Haar classifier approach, but we are getting pretty low accuracy numbers so we will need to work on that more.

No changes have been made to the existing design from last week. We have updated our Gantt chart according to our progress made so far, to better reflect our goals for the demo on 11/9. All the slack time we added was really helpful because we are still fairly on track with our final goals.

Jiamin’s Status Report for 10/31

I got the NFC05 expansion board from school on Monday and started integrating the drivers and files from the Nucleo L764RG with the X-CUBE-NFC05. This took some time since some files were different and I had to look through individual files and make sure I placed the right things in the correct folder path. I also got the platformLog() to work so I don’t have to use my own printf() function anymore. With the tag bags I bought, I was able to start scanning on the expansion board. The UID also reads successfully! It matches the information that is shown in the NFC Tap app, when reading the tag on the phone. I started looking into the I2C protocol and how to handle that on the Nucleo. It does have HAL_I2C drivers so I will definitely be using those functions. Although when setting up the i2c peripheral in the Cube IDE .ioc file, it tries to regenerate code to match the new set peripherals, which messes up the RFID scanner code. Next week, I plan on working in a separate environment to get the i2c to work with the Jetson Nano, before trying to integrate with the RFID scanner environment. I also might need to buy some wires for next week to do connections between the Nucleo and Jetson. I will have to work with Iris to make sure the Nano has the i2c and GPIO permissions set up so that it can actually detect the Nucleo. We updated the Gantt chart to better reflect our progress (see team status report) and I am still on schedule. I am aiming to complete i2c by next week.

Jiamin’s Status Report for 10/24

This week was spent making sure that the current NFC02 board is incapable of performing the functionalities we wanted and figuring out how to do print debugging with the Nucleo board. Last week I was able to get blinking LEDs but since I didn’t have any NFC compatible devices I wasn’t able to fully test out the program. I borrowed my roommate’s phone and found some weird inconsistencies with the NFC code provided vs. what I have changed. I read a lot of code and documentation for NFC02 to confirm that we needed to submit a new purchase request for the NFC05 expansion board.  I did a search for “id” in the documentation and all I found was things related to getting the driver id, but none about the card/device id. NFC05 does have the RFAL library that seems to be able to read the id of  the card/device. I then started looking into the files provided in the X-CUBE-NFC05 and saw that they use this platformLog function. However, this type of debugging isn’t automatically enabled so I have been trying to look into print debugging with the IDE and seems like using puTTY will be the most ideal option. I got printf() to work by using the HAL library and UART. 

Progress is still slightly behind schedule because I had to purchase a new board. But I am confident that I can catch up to the current timeline once the new board arrives. I am hoping that it will arrive by early next week. This way, I can set up UART to get print debugging to work. More research will be done since the demo code uses platformLog, so I will play around with that. With print debugging working, I hope I can finally read the UID of the tags I got

Team Status Update for 10/17

This week we worked on the design review document deliverable that is due Monday. The most significant risk right now is if we can’t read the tag UIDs from the NFC expansion board. Jiamin is going to do more research to see if libraries are available or if a new board should be purchased. The new board should work if purchased since our Nucleo board model has been tested and is a driver that is included in the demo, unlike the NFC02 we have right now. More details are mentioned in Jiamin’s status report. Everything on the software side has been going according to schedule. No changes have been made to the existing design of the system since we just finalized some of our components from working on the design review presentation and document. We did submit some more purchase requests for type 5 tags.

Jiamin’s Status Update for 10/17

This week I was finally able to get the drivers for the X-CUBE-NFC02 to work with my Nucleo board. I was able to successfully run the project demo in my own workspace. I made sure I added all the paths to my .h files, edited all the original NFC02 includes to my board (stm32l4xx), added the library folder path, and other necessary files that needed to be included in the “Core” folder. The main issue that I encountered last week was solved by a simple #define. It didn’t originally cross my mind since I didn’t see in the project demo where they included this line. After I got the X-CUBE-NFC02 software to work, I started to think about how I can retrieve a card’s unique ID (UID). At first I thought I could do this by integrating the CR95HF drive with it, but it led to more driver incompatibility issues. I did a search to see that the documentation for NFC02 never even mentions this driver while the NFC03 board does. Then I saw that NFC03 and above boards have this RFAL library that my NFC02 board does not have. I read the provided documentation in NFC02 to see if there is a way to get the tag UID and there is a function called “M24LR_i2c_ReadDSFID”. The documentation is not very clear and I still need to do more research on M24LR drivers to see if  it can do what I want. I did take a look at the X-CUBE_NFC05 software package because it was tested with STM32L4xx drivers. In the demo file provided, it seems that the RFAL library provides an nfcDevice struct with a pointer to nfid. I might need to consider upgrading the NFC expansion board if the M24LR functions cannot provide me the information I need. Additionally, I spent a good amount of time looking at how to do print debugging in the STM32CubeIDE. I think I got something to work but it’s not the most ideal situation. I also worked on the design review document this week because the deliverable is due Monday. 

My progress is behind schedule because I just ordered the ST25 NFC tags last week and they were delivered to Pittsburgh. I am flying back tomorrow to stay for the rest of the semester. I also put in an order for new tags because the tags I last ordered are type 4 instead of type 5. By next week, I am hoping I can read the UID of the tags with the NFC02 board. If I deem this is incapable of doing, then I need to do some serious research and put in an order for a new expansion board. I will also meet up with Iris and integrate the temperature sensor on the Jetson Nano.Â