Medidor de saltos RC: tiempo en el aire y fuerza G con un Pico
Una IMU en tu carro todoterreno detecta la caída libre, mide cada salto y registra qué tan fuerte aterrizaste.
En el aire, un acelerómetro marca casi 0 g porque todo cae junto. El Pico vigila esa caída, la cronometra y captura el pico cuando las ruedas tocan el suelo.
Las baterías LiPo pueden incendiarse si se perforan, se sobrecargan o hacen cortocircuito. Cárgalas en una bolsa LiPo, nunca sin supervisión, y quita siempre las hélices mientras trabajas en la mesa.
Pasos de la misión
Monta la IMU
Fija la IMU plana y firme al chasis con cinta de espuma doble cara, cerca del centro del carro.
Conéctala
La IMU y la OLED comparten el I2C0 del Pico (GP0 SDA, GP1 SCL) a 3.3 V. Alimenta VSYS del Pico con un UBEC de 5 V.
Instala un driver
Copia un driver de MicroPython para MPU6050 al Pico, o lee los registros directamente como en el código.
Detecta saltos
Menos de 0.3 g por más de 100 ms significa que está en el aire; el aterrizaje termina cuando el total pasa de 1.5 g.
Compite
Muestra el último y el mejor tiempo en el aire en la OLED y reta a tus amigos a superar tu récord.
Código
# MicroPython on Pico 2 W with an MPU6050 at 0x68
from machine import I2C, Pin
import time, struct, math
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
i2c.writeto_mem(0x68, 0x6B, b'\x00') # wake up
i2c.writeto_mem(0x68, 0x1C, b'\x18') # +/-16 g range
def g():
ax, ay, az = struct.unpack('>hhh', i2c.readfrom_mem(0x68, 0x3B, 6))
return math.sqrt(ax*ax + ay*ay + az*az) / 2048
best, t0 = 0, None
while True:
a = g()
now = time.ticks_ms()
if a < 0.3 and t0 is None:
t0 = now
elif t0 is not None and a > 1.5:
air = time.ticks_diff(now, t0)
if air > 100:
best = max(best, air)
print('Airtime %d ms landing %.1f g best %d ms' % (air, a, best))
t0 = None
time.sleep_ms(2)Code comments are in English, like most libraries and docs — a good habit for makers.
Preguntas
¿Por qué mis lecturas de G al aterrizar son tan altas?
Los chasis de plástico duro transmiten picos bruscos. Picos cortos de 10 g o más son normales; compara los saltos entre sí.