Bill of Materials
A bill of materials is still missing the fabrication portion but all the electrical parts are there for us to test our electric circuit. The BOM is in our shared folder so that each of us can effectively alter it if necessary.
Since it was our first time using Raspberry pi as an interface, there was a lot that we need to learn from scratch. Our goal is to have input from a microphone (words in our library) and the input has a corresponding output in the Arduino side (e.g. turning on a fan, light, and/or water pump). In the process, there should be a serial communication between the two interfaces. We first assumed that the serial communication should be between Raspberry pi and p5.js; however, later we found out that we can use Arduino UNO as a microcontroller so that the communication is just between Arduino and p5.js.
The users can make a decision based on the sensor data and observe the changes they brought to the environment.
There is a library of words that we created (we are still in the progress polishing our dictionary/library) in the p5.js sketch and if any word in the library is being said, there should be corresponding outputs in the Arduino side (e.g. if one says "happy," then the fan will be turned on for 10 seconds). The three outputs are a fan, lamp, and water pump that will eventually affect the environment in the terrarium. At the same time, a humidity/temperature sensor connected to Arduino Uno will send real-time sensor data to the p5.js and those values are being displayed on the screen.
We were first overwhelmed by the upcoming tasks mostly because of our unfamiliarity. Thus, we have dissected the whole process into small sections and took a step-by-step approach, which turned out to be a very effective way to solve an issue. In the past few days, we almost met every single day and made meaningful progress each day.
We first tested our p5.js sketch that Wen created for voice recognition on the laptop. The video above shows that if the word being said is in our library, it appears on the screen.
As the video above shows, we moved into Raspberry Pi and tested our p5.js sketch in the Pi environment. We first had a problem with an exterior microphone permission error in chromium browser but we solved the issue by using the link below.
As we initially assumed that serial communication would be between p5.js sketch and Raspberry Pi, we tested the fan, one of the outputs, using the Pi. We connected the fan to one of the GPIO pins and used a python code to run the fan. Since we were unfamiliar with a transistor, diode, and other electrical components, we first struggled with building a proper circuit. After we succeeded to build the circuit, we used a benchtop power supply as a power source to supply 12V to run the fan.
We later figured out the communication would be just between the Uno and p5.js sketch so, here we moved to Arduino and tried to send a signal from it to p5.js. This was a step before sending the sensor values from a humidity/temperature sensor to the p5.js sketch.
Next, two sensor values, one for humidity and one for temperature are being sent to p5.js and the two values are displayed on the screen seperately.
Our goal is to have p5.js control the outputs connected to Uno but we first decided to test in a simpler way. As the video above shows, if there is an incoming signal (any word in our library processed through p5.js) from p5.js, LED light that connected to Uno would turn on.
Next, we changed the LED light into the fan and we used benchtop power supply as a power source (12V).
All the codes we used in the project can be found in https://github.com/TTurbo0824/pcom_final .