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.

MeeDm’s Status Report for 10/30/2021

I finished up tweaking the code for Tarush to then call from the web app to call the tags. While before I had it so that Tarush called my function using a microchip number, I made it so that if he gives the user, I can then update all of the cats for the username. I did this by organizing all the cats informations, and then calling the function to write to the json file. Also before I was making it write to a txt file and I edited it to write to a json file. I’m also working on the cad design for the enclosure. Because the previous enclosure had some design flaws, I’m making it again in blender.

My progress is very on schedule. I’ve been working pretty hard and I just have to wait for the tags to be done. Until that is done I will cad design both the enclosure and the load cell.

I hope by next week the cad designs will be completely done and hopefully when Lucas is done with the PCBs I can then connect to them and figure out 100% the connection to them.

Team Status Report: 10/30

The most significant risk could be how long the hardware is taking to get done. That is, if the tags do not get down, the connection to the software then the web app can take a while, as we have not “ordered” our pcbs. However, we have been working on making the pcb’s ourselves, and have been working on the connection between the software and the webapp and have that pipeline done. We’re making sure to get the rest of the pipeline done (and we have) so that as soon as the pcb’s are finalized and done, we will be ready to test them.

The most we have changed is that the user now has an option to poll the tags for information. We have already figured this out, and have made it so that the web app calls the software to poll. That way it can handle both the default case (2 times a day) and when the user asks.

There hasn’t been significant changes to the schedule.

We have all been hard at work at our own parts. Tarush has finished login and registration for the user, MeeDm has finished up the connection between the webapp and the software part of the tags as well as connecting to the tags and getting information, and Lucas has the pcb’s mostly printed and we are just working on putting the components on them.

Tarush’s Status Report for 10/30/2021

This week most of my time was spent figuring out how to integrate the JSON files we will be using to store each cat’s info with the database and how to access them. Along with that, I made sure that whenever a user registers a new cat or is a new user themselves we add a new directory in our web app for them and in each directory we have individual JSON files for each of their cats.

By this coming Wednesday I hope to have created the profile page for each of these users which allows us to access the individual pages for each of their cats. I also plan on having the graph library setup and being able to take in dummy data and display it on the page. I am expecting to run into some roadblocks regarding the graph library as I have never used it before, but I hope to still have it up and ready this coming week!

 

 

Team Status Report: 10/23

This week, the team worked hard to get through the first steps of seriously integrating the different components of the project into a cohesive data pipeline.

MeeDm wrote scripts for the RPI Hub to connect to the BLE Tags and read in service and characteristic data from them. Tarush worked on getting the web app reading the json file MeeDm’s code will fill with the sensor tag data as it streams in. Lucas got the tag dev kit advertising out and connecting to the hub via BLE.

With information actively being read by the hub through a bluetooth connection from the sensor tags and being piped to a file the webapp reads, we finally have an actual data pipeline! This week, we’ll build on top of this basic skeleton of a system and aim to have weight data from a load cell actively being displayed on the webapp in the form of a live graph. This will involve getting weight tag firmware reading values from our custom HX711 breakout board, hub software organizing those values into a json file, and the webapp reading from the file and converting the information into a live-updated graph.

Lucas’s Status Report: 10/23

This week I focused on a combination of getting firmware rolling, wrapping up PCB part sourcing, schematics, and layouts, and working with the team on integrating the full communication pipeline from BLE tag to hub to web app.

Last week, I focused way too much on setting up the ble tag firmware development environment and finishing the PCB’s at the cost of working more on the design report – I wrote the abstract did a little bit of editing, but little more than that. Luckily, several of the system diagrams and notes on hardware tradeoffs I made before came in handy in the report, but I definitely should have actively worked on it more.

What that time went into was firmware development, hardware development, and parts sourcing. Firstly, I jumped through several painful hoops getting the Keil development environment, Dialog SDK, and SmartSnippets Toolbox all working on my Mac (after a lot of time spent on stuff not working properly, I bit the bullet, bought Parallel, and set it up on a Windows VM). The result is that I can actively develop firmware for the USB dev kit as well as our future custom tags. With the LED blinking, I have the hello world I wanted to get. The tags can actively be run from a debug build and I confirmed that permanently flashing them also works.

On the PCB front, things are not as far along as I’d hoped, but still steadily moving along. The parts are all selected for the weight and rfid sensor portions, and I have completed the design of breakouts for the main chips. This just leaves the primary tag pcb left, with just a little work left to be done on getting the SPI Flash memory chip and SWD JTag done.

 

Finally, I used the PCB mill at my job’s office to get the prototype breakout boards cut out:

It’s great to actually have these things physically in my hands!

No description available. No description available.

I have been actively chugging through datasheets for the DA14531 ble/mcu, the spi flash, the accelerometer, the rfid chip, and the hx711 adc/amplifier. Next week, I’ll aim to have the ble usb dev kit reading values from the HX711 (connected to the load cell). In other words, next week will see the weight sensing up and running and (hopefully) displaying live data in the web app.

 

 

Tarush’s Status Report for 10/23/2021

Oct 10-16th:

I think it is important to mention the work I put in last week regarding the design report. Due to some issues, I had to end up writing at least half of the design report, requiring quite a bit of time from my end since a lot of it involved writing in detail about parts that weren’t my expertise. I wrote about the design requirements, all the design trade studies, the whole of project management which included the schedule, responsibilities, and risk management, as well as related work. I also spent time working with MeeDm on how we would want to use python for reading and writing data to and from JSON files to be further used by the web app.

Oct 17th – 23rd:

This week I worked on setting up the database for the users and their cats in SQLite. I also created a login and registration page where users can input their and their cat’s information like email, username, cat’s age, weight, etc. and it gets stored in our database.

I spent a bit of time with MeeDm as well designing how we wanted our JSON files to look like for storing the cat’s information as well as the directory structure for the different users and their cats.

My next goal would be to get the HighCharts graph library up and running where I will read in some of the dummy data we currently have and display them on the graphs. I’ll also spend time with MeeDm completely wrapping up and flushing out any other details left for communication between the Rpi and web app.