Solar Bee Monitor Schematic
U_5V with verified Texas Instruments TPS56637RPAR:
L_5V: 3.3 µH, reference-class 10.5 A peak / 9.7 A RMSJ_BAT shift to clear a mounting hole.Table
| Item | Result |
|---|---|
| Final regulator | TPS56637RPAR |
| Regulator action | Replaced, not overridden |
| Components | 75 |
| Nets | 47 |
| Placed components | 75 / 75 |
| Board | 100 × 100 mm, 2 mm corners |
| Stackup | Standard 4-layer |
| Component fill | 16.6% |
| NodeMCU row spacing | 25.4 mm exact |
| Header positions | X = −12.7 mm and +12.7 mm; Y = 20 mm |
| Header orientation | Parallel, 0°, matching pin-1 direction |
| Airwires | 124 |
| Routed completion | Not completed |
BAT_PROTECTED_IF; the checker states they will be treated as one pin. This is not the original malformed thermal-pad defect.generating, stopped, resuming, and restarted states without persisting routes. The job could not be cleanly completed or restarted within this pass. I did not force routing or manually attempt 124 connections.U_5V:VIN_1; this originates from the replacement library footprint’s HotRod-QFN copper construction.board = esp32dev. This pin map assumes the documented 38-pin original ESP32 DevKit/NodeMCU-style carrier mapping; verify the purchased module against the schematic header mapping before insertion.Table
| Function | GPIO |
|---|---|
| I2C SDA/SCL | 21 / 22 |
| ADXL345 VSPI SCK/MISO/MOSI/CS | 18 / 19 / 23 / 32 |
| HX711 DOUT/SCK | 35 / 33 |
| INMP441 BCLK/WS/SD | 26 / 25 / 34 |
| ESP32-CAM UART TX/RX, power EN | 17 / 16 / 4 |
| RS485 TX/RX/DE | 13 / 14 / 27 |
| Solar/Battery ADC1 | 36 / 39 |
Ini
[env:esp32dev] platform = espressif32 board = esp32dev framework = arduino monitor_speed = 115200 lib_deps = sensirion/arduino-i2c-scd4x adafruit/Adafruit SHT31 Library adafruit/Adafruit ADXL345 adafruit/Adafruit Unified Sensor electroniccats/MPU6050 bogde/HX711 robtillaart/OPT3001
Cpp
#include <Arduino.h> #include <Wire.h> #include <SPI.h> #include <driver/i2s.h> #include <Adafruit_SHT31.h> #include <Adafruit_ADXL345_U.h> #include <HX711.h> constexpr int SDA_PIN=21,SCL_PIN=22; constexpr int SPI_SCK=18,SPI_MISO=19,SPI_MOSI=23,ADXL_CS=32; constexpr int HX_DOUT=35,HX_SCK=33; constexpr int I2S_BCLK=26,I2S_WS=25,I2S_SD=34; constexpr int CAM_TX=17,CAM_RX=16,CAM_EN=4; constexpr int RS_TX=13,RS_RX=14,RS_DE=27; constexpr int ADC_SOLAR=36,ADC_BAT=39; // ADC scaling: solar 200k/27k (nominal factor 8.4074), battery 100k/39k (3.5641). // Convert calibrated ADC pin voltage using these factors; characterize ESP32 ADC per module. HardwareSerial CamSerial(2); HardwareSerial GateSerial(1); Adafruit_SHT31 sht31=Adafruit_SHT31(); Adafruit_ADXL345_Unified adxl(12345); HX711 hx; void muxChannel(uint8_t ch){ Wire.beginTransmission(0x70); Wire.write(1u<<ch); Wire.endTransmission(); } // GATE_PWR_EN is exposed as a hardware-default-off service/test control because no additional // non-strapping output GPIO remains in the locked 38-pin allocation. Do not enable gate power // until the final controller/control expansion decision is made. void setup(){ Serial.begin(115200); // UART0 preserved pinMode(CAM_EN,OUTPUT); digitalWrite(CAM_EN,LOW); pinMode(RS_DE,OUTPUT); digitalWrite(RS_DE,LOW); Wire.begin(SDA_PIN,SCL_PIN,100000); SPI.begin(SPI_SCK,SPI_MISO,SPI_MOSI,ADXL_CS); adxl.begin(ADXL345_DEFAULT_ADDRESS,&SPI); hx.begin(HX_DOUT,HX_SCK); CamSerial.begin(115200,SERIAL_8N1,CAM_RX,CAM_TX); GateSerial.begin(115200,SERIAL_8N1,RS_RX,RS_TX); i2s_config_t c{}; c.mode=(i2s_mode_t)(I2S_MODE_MASTER|I2S_MODE_RX); c.sample_rate=16000; c.bits_per_sample=I2S_BITS_PER_SAMPLE_32BIT; c.channel_format=I2S_CHANNEL_FMT_ONLY_LEFT; c.communication_format=I2S_COMM_FORMAT_STAND_I2S; c.intr_alloc_flags=0; c.dma_buf_count=4; c.dma_buf_len=256; c.use_apll=false; c.tx_desc_auto_clear=false; c.fixed_mclk=0; i2s_pin_config_t p{I2S_BCLK,I2S_WS,I2S_PIN_NO_CHANGE,I2S_SD}; i2s_driver_install(I2S_NUM_0,&c,0,nullptr); i2s_set_pin(I2S_NUM_0,&p); analogReadResolution(12); muxChannel(0); sht31.begin(0x44); } void loop(){ uint16_t solar=analogRead(ADC_SOLAR), bat=analogRead(ADC_BAT); muxChannel(0); float t=sht31.readTemperature(); Serial.printf("solar=%u bat=%u temp=%.2f\n",solar,bat,t); delay(1000); }
Final GPIO map
platformio.ini
src/main.cpp