
MacPicoModem
gutbomb/MacPicoModem
This project is an adaptation of the mecparts's Pico WiFi Modem.

ESP-IDF based IoT gateway for solar pump monitoring and control using SIM7600 4G modem and Modbus RTU.
SGW-01 V1.0 is an open-source printed circuit board by ymhtwe, from the ymhtwe/SGW01 repository on GitHub. It is a 2-layer board of 69 × 68.7 mm with 133 parts on 165 nets.
It is built around the MAX3485ED, SIM7600G and MMBT3904TT1G, with the SS34F, AO3401A and ESP32-C6-MINI-1 among its other parts. Its parts include 51 resistors, 33 capacitors, 21 ICs, 11 diodes and 5 connectors. It belongs with the ESP32 and RISC-V boards of this library.
ESP-IDF based IoT gateway for solar pump monitoring and control using SIM7600 4G modem and Modbus RTU.
Install ESP-IDF v5.0 or later:
# Follow ESP-IDF installation guide
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/cd d:\YMH\Myannovation\Projects\SGW01\FW\sgw01_v1.0.0
idf.py menuconfigImportant Configuration:
idf.py build
idf.py -p COM_PORT flash monitor| ESP32-S3 | SIM7600 | Description |
|---|---|---|
| GPIO 43 | RX | UART TX |
| GPIO 44 | TX | UART RX |
| GPIO 39 | PWRKEY | Power control |
| GPIO 38 | - | Flight mode |
| GPIO 36 | STATUS | Status input |
| GPIO 37 | NETLIGHT | Network status |
| GND | GND | Ground |
| 5V | VCC | Power supply |
| ESP32-S3 | RS485 | Description |
|---|---|---|
| GPIO 15 | TX | Transmit data |
| GPIO 16 | RX | Receive data |
| GPIO 4 | DE/RE | Direction control |
| ESP32-S3 | Component |
|---|---|
| GPIO 11 | LED (active low) |
CONFIG_GSM_APN="internet" # Your carrier's APN
CONFIG_GSM_USER="" # APN username (if required)
CONFIG_GSM_PASS="" # APN password (if required)CONFIG_TB_BROKER="demo.thingsboard.io"
CONFIG_TB_PORT=1883
CONFIG_TB_TOKEN="YOUR_DEVICE_TOKEN" # Get from ThingsBoard
CONFIG_TB_CLIENT_ID="ESP32_SGW01"
CONFIG_TB_PUB_TOPIC="v1/devices/me/telemetry"
CONFIG_TB_SUB_TOPIC="v1/devices/me/attributes"CONFIG_MODBUS_SLAVE_ADDR=1 # Solar pump Modbus address
CONFIG_MODBUS_BAUD_RATE=9600 # Modbus baud rate
CONFIG_MODBUS_READ_INTERVAL_MS=100 # Read interval
CONFIG_MQTT_PUBLISH_INTERVAL_MS=200 # Publish intervalThe gateway monitors 11 parameters from the solar pump:
Topic: v1/devices/me/telemetry
Format: {"Parameter_name": value}
Example: {"Actual_voltage": 220}Topic: v1/devices/me/attributes
Format: {"MControl": value}
Example: {"MControl": 1}Expected startup sequence:
I (1000) SGW01_SIM7600: ********************************* SYSTEM INFO *********************************
I (1050) SGW01_SIM7600: >> Free memory: XXXXX bytes
I (1100) SGW01_SIM7600: >> IDF version: vX.X
I (1150) sim7600_task: Starting SIM7600 task
I (1200) modbus_task: Starting Modbus task
I (1250) mqtt_task: Starting MQTT task
I (2000) sim7600_task: Powering on SIM7600...
I (22000) sim7600_task: Modem is ready!
I (25000) sim7600_task: Network registered (status: 1)
I (26000) sim7600_task: Signal quality: RSSI = 25
I (27000) sim7600_task: MQTT connected successfully
I (28000) mqtt_task: Subscribed successfully
I (30000) modbus_task: Read successful: V=220, I=13, P=2200, T=22
I (30200) mqtt_task: Published successfully (state 0)sgw01_v1.0.0/
├── components/ # Custom ESP-IDF components
│ ├── sim7600_driver/ # SIM7600 modem driver
│ ├── modbus_rtu/ # Modbus RTU master
│ └── solar_pump/ # Solar pump data management
├── main/ # Main application
│ ├── app_main.c # Entry point
│ ├── sim7600_task.c # Modem management
│ ├── modbus_task.c # Modbus communication
│ └── mqtt_task.c # MQTT publish/subscribe
├── CMakeLists.txt # Project build config
└── sdkconfig # ESP-IDF configurationsolar_pump_data_t structure in solar_pump.hparam_names[] arraysolar_pump_read_all() to read new registerCurrently publishes one parameter at a time. To publish all at once:
solar_pump_create_json_all() instead of solar_pump_create_json_single()mqtt_task.cCopyright © 2026 Myannovation. All rights reserved.
Ye Min Htwe
Myannovation
January 2026
For technical support or questions:
IMPLEMENTATION_SUMMARY.md for detailed documentationVersion: 1.0.0
Last Updated: January 17, 2026
| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 100 nF | SGW-01-LIB:C0603 | C4, C7, C10, C13, C14, C18, C19, C28, C30, C31, C32 |
| 10 | NPN BJT | SGW-01-LIB:SC-75-3_L1.6-W0.8-P1.00-LS1.6-BR | U7, U8, U9, U10, U11, U16, U17, U18, U20, U21 |
| 7 | 0R | SGW-01-LIB:R0402 | R4, R27, R28, R29, R30, R31, R32 |
| 6 | 100k | SGW-01-LIB:R0402 | R18, R20, R21, R40, R41, R43 |
| 6 | 10k | SGW-01-LIB:R0402 | R9, R14, R36, R37, R38, R51 |
| 6 | 1k | SGW-01-LIB:R0402 | R17, R19, R22, R39, R42, R44 |
| 6 | ~ | SGW-01-LIB:TestPoint_Pad_1.5x1.5mm | TP1, TP2, TP3, TP4, TP5, TP6 |
| 4 | 10 uF | SGW-01-LIB:C0603 | C3, C9, C12, C29 |
| 4 | 390R | SGW-01-LIB:R0402 | R15, R16, R45, R50 |
| 4 | 4.7k | SGW-01-LIB:R0402 | R23, R25, R47, R49 |
| 4 | 47k | SGW-01-LIB:R0402 | R24, R26, R46, R48 |
| 3 | 20k | SGW-01-LIB:R0402 | R12, R34, R35 |
| 3 | 22 pF | SGW-01-LIB:C0603 | C20, C21, C22 |
| 3 | ~ | SGW-01-LIB:D0402 | D5, D6, D7 |
| 3 | ~ | SGW-01-LIB:IPEX-SMD_BWIPX-1-001E | J2, J3, J4 |
| 2 | 100 nF | SGW-01-LIB:C0805 | C26, C27 |
| 2 | 100 uF | SGW-01-LIB:CASE-B_3528 | C23, C24 |
| 2 | 2.7 uH | SGW-01-LIB:IND-SMD_L6.0-W6.0_1255AY-2R2N | L1, L2 |
| 2 | 237k | SGW-01-LIB:R0402 | R6, R10 |
| 2 | 33 nF | SGW-01-LIB:C0603 | C2, C11 |
| 2 | 5.1k | SGW-01-LIB:R0402 | R1, R2 |
| 2 | RED | SGW-01-LIB:LED-SMD_L1.7-W1.1-R-RD_ORANGE | LED1, LED2 |
| 2 | TPS62933FDRLR | SGW-01-LIB:SOTFL50P160X60-8N | U5, U6 |
| 2 | ~ | SGW-01-LIB:DFN-SMD_L1.0-W0.6-BI | D1, D2 |
| 1 | 1 uF | SGW-01-LIB:C0603 | C17 |
| 1 | 10 k | SGW-01-LIB:R0402 | R3 |
| 1 | 100 pF | SGW-01-LIB:C0603 | C15 |
| 1 | 120R | SGW-01-LIB:R0402 | R33 |
| 1 | 18 pF | SGW-01-LIB:C0603 | C5 |
| 1 | 20 k | SGW-01-LIB:R0402 | R5 |
| 1 | 220 uF | SGW-01-LIB:CASE-B_3528 | C33 |
| 1 | 3 A | SGW-01-LIB:SMAF_L3.5-W2.6-LS4.7-RD-1 | U4 |
| 1 | 30.9k | SGW-01-LIB:R0402 | R13 |
| 1 | 30V 4A | SGW-01-LIB:SOT-23_L2.9-W1.3-P1.90-LS2.4-BR | U3 |
| 1 | 33 pF | SGW-01-LIB:C0603 | C16 |
| 1 | 37.4k | SGW-01-LIB:R0402 | R8 |
| 1 | 47 nH | SGW-01-LIB:L0402 | L3 |
| 1 | 47 uF | SGW-01-LIB:C0805 | C25 |
| 1 | 47 uF | SGW-01-LIB:C0603 | C6 |
| 1 | 47uF | SGW-01-LIB:C0603 | C8 |
| 1 | 78.7 | SGW-01-LIB:R0402 | R11 |
| 1 | 78.7k | SGW-01-LIB:R0402 | R7 |
| 1 | 9.2 V | SGW-01-LIB:SMF_L2.8-W1.8-LS3.7-RD | D3 |
| 1 | BLUE | SGW-01-LIB:LED-SMD_L1.7-W1.1-R-RD_ORANGE | LED4 |
| 1 | BOOT | SGW-01-LIB:SW-SMD_L3.9-W3.0-P4.45 | SW2 |
| 1 | CON-SMA-EDGE-S | SGW-01-LIB:RFSOLUTIONS_CON-SMA-EDGE-S | J5 |
| 1 | ESP32-C6-MINI-1 | RF_Module:ESP32-C6-MINI-1 | U1 |
| 1 | GREEN | SGW-01-LIB:LED-SMD_L1.7-W1.1-R-RD_ORANGE | LED3 |
| 1 | MAX3485ED | SGW-01-LIB:SOP-8_L4.9-W3.9-P1.27-LS6.0-BL | U14 |
| 1 | Reset | SGW-01-LIB:SW-SMD_L3.9-W3.0-P4.45 | SW1 |
| 1 | SIM7600G | SGW-01-LIB:IC_SIM7600G | U2 |
| 1 | USBC_16PIN | SGW-01-LIB:USBC_C2765186 | J1 |
| 1 | ~ | SGW-01-LIB:C0603 | C1 |
| 1 | ~ | SGW-01-LIB:RJ45-TH_R-RJ45R10P-B000 | U15 |
| 1 | ~ | SGW-01-LIB:SOT-23_L2.9-W1.3-P1.90-LS2.4-BR | D4 |
| 1 | ~ | SGW-01-LIB:BUZ-TH_BD9.0-P4.00-D0.6-FD | U19 |
| 1 | ~ | SGW-01-LIB:KEY-TH_K2-1102AQ-JXXW-XX | SW3 |
| 1 | ~ | SGW-01-LIB:SIM-SMD_SMN-305 | U13 |
| 1 | ~ | SGW-01-LIB:VSSOP-8_L2.3-W2.0-P0.50-LS3.1-BL | U12 |
It measures 69 × 68.7 mm and has 2 copper layers, 1.6 mm thick.
133 parts, built around the MAX3485ED, SIM7600G, MMBT3904TT1G and SS34F. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the ymhtwe/SGW01 repository on GitHub, at the commit this page was made from: the board is HW/SGW-01_V1.0/SGW-01_V1.0/SGW-01_V1.0-backups/SGW-01_V1.0-2026-04-28_213030/SGW-01_V1.0.kicad_pcb and its schematic HW/SGW-01_V1.0/SGW-01_V1.0/SGW-01_V1.0-backups/SGW-01_V1.0-2026-04-28_213030/SGW-01_V1.0.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask ymhtwe before reusing the design.

gutbomb/MacPicoModem
This project is an adaptation of the mecparts's Pico WiFi Modem.

bestestdev/fone
It's a cell phone. Going with a simple old school Nokia-style for this project.



nanographs/Open-Beam-Interface
Just what you need to control the beam and get an image.

Aryan-git-byte/Soil-metrics
Portable AI-powered soil monitoring device with LTE connectivity, GPS, touchscreen interface, and real-time soil health analytics.

Open-Air-Foundation/pcb-module-ce-card
The CE card adds 4G cellular connectivity (LTE Cat 1) to AirGradient monitors. It can be used in the AirGradient Open Air, the AirGradient ONE, and the Open Air Max.

LongDo1902/STM32_Drone
Developing quadcopter from scratch including stm32 programing and self-built flight controller PCB.