Joshna Status Report 10/28/2023

This week, I spent a lot of my time working on the ethics report. I think that the main concern it presented for my part of work is the web security. Since I took 18-330 last semester, I am confident that I can implement some measures against things like cross site scripting. As we are not dealing with private data such as things like passwords or payments though, we don’t need to implement security for the majority of popular attacks like pretending to be someone else using cookies.

We are planning to demo the user interface to an advisory group at the Library for Accessible Media Pittsburgh (LAMP) the week after the demos in this class so our team decided that it would be good to have frontend-backend integration done, hosting on the rpi, and an example of a user going from notes to translation to rpi instructions to solenoid/motor movement. So, this week one of my main focuses was finishing the bulk of the translation function and integrating it with the rest of the backend design. Now, most things typed in notes can be represented in braille and in the instructions for the solenoids and stepper motors that will be sent to the rpi. I also have started writing the actual sending of these instructions to the gpio pins for the solenoids by testing with a simple LED circuit.

In order to get the rest of my part ready for the demo, I need to work with Becky and the gantry system to send instructions to the rest of the gpio pins so I can code that before we assemble our MVP and I also need to actually succeed in hosting this website on the RPI or find and do a method that works. As for the demo with the library advisory group, I will need to work with Zeynep to make sure that we know exactly what we want the frontend and backend to be doing when we present and ask for advice. Otherwise, this week I want to accomplish the basic flow for one product search and start web scraping the other sites for our database. I am not ahead of the schedule like I was before but I am in the right position to achieve our goals for the next coming weeks and get back ahead.

Becky’s Weekly Update 10/28/23

What did you personally accomplish this week?

  • sent off PCB
  • made a circuit for joshna to begin testing
  • received stuff in the mail
  • sent off gantry piece for 3D printer

Is your progress on schedule or behind? 

  • a bit behind because some packages were delayed in ordering

What deliverables do you hope to complete in the next week?

  • pick up print
  • iterate
  • recieve stepper w the leadscrew
  • cut out x gantry parts for ze demo

Zeynep’s Weekly Status Report for 10/28

This week, I worked on the ethics assignment and discussion, implementation of the web-app, and preparing the solenoid circuit for testing/integration. For the ethics assignment, I read the two given papers and completed my written assignment. I also engaged in a group discussion about the ethical considerations of our project. Some points that were raised in our discussion include electrical safety and ensuring that proper instructions are printed. I also continued to work on the implementation of the web-app. I am working on setting up the product search functionality on our user interface. I have added the ability to pull results from the back-end and display them, included buttons to scroll between pages, and wrote code to fill the web-app with content from the back-end. My goal for next week is to tweak small bugs in the UI, such as the product name not being displayed on the second page and incorporate code for parsing and properly formatting the product text file to display the information. My stretch goals will be to have the basic framework of the website complete by the end of next week to be able to begin debugging it with Apple’s accessibility debugger tool.

(page two after clicking next button)

(after clicking product place holder for displaying product info/recipe)

I received the solenoids and the grub screws I plan to use as the embossing stylus. I tweaked the design for the solenoid encasing in CAD now that I have the solenoids I am going to use. I also built the control circuit for RPI testing using LEDslater this week as we wait for the PCB to arrive.

 

Team Status Report for 10/28

This week, as a group, we primarily focused on planning our goals for the interim demo and engaging in discussions about the ethical concerns of our project. For our interim demo, our current stretch goals are to allow a user to input text into the notes feature of a finished web-app. We aim to display the braille translation and output these signals to our mechanical x/y system and our solenoid system. We will have these two systems decoupled for our demo and will work on integrating for our final product. For ethics we discussed, safety concerns of giving a blind user an electrical device and how it contributes to the welfare of our blind users.

As for the components of our project, this week we focused on our individual components. Zeynep worked on the front-end of the webapp, Becky finished the pcb and sent it out, and Joshna worked on setting up the rpi and the braille translation algorithm.

Overall, our design has had no major changes. We are currently working on integrating our back-end and front-end components building up the interm demo and are on track.

Becky’s report for 10/21

ABET #7 says: An ability to acquire and apply new knowledge as needed, using appropriate learning strategies

As you’ve now established a set of sub-systems necessary to implement your project, what new tools are you looking into learning so you are able to accomplish your planned tasks?

I am using Eagle CAD to design the PCB’s for the final project, and Fusion 360 to CAD the mechanical components of our project.

What did you personally accomplish this week on the project? Give files orphotos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week I worked on the design report, and I finished up ordering parts for the X gantry, and started designing the PCB for the project. There was a lot of stuff I needed to import so I had to make sure they lined up to the A4988 stepper drivers we already purchased. Since EAGLE didn’t have the parts, I had to carefully source libraries.

Here is the schematic, the PCB will be routed next week.

Progress and Deliverables

This week I didn’t get as much done because we were on break 🙂 I plan on getting the PCB sent out on Tuesday to Flash PCB, and they are willing to manufacture our stuff faster, so we should hopefully have it back in a week.

This week I plan to send out the PCB to get manufactured, and get started making the X/gantry system. I want to tweak the y gantry this week, but that probably wont happen until this weekend.

 

Team Status Report for 10/21

This week, our team primarily focused on submitting the design review document and refining our design following feedback from the design presentations. This included updating our number of solenoids from 2 to 4, accounting for tension needs of our braille embosser, and updating our back-end to ensure that it meets our user and design requirements. We also created many figures for our design document and spent most of the week writing our report. Due to fall-break, we did not accomplish too many team goals this week, but coming into next week, we are looking to finish PCB design, conduct user interviews of the web-app, and begin fabrication

Zeynep’s Weekly Status Report for 10/21

ABET #7 says: An ability to acquire and apply new knowledge as needed, using appropriate learning strategies

As you’ve now established a set of sub-systems necessary to implement your project, what new tools are you looking into learning so you are able to accomplish your planned tasks?

I have been learning a lot about how to use CSS, Javascript, and HTML to develop the web-app. I have minimal front-end experience, so I have been spending a lot of time reading documentation and learning how to use these to best implement or web-app to fit our user needs. I have also been learning how to use CAD software to iterate on our design to ensure our building/integration process goes as smoothly as possible. I am also familiarizing myself more with using a RPi with the solenoids.

What did you personally accomplish this week on the project? Give files orphotos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

These last two weeks, I focused on the design review document, and working on the web-app.

For the design review document, I helped write the introduction, use-case requirements, architecture, design requirements, trade studies, implementation, and tests. I also created some of the figures included in the document, such as the system block diagram or the solenoid mechanism figure.

I also incorporated some feedback and changes into our overall design for the electromechanical embossing system with the addition of two more solenoids into our design. This involved recalculating our timing, and re-adjusting our solenoid system design. Once these changes were in place, I also began working on the PCB design. I added the components for the solenoid system. Becky will be in charge of other parts of the PCB.

After submitting the design review, I continued working on our web-app. We are aiming to start user studies on the front-end next week, so my goal is to have the basic framework done by then. I have attached screenshots of the pages I have implemented, which will all communicate with and display results from our back-end once the database is complete.

Progress and Deliverables

This week did have a lot of slack for me because of fall break, but I am planning on putting in extra hours to finish up the front-end before user-studies. I have also placed my orders for components and will finish up PCB design for the solenoid system, and begin building with my team members leading up to the interim demo.

Joshna Iyengar Status Report 10/21/2023

We spent most of this week working on the design report given how lengthy it is. I wrote the related work section, integration tests, software trade-offs, system implementation for software, abstract, software index terms, software use case requirements, team member responsibilities, software risk mitigation plans, software testing and verification, and system implementation diagrams including the webscraping diagram, cache diagram, database diagram, and translation diagram. This put into words and explained everything behind what I have been working on up till now and what I plan to work on in the next couple weeks.

I also reached out to someone to show us how the braille embosser in the library LAMP works and to someone else to gather people to test our user interface.

For the software, I finished actually creating the database for directionsforme.org. It basically loops through the keywords (not words such as and, or, the) and adds the recipe to a list that is the value in a dictionary with the key being the keyword. I then use the library csv and csvwriter to write this into the database. For extraction, in webapp.py, I convert this csv file to a dictionary when the website is run so it only needs to be run once for each time we host the website. I want to explore if there is a way to only do this once in general because this will take a lot of time. Then, when someone searches the product, it goes through through each keyword in the search and records the recipes each of these keywords map to in order to figure out the most likely recipes and send that back to the user. This is done in websearch.py.

I have also written out some high level “code” for the translation. It is essentially a for loop that maps each character to the character(s) in the dictionary I have set of 6 signals. There are multiple conditions which regex looks for such as closed parentheses or a word of only capital letters or numbers or contractions which is also in this loop. I use the library re to do these evaluations.

As for communicating with the backend, I have started learning how the Raspberry Pi works and running basic things now that I have the SD card. This ties into the question of the week –

As you’ve now established a set of sub-systems necessary to implement your project, what new tools are you looking into learning so you are able to accomplish your planned tasks?

I have been spending a lot of time learning to use the Raspberry Pi and I expect to spend more time with how it keeps memory and runs programs and receives inputs/outputs for our actual project. I will also need to learn more about internet hosting because that is our current plan based on our research. I am familiar with most of the Python libraries but in order to make the webscraping more efficient, i need to learn more about the specific functions that Beautiful Soup has. I also don’t have experience with the Flask library and as I will be developing the frontend-backend communication further, I might have to learn more about it. Also, I plan to look into basic computer vision and existing open source algorithms so that users have an additional feature to print text that their camera sees whether it’s the back of boxes or flyers.

While I spent more time on the design report and therefore less time than I wanted on the software, I am still on track if not a little ahead compared to the overall schedule especially because I have been doing basic testing as we go (not stress or edge testing yet though). In the next week, I plan to look into the computer vision possibility I talked about earlier, learn how to host the website on the rpi, write the function that takes info from the other sites with product directions and puts it in the database, finish the translation, and start working on the cache. This will put me in a good place to work on integrating and testing this all in the week after so that we have a basic main input/output flow working for the demo.

Joshna Weekly Status Report 10/7

This week, I visited LAMP, finished developing and testing some of the backend algorithms, and started working on the design report with my teammates. The software work I did this week is all on the github: https://github.com/joshna-ii/digibraille

I finished the webscraping algorithm for directionsforme.org and most of the database creating algorithm. The webscraping algorithm uses beautiful soup to identify the different components on the website such as ingredients and nutritional facts as well as makes tables look nicer. The database creation algorithm take these different parts and puts it in a csv that maps keywords to the title of these recipes.

My next step will be to run the database creation algorithm for all of the webpages and not just my test cases which will take about a day.

In the meantime, I am working on an algorithm that extracts information based on the keywords in the product searched. It will go through any word in the product search that is not generic such as if, and, or, not, yet, the etc. and keep track of a list of recipe titles returned. It will present these recipes in order of highest count (number of keywords that showed the recipe) back to the user so they can click on it and print it (please see Zeynep’s wireframe to see the user’s perspective). It will then take back the user’s query and use another dictionary that maps recipe titles to recipes to confirm before sending it to translation.py which will make the translations. The main_backend.py and the webapp.py files currently handle user interactions and calling functions from the different files.

In order to make this more efficient, I am converting this csv file output to a dict at the beginning of webapp.py using csv reader. Additionally, I will implement a function that stores the most recent searches in an array structure similarly to a cache. The most recent searches will be kept in a dict mapping 100 product searches (20 for testing) and the function will go through this dict before the much larger one for efficiency.

This week, I also went to LAMP which is a library for disabled people to learn more about braille and how people interact with it. I was able to talk to a visually impaired librarian and she showed me the ways she interacts with her phone and the only other technology which sees seen people use which she referred to as an ereader (very similar to our initial idea for this capstone project). She confirmed that a website would be just as easy to access as an app if people can use something like siri to open the website so we need to make sure that the domain is something clear such as digitalbraille.com because if I ask siri to open digitaltracking.com then she has no problem but if I ask her to open directionsforme.org then she gets confused. She also taught me about the difference between contracted and uncontracted braille and gave me pamphlets to learn. This lead to us deciding that we should have an option for contracted and uncontracted braille and they will be two separate functions implemented in my translation.py file. She also told me that they have an advisory group and a newsletter to reach people who are blind so our plan is to finish the bulk of the UI in the next week or so to see if they have any comments on how to make it as accessible as possible and also figure out things like if the default should be uncontracted or contracted braille.

Based on what I learned, I started working on the translation functions in translation.py. I finished creating dictionaries for the alphabet, numbers, and the majority of special characters since the majority of the uncontracted braille is 1:1 mapping. However, there are still some things to consider like capital letters and numbers and what comes before and after them so I also started those conditions in the for loop. I also started designing my plan for the contracted braille algorithm since it will be a lot more complicated to make it efficient. I am thinking of implementing an algorithm that goes through each character in the string and finds matching points in a word that are keys in a dictionary mapping things like “sh” to its braille character. It will look something like this:

I am currently on track with the goals I have set. I was able to spend the appropriate time on all the backend algorithms I have in place but haven’t been able to spend as much time as I wished on hosting our website on the raspberry pi. My plan for this week is to get the raspberry pi running enough for us to test with the LAMP advisory group, run the database creation algorithm for directionsforme.org to completion, finish the database extraction algorithm, finish the cache for recent searches algorithm, finish the uncontracted braille translation algorithm, start working on a webscraping and database algorithm for another product directions website, and start the contracted braille algorithm to the point of it working for a few contractions.

Becky’s Update for 10/7

Accomplishments

This week I worked on making the presentation and delivering it for class. It was busy week so I had to use a bit of slack time. I did order some parts, which will get here soon. I also started adding components and creating a schematic for the PCB. I didn’t have as much time as I wanted to, so the schematic is very bare bones.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I’m still right on schedule. I knew at the start of the course this would be a busy week, and so I intentionally spread the next deadline I have for myself a bit to be during fall break.

  • What deliverables do you hope to complete in the next week?
  • I need to finish ordering things, its taking longer than expected to source mechanical parts cost effectively because a lot of the parts I’m finding have bad ratings. There are some parts we will have to pay a premium for. As a result, I will beed to modify x/y gantry system to accommodate any changes in the parts we actually source.
  • I also want to finish designing the PCB because need to send it out ASAP in order for it to arrive in time for the demo.