├── pictures.md ├── LICENSE ├── README.md ├── workshop-sensor.yaml └── air_quality.kicad_sch /pictures.md: -------------------------------------------------------------------------------- 1 | # Design 2 | ![inside](https://user-images.githubusercontent.com/92587036/172739825-ce544c00-435d-44e1-a019-752ebed2554f.jpg) 3 | ![on](https://user-images.githubusercontent.com/92587036/172739830-be52e657-a4cb-4d56-a146-62d5f563cd69.jpg) 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 natepichler 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ESP32-air-quality-sensor 2 | ESP32 based air quality sensor, designed for a workshop. Written in ESPHome for HomeAssistant integration. 3 | 4 | ## Objective 5 | 6 | - Create an air quality sensor for my woodworking shop. 7 | - Needs to be able to measure a range of particle sizes in the air. 8 | - Be able to display relevant information on the device as well as through HomeAssistant. 9 | - Create a display component to easily see the air quality status at a glance. 10 | 11 | ## Components 12 | 13 | #### Microcontroller 14 | - ESP32-S2-DEVKITM-1 15 | - https://www.digikey.com/en/products/detail/espressif-systems/ESP32-S2-DEVKITM-1/13180196 16 | - WiFi 17 | 18 | #### Air Quality Sensor 19 | - Sensirion SPS30 20 | - https://www.digikey.com/en/products/detail/sensirion-ag/SPS30/9598990 21 | - I2C interface 22 | - Measures concentrations of 1μm, 2.5μm, 4μm, and 10μm particles. 23 | 24 | #### Temperature & Humidity 25 | - DHT22 26 | - https://www.digikey.com/en/products/detail/seeed-technology-co-ltd/101990561/10451874 27 | 28 | #### Display 29 | - Adafruit SSD1327 Grayscale 1.5 128X128 OLED 30 | - https://www.digikey.com/en/products/detail/adafruit-industries-llc/4741/13426655 31 | - I2C interface 32 | 33 | ## Implementation 34 | 35 | - On boot, the sensors are initialized and air quality readings, temperature, and humidity are displayed. 36 | - Sensors are connected with JST XH 37 | - The "stoplight" LEDs illuminate according to the current air quality level. 38 | 39 | | Concentration of 10μm particles | Rating | Color | 40 | |-----|-----|-----| 41 | | x < 50 #/m^3 | Good | Green | 42 | | 125 > x > 51 #/m^3 | Fair | Yellow | 43 | | x > 126 #/m^3 | Poor | Red | 44 | 45 | - When the toggle switch (GPIO19) is On, the display and LEDs will operate normally. 46 | - When the toggle switch of Off, the display and LEDs wil be turned off. 47 | - This allows for continuous monitoring of air quality and temperature/humidity without powering the display (e.g. overnight). 48 | - The device is mounted in a 4" x 4" weatherproof PVC junction box. Holes can be easily drilled to accomodate the USB cord, switch, and LEDs. 49 | - SPS30 and DHT22 sensors are mounted on the outside with self adhesive hook & loop. 50 | - The Display is mounted in the cover for the junction box. 51 | 52 | ## Notes 53 | - This project can be implemented with other ESP32 or ESP8266 modules. Pins will likely need to be changed. 54 | - This concept could also be implemented with other microcontrollers such as the Pi Pico or Arduino Nano. Code will need to be written in python, C, etc. 55 | - It is ideal to mount this sensor somewhere near the center of your shop close to head height for the most accurate measurement of the air you are actually breathing in (mine is mounted to the underside of my ceiling mounted air cleaner). 56 | 57 | ## Issues 58 | - There was a bug where the LEDs would not start operating again after the toggle switch had been switched from Off to On. To remedy this, I have the module reset when the switch is turned on (I know it's ugly, I'm working on a fix). 59 | -------------------------------------------------------------------------------- /workshop-sensor.yaml: -------------------------------------------------------------------------------- 1 | esphome: 2 | name: "workshop-sensor" 3 | on_boot: 4 | priority: 800 5 | then: 6 | - delay: 0.2s 7 | - light.turn_on: air_qual_green 8 | - delay: 0.2s 9 | - light.turn_off: air_qual_green 10 | - light.turn_on: air_qual_yellow 11 | - delay: 0.2s 12 | - light.turn_off: air_qual_yellow 13 | - light.turn_on: air_qual_red 14 | - delay: 0.2s 15 | - light.turn_off: air_qual_red 16 | - light.turn_on: air_qual_yellow 17 | - delay: 0.2s 18 | - light.turn_off: air_qual_yellow 19 | - light.turn_on: air_qual_green 20 | - delay: 0.4s 21 | - light.turn_off: air_qual_green 22 | 23 | esp32: 24 | board: esp32-s2-saola-1 25 | framework: 26 | type: esp-idf 27 | 28 | # Enable logging 29 | logger: 30 | 31 | # Enable Home Assistant API 32 | api: 33 | encryption: 34 | key: "" 35 | 36 | ota: 37 | password: "" 38 | 39 | wifi: 40 | ssid: !secret wifi_ssid 41 | password: !secret wifi_password 42 | 43 | # Enable fallback hotspot in case wifi connection fails 44 | ap: 45 | ssid: "workshop-sensor Fallback Hotspot" 46 | password: "" 47 | 48 | i2c: 49 | - id: air_quality 50 | sda: 2 51 | scl: 3 52 | scan: false 53 | frequency: 100kHz 54 | 55 | - id: ssd1327 56 | sda: 9 57 | scl: 8 58 | frequency: 200kHz 59 | 60 | font: 61 | - file: "fonts/arial.ttf" 62 | id: arial 63 | size: 20 64 | 65 | light: 66 | - platform: binary 67 | name: "Air Status Green" 68 | id: air_qual_green 69 | output: air_status_green 70 | 71 | - platform: binary 72 | name: "Air Status Yellow" 73 | id: air_qual_yellow 74 | output: air_status_yellow 75 | 76 | - platform: binary 77 | name: "Air Status Red" 78 | id: air_qual_red 79 | output: air_status_red 80 | 81 | output: 82 | - id: air_status_green 83 | platform: gpio 84 | pin: GPIO14 85 | 86 | - id: air_status_yellow 87 | platform: gpio 88 | pin: GPIO15 89 | 90 | - id: air_status_red 91 | platform: gpio 92 | pin: GPIO16 93 | 94 | switch: 95 | - platform: restart 96 | id: workshop_restart 97 | 98 | binary_sensor: 99 | - platform: gpio 100 | pin: 101 | number: 19 102 | mode: 103 | input: true 104 | pulldown: true 105 | id: toggle_switch 106 | on_state: 107 | - if: 108 | condition: 109 | binary_sensor.is_on: toggle_switch 110 | then: 111 | - delay: 0.2s 112 | - switch.turn_on: workshop_restart 113 | else: 114 | - delay: 0.2s 115 | - lambda: id(ssd1327_display).turn_off(); 116 | - light.turn_off: air_qual_green 117 | - light.turn_off: air_qual_yellow 118 | - light.turn_off: air_qual_red 119 | - delay: 0.2s 120 | 121 | sensor: 122 | - platform: dht 123 | model: dht22 124 | pin: 12 125 | update_interval: 5s 126 | temperature: 127 | name: Workshop Temperature 128 | id: temp 129 | humidity: 130 | name: Workshop Humidity 131 | id: hum 132 | 133 | - platform: sps30 134 | i2c_id: air_quality 135 | address: 0x69 136 | update_interval: 10s 137 | pm_1_0: 138 | name: "Workshop PM <1µm Weight concentration" 139 | id: workshop_PM_1_0 140 | pm_2_5: 141 | name: "Workshop PM <2.5µm Weight concentration" 142 | id: workshop_PM_2_5 143 | pm_4_0: 144 | name: "Workshop PM <4µm Weight concentration" 145 | id: workshop_PM_4_0 146 | pm_10_0: 147 | name: "Workshop PM <10µm Weight concentration" 148 | id: workshop_PM_10_0 149 | pmc_0_5: 150 | name: "Workshop PM <0.5µm Number concentration" 151 | id: workshop_PMC_0_5 152 | pmc_1_0: 153 | name: "Workshop PM <1µm Number concentration" 154 | id: workshop_PMC_1_0 155 | pmc_2_5: 156 | name: "Workshop PM <2.5µm Number concentration" 157 | id: workshop_PMC_2_5 158 | pmc_4_0: 159 | name: "Workshop PM <4µm Number concentration" 160 | id: workshop_PMC_4_0 161 | pmc_10_0: 162 | name: "Workshop PM <10µm Number concentration" 163 | id: workshop_PMC_10_0 164 | pm_size: 165 | name: "Typical Particle size" 166 | id: pm_size 167 | 168 | - platform: template 169 | name: "PM Size x 1000" 170 | id: pm_size_1000 171 | lambda: |- 172 | return id(pm_size).state * 1000; 173 | update_interval: 10s 174 | 175 | - platform: template 176 | name: "Workshop PMC 10" 177 | id: workshop_PMC_10_init 178 | lambda: |- 179 | return id(workshop_PMC_10_0).state; 180 | update_interval: 5s 181 | on_value_range: 182 | - below: 50 183 | then: 184 | - if: 185 | condition: 186 | binary_sensor.is_on: toggle_switch 187 | then: 188 | - light.turn_on: air_qual_green 189 | - light.turn_off: air_qual_yellow 190 | - light.turn_off: air_qual_red 191 | - lambda: |- 192 | id(air_qual_state).publish_state("green"); 193 | else: 194 | - lambda: |- 195 | id(air_qual_state).publish_state("green"); 196 | - above: 51 197 | below: 125 198 | then: 199 | - if: 200 | condition: 201 | binary_sensor.is_on: toggle_switch 202 | then: 203 | - light.turn_off: air_qual_green 204 | - light.turn_on: air_qual_yellow 205 | - light.turn_off: air_qual_red 206 | - lambda: |- 207 | id(air_qual_state).publish_state("yellow"); 208 | else: 209 | - lambda: |- 210 | id(air_qual_state).publish_state("yellow"); 211 | 212 | - above: 126 213 | then: 214 | - if: 215 | condition: 216 | binary_sensor.is_on: toggle_switch 217 | then: 218 | - light.turn_off: air_qual_green 219 | - light.turn_off: air_qual_yellow 220 | - light.turn_on: air_qual_red 221 | - lambda: |- 222 | id(air_qual_state).publish_state("red"); 223 | else: 224 | - lambda: |- 225 | id(air_qual_state).publish_state("red"); 226 | 227 | text_sensor: 228 | - platform: template 229 | name: "Air Quality State" 230 | id: air_qual_state 231 | update_interval: 10s 232 | 233 | display: 234 | - platform: ssd1327_i2c 235 | i2c_id: ssd1327 236 | id: ssd1327_display 237 | model: "SSD1327 128x128" 238 | update_interval: 5s 239 | address: 0x3D 240 | 241 | lambda: |- 242 | it.print(0, 0, id(arial), "0.5um:"); 243 | it.printf(128, 0, id(arial), TextAlign::TOP_RIGHT,"%4.1f", id(workshop_PMC_0_5).state); 244 | it.rectangle(29, 8, 2, 14); 245 | 246 | it.print(0, 25, id(arial), "10um:"); 247 | it.printf(128, 25, id(arial), TextAlign::TOP_RIGHT,"%4.1f", id(workshop_PMC_10_0).state); 248 | it.rectangle(23, 33, 2, 14); 249 | 250 | it.print(0, 50, id(arial), "0.5-10:"); 251 | it.printf(128, 50, id(arial), TextAlign::TOP_RIGHT,"%4.1f", (id(workshop_PMC_10_0).state - id(workshop_PMC_0_5).state)); 252 | 253 | it.print(0, 83, id(arial), "Temp:"); 254 | it.printf(128, 83, id(arial), TextAlign::TOP_RIGHT, "°F"); 255 | it.printf(105, 83, id(arial), TextAlign::TOP_RIGHT, "%3.1f", id(temp).state * (9.0/5.0) + 32.0); 256 | 257 | it.print(0, 108, id(arial), "RH:"); 258 | it.printf(128, 108, id(arial), TextAlign::TOP_RIGHT, "%%"); 259 | it.printf(110, 108, id(arial), TextAlign::TOP_RIGHT, "%3.1f", id(hum).state); 260 | 261 | it.rectangle(0, 76, 128, 2); 262 | 263 | 264 | -------------------------------------------------------------------------------- /air_quality.kicad_sch: -------------------------------------------------------------------------------- 1 | (kicad_sch (version 20211123) (generator eeschema) 2 | 3 | (uuid 8de1d4d2-e9cc-4d37-8903-fe32b094a9a4) 4 | 5 | (paper "A4") 6 | 7 | (lib_symbols 8 | (symbol "Custom:DHT22" (in_bom yes) (on_board yes) 9 | (property "Reference" "U" (id 0) (at 5.08 -2.54 0) 10 | (effects (font (size 1.27 1.27)) hide) 11 | ) 12 | (property "Value" "DHT22" (id 1) (at 0 0 0) 13 | (effects (font (size 1.27 1.27))) 14 | ) 15 | (property "Footprint" "" (id 2) (at 0 0 0) 16 | (effects (font (size 1.27 1.27)) hide) 17 | ) 18 | (property "Datasheet" "" (id 3) (at 0 0 0) 19 | (effects (font (size 1.27 1.27)) hide) 20 | ) 21 | (symbol "DHT22_0_1" 22 | (rectangle (start -6.35 -1.27) (end 6.35 -11.43) 23 | (stroke (width 0.254) (type default) (color 0 0 0 0)) 24 | (fill (type background)) 25 | ) 26 | ) 27 | (symbol "DHT22_1_1" 28 | (pin input line (at -8.89 -3.81 0) (length 2.54) 29 | (name "3.3V_IN" (effects (font (size 1.27 1.27)))) 30 | (number "1" (effects (font (size 1.27 1.27)))) 31 | ) 32 | (pin output line (at -8.89 -6.35 0) (length 2.54) 33 | (name "DATA" (effects (font (size 1.27 1.27)))) 34 | (number "2" (effects (font (size 1.27 1.27)))) 35 | ) 36 | (pin input line (at -8.89 -8.89 0) (length 2.54) 37 | (name "GND" (effects (font (size 1.27 1.27)))) 38 | (number "3" (effects (font (size 1.27 1.27)))) 39 | ) 40 | ) 41 | ) 42 | (symbol "Custom:ESP32-S2-DevKitM-1" (in_bom yes) (on_board yes) 43 | (property "Reference" "U4" (id 0) (at -13.97 2.54 0) 44 | (effects (font (size 1.27 1.27)) hide) 45 | ) 46 | (property "Value" "ESP32-S2-DevKitM-1" (id 1) (at 0 1.27 0) 47 | (effects (font (size 1.27 1.27))) 48 | ) 49 | (property "Footprint" "Custom:ESP32-S2-DevKitM-1" (id 2) (at 0 0 0) 50 | (effects (font (size 1.27 1.27)) hide) 51 | ) 52 | (property "Datasheet" "" (id 3) (at 0 0 0) 53 | (effects (font (size 1.27 1.27)) hide) 54 | ) 55 | (symbol "ESP32-S2-DevKitM-1_0_1" 56 | (rectangle (start -12.7 -1.27) (end 12.7 -58.42) 57 | (stroke (width 0.254) (type default) (color 0 0 0 0)) 58 | (fill (type background)) 59 | ) 60 | ) 61 | (symbol "ESP32-S2-DevKitM-1_1_1" 62 | (pin power_in line (at 0 -59.69 90) (length 2.54) 63 | (name "USB" (effects (font (size 1.27 1.27)))) 64 | (number "" (effects (font (size 1.27 1.27)))) 65 | ) 66 | (pin output line (at -15.24 -3.81 0) (length 2.54) 67 | (name "3V3" (effects (font (size 1.27 1.27)))) 68 | (number "1" (effects (font (size 1.27 1.27)))) 69 | ) 70 | (pin bidirectional line (at -15.24 -26.67 0) (length 2.54) 71 | (name "GPIO_8" (effects (font (size 1.27 1.27)))) 72 | (number "10" (effects (font (size 1.27 1.27)))) 73 | ) 74 | (pin bidirectional line (at -15.24 -29.21 0) (length 2.54) 75 | (name "GPIO_9" (effects (font (size 1.27 1.27)))) 76 | (number "11" (effects (font (size 1.27 1.27)))) 77 | ) 78 | (pin bidirectional line (at -15.24 -31.75 0) (length 2.54) 79 | (name "GPIO_10" (effects (font (size 1.27 1.27)))) 80 | (number "12" (effects (font (size 1.27 1.27)))) 81 | ) 82 | (pin bidirectional line (at -15.24 -34.29 0) (length 2.54) 83 | (name "GPIO_11" (effects (font (size 1.27 1.27)))) 84 | (number "13" (effects (font (size 1.27 1.27)))) 85 | ) 86 | (pin bidirectional line (at -15.24 -36.83 0) (length 2.54) 87 | (name "GPIO_12" (effects (font (size 1.27 1.27)))) 88 | (number "14" (effects (font (size 1.27 1.27)))) 89 | ) 90 | (pin bidirectional line (at -15.24 -39.37 0) (length 2.54) 91 | (name "GPIO_13" (effects (font (size 1.27 1.27)))) 92 | (number "15" (effects (font (size 1.27 1.27)))) 93 | ) 94 | (pin bidirectional line (at -15.24 -41.91 0) (length 2.54) 95 | (name "GPIO_14" (effects (font (size 1.27 1.27)))) 96 | (number "16" (effects (font (size 1.27 1.27)))) 97 | ) 98 | (pin bidirectional line (at -15.24 -44.45 0) (length 2.54) 99 | (name "GPIO_15" (effects (font (size 1.27 1.27)))) 100 | (number "17" (effects (font (size 1.27 1.27)))) 101 | ) 102 | (pin bidirectional line (at -15.24 -46.99 0) (length 2.54) 103 | (name "GPIO_16" (effects (font (size 1.27 1.27)))) 104 | (number "18" (effects (font (size 1.27 1.27)))) 105 | ) 106 | (pin bidirectional line (at -15.24 -49.53 0) (length 2.54) 107 | (name "GPIO_17" (effects (font (size 1.27 1.27)))) 108 | (number "19" (effects (font (size 1.27 1.27)))) 109 | ) 110 | (pin bidirectional line (at -15.24 -6.35 0) (length 2.54) 111 | (name "GPIO_0" (effects (font (size 1.27 1.27)))) 112 | (number "2" (effects (font (size 1.27 1.27)))) 113 | ) 114 | (pin output line (at -15.24 -52.07 0) (length 2.54) 115 | (name "5V" (effects (font (size 1.27 1.27)))) 116 | (number "20" (effects (font (size 1.27 1.27)))) 117 | ) 118 | (pin input line (at -15.24 -54.61 0) (length 2.54) 119 | (name "GND" (effects (font (size 1.27 1.27)))) 120 | (number "21" (effects (font (size 1.27 1.27)))) 121 | ) 122 | (pin bidirectional line (at 15.24 -54.61 180) (length 2.54) 123 | (name "GPIO_18" (effects (font (size 1.27 1.27)))) 124 | (number "22" (effects (font (size 1.27 1.27)))) 125 | ) 126 | (pin bidirectional line (at 15.24 -52.07 180) (length 2.54) 127 | (name "GPIO_19" (effects (font (size 1.27 1.27)))) 128 | (number "23" (effects (font (size 1.27 1.27)))) 129 | ) 130 | (pin bidirectional line (at 15.24 -49.53 180) (length 2.54) 131 | (name "GPIO_20" (effects (font (size 1.27 1.27)))) 132 | (number "24" (effects (font (size 1.27 1.27)))) 133 | ) 134 | (pin bidirectional line (at 15.24 -46.99 180) (length 2.54) 135 | (name "GPIO_21" (effects (font (size 1.27 1.27)))) 136 | (number "25" (effects (font (size 1.27 1.27)))) 137 | ) 138 | (pin bidirectional line (at 15.24 -44.45 180) (length 2.54) 139 | (name "GPIO_26" (effects (font (size 1.27 1.27)))) 140 | (number "26" (effects (font (size 1.27 1.27)))) 141 | ) 142 | (pin bidirectional line (at 15.24 -41.91 180) (length 2.54) 143 | (name "GPIO_33" (effects (font (size 1.27 1.27)))) 144 | (number "27" (effects (font (size 1.27 1.27)))) 145 | ) 146 | (pin bidirectional line (at 15.24 -39.37 180) (length 2.54) 147 | (name "GPIO_34" (effects (font (size 1.27 1.27)))) 148 | (number "28" (effects (font (size 1.27 1.27)))) 149 | ) 150 | (pin bidirectional line (at 15.24 -36.83 180) (length 2.54) 151 | (name "GPIO_35" (effects (font (size 1.27 1.27)))) 152 | (number "29" (effects (font (size 1.27 1.27)))) 153 | ) 154 | (pin bidirectional line (at -15.24 -8.89 0) (length 2.54) 155 | (name "GPIO_1" (effects (font (size 1.27 1.27)))) 156 | (number "3" (effects (font (size 1.27 1.27)))) 157 | ) 158 | (pin bidirectional line (at 15.24 -34.29 180) (length 2.54) 159 | (name "GPIO_36" (effects (font (size 1.27 1.27)))) 160 | (number "30" (effects (font (size 1.27 1.27)))) 161 | ) 162 | (pin bidirectional line (at 15.24 -31.75 180) (length 2.54) 163 | (name "GPIO_37" (effects (font (size 1.27 1.27)))) 164 | (number "31" (effects (font (size 1.27 1.27)))) 165 | ) 166 | (pin bidirectional line (at 15.24 -29.21 180) (length 2.54) 167 | (name "GPIO_38" (effects (font (size 1.27 1.27)))) 168 | (number "32" (effects (font (size 1.27 1.27)))) 169 | ) 170 | (pin bidirectional line (at 15.24 -26.67 180) (length 2.54) 171 | (name "GPIO_39" (effects (font (size 1.27 1.27)))) 172 | (number "33" (effects (font (size 1.27 1.27)))) 173 | ) 174 | (pin bidirectional line (at 15.24 -24.13 180) (length 2.54) 175 | (name "GPIO_40" (effects (font (size 1.27 1.27)))) 176 | (number "34" (effects (font (size 1.27 1.27)))) 177 | ) 178 | (pin bidirectional line (at 15.24 -21.59 180) (length 2.54) 179 | (name "GPIO_41" (effects (font (size 1.27 1.27)))) 180 | (number "35" (effects (font (size 1.27 1.27)))) 181 | ) 182 | (pin bidirectional line (at 15.24 -19.05 180) (length 2.54) 183 | (name "GPIO_42" (effects (font (size 1.27 1.27)))) 184 | (number "36" (effects (font (size 1.27 1.27)))) 185 | ) 186 | (pin bidirectional line (at 15.24 -16.51 180) (length 2.54) 187 | (name "GPIO_43" (effects (font (size 1.27 1.27)))) 188 | (number "37" (effects (font (size 1.27 1.27)))) 189 | ) 190 | (pin bidirectional line (at 15.24 -13.97 180) (length 2.54) 191 | (name "GPIO_44" (effects (font (size 1.27 1.27)))) 192 | (number "38" (effects (font (size 1.27 1.27)))) 193 | ) 194 | (pin bidirectional line (at 15.24 -11.43 180) (length 2.54) 195 | (name "GPIO_45" (effects (font (size 1.27 1.27)))) 196 | (number "39" (effects (font (size 1.27 1.27)))) 197 | ) 198 | (pin bidirectional line (at -15.24 -11.43 0) (length 2.54) 199 | (name "GPIO_2" (effects (font (size 1.27 1.27)))) 200 | (number "4" (effects (font (size 1.27 1.27)))) 201 | ) 202 | (pin input line (at 15.24 -8.89 180) (length 2.54) 203 | (name "GPIO_46" (effects (font (size 1.27 1.27)))) 204 | (number "40" (effects (font (size 1.27 1.27)))) 205 | ) 206 | (pin input line (at 15.24 -6.35 180) (length 2.54) 207 | (name "RST" (effects (font (size 1.27 1.27)))) 208 | (number "41" (effects (font (size 1.27 1.27)))) 209 | ) 210 | (pin input line (at 15.24 -3.81 180) (length 2.54) 211 | (name "GND" (effects (font (size 1.27 1.27)))) 212 | (number "42" (effects (font (size 1.27 1.27)))) 213 | ) 214 | (pin bidirectional line (at -15.24 -13.97 0) (length 2.54) 215 | (name "GPIO_3" (effects (font (size 1.27 1.27)))) 216 | (number "5" (effects (font (size 1.27 1.27)))) 217 | ) 218 | (pin bidirectional line (at -15.24 -16.51 0) (length 2.54) 219 | (name "GPIO_4" (effects (font (size 1.27 1.27)))) 220 | (number "6" (effects (font (size 1.27 1.27)))) 221 | ) 222 | (pin bidirectional line (at -15.24 -19.05 0) (length 2.54) 223 | (name "GPIO_5" (effects (font (size 1.27 1.27)))) 224 | (number "7" (effects (font (size 1.27 1.27)))) 225 | ) 226 | (pin bidirectional line (at -15.24 -21.59 0) (length 2.54) 227 | (name "GPIO_6" (effects (font (size 1.27 1.27)))) 228 | (number "8" (effects (font (size 1.27 1.27)))) 229 | ) 230 | (pin bidirectional line (at -15.24 -24.13 0) (length 2.54) 231 | (name "GPIO_7" (effects (font (size 1.27 1.27)))) 232 | (number "9" (effects (font (size 1.27 1.27)))) 233 | ) 234 | ) 235 | ) 236 | (symbol "Custom:SPS30" (in_bom yes) (on_board yes) 237 | (property "Reference" "U2" (id 0) (at -5.08 -1.27 0) 238 | (effects (font (size 1.27 1.27)) hide) 239 | ) 240 | (property "Value" "SPS30" (id 1) (at 0 1.27 0) 241 | (effects (font (size 1.27 1.27))) 242 | ) 243 | (property "Footprint" "Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical" (id 2) (at 0 1.27 0) 244 | (effects (font (size 1.27 1.27)) hide) 245 | ) 246 | (property "Datasheet" "" (id 3) (at 0 1.27 0) 247 | (effects (font (size 1.27 1.27)) hide) 248 | ) 249 | (symbol "SPS30_0_1" 250 | (rectangle (start -6.35 0) (end 6.35 -15.24) 251 | (stroke (width 0.254) (type default) (color 0 0 0 0)) 252 | (fill (type background)) 253 | ) 254 | ) 255 | (symbol "SPS30_1_1" 256 | (pin input line (at -8.89 -2.54 0) (length 2.54) 257 | (name "5V_IN" (effects (font (size 1.27 1.27)))) 258 | (number "1" (effects (font (size 1.27 1.27)))) 259 | ) 260 | (pin bidirectional line (at -8.89 -5.08 0) (length 2.54) 261 | (name "SDA" (effects (font (size 1.27 1.27)))) 262 | (number "2" (effects (font (size 1.27 1.27)))) 263 | ) 264 | (pin bidirectional line (at -8.89 -7.62 0) (length 2.54) 265 | (name "SCL" (effects (font (size 1.27 1.27)))) 266 | (number "3" (effects (font (size 1.27 1.27)))) 267 | ) 268 | (pin input line (at -8.89 -10.16 0) (length 2.54) 269 | (name "SEL" (effects (font (size 1.27 1.27)))) 270 | (number "4" (effects (font (size 1.27 1.27)))) 271 | ) 272 | (pin input line (at -8.89 -12.7 0) (length 2.54) 273 | (name "GND" (effects (font (size 1.27 1.27)))) 274 | (number "5" (effects (font (size 1.27 1.27)))) 275 | ) 276 | ) 277 | ) 278 | (symbol "Custom:SSD1327_OLED" (in_bom yes) (on_board yes) 279 | (property "Reference" "U" (id 0) (at 2.54 -3.81 0) 280 | (effects (font (size 1.27 1.27)) hide) 281 | ) 282 | (property "Value" "SSD1327_OLED" (id 1) (at -5.08 0 0) 283 | (effects (font (size 1.27 1.27))) 284 | ) 285 | (property "Footprint" "" (id 2) (at 0 0 0) 286 | (effects (font (size 1.27 1.27)) hide) 287 | ) 288 | (property "Datasheet" "" (id 3) (at 0 0 0) 289 | (effects (font (size 1.27 1.27)) hide) 290 | ) 291 | (symbol "SSD1327_OLED_0_1" 292 | (rectangle (start -11.43 -1.27) (end 1.27 -13.97) 293 | (stroke (width 0.254) (type default) (color 0 0 0 0)) 294 | (fill (type background)) 295 | ) 296 | ) 297 | (symbol "SSD1327_OLED_1_1" 298 | (pin input line (at -13.97 -3.81 0) (length 2.54) 299 | (name "5V_IN" (effects (font (size 1.27 1.27)))) 300 | (number "1" (effects (font (size 1.27 1.27)))) 301 | ) 302 | (pin input line (at -13.97 -6.35 0) (length 2.54) 303 | (name "GND" (effects (font (size 1.27 1.27)))) 304 | (number "2" (effects (font (size 1.27 1.27)))) 305 | ) 306 | (pin bidirectional line (at -13.97 -8.89 0) (length 2.54) 307 | (name "SCL" (effects (font (size 1.27 1.27)))) 308 | (number "3" (effects (font (size 1.27 1.27)))) 309 | ) 310 | (pin bidirectional line (at -13.97 -11.43 0) (length 2.54) 311 | (name "SDA" (effects (font (size 1.27 1.27)))) 312 | (number "4" (effects (font (size 1.27 1.27)))) 313 | ) 314 | ) 315 | ) 316 | (symbol "Custom:rgb_breakout" (in_bom yes) (on_board yes) 317 | (property "Reference" "U" (id 0) (at 5.08 -2.54 0) 318 | (effects (font (size 1.27 1.27)) hide) 319 | ) 320 | (property "Value" "rgb_breakout" (id 1) (at 0 0 0) 321 | (effects (font (size 1.27 1.27))) 322 | ) 323 | (property "Footprint" "" (id 2) (at 0 0 0) 324 | (effects (font (size 1.27 1.27)) hide) 325 | ) 326 | (property "Datasheet" "" (id 3) (at 0 0 0) 327 | (effects (font (size 1.27 1.27)) hide) 328 | ) 329 | (symbol "rgb_breakout_0_1" 330 | (rectangle (start -6.35 -1.27) (end 6.35 -13.97) 331 | (stroke (width 0.254) (type default) (color 0 0 0 0)) 332 | (fill (type background)) 333 | ) 334 | ) 335 | (symbol "rgb_breakout_1_1" 336 | (pin output line (at -8.89 -3.81 0) (length 2.54) 337 | (name "LED_G" (effects (font (size 1.27 1.27)))) 338 | (number "1" (effects (font (size 1.27 1.27)))) 339 | ) 340 | (pin output line (at -8.89 -6.35 0) (length 2.54) 341 | (name "LED_Y" (effects (font (size 1.27 1.27)))) 342 | (number "2" (effects (font (size 1.27 1.27)))) 343 | ) 344 | (pin output line (at -8.89 -8.89 0) (length 2.54) 345 | (name "LED_R" (effects (font (size 1.27 1.27)))) 346 | (number "3" (effects (font (size 1.27 1.27)))) 347 | ) 348 | (pin input line (at -8.89 -11.43 0) (length 2.54) 349 | (name "GND" (effects (font (size 1.27 1.27)))) 350 | (number "4" (effects (font (size 1.27 1.27)))) 351 | ) 352 | ) 353 | ) 354 | (symbol "Switch:SW_Push" (pin_numbers hide) (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) 355 | (property "Reference" "SW" (id 0) (at 1.27 2.54 0) 356 | (effects (font (size 1.27 1.27)) (justify left)) 357 | ) 358 | (property "Value" "SW_Push" (id 1) (at 0 -1.524 0) 359 | (effects (font (size 1.27 1.27))) 360 | ) 361 | (property "Footprint" "" (id 2) (at 0 5.08 0) 362 | (effects (font (size 1.27 1.27)) hide) 363 | ) 364 | (property "Datasheet" "~" (id 3) (at 0 5.08 0) 365 | (effects (font (size 1.27 1.27)) hide) 366 | ) 367 | (property "ki_keywords" "switch normally-open pushbutton push-button" (id 4) (at 0 0 0) 368 | (effects (font (size 1.27 1.27)) hide) 369 | ) 370 | (property "ki_description" "Push button switch, generic, two pins" (id 5) (at 0 0 0) 371 | (effects (font (size 1.27 1.27)) hide) 372 | ) 373 | (symbol "SW_Push_0_1" 374 | (circle (center -2.032 0) (radius 0.508) 375 | (stroke (width 0) (type default) (color 0 0 0 0)) 376 | (fill (type none)) 377 | ) 378 | (polyline 379 | (pts 380 | (xy 0 1.27) 381 | (xy 0 3.048) 382 | ) 383 | (stroke (width 0) (type default) (color 0 0 0 0)) 384 | (fill (type none)) 385 | ) 386 | (polyline 387 | (pts 388 | (xy 2.54 1.27) 389 | (xy -2.54 1.27) 390 | ) 391 | (stroke (width 0) (type default) (color 0 0 0 0)) 392 | (fill (type none)) 393 | ) 394 | (circle (center 2.032 0) (radius 0.508) 395 | (stroke (width 0) (type default) (color 0 0 0 0)) 396 | (fill (type none)) 397 | ) 398 | (pin passive line (at -5.08 0 0) (length 2.54) 399 | (name "1" (effects (font (size 1.27 1.27)))) 400 | (number "1" (effects (font (size 1.27 1.27)))) 401 | ) 402 | (pin passive line (at 5.08 0 180) (length 2.54) 403 | (name "2" (effects (font (size 1.27 1.27)))) 404 | (number "2" (effects (font (size 1.27 1.27)))) 405 | ) 406 | ) 407 | ) 408 | ) 409 | 410 | (junction (at 118.11 95.25) (diameter 0) (color 0 0 0 0) 411 | (uuid 00963ded-07e7-4d11-9b13-28332bdac0a8) 412 | ) 413 | (junction (at 130.81 68.58) (diameter 0) (color 0 0 0 0) 414 | (uuid 1546e135-0c78-4115-bf02-6bdfb8cbd916) 415 | ) 416 | (junction (at 115.57 97.79) (diameter 0) (color 0 0 0 0) 417 | (uuid 2767803f-c18c-4d0d-850a-e72cf8dbbf32) 418 | ) 419 | (junction (at 115.57 119.38) (diameter 0) (color 0 0 0 0) 420 | (uuid 6c950dd0-3ff4-4404-8b52-58fbb139bdb9) 421 | ) 422 | (junction (at 115.57 86.36) (diameter 0) (color 0 0 0 0) 423 | (uuid 8e254f9d-64a6-4a77-9ab6-91c370669b77) 424 | ) 425 | (junction (at 115.57 72.39) (diameter 0) (color 0 0 0 0) 426 | (uuid d39e2583-860c-434a-ab04-8f8b59a33eda) 427 | ) 428 | 429 | (wire (pts (xy 115.57 69.85) (xy 115.57 72.39)) 430 | (stroke (width 0) (type default) (color 0 0 0 0)) 431 | (uuid 07e101a1-dacb-4a21-8460-1e1474e65db3) 432 | ) 433 | (wire (pts (xy 127 78.74) (xy 130.81 78.74)) 434 | (stroke (width 0) (type default) (color 0 0 0 0)) 435 | (uuid 1cb6455b-0484-4a07-9cb2-3503ac607403) 436 | ) 437 | (wire (pts (xy 123.19 102.87) (xy 123.19 93.98)) 438 | (stroke (width 0) (type default) (color 0 0 0 0)) 439 | (uuid 1e66f74f-a466-40ce-9ead-e77cdd50aed7) 440 | ) 441 | (wire (pts (xy 176.53 116.84) (xy 161.29 116.84)) 442 | (stroke (width 0) (type default) (color 0 0 0 0)) 443 | (uuid 1e9c55b7-587d-48f9-be54-88b3049743f0) 444 | ) 445 | (wire (pts (xy 118.11 115.57) (xy 128.27 115.57)) 446 | (stroke (width 0) (type default) (color 0 0 0 0)) 447 | (uuid 20d93baf-959d-4f4a-9671-6553521d730e) 448 | ) 449 | (wire (pts (xy 129.54 64.77) (xy 129.54 76.2)) 450 | (stroke (width 0) (type default) (color 0 0 0 0)) 451 | (uuid 29009d82-ee22-44b4-93df-61766da1c489) 452 | ) 453 | (wire (pts (xy 125.73 101.6) (xy 125.73 83.82)) 454 | (stroke (width 0) (type default) (color 0 0 0 0)) 455 | (uuid 2ecaee19-cfd7-4e38-999b-e223b0909598) 456 | ) 457 | (wire (pts (xy 125.73 111.76) (xy 130.81 111.76)) 458 | (stroke (width 0) (type default) (color 0 0 0 0)) 459 | (uuid 2fcddfba-8590-4f0d-af6a-561336624fd3) 460 | ) 461 | (wire (pts (xy 114.3 83.82) (xy 125.73 83.82)) 462 | (stroke (width 0) (type default) (color 0 0 0 0)) 463 | (uuid 32e041d2-0e5c-4b1c-b140-d07ff6c22969) 464 | ) 465 | (wire (pts (xy 114.3 62.23) (xy 118.11 62.23)) 466 | (stroke (width 0) (type default) (color 0 0 0 0)) 467 | (uuid 35d17d9d-0bb6-4e0d-b703-8dbfd35e3d72) 468 | ) 469 | (wire (pts (xy 114.3 86.36) (xy 115.57 86.36)) 470 | (stroke (width 0) (type default) (color 0 0 0 0)) 471 | (uuid 38be7bc3-712b-4edf-8c30-aff23e0bceaa) 472 | ) 473 | (wire (pts (xy 129.54 76.2) (xy 130.81 76.2)) 474 | (stroke (width 0) (type default) (color 0 0 0 0)) 475 | (uuid 398f109a-fba4-474c-84c5-54bf9ce09c16) 476 | ) 477 | (wire (pts (xy 128.27 115.57) (xy 128.27 116.84)) 478 | (stroke (width 0) (type default) (color 0 0 0 0)) 479 | (uuid 415622a0-87bb-4aab-bffe-7456e90ff05b) 480 | ) 481 | (wire (pts (xy 123.19 68.58) (xy 123.19 81.28)) 482 | (stroke (width 0) (type default) (color 0 0 0 0)) 483 | (uuid 422496d2-6d61-4502-a853-baa9677339bf) 484 | ) 485 | (wire (pts (xy 114.3 81.28) (xy 123.19 81.28)) 486 | (stroke (width 0) (type default) (color 0 0 0 0)) 487 | (uuid 437a31cd-2330-4ab4-8894-d0be89aa7fd8) 488 | ) 489 | (wire (pts (xy 114.3 95.25) (xy 118.11 95.25)) 490 | (stroke (width 0) (type default) (color 0 0 0 0)) 491 | (uuid 485e517c-7112-459b-aa39-71b8b016aece) 492 | ) 493 | (wire (pts (xy 130.81 101.6) (xy 125.73 101.6)) 494 | (stroke (width 0) (type default) (color 0 0 0 0)) 495 | (uuid 4d656cdf-2ff7-46ea-b8e4-10b6e9311e57) 496 | ) 497 | (wire (pts (xy 118.11 95.25) (xy 118.11 115.57)) 498 | (stroke (width 0) (type default) (color 0 0 0 0)) 499 | (uuid 5b8bc620-bfb5-431e-bc3c-6c59fe8f6b73) 500 | ) 501 | (wire (pts (xy 115.57 97.79) (xy 115.57 119.38)) 502 | (stroke (width 0) (type default) (color 0 0 0 0)) 503 | (uuid 5ce92093-9613-42fa-af3a-4619cd0ac870) 504 | ) 505 | (wire (pts (xy 115.57 72.39) (xy 115.57 86.36)) 506 | (stroke (width 0) (type default) (color 0 0 0 0)) 507 | (uuid 6706295f-efe8-4e97-952a-b81f10ce8805) 508 | ) 509 | (wire (pts (xy 115.57 119.38) (xy 130.81 119.38)) 510 | (stroke (width 0) (type default) (color 0 0 0 0)) 511 | (uuid 6ddfe4cd-0f14-40cf-b5c6-bb75803de3bc) 512 | ) 513 | (wire (pts (xy 123.19 109.22) (xy 130.81 109.22)) 514 | (stroke (width 0) (type default) (color 0 0 0 0)) 515 | (uuid 6de7ad84-d7e5-465a-9664-2badfa7645e3) 516 | ) 517 | (wire (pts (xy 114.3 114.3) (xy 123.19 114.3)) 518 | (stroke (width 0) (type default) (color 0 0 0 0)) 519 | (uuid 6f3e0f08-ebd1-40bb-a72e-42bbcad0eceb) 520 | ) 521 | (wire (pts (xy 128.27 116.84) (xy 130.81 116.84)) 522 | (stroke (width 0) (type default) (color 0 0 0 0)) 523 | (uuid 725c778a-414f-428c-9e85-269583339139) 524 | ) 525 | (wire (pts (xy 176.53 109.22) (xy 176.53 116.84)) 526 | (stroke (width 0) (type default) (color 0 0 0 0)) 527 | (uuid 7de3e2a7-16af-49de-b63e-267173d2984e) 528 | ) 529 | (wire (pts (xy 115.57 86.36) (xy 115.57 97.79)) 530 | (stroke (width 0) (type default) (color 0 0 0 0)) 531 | (uuid 7fa52a42-34c1-45f1-8790-8dddc97b58fa) 532 | ) 533 | (wire (pts (xy 114.3 67.31) (xy 127 67.31)) 534 | (stroke (width 0) (type default) (color 0 0 0 0)) 535 | (uuid 81f31b30-678a-4579-9664-0f61379410d2) 536 | ) 537 | (wire (pts (xy 125.73 111.76) (xy 125.73 116.84)) 538 | (stroke (width 0) (type default) (color 0 0 0 0)) 539 | (uuid 89254835-9b5b-4797-9f18-351d651220e7) 540 | ) 541 | (wire (pts (xy 114.3 97.79) (xy 115.57 97.79)) 542 | (stroke (width 0) (type default) (color 0 0 0 0)) 543 | (uuid 98261bb2-208f-423b-918c-d71bd188f036) 544 | ) 545 | (wire (pts (xy 120.65 91.44) (xy 130.81 91.44)) 546 | (stroke (width 0) (type default) (color 0 0 0 0)) 547 | (uuid 99c6d98d-daf8-4b27-83cc-e97e88f6128d) 548 | ) 549 | (wire (pts (xy 123.19 68.58) (xy 130.81 68.58)) 550 | (stroke (width 0) (type default) (color 0 0 0 0)) 551 | (uuid 9c675b98-54ed-4724-967b-847d4632e44e) 552 | ) 553 | (wire (pts (xy 114.3 72.39) (xy 115.57 72.39)) 554 | (stroke (width 0) (type default) (color 0 0 0 0)) 555 | (uuid a1fb66be-f5ee-46b2-a051-4e74d382f5ee) 556 | ) 557 | (wire (pts (xy 114.3 100.33) (xy 120.65 100.33)) 558 | (stroke (width 0) (type default) (color 0 0 0 0)) 559 | (uuid a8e3b376-63d6-48ee-84ca-bfd475353d70) 560 | ) 561 | (wire (pts (xy 118.11 62.23) (xy 118.11 95.25)) 562 | (stroke (width 0) (type default) (color 0 0 0 0)) 563 | (uuid b74c31a2-04cc-4fc9-9239-c419aaefed61) 564 | ) 565 | (wire (pts (xy 120.65 100.33) (xy 120.65 91.44)) 566 | (stroke (width 0) (type default) (color 0 0 0 0)) 567 | (uuid bb37beb3-6268-4583-9d91-158d577a985b) 568 | ) 569 | (wire (pts (xy 127 67.31) (xy 127 78.74)) 570 | (stroke (width 0) (type default) (color 0 0 0 0)) 571 | (uuid bbd86768-f292-4174-b3bb-efdcb3bfb164) 572 | ) 573 | (wire (pts (xy 123.19 114.3) (xy 123.19 109.22)) 574 | (stroke (width 0) (type default) (color 0 0 0 0)) 575 | (uuid c8b99829-4553-4ae6-9c37-98d941d6878f) 576 | ) 577 | (wire (pts (xy 120.65 106.68) (xy 130.81 106.68)) 578 | (stroke (width 0) (type default) (color 0 0 0 0)) 579 | (uuid cd20611b-7d5a-4ee8-bbf0-56f608ce96b3) 580 | ) 581 | (wire (pts (xy 166.37 57.15) (xy 166.37 109.22)) 582 | (stroke (width 0) (type default) (color 0 0 0 0)) 583 | (uuid cd9453cf-b15e-415d-87a0-04c3d8733dc2) 584 | ) 585 | (wire (pts (xy 114.3 102.87) (xy 123.19 102.87)) 586 | (stroke (width 0) (type default) (color 0 0 0 0)) 587 | (uuid cec481e6-d606-42c2-a52d-b4e197b2da6b) 588 | ) 589 | (wire (pts (xy 114.3 111.76) (xy 120.65 111.76)) 590 | (stroke (width 0) (type default) (color 0 0 0 0)) 591 | (uuid dae5435e-4b41-41dc-a1b9-dfb1f4225b73) 592 | ) 593 | (wire (pts (xy 114.3 119.38) (xy 115.57 119.38)) 594 | (stroke (width 0) (type default) (color 0 0 0 0)) 595 | (uuid dc4c80f8-9ce3-4784-a81b-bd33f7efee1a) 596 | ) 597 | (wire (pts (xy 114.3 69.85) (xy 115.57 69.85)) 598 | (stroke (width 0) (type default) (color 0 0 0 0)) 599 | (uuid e311aea3-53a6-4c82-8dac-bcf5d772b75a) 600 | ) 601 | (wire (pts (xy 130.81 68.58) (xy 130.81 57.15)) 602 | (stroke (width 0) (type default) (color 0 0 0 0)) 603 | (uuid e63ce9b5-c6af-4790-b93d-8cc49c968c29) 604 | ) 605 | (wire (pts (xy 114.3 116.84) (xy 125.73 116.84)) 606 | (stroke (width 0) (type default) (color 0 0 0 0)) 607 | (uuid e7ef8930-9ea0-47c9-b287-b12b55974edf) 608 | ) 609 | (wire (pts (xy 114.3 64.77) (xy 129.54 64.77)) 610 | (stroke (width 0) (type default) (color 0 0 0 0)) 611 | (uuid e8d8a748-634a-43f4-9d8d-733e3a733ff2) 612 | ) 613 | (wire (pts (xy 130.81 57.15) (xy 166.37 57.15)) 614 | (stroke (width 0) (type default) (color 0 0 0 0)) 615 | (uuid ee6c2ed1-b574-4ce7-b0a6-fe0cf7762ab0) 616 | ) 617 | (wire (pts (xy 123.19 93.98) (xy 130.81 93.98)) 618 | (stroke (width 0) (type default) (color 0 0 0 0)) 619 | (uuid f674d4df-a71b-4028-9c2e-17f2b16606fc) 620 | ) 621 | (wire (pts (xy 120.65 111.76) (xy 120.65 106.68)) 622 | (stroke (width 0) (type default) (color 0 0 0 0)) 623 | (uuid ff2cc5ad-0a68-4b85-b2c6-61257fdcd446) 624 | ) 625 | 626 | (text "DRAFT" (at 269.24 194.31 0) 627 | (effects (font (size 1.27 1.27)) (justify left bottom)) 628 | (uuid 0187c7cc-3b7a-42dd-aa37-fd9dca758263) 629 | ) 630 | (text "ESP32 BASED AIR QUALITY SENSOR" (at 185.42 172.72 0) 631 | (effects (font (size 3 3)) (justify left bottom)) 632 | (uuid 2119a4b7-85f5-42be-8577-25a963a1ee08) 633 | ) 634 | (text "SSD1327 OLED DISPLAY\nI2C BUS" (at 95.25 100.33 180) 635 | (effects (font (size 1.27 1.27)) (justify right bottom)) 636 | (uuid 3f762ca7-98b7-44ae-a37d-7e88ca13c280) 637 | ) 638 | (text "SPS30 AIR QUALITY SENSOR\n# OF PARTICLES / M^3\nI2C BUS\n" 639 | (at 95.25 69.85 0) 640 | (effects (font (size 1.27 1.27)) (justify right bottom)) 641 | (uuid 878de944-2b75-4562-aeeb-8afe064fe60d) 642 | ) 643 | (text "DHT22 SENSOR OUTPUTS\nTEMPERATURE(°C)\nHUMIDITY(%RH)" 644 | (at 95.25 85.09 0) 645 | (effects (font (size 1.27 1.27)) (justify right bottom)) 646 | (uuid 9162b213-3aa5-4529-b4c7-5d9ed14f1e15) 647 | ) 648 | (text "RGB STATUS LIGHT" (at 95.25 115.57 180) 649 | (effects (font (size 1.27 1.27)) (justify right bottom)) 650 | (uuid 9517841c-1a28-44ba-9b0d-c7ad612446d4) 651 | ) 652 | (text "2022.05.26" (at 207.01 194.31 0) 653 | (effects (font (size 1.27 1.27)) (justify left bottom)) 654 | (uuid d39f3a78-9361-4ac4-b7f0-2317d6c962eb) 655 | ) 656 | 657 | (symbol (lib_id "Custom:DHT22") (at 105.41 77.47 0) (mirror y) (unit 1) 658 | (in_bom yes) (on_board yes) 659 | (uuid 222c527f-ab9e-44de-8c37-f70f90387d2b) 660 | (property "Reference" "U3" (id 0) (at 100.33 80.01 0) 661 | (effects (font (size 1.27 1.27)) hide) 662 | ) 663 | (property "Value" "DHT22" (id 1) (at 105.41 77.47 0)) 664 | (property "Footprint" "Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical" (id 2) (at 105.41 77.47 0) 665 | (effects (font (size 1.27 1.27)) hide) 666 | ) 667 | (property "Datasheet" "" (id 3) (at 105.41 77.47 0) 668 | (effects (font (size 1.27 1.27)) hide) 669 | ) 670 | (pin "1" (uuid b50e2dd8-f50b-4316-8be7-8ad35696994e)) 671 | (pin "2" (uuid 987dd3d6-f4d1-4057-a70f-83e42e589478)) 672 | (pin "3" (uuid eac0fa55-dca0-49f8-8128-ed77630225c0)) 673 | ) 674 | 675 | (symbol (lib_id "Switch:SW_Push") (at 171.45 109.22 0) (unit 1) 676 | (in_bom yes) (on_board yes) 677 | (uuid 746b9cea-0d7d-4ee0-8460-a614d2aca365) 678 | (property "Reference" "SW?" (id 0) (at 171.45 101.6 0)) 679 | (property "Value" "SW_Push" (id 1) (at 171.45 104.14 0)) 680 | (property "Footprint" "" (id 2) (at 171.45 104.14 0) 681 | (effects (font (size 1.27 1.27)) hide) 682 | ) 683 | (property "Datasheet" "~" (id 3) (at 171.45 104.14 0) 684 | (effects (font (size 1.27 1.27)) hide) 685 | ) 686 | (pin "1" (uuid 7993177a-c026-420e-94ed-8d0887e22d7f)) 687 | (pin "2" (uuid 9e46ea55-adad-4026-931e-f9fcb899e2a0)) 688 | ) 689 | 690 | (symbol (lib_id "Custom:SSD1327_OLED") (at 100.33 91.44 0) (mirror y) (unit 1) 691 | (in_bom yes) (on_board yes) 692 | (uuid 7d274ad1-4d79-4d5f-b4e4-21c9bd0e8473) 693 | (property "Reference" "U1" (id 0) (at 97.79 95.25 0) 694 | (effects (font (size 1.27 1.27)) hide) 695 | ) 696 | (property "Value" "SSD1327_OLED" (id 1) (at 105.41 91.44 0)) 697 | (property "Footprint" "Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical" (id 2) (at 100.33 91.44 0) 698 | (effects (font (size 1.27 1.27)) hide) 699 | ) 700 | (property "Datasheet" "" (id 3) (at 100.33 91.44 0) 701 | (effects (font (size 1.27 1.27)) hide) 702 | ) 703 | (pin "1" (uuid 950bec61-9a1a-4e22-96cd-a389bfc7bf6b)) 704 | (pin "2" (uuid 5f733bbe-f0f1-4d39-8b35-3cc66078ac20)) 705 | (pin "3" (uuid 283706ae-90f3-4159-9c84-cbe7607531da)) 706 | (pin "4" (uuid ce0aa9ce-b45f-47bc-aeb8-5559ad998f73)) 707 | ) 708 | 709 | (symbol (lib_id "Custom:ESP32-S2-DevKitM-1") (at 146.05 64.77 0) (unit 1) 710 | (in_bom yes) (on_board yes) (fields_autoplaced) 711 | (uuid b26385cb-f1de-4874-8825-13d6bc5c0bb7) 712 | (property "Reference" "U4" (id 0) (at 132.08 62.23 0) 713 | (effects (font (size 1.27 1.27)) hide) 714 | ) 715 | (property "Value" "ESP32-S2-DevKitM-1" (id 1) (at 146.05 63.5 0)) 716 | (property "Footprint" "Custom:ESP32-S2-DevKitM-1" (id 2) (at 146.05 64.77 0) 717 | (effects (font (size 1.27 1.27)) hide) 718 | ) 719 | (property "Datasheet" "" (id 3) (at 146.05 64.77 0) 720 | (effects (font (size 1.27 1.27)) hide) 721 | ) 722 | (pin "" (uuid c5ba9e6e-0b4e-4c31-a954-f6719edf16e2)) 723 | (pin "1" (uuid 8524c930-1903-4683-bc7a-81453957f7f2)) 724 | (pin "10" (uuid 17522c95-a5af-4d4c-9602-94b30e3e18a1)) 725 | (pin "11" (uuid 99a3d132-f77a-4c62-af54-0bf3bcaae140)) 726 | (pin "12" (uuid 06c931b4-6e8a-47ed-b934-d1c145a76a53)) 727 | (pin "13" (uuid c0eeb9f7-d000-4132-9351-838728eb0d02)) 728 | (pin "14" (uuid 9c7f6c2e-e4f1-441c-978a-1b1a3e9b8941)) 729 | (pin "15" (uuid a35aa849-a552-4f8a-a9a9-19ac7a712a4b)) 730 | (pin "16" (uuid 02ccd784-1bf8-4cc2-93d6-1766ae1b2967)) 731 | (pin "17" (uuid 73543931-a099-41a5-b0b0-2e214c0f8fd0)) 732 | (pin "18" (uuid 65be0764-c55e-4f03-98d0-2d02ffdf0de7)) 733 | (pin "19" (uuid 985c8761-2b02-4206-bcb6-93aa6ce3ae4b)) 734 | (pin "2" (uuid 7b7c271d-8cc8-49af-83cd-d428346663d8)) 735 | (pin "20" (uuid ec62ba93-52e3-4803-a9f1-ba06f7076062)) 736 | (pin "21" (uuid 2d41fc86-30c2-4e51-bada-8f7159dd8efc)) 737 | (pin "22" (uuid 24866ff5-8457-4879-ae49-56a2972d1e7a)) 738 | (pin "23" (uuid 640be492-7788-4b2e-934f-1bef033520c9)) 739 | (pin "24" (uuid dcc8eb00-1e62-4ab3-8f6f-ab5c6b11f5b5)) 740 | (pin "25" (uuid b2698cdc-98e6-4b0e-9fb3-ef91068bb5af)) 741 | (pin "26" (uuid 51b6fac6-8946-4a7c-a40e-c9f251fb8ae3)) 742 | (pin "27" (uuid 6b670c8a-34bc-4b7a-a47e-8c1679f3dcf3)) 743 | (pin "28" (uuid f1f1173b-8547-43d1-a74a-5f5b9da735f1)) 744 | (pin "29" (uuid 2faea535-9f6d-4d62-b2e1-f40d247451fe)) 745 | (pin "3" (uuid ab04fc02-103a-446e-a8bc-4b074629d2f0)) 746 | (pin "30" (uuid 47f35f95-6960-4d4a-b188-66b7f1f00b8b)) 747 | (pin "31" (uuid d86e6c59-fa73-4e85-bab6-8038c2e1e65c)) 748 | (pin "32" (uuid b2940fe4-b429-431e-9b9c-ddd749028ed1)) 749 | (pin "33" (uuid 9337142b-bd7c-4071-987d-5dd51ed65a24)) 750 | (pin "34" (uuid 17b4e12f-5862-44f9-a9e1-4a5658a1f4a2)) 751 | (pin "35" (uuid 5bb488a8-8cef-426b-980d-270d2b1a5c5d)) 752 | (pin "36" (uuid d88bee98-d8a1-4e65-a2f3-07fedf7d3e77)) 753 | (pin "37" (uuid 5ccbd0a2-f974-4729-885c-da617fcdbc27)) 754 | (pin "38" (uuid b4bbd8d1-2837-4dbe-8e17-eae57319204c)) 755 | (pin "39" (uuid 3304f2c4-b9e4-4feb-9186-6d93c5c7cd16)) 756 | (pin "4" (uuid dff4734a-577e-4e0c-b638-030fec8534be)) 757 | (pin "40" (uuid 3f5fe08e-a273-4d7a-9dc8-48400cc2fa97)) 758 | (pin "41" (uuid f1516860-9f0a-4bad-b46f-31d8b68e1fce)) 759 | (pin "42" (uuid c1f67eb8-f835-483e-b10c-73b9e544b162)) 760 | (pin "5" (uuid 60121420-d7d0-41bc-a5db-4a5b7c9e92ba)) 761 | (pin "6" (uuid 26c52dcd-0853-4ab1-a167-d345fb714b36)) 762 | (pin "7" (uuid b38491e3-a94a-44da-b364-b63fd1d7c6e1)) 763 | (pin "8" (uuid ec5a0cf7-a19e-4b29-aafe-2fd53d554b2b)) 764 | (pin "9" (uuid f00b86cb-0cd6-45fe-acd1-6048f8542c58)) 765 | ) 766 | 767 | (symbol (lib_id "Custom:SPS30") (at 105.41 59.69 0) (mirror y) (unit 1) 768 | (in_bom yes) (on_board yes) 769 | (uuid bb7e1894-89fb-4d04-a401-3d64a911cd7a) 770 | (property "Reference" "U2" (id 0) (at 110.49 60.96 0) 771 | (effects (font (size 1.27 1.27)) hide) 772 | ) 773 | (property "Value" "SPS30" (id 1) (at 105.41 58.42 0)) 774 | (property "Footprint" "Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical" (id 2) (at 105.41 58.42 0) 775 | (effects (font (size 1.27 1.27)) hide) 776 | ) 777 | (property "Datasheet" "" (id 3) (at 105.41 58.42 0) 778 | (effects (font (size 1.27 1.27)) hide) 779 | ) 780 | (pin "1" (uuid 8153db9d-edc4-47dd-b3ec-1f080512022e)) 781 | (pin "2" (uuid 765cdbfc-0a98-4c1f-9f5c-4bbc3a1325ea)) 782 | (pin "3" (uuid 40870238-09cb-48fb-bebb-3762e80c9b68)) 783 | (pin "4" (uuid 7bfa4cb4-8d0b-45c4-acda-9f2fdaaa26e8)) 784 | (pin "5" (uuid 76890ad1-68e3-4247-9e43-a4ec80070277)) 785 | ) 786 | 787 | (symbol (lib_id "Custom:rgb_breakout") (at 105.41 107.95 0) (mirror y) (unit 1) 788 | (in_bom yes) (on_board yes) 789 | (uuid bd2ab190-dc99-42ae-8fe6-b8307b75349d) 790 | (property "Reference" "U5" (id 0) (at 100.33 110.49 0) 791 | (effects (font (size 1.27 1.27)) hide) 792 | ) 793 | (property "Value" "RGB_BREAKOUT" (id 1) (at 105.41 107.95 0)) 794 | (property "Footprint" "Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical" (id 2) (at 105.41 107.95 0) 795 | (effects (font (size 1.27 1.27)) hide) 796 | ) 797 | (property "Datasheet" "" (id 3) (at 105.41 107.95 0) 798 | (effects (font (size 1.27 1.27)) hide) 799 | ) 800 | (pin "1" (uuid a220e20e-80f6-4427-9298-0638e1acd3c1)) 801 | (pin "2" (uuid deff709d-3732-402c-afc4-11c54547b41d)) 802 | (pin "3" (uuid 6df602b7-83d9-478d-987a-7c6ce01ca49e)) 803 | (pin "4" (uuid 0186e844-472e-4805-9a6b-6e08fda0213d)) 804 | ) 805 | 806 | (sheet_instances 807 | (path "/" (page "1")) 808 | ) 809 | 810 | (symbol_instances 811 | (path "/746b9cea-0d7d-4ee0-8460-a614d2aca365" 812 | (reference "SW?") (unit 1) (value "SW_Push") (footprint "") 813 | ) 814 | (path "/7d274ad1-4d79-4d5f-b4e4-21c9bd0e8473" 815 | (reference "U1") (unit 1) (value "SSD1327_OLED") (footprint "Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical") 816 | ) 817 | (path "/bb7e1894-89fb-4d04-a401-3d64a911cd7a" 818 | (reference "U2") (unit 1) (value "SPS30") (footprint "Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical") 819 | ) 820 | (path "/222c527f-ab9e-44de-8c37-f70f90387d2b" 821 | (reference "U3") (unit 1) (value "DHT22") (footprint "Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical") 822 | ) 823 | (path "/b26385cb-f1de-4874-8825-13d6bc5c0bb7" 824 | (reference "U4") (unit 1) (value "ESP32-S2-DevKitM-1") (footprint "Custom:ESP32-S2-DevKitM-1") 825 | ) 826 | (path "/bd2ab190-dc99-42ae-8fe6-b8307b75349d" 827 | (reference "U5") (unit 1) (value "RGB_BREAKOUT") (footprint "Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical") 828 | ) 829 | ) 830 | ) 831 | --------------------------------------------------------------------------------