Team Status Report: 11/20

This week saw some major development towards system integration. Primarily, Tag firmware was finally developed to report load cell values over BLE to the Hub RPI. The web app also saw major updates in the form of better  graphs and value display. RPI Hub software was developed to better distinguish “danger levels” of eating habit disparities. Next week, we expect to have custom hardware Tags reporting weight values to our RPI hub. Next steps are to integrate RFID sensing and better data displays.

Lucas’s Status Report: 11/20

This week finally saw the completion of the full Tag to Hub pipeline. I mainly worked on the firmware required to make the DA14531 board report load cell values as a characteristic (a value sent through the bluetooth protocol to the rpi hub). I also developed the load cell weigh sensing to save values only if they surpassed a preset threshold. Next steps are to run a hardware timer that will report timestamps of when new weight values are added to the array of values – these represent individual “eating events” which the system will count and check for consistency.

Finally, I re-designed our pcb’s based around the now-available DA14531 Bluetooth module ( basically a small package consisting of the DA14531 chip, a 1 MB SPI Flash, and an antenna with a pre-made CLC filter). The schematics are fully finished and the layout is “near-done” (as in: I expected to etch it out today but it’ll have to wait until tomorrow). Making PCB’s in-house means they have to be CNC milled – i.e. they can only be single-layer boards. Not having multiple layer to route through definitely adds to the challenge of creating a complex, multi-component design, but I’m managing it.

I expect to have a functional pcb in my hands tomorrow (Sunday).

Tarush’s Status Report for 11/20/2021

Integration! I managed to accomplish a good amount of work on my end this week. First being I wrote the script (fully functional) which will be responsible for sending out emails to the user when their cat’s food/water intake might reach danger levels (based on the analysis currently being conducted by MeeDm) I hope to demo this feature to Professor Mukherjee and Edward on Monday.

I spent a lot of time working on the integration between my part and MeeDm’s code and am pretty much done with the main components required. Now whenever users register themselves and their cats, I also store all of this information in a json file which can be pulled on MeeDm’s end where she can get necessary information like the cat’s microchip number, user’s email address, weight per volume, etc. and make the changes to the right file for the right cat when pulling in updated data from Lucas.

I also spent time brainstorming how to resolve a potential concurrency issue we might run into where my webapp might be reading and writing from the file the same time as MeeDm’s code and do have a solution ready to implement if we run into that case. However, the odds of this happening are quite low since we only pull data through the BLE every 4 hours. Hence, I am putting this on hold for now and will revisit this near the end if we do start running into this issue.

My next steps from here on out would now be improving the UI of the web app, deploying it on the RPi, and refining the graphs to be shown on the cat’s profile page (how many lines per graph, scale of graph, etc)

I suspect a good amount time will also be spent on my end preparing for the final presentation (I will be presenting) since that will be held right after Thanksgiving break. However, I do think I am still on track to complete my part as intended and can’t wait to see how our project turns out!

MeeDm’s Status Report for 11/20/2021

Tarush have gotten our pipeline to work. We’ve figured out how to pipe data in between the web app and the software portion, and are now working on edge cases.

Lucas and I also managed to make a (crude) load cell design that does what we want it to do (MVP). It hooks up to a custom breakout board, the arduino, and then wired to the pi. We are then able to read in the data and print it out on the pi.

I’m now working on analyzing the data to find the right “danger level” tailored to each cat. Additionally I’m finding the consumed amount by the cat not only the raw weights.

Lucas has since figured out how to put up readable data to the bluetooth, and since I have connected to the tags before to read other data, we are meeting up in lab today to read in the correct data and finish up that end of the pipeline.

I’m well on my way to finishing up the last few things. That is, analyzing the data and then connected to the tags and reading in values. I’m on the right timeline, and that’s mostly all I have left other than edge cases for the project itself.

Team Status Report for 11/13/2021

The most significant risk is the pcb getting here in time. We only just managed to get them ordered so if they aren’t right and don’t work the way we thought we will have to just continue with making a breadboard version. The other thing is when the bluetooth will be ready on the tag’s end to figure out. If this does not get done within this week, we will have to switch to the wired version of our project.

We didn’t end up making any changes to the design. Lucas is close to finishing the upper two parts we have mentioned, and we think that it should work out in the end.

An updated schedule is attached below:

 

MeeDm’s Status Report for 11/13/2021

We demo-ed for this week. Tarush and I have finished figuring out how to communicate between us. I will be looping and checking the tags, and tarush will simply be looking at the files. To make sure this runs smoothly we’ve also implemented mutexes, so that the shared resource (files) don’t have a race condition. We’ve also been working on the characteristics with Lucas, and we finally have a couple done with this.

I still have to finalize the cad design for the load cell since talking to Lucas, but it is ready to print. I didn’t get to a lot of stuff (again), since I also got the covid booster and flu shot all in one go this week and have been sick up until Wednesday. I’ve been pushing myself to work on this, but I will be taking some more of that slack week to get myself at a point to start working again.

I’ve been feeling better, and Lucas and I are meeting today to finalize communications between our parts. By this week the goal is to finish up that portion, to finish up mutexes, and print the load cell.

Lucas’s Status Report: 11/13

This week I mainly worked on getting the demo fully ready and then continuing to build and polish from there. I was responsible for the hardware portion of our demo, which was a bluetooth enabled weight sensor. The device featured a load cell housed in my custom enclosure connected to an HX711 breakout board, which in turn communicated with our DA14531 USB Dev Board to read out weight values. Our demo was essentially a not-yet-fully-integrated version of our weight sensor tag.

The basic functionality of the demo involved a custom driver for the HX711, which would begin pulsing a system timer upon bluetooth connection being established. The driver waits for the “value ready” signal from the HX711 and then pulses out 25 rising clock edges. In turn the HX711’s shift register shifts out a 24 bit weight value which is then interpreted by the dev board. If the value is above a preset threshold, the dev board lights an indicator led. I primarily included the indication led to demonstrate threshold values because the device’s UART does not seem to be functional. Because it cannot therefore display values it receives in real time, I used the led as an alternative.

On top of firmware development, this week also saw big strides on the hardware front. The PCB’s are almost fully finished, and I have now designed, etched, populated, and successfully tested versions 1 and 2 of our custom load cell breakout.

The breakout board has several benefits over off-the-shelf breakouts, primarily in terms of flexibility. I included a number of custom  designed solder bridge pads that can be connected or disconnected to select between a number of features the HX711 chip offers. The most important of these is the RATE selection line – grounding it versus tying it to VCC selects between 10 and 80 Hz data rate. Leaving both rates as an option allows for testing which pulls less power and thus gives us more room for customization along the lines of power savings vs. speed as we polish the sensor tag design.

No description available. No description available.No description available.

 

I also worked on getting the PCB’s finished and ordered. I finalized the parts list and finally had the order placed. Unfortunately, I encountered a silly mistake late in the design process – we needed one more GPIO than the DA14531 chip had available! Essentially, the problem came from a late decision to have the RFID sensor tag run an accelerometer which would sense vibrations caused by a cat accessing the food bowl. Upon detection, the sensor tag would turn on the RFID reader to scan the cat’s ID chip. This design decision centered on the key point that the accelerometer would be orders of magnitude less power hungry than the RFID reader (as little as 10µA versus upwards of 200mA). In order to run the accelerometer in conjunction with our RFID reader, I figured we’d only need two GPIO lines to support the I2C protocol, but it turned out that the accelerometer also had a mandatory interrupt line in order to function.

I am now spec’ing out an I2C GPIO expander to allow for the additional I/O. Once that is done, I’ll have the PCB’s fully ready and ordered.

Tarush’s Status Report for 11/13/2021

This week a lot of my time was spent prepping for the interim demo. In particular, I was able to show off users being able to have their own profile pages along with links to separate pages for each of their cats. On the cat’s page we can see a line graph displaying the data from their json file. I also have a button on the user profile’s page which upon clicking refreshes the cat’s database with the updated information in the json file, and hence the graph as well.

The next steps would be to get the graph to contain the updated information without having to click on the button as well as having an email system which sends an email to the designated user upon detecting a sudden change in the cat’s water and food amount. I need to start working with MeeDm on now having a fully integrated system between the web app and her python scripts where the scripts can access the json files created by the web app, read and write to them, and then send an email to the user if necessary.

I am currently on track based off of the updated Gantt chart and am excited as we begin to enter the final stretch of the class.

MeeDm’s Status Report for 11/6/2021

I finished up the CAD design for the load cell. I’ve been working on the cad design for the enclosure for the rfid tag but that seems to be much harder on blender so will use solid works with Lucas to finish that up. I meant to print it on Friday, but I ended up getting really sick and had to rest since Friday and am only feeling better now.

I didn’t finish what I was planning on finishing by this week, but I’ve still managed to finish CAD designing, and am excited to print and finish up the last portion with Lucas to read in values from the tags themselves. I’ve finished up everything else on the gantt chart (technically I’m doing the cad designing which isn’t even my part), so I’m still on schedule which is great news!

By next week I’ll have printed the load cell and hopefully when Lucas finishes up with the pcb’s or breadboard will have at least started reading in values.

Tarush’s Status Report for 11/06/2021

This week was perhaps the most stressful one for me till now. It started off with me attempting to connect the web app to our git repository. I do not have an understanding of the inner workings of how the Django web application functions, and for some reason, since the name of the git repository and the web app were both trackat, this resulted in the web app not writing and reading to and from the correct directories. To tackle this, I thought a simple fix of changing the web app name from trackat to something else would resolve this issue, however it only seemed to exacerbate it and I was no longer able to run our application (even after changing it back to its original name). This led to me having to spend multiple hours (more than 5) scouring the web on how to resolve the problem and fix the multiple errors that came up. In the end, I had to essentially rebuild the web app.

However, progress was still made this week. In particular, whenever a user logs into our web app, he/she is redirected to his/her profile page and from there can access the pages of the various cats they may have registered. I also have created a button functionality on our web app where upon clicking it we refresh our database with the new data that was sent to our cat’s json files. I’ve also been working on importing the Charts js graph library to work with our web app and hope to have a basic graph set up showing it reading the dynamic data from the cat’s database.

Because of some of the hiccups I ran into this week, I am a bit behind schedule (nothing too serious) but should be able to catch up this coming week and am looking forward to presenting my work in the interim demo.