ESP-Nodes/README.md

81 lines
4.4 KiB
Markdown
Raw Normal View History

2023-11-21 14:52:36 -05:00
# ESP-Nodes
2024-07-06 21:38:37 -04:00
Eco-system of ESP32s Nodes and ATtiny85 peripherals with different functionalities.
2024-07-06 21:20:47 -04:00
2024-07-07 08:55:19 -04:00
<p>The ESP32-Node is designed to be a low-cost, vanila solution for experimenting with embedded and IoT devices. The ESP32-Node is intended to College students taking Electronics program or advanced users who are looking for functional ESP32 embedded board with minimal size.</p>
2024-07-06 21:20:47 -04:00
2024-07-06 21:40:46 -04:00
<img alt="ESP32-Node PCB" src="https://github.com/alexandrebobkov/ESP-Nodes/blob/main/assets/ESP32-Node-001.jpg" width="50%"/>
2024-07-06 21:35:56 -04:00
2024-07-06 21:39:16 -04:00
<p><i>ESP32-Node Features:</i></p>
2024-07-07 12:40:14 -04:00
- Uses bare-bones ESP32-WROOM-32D Module [^1]
2024-07-06 21:44:07 -04:00
- Direct connections to all GPIOs
2024-07-07 12:40:14 -04:00
- Miniature in size; only 35.7mm x 35.7mm
2024-07-07 12:43:09 -04:00
- Built-in 3V3 voltage regulator (V<sub>max</sub>=15V) and reversed supply voltage polarity protection
2024-07-06 21:38:37 -04:00
- Pre-wired strapping pins for ensuring proper booting on power-on
2024-07-06 21:44:07 -04:00
- blue power-on LED
2024-07-06 21:38:37 -04:00
- two programmable LEDs
2024-07-06 22:58:19 -04:00
- programmable via [UART](https://github.com/alexandrebobkov/ESP-Nodes/tree/main?tab=readme-ov-file#uart) -> no need for serial drivers
2024-07-06 21:48:22 -04:00
2024-07-07 09:14:56 -04:00
### ESP32-WROOM-32D Module Adapter Pinouts
2024-07-07 16:14:29 -04:00
<p>The adapter allows interchangability of ESP32 modules between different nodes. The adapter contains minimal components on its PCB, just enough to ensure module's operation. (ESP32 8-N-1)</p>
2024-07-06 21:48:22 -04:00
2024-07-06 21:51:42 -04:00
<img alt="ESP32-Node Pinout" src="https://github.com/alexandrebobkov/ESP-Nodes/blob/main/assets/ESP32-Node-pinout.png" width="350px"/>
2024-07-06 22:26:19 -04:00
| Physical Pin | Descrption and Logical Pin | Extended Function |
| --- | --- | --- |
| `1` `15` `38` | Ground | |
2024-07-06 22:52:53 -04:00
| `2` | `3V3` | |
2024-07-06 22:26:19 -04:00
| `3` | EN | |
2024-07-06 22:27:34 -04:00
| `4` `5` `6` `7` | **Inputs Only** `GPIO36` `GPIO39` `GPIO34` `GPIO35` | ADC1_CH0, ADC1_CH3, ADC1_CH6, ADC1_CH7 |
2024-07-06 22:26:19 -04:00
| `8` `9` | `GPIO32` `GPIO33` | TOUCH_9, TOUCH_8 |
2024-07-06 22:30:01 -04:00
| `10` `11` | `GPIO25` `GPIO26` | DAC_1, DAC_2 |
| `12` | `GPIO27` | TOUCH_7 |
2024-07-06 22:33:12 -04:00
| `13` `14` | `GPIO14` `GPIO12` | `HSPI_CLK` `HSPI_MISO` TOUCH_6 TOUCH_7 |
| `16` | `GPIO13` | `HSPI_MOSI` ADC2_CH4 |
2024-07-06 22:52:53 -04:00
| `17` `18` `19` `20` `21` `22` | **Module Internal Use Only** `GPIO09` `GPIO10` `GPIO11` `GPIO08` `GPIO07` `GPIO06` |
2024-07-06 22:35:34 -04:00
| `23` `24` | `GPIO02` `GPIO15` | AD2_CH3 ADC2_CH2 |
| `25` `26` | `GPIO00` `GPIO04` | TOUCH_1 TOUCH_0 |
2024-07-06 22:40:34 -04:00
| `27` `28` | `GPIO16` `GPIO17` | `UART2_RXD` `UART2_TXD` |
| `29` `30` `31` | `GPIO05` `GPIO18` `GPIO19` | `VSPI_CS0` `VSPI_CLK` `VSPI_MISO` |
| `32` | Not Connected |
| `33` | `GPIO21` | `SDA` |
| `34` `35` | `GPIO03` `GPIO01` | UART0_RXD UART0_TXD |
| `36` | `GPIO22` | `SCL` |
2024-07-06 22:50:39 -04:00
| `37` | `GPIO23` | VSPI_MOSI |
2024-07-06 22:54:48 -04:00
[^1]: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf
2024-07-07 09:01:55 -04:00
2024-07-07 12:43:09 -04:00
### Programming via UART
2024-07-07 12:44:08 -04:00
Bare-bones ESP32 module can be programmed via UART interface (`GPIO03` and `GPIO01`) using USB to UART adapter.
2024-07-07 09:01:55 -04:00
2024-07-07 09:16:27 -04:00
## Temperature Node Key Elements and Components
2024-07-07 09:07:15 -04:00
2024-07-07 09:14:56 -04:00
The **Temperature Node** broadcasts the air temperature, atmospheric pressure and air humidity over secured MQTT.
2024-07-07 09:04:53 -04:00
2024-07-07 09:38:42 -04:00
### I2C Air Temperature, Pressure and Humidity Sensor Board (BME280)
2024-07-07 09:04:53 -04:00
2024-07-07 13:34:35 -04:00
BME280 is combined temperature, humidity and pressure sensor. The unit combines high linearity and high accuracy sensors and is perfectly feasible for low current consumption, long-term stability and high EMC robustness. The humidity sensor offers an extremely fast response time and therefore supports performance requirements for emerging applications such as context awareness, and high accuracy over a wide temperature range.[^2]
2024-07-07 12:12:54 -04:00
2024-07-07 09:32:26 -04:00
<img alt="ESP32-Node Pinout" src="https://github.com/alexandrebobkov/ESP-Nodes/blob/main/assets/BME280.jpg" width="200px"/>
2024-07-07 09:29:55 -04:00
2024-07-07 09:34:32 -04:00
> [!IMPORTANT]
2024-07-07 13:36:22 -04:00
> BM**E**280[^2] and BM**P**280[^3] look almost identical. However, BME280 sensor has a square form, while BMP280 has a rectangular form. In addition, the two sensor boards can have different I<sup>2</sup>C addresses.
2024-07-07 09:34:59 -04:00
>
> <img alt="ESP32-Node Pinout" src="https://github.com/alexandrebobkov/ESP-Nodes/blob/main/assets/BME280-BMP280.jpg" width="100px"/>
2024-07-07 09:34:32 -04:00
2024-07-07 12:18:14 -04:00
**4-pin variant**
2024-07-07 13:36:22 -04:00
The BME280 sensor board interface uses 4 pins and is 13mm by 10.5mm in size. The four pins are `VIN`, `GND`, `SCL` and `SDA`. The measured values are sent via I<sup>2</sup>C protocol. The I<sup>2</sup>C slave address is pre-defined and can take value either 0x76 or 0x77 (BME280 Datasheet, page 32)[^4].
2024-07-07 09:27:57 -04:00
2024-07-07 11:54:40 -04:00
### Wiring
2024-07-07 12:40:14 -04:00
| Pin | ESP32 GPIO |
2024-07-07 12:12:18 -04:00
| --- | --- |
2024-07-07 12:17:07 -04:00
| `SCL` | `GPIO22` |
| `SDA ` | `GPIO21` |
2024-07-07 12:12:18 -04:00
2024-07-07 12:06:19 -04:00
[^2]: https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/
2024-07-07 13:34:35 -04:00
[^3]: https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp280/
[^4]: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme280-ds002.pdf