For my senior project in Electrical Engineering, I developed a power over Ethernet (PoE) air quality sensor for the AirU team at the University of Utah. At our senior project design day this project won the Project Design Excellence Award, given to a project that displays "excellent engineering design work by receiving the highest evaluations from the judges with an emphasis on design and engineering processes."
This page provides a general, non-technical overview of the work that I completed to develop this project. The subsequent pages provide in-depth analysis of the various steps towards the final design.
The AirU team develops low-cost air quality sensors to study air quality around the Salt Lake Valley. Many school administrators in the area want to have an AirU sensor at their schools. However, the current AirU model cannot be deployed at schools because it cannot connect to the high-security Wi-Fi networks, and because schools do not have outdoor power outlets to plug in the sensors.
Developing a PoE sensor resolves both of these issues. PoE is the technology that allows power and Ethernet data to be transmitted over the same Ethernet cable. This can be done by either using a PoE capable modem, or by using a PoE injector, as shown below. Fortunately, schools have a large supply of PoE modems, so developing a PoE AirU is a great solution for installing AirUs at schools.
In order to develop the PoE AirU, I first developed a prototype board to test the PoE module and the Ethernet Phy. You can read more about component selection and this development process on this page.
Next, I had to write a driver to allow the ESP32 Microcontroller to communicate with the Ethernet PHY using SPI commands. You can read more about the driver development on this page.
Finally, I had to combine my PoE prototype board with the existing AirU hardware onto one PCB, and write firmware to transmit the air quality data to our database. To read about this process, visit this page.
I also created a poster and presentation about this project. The poster can be downloaded from here, and the presentation is embedded below.
An AirU Air quality sensor
About the AirU Team
Although I worked largely independently on designing and creating the Poe AirU, my efforts were closely related to the projects of the other members of the AirU team:
Dr. Pierre-Emmanuel Gaillardon is a professor at the University of Utah who provided valuable oversight to the project.
Thomas Becnel is a Computer Engineering PhD candidate who started the project, designed the original sensor, and manages many of the technical points of the various AirU efforts.
Quang Nguyen is an Electrical Engineering masters student who designed a wearable AirU sensor, and designed a mobile application to help deploy the various sensors.
Scott Gale is Computer Science masters student who developed the databases for the sensor data and designed a new AirU website.
These are the people who I worked closest with, but there were also chemical engineering students and professors who contributed to the AirU project. This page has more information about AirU, and this page has the sensor data from both our sensors and other sensors in Utah.
Preliminary Design and Prototype Development
The first step of the project was to consider the overall constraints of the project, and decide on an overall project architecture. For size, the designed board had to be able to fit into the current AirU sensor housing, pictured on the right. Therefore, the final printed circuit board (PCB) has the same dimensions (2.8” by 3.125”) as the original AirU PCB.
Additionally, in order to integrate this PoE AirU with the existing AirU system, it made sense to use the same ESP32 MCU as the existing AirU boards. Therefore, it was not feasible to use an MCU with an integrated Ethernet PHY, so an external Ethernet PHY was needed.
With these considerations in place, I developed a functioning PoE prototype board to verify the design. This prototype board has an AG9900M PoE module for power, and an ENC28J60 Ethernet PHY, which serves as a physical layer between the MCU and the Ethernet modem. The selected PHY communicates with the ESP32 MCU using serial peripheral interface (SPI) commands.
AirU Sensor inside of housing
After the necessary components were researched and selected, the Eagle software was used to develop a schematic and PCB layout. The prototype design follows the block diagram below, which explains the interface between the PHY, PoE controller, and ESP32 Microcontroller (which is on a separate board).
After a short debugging period, the prototype boards were functioning properly. They are powered by the PoE controller, and can reliably send and receive Ethernet packets from a modem and SPI packets from the ESP32 MCU. All of the board files are available on Github at this link.
The next step was to develop a driver to allow the ESP32 microcontroller to reliably communicate with the ENC28J60 Ethernet PHY. To read about this step, click here.
Firmware Driver Development
The firmware for the AirU boards is developed through the ESP-IDF, which is an open-source development framework that is used for programming the ESP32 MCU. In order to use the ENC28J60 Ethernet PHY with the rest of the AirU firmware, a firmware driver had to be developed to allow the ESP32 to communicate with the PHY within the ESP-IDF framework.
After this ENC28J60 driver was completed, it was submitted and accepted to the open-source ESP-IDF. Contributing the driver to the IDF is important for a number of reasons. Primarily, it allows other professionals outside of the AirU team to use and improve the driver. And secondly, it means the driver will continue to be supported in the future, even as other contributors update and improve the ESP-IDF. This is important for the AirU project because it means that the AirU team will not have to worry about maintaining this code.
Users wishing to view the completed driver can find it on Github. The version that I made is available here, and another user performed some necessary clean-up before merging the driver into the main branch. The driver is currently integrated into the ESP-IDF as an example project.
The PoE AirU firmware is also available on Github here.
ESP-32 dev board that I used to test the firmware while I waited for the boards to be fabricated.
The final step in creating the PoE AirU air quality sensor was to add the components from the PoE prototype board to the existing AirU PCB, shown on the right.
The image below shows the block diagram of the AirU board with the PoE components. All of the components from the prototype are also in this block diagram, but now the ESP32 MCU and its various peripherals (GPS and SD card) and sensors are also on the same board.
Original AirU PCB onto which PoE components had to be added
Working from the block diagram, the next step was to once again create a schematic and PCB layout using EAGLE. A number of important engineering considerations had to be made in designing the layout such as trace lengths and component locations.
One interesting example of these design considerations is the placement of the temperature sensor. In the original AirU design, the temperature sensor is not very accurate for several reasons. It is located near several hot components, and the also all of the components share the same ground plane which conducts the heat across the board. In the PoE board, several changes were made. The sensor was placed away from the rest of the components, and the ground plane was cut away in that section of the board. Additionally, holes were drilled around the temperature sensor to improve cooling. In the layout (image to the right) the temperature sensor is on the top right corner of the PCB.
Another important design consideration was how to assemble this PCB. Due to the increased complexity of this PCB with the on-board MCU and GPS which both have smaller components, it was determined that having a third party assemble the boards would be easier. The image below shows the final assembled PoE AirU PCB. This board is powered using a PoE connection, and can successfully send sensor data to the AirU database. All of the board files are available on Github at this link.
Layout for the final PCB design using EAGLE
The finished product!
Since the completion of this project, these sensors have been fabricated and deployed at schools across Salt Lake City!