thompsonfw
@mthompson · Joined August 2025
Embedded developer · agriculture · 4 years in the field
- Topics
- 5
- Replies
- 24
- Points
- 0
Forum Replies Created
Which pin again? GPIO 4?
30 probes, no redesign budget.
Certified module. Testing your own radio design for intentional radiator certification costs more than your whole first batch, and a copied antenna rarely passes first time.
Door contacts are plain reed switches, yes. The PIRs will not run from the ESP32, they need their own 12 V supply. Do you know if the PIR outputs are relay contacts or open collector? It’s usually written on the board inside the cover.
Compute on the ESP32. I do tilt alarms on irrigation pivots this way.
The drops: a device profile by default allows 10 telemetry messages per second and 200 data points per second. You send 50 messages and 450 points a second, so most of it is acknowledged and dropped, and a device that keeps breaking its limit gets its session closed. That’s the rate_limit in the log. See MQTT for the table.
Angles, for roberts.r too: roll is rotation around the pallet’s long axis, pitch around the short axis, yaw is the compass heading. From the accelerometer alone, when the pallet is still:
float roll = atan2(ay, az) * 180 / PI;
float pitch = atan2(-ax, sqrt(ay * ay + az * az)) * 180 / PI;
In a moving truck the accelerometer also sees braking and bumps, so blend it with the gyro (complementary filter, about 98 % gyro, 2 % accel) or use a Madgwick filter library, which also uses the magnetometer for yaw.
Then send what you need, not the raw stream: once every 10 s the current roll/pitch, plus an immediate message when the tilt passes, say, 30°:
{"roll": 2.1, "pitch": -0.8, "tilt_max": 3.4}
tilt_max is the biggest tilt seen since the last message, so a short tip between messages is not lost. An alarm rule on tilt_max > 30 is then all you need.
Could be the radio. I had a Pi 4 with dead Bluetooth but working Wi-Fi once, same chip but it happens.
dtostrf it is. Valid JSON now, keys showing up. The NaN point bit me ten minutes later when I unplugged the sensor to test, so good call.
Termination and bias resistors? 40 m at 38400 without them can do exactly this.
Difference is effort. Pulling a card is zero skill. Dumping flash is easy on an ESP32 too, unless flash encryption is on. With flash encryption + NVS encryption, a dump gives you garbage.

