import machine
import time
import dht
import ujson
from mfrc522 import MFRC522
# 1. إعداد الـ SPI والـ RFID (SDA=5, RST=22)
# تأكد بلي كرييتي ملف mfrc522.py وحطيتي فيه كود المكتبة
spi = machine.SPI(2, baudrate=2500000, sck=machine.Pin(18), mosi=machine.Pin(23), miso=machine.Pin(19))
rfid = MFRC522(spi=spi, gpioRst=22, gpioCs=5)
# 2. إعداد الحساسات (Analog Pins)
pot_vitesse = machine.ADC(machine.Pin(34))
pot_poids = machine.ADC(machine.Pin(35))
pot_vibr = machine.ADC(machine.Pin(32))
sensor_temp = dht.DHT22(machine.Pin(15))
# إعداد الـ ADC (باش يقرأ من 0 لـ 4095)
for pot in [pot_vitesse, pot_poids, pot_vibr]:
pot.atten(machine.ADC.ATTN_11DB)
print("--- Volvo FH16 Smart System Started ---")
print("Waiting for Driver RFID...")
while True:
# --- قراءة الـ RFID (الشيفور) ---
id_chauffeur = "No Card"
(stat, tag_type) = rfid.request(rfid.REQIDL)
if stat == rfid.OK:
(stat, raw_uid) = rfid.anticoll()
if stat == rfid.OK:
id_chauffeur = "0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
print("Driver Authenticated: OK")
# --- قراءة باقي الحساسات ---
try:
sensor_temp.measure()
# تحويل القيم لنسب مئوية أو قيم حقيقية
vitesse = int((pot_vitesse.read() / 4095) * 120) # من 0 لـ 120 كلم/س
poids = int((pot_poids.read() / 4095) * 40) # من 0 لـ 40 طن
vibr = pot_vibr.read() # قيمة الاهتزاز الخام
# تجميع البيانات فـ Dictionary واحد
telemetry = {
"driver": id_chauffeur,
"speed": vitesse,
"temp_motor": sensor_temp.temperature(),
"load": poids,
"vibration": vibr,
"lat": 33.5898,
"lng": -7.6039
}
# طبع البيانات فـ الـ Terminal باش تشوفها
print("DASHBOARD_DATA:", ujson.dumps(telemetry))
except Exception as e:
print("Sensor Error:", e)
# سرعة التحديث (ثانية واحدة)
time.sleep(1)Loading
mfrc522
mfrc522