Week of 11/19 Progress Report

Bill:

Due to the Thanksgiving break and being away from the lab, I wasn’t able to work on the platform.

Next week, I will continue working on getting the cup platform ready and fully set-up. We also ordered more liquid level sensors, so I will work on integrating those once they arrive.

Connor:

I finished up most of the UI for the admin, as you can see in the screenshot below.  Also, most of the functionality of the API is working. I currently have some kind of interaction between the Django API and the PostgreSQL database.

For this upcoming week, I will be moving the web app and the API to AWS to be hosted and accessible by both the public and the Raspberry Pi. I hope to complete this in the beginning of the week. I will also begin hanging both the valve and the mixing station, and once that is done, I also will work on creating the wooden casing for the system (most likely consisting of plywood).

Dave

Over the last week, I worked a bit on getting the integration between the Raspberry Pi and the API ready. Although the API is not yet deployed, I worked getting the Raspberry Pi set up to connect to the API with the models and endpoints that Connor and I had talked about.

The plan Thanksgiving week is to finish the software part on the Pi and after coming back on the weekend, I would mount the two hats and test all pumps together.

Overall:

Due to the Thanksgiving break, it was hard for us to work together, because we were physically elsewhere. However, we were still able to get a bit of progress done on the software side of things. While we only have two weeks left of work, our goal is to spend most of the week connecting everything (platform to RPi, RPi to the mixing station, etc.) That way we can spend the last week doing final assembly and testing. There also hasn’t been any major change in the design so that also minimizes that chances of possible problems arising during the project. Here is the updated schedule.

Week of 11/12 Progress Report

Bill:

I worked on building cup platform by drilling and cutting wood and integrating/screwing the load cell into the wood.

Next week, I will continue working on getting the cup platform ready and hope to finish building it by the end of next week.

Connor:

This week, I continued working on the API and the web applications. I began to work on the admin application, where admins can edit, create, and delete recipes and bottles.

For this upcoming week, I hope to finish both the API and the web applications. Because I will be out of town this weekend and away from the town, I hope to focus on work and finish all the parts of the project that don’t require integration with physical components of the project.

Dave:

I worked on connecting the Raspberry Pi with multiple pumps. I tested out the Pi to simultaneously pumping out liquids with multiple pumps, and the pump rate is approximately the same as we originally tested with a single pump. Also, I have placed orders on all the rest electronic devices. I didn’t have time to integrate the queue and database with Connor, but I would do that over Thanksgiving.

The plan Thanksgiving week is to finish the software part on the Pi and after coming back on the weekend, I would mount the two hats and test all pumps together.

Overall:

We feel that we are in a good position to complete our project by the December 7th, which is demo day for us. If we can complete the pure-software portion of the project by the end of next week, we can focus on finish the integration between the API with the Raspberry Pi, which will help de-risk the rest of the project. We didn’t have any design changes so we should be good on that front. We also have found a source for the wood that we will use for the cover of the system which has helped us greatly de-risk the system. While we still need to complete the rest of the hardware integration, we are increasingly de-risking our project by working on the load cell platform and testing the multi-pump system. Here is our updated schedule.

Week of 11/5 Progress Report

Bill:

I wrote the code for getting the Arduino to read from the liquid level sensor. Then I combined the code with the code for reading from the load cell, and started thinking about how to send over multiple pieces of data to the Pi over the Serial USB connection. For now, I am just formatting the data by separating them with spaces, and splitting the data up on the Pi side. This method should work even with more liquid level sensors; we just have to make sure the data is ordered properly. Afterwards, I had to make changes to the code on the Pi to properly read from the Arduino. I got it to work with just a single liquid level sensor reading, so once we get the other sensors I will need to change the code a little bit more to read from all of them. Currently, we are waiting to get more pumps, and once we get them I will start working on get the additional pumps connected and running simultaneously.

Until now, we just had all the parts connected directly to the Arduino, but the set-up would not work once we get the rest of our parts, so I connected the parts using a breadboard instead. That also makes things more organized, and easier to mount onto the scaffolding.

I started working on making an actual wood platform, because the cardboard platform we have now is very flimsy and weak. I found a piece of wood that we can use, and drilled some holes into it.

Next week, I will continue building the platform and adding the other pumps to the system once they come in.

Connor:

Because Dave is working with the Raspberry Pi in regards to communicating with the API, I also worked with Dave in creating the API interface so that we can. We created a UML database diagram to be clear on what we were developing that you can see below:

We also discussed the RESTful endpoints that would be exposed of the API, as you can see below.

  • /orders (POST) – Create a drink order
  • /orders/{:id} (PUT) – Fulfills a given order of a particular id
  • /orders/next (GET) – Retrieves the next order that needs to be fulfilled
  • /orders (GET) – Retrieves the current queue of drinks (list of unfulfilled drinks)
  • /orders (POST) – Create an order
  • /recipes/{:id}/ingredients (GET) – Retrieves a list of ingredients for a recipe of a particular id
  • /recipes (GET) – Retrieves all of the available recipes
  • /bottles (POST) – Create a bottle for a drink
  • /drinks (POST) – Create a drink (the liquid itself)

After discussing the above items with Dave, I began writing the API and have made a decent amount of progress on it.

Also, prior to meeting Dave to discuss the UML diagram, I also did a little bit of work with the web application, particularly the user page where users can input drink orders. You can see that current state of the UI below:

Next week, I will finish developing the API and deploy it to Amazon Web Services so Dave can begin integrating the Raspberry Pi with the API to send and receive updates (drink orders, a change in status for the bottles, etc.). I will also work on the web application as well.

Dave:

For this week, I first finished off the demo for Monday, including integrating the Arduino and RPi to put the entire system together to make the whole process from detecting a cup to pumping and mixing the liquid.

Then, because we are using five pumps in total, we would need to stack two dc stepper hats together on the RPi. I soldered the other hat and figured out how to control the two hats separately using different addresses.

Moreover, I have discussed the software design with Connor, as Connor said above. Thus, I have started writing code on the python to read files coded in the way as we designed.

For next week, I would finish control the pumps and sensors based on the input files. Also, I can finish mounting the hats as we buy the longer pins for the RPi from Amazon.

Overall:

With regards to the software portion, we are currently ahead of schedule. We have already made progress on the web application, and we are not supposed to begin working on it until the week following next. We are pushing off the drink recommendation towards the end to ensure that we focus on getting the core system in place. However, we still need to get the hardware set up. We need to hang the mixing station system (beaker and valve) and add the other pumps and liquid-level sensors to the system. Due to budget constraints, we are still figuring out a way to purchase the sensors without dipping into our own personal money. However, we should also get our pumps for the other bottles on Monday so we should be fine on that front. We are also placing great emphasis on looking for ways to avoid making purchases due to our budget. For example, we are hoping to use wood from the “cages” used for booth, and if that is unsuccessful, we are hoping to grab some planks of wood from one of our parents’ houses during the Thanksgiving break. While we have made some changes to the schedule, we believe we are on schedule to finish everything, especially with this upcoming week being a big week for us with a big push prior to Thanksgiving break.

Week of 10/29 Progress Report

Bill:

I built a makeshift platform out of cardboard.

Then I tested to see if it could detect an empty cup. For this, I just used an empty small size Starbucks cup. Using the Arduino, when I placed the cup on the platform, I was able to detect the cup. Then I hooked up the Arduino to the Raspberry Pi, and had the Arduino and the Pi communicate with each other using a serial USB connection. It was fairly simple, and I managed to get the Pi to read from the load cell.

Next week, I will start working on the functionality of only allowing the system to pour drinks when a cup is on the platform. Also, I will construct the platform so that liquids can pour through it into a basin.

Connor:

This week, I was able to finish most of the scaffolding. Tomorrow, it will be completed once we hang the valve and mixing station. However, here is a picture of the scaffolding in its current state:

Today, I purchased the adapters that were needed for the valve and the wire and fasteners that are needed to hang the valve and the mixing station. With that said, I attached the silicone tubing to the adapters that we hooked onto the valve, and we were able to pump water through the valve without any major issue. Now it’s a matter of stabilizing the valve as it receives liquids from the mixing station.

For the next week, I will be working on getting the scaffolding set up with the hanging mixing station and the valve. This work will mainly be done tomorrow, as our mid-semester demo is Monday. After our mid-semester demo, I am going to begin working on the API which will be hosted in AWS.

David:

I was working on connecting the Arduino with the Raspberry Pi, so that we would be able to control the relay with from the RPi through Arduino. Also, we would need to read the data from the load cell to the Raspberry too, so that we can control the pumps to pump liquid when the load cell senses a glass.

We worked on the scaffolding of the system and testing out the pump system for the mid-semester demo.

I also worked on the design of the software systems, specifically on the database and drink recommendation system.

For next week, I would need to start implementing the drink recommendation system besides preparing for mid-semester demo.

Overall:

We are in a good position for the mid-semester demo this upcoming Monday. We have everything from a physical standpoint that we need for Monday. We have also made substantial progress on the load cell grate reading from it and being able to determine it’s sensitivity, which seems fine. For tomorrow, it will be a matter of wiring up the various components (Raspberry Pi/Arduino to the pumps, valve and load cell) and writing any necessary software to ensure that the hardware works correctly. We have tested the pumps and the valve, and they have worked as expected. Hanging the valve and the mixing station might be a little tricky, but we made sure we bought enough metal rope for us to test with (various lengths and so forth). After the mid-semester demo, we do need to get started right away with a focus on the software portion, mainly the API and Raspberry Pi recipe-making capabilities. While we might be a little behind, we believe that we should also be fine on that front. With the software, there won’t be any waiting for parts or limitations due to budgets. We can move much more quickly on that front and, as a group, have more expertise in software than hardware.