import machine
import time
import dht
import ujson
from mfrc522 import MFRC522
# 1. RFID Setup (Corrected Line 9)
spi = machine.SPI(2, baudrate=2500000, sck=machine.Pin(18), mosi=machine.Pin(23), miso=machine.Pin(19))
rfid = MFRC522(spi, 22, 5)
# 2. Analog Sensors (Vitesse, Poids, Vibration, Gaz)
vitesse_pin = machine.ADC(machine.Pin(34))
poids_pin = machine.ADC(machine.Pin(35))
vibr_pin = machine.ADC(machine.Pin(32))
gaz_pin = machine.ADC(machine.Pin(33))
for pin in [vitesse_pin, poids_pin, vibr_pin, gaz_pin]:
pin.atten(machine.ADC.ATTN_11DB)
# 3. Digital Sensors
sensor_temp = dht.DHT22(machine.Pin(15))
trig = machine.Pin(13, machine.Pin.OUT)
echo = machine.Pin(12, machine.Pin.IN)
buzzer = machine.Pin(14, machine.Pin.OUT)
def get_distance():
trig.off()
time.sleep_us(2)
trig.on()
time.sleep_us(10)
trig.off()
while echo.value() == 0: pass
t1 = time.ticks_us()
while echo.value() == 1: pass
t2 = time.ticks_us()
return (time.ticks_diff(t2, t1) * 0.034) / 2
print("--- Volvo FH16 System Started ---")
while True:
# --- RFID Reading ---
driver = "No Card"
(stat, tag_type) = rfid.request(rfid.REQIDL)
if stat == rfid.OK:
(stat, raw_uid) = rfid.anticoll()
if stat == rfid.OK:
driver = "0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
try:
sensor_temp.measure()
dist = get_distance()
# Telemetry Data
telemetry = {
"rfid": driver,
"speed": int((vitesse_pin.read() / 4095) * 120),
"weight": int((poids_pin.read() / 4095) * 40),
"temp": sensor_temp.temperature(),
"vibr": vibr_pin.read(),
"gas": gaz_pin.read(),
"dist": int(dist),
"lat": 33.5898, # GPS Simulation
"lng": -7.6039
}
# Output for React/Terminal
print("DASHBOARD_DATA:", ujson.dumps(telemetry))
# Alert if Gaz is high
if telemetry["gas"] > 2000:
buzzer.on()
time.sleep(0.1)
buzzer.off()
except Exception as e:
print("Error:", e)
time.sleep(0.5)Loading
mfrc522
mfrc522