Sim kartta bakiye vardı ve doğru takılmıştı. Eski bir telefona takıp test ettik sms gidiyordu. Projemizin donanım ve kod kısmını sürekli kontrol ettik hata bulamadık. Yardımcı olabilirseniz çok memnun oluruz. Birde proje teslim tarihine 3 gün kaldı erken cevap verebilirseniz çok güzel olur. Kodları aşağıya ekledim. Şimdiden teşekkürler.
Not: ilk kez bu platformu kullanıyorum kod yazımında gariplikler olduğu için özür dilerim.
from machine import UART, Pin, I2C
from i2c_lcd import I2cLcd
import time, ujson
UART ayarları
uart = UART(2, baudrate=9600, tx=17, rx=16)
Son işlenen SMS’leri tutan liste
processed_sms = 
MAX_STORED = 3
SMS tampon
sms_buffer = “”
sms_ready = False
Butonlar ve buzzer
buzzer = Pin(2, Pin.OUT)
buzzer.off()
helpB = Pin(4, Pin.IN, Pin.PULL_UP)
personB = Pin(5, Pin.IN, Pin.PULL_UP)
LCD başlatma
try:
i2c = I2C(0, sda=Pin(21), scl=Pin(22))
adress = i2c.scan()
lcd = I2cLcd(i2c, adress[0], 2, 16)
except:
print(“lcd yok”)
AT komutları gönder
def send_command(cmd, delay=150):
uart.write(cmd + ‘\r\n’)
time.sleep_ms(delay)
if uart.any():
print(uart.read().decode())
SMS gönderme fonksiyonu
def send_sms(number, message):
uart.write(‘AT+CMGF=1\r\n’)
time.sleep(1)
uart.write(f’AT+CMGS=“{number}”\r\n’)
time.sleep(1)
uart.write(message)
uart.write(chr(26))
time.sleep(3)
SMS ayrıştırma
def split_sms(raw):
try:
lines = raw.split(“\r\n”)
for i, line in enumerate(lines):
if “+CMT” in line and i + 1 < len(lines):
number = line.split(‘"’)[1]
message = lines[i + 1].strip()
return number, message
except Exception as e:
print(“Hata oluştu:”, e)
return None, None
def add_person(name, phone_number):
try:
with open(“guide.json”, “r”) as file:
data = ujson.load(file)
    # Aynı isim veya numara var mı kontrol et
    for person in data["persons"]:
        if person["name"].lower() == name.lower():
            return "isim zaten var"
        if person["pNumber"] == phone_number:
            return "numara zaten var"
    new_person = {"name": name, "pNumber": phone_number}
    data["persons"].append(new_person)
    with open("guide.json", "w") as file:
        ujson.dump(data, file)
    return "eklendi"
except Exception as e:
    return "Kisi eklenemedi"
def remove_person(name):
try:
with open(“guide.json”, “r”) as file:
data = ujson.load(file)
    found = False
    for person in data["persons"]:
        if person["name"].lower() == name.lower():
            data["persons"].remove(person)
            found = True
            break
    if found:
        with open("guide.json", "w") as file:
            ujson.dump(data, file)
        return "silindi"
    else:
        return "bulunamadi"
except Exception as e:
    return "silme hatasi"
Başlat
send_command(‘AT’)
send_command(‘AT+CMGF=1’)
send_command(‘AT+CNMI=2,2,0,0,0’)
print(“proje başlatıldı”)
while True:
lcd.move_to(0, 0)
lcd.putstr(“YARDIM (3x)”)
lcd.move_to(1, 0)
lcd.putstr(“Kisiler”)
if uart.any():
    try:
        line = uart.readline()
        if line:
            line = line.decode("utf-8", "ignore").strip()
            print("Gelen veri:", line)
            if line.startswith("+CMT"): 
                sms_buffer = line + "\r\n"
            elif sms_buffer:
                sms_buffer += line
                sms_ready = True
            if sms_ready:
                number, message = split_sms(sms_buffer)
                sms_ready = False
                sms_buffer = ""
                if number and message and number != "+905054936236":
                    unique_key = number + message
                    if unique_key not in processed_sms:
                        processed_sms.append(unique_key)
                        if len(processed_sms) > MAX_STORED:
                            processed_sms.pop(0)
                        print("Numara:", number)
                        print("Mesaj:", message)
                        parts = message.strip().split("/")
                        if len(parts) == 2 and parts[0].lower().strip() == "kayit":
                            new_person = parts[1].strip()
                            new_number = number.strip()
                            result = add_person(new_person, new_number)
                            print(result)
                            send_sms(number, f"{new_person} {result}")
                            lcd.clear()
                            lcd.putstr(f"{result}")
                            time.sleep(2)
                            lcd.clear()
                        elif len(parts) == 2 and parts[0].lower().strip() == "sil":
                            del_name = parts[1].strip()
                            result = remove_person(del_name)
                            print(result)
                            send_sms(number, f"{del_name} {result}")
                            lcd.clear()
                            lcd.putstr(f"{result}")
                            time.sleep(2)
                            lcd.clear()
                        else:
                            # Rehberde isim arama
                            try:
                                with open("guide.json", "r") as f:
                                    data = ujson.load(f)
                                    name = None
                                    for person in data["persons"]:
                                        if person["pNumber"] == number:
                                            name = person["name"]
                                            break
                            except:
                                name = None
                            lcd.clear()
                            lcd.move_to(0, 0)
                            if name:
                                lcd.putstr(name[:16])  # İsim varsa onu yaz
                            else:
                                lcd.putstr(number[-16:])  # İsim yoksa numaranın son 16 karakteri
                            lcd.move_to(1, 0)
                            lcd.putstr(message[:16])  # Mesajın ilk 16 karakterini yaz
                            time.sleep(2)
                            lcd.clear()
                    else:
                        print("Aynı SMS tekrar geldi, atlandı.")
                else:
                    print("SMS çözümleme başarısız veya kendi mesajımız.")
    except Exception as e:
        print("Decode hatası:", e)
if personB.value() == 0:
    with open("guide.json", "r") as f:
        values = ujson.load(f)
    for person in values["persons"]:
        lcd.clear()
        lcd.move_to(0, 0)
        lcd.putstr((person["name"] + " :")[:16])
        lcd.move_to(1, 0)
        lcd.putstr(person["pNumber"][:16])
        time.sleep_ms(800)
        lcd.clear()
if helpB.value() == 0:
    lcd.move_to(0, 0)
    lcd.putstr("YARDIM (2x)")
    buzzer.on()
    time.sleep_ms(300)
    buzzer.off()
    time.sleep_ms(200)
    if helpB.value() == 0:
        lcd.move_to(0, 0)
        lcd.putstr("YARDIM (1x)")
        buzzer.on()
        time.sleep_ms(300)
        buzzer.off()
        time.sleep_ms(200)
        if helpB.value() == 0:
            buzzer.on()
            lcd.clear()
            lcd.move_to(0, 0)
            lcd.putstr("SMS yollaniyor")
            time.sleep(0.5)
            buzzer.off()
            with open("guide.json", "r") as f:
                values = ujson.load(f)
            for person in values["persons"]:
                send_sms(str(person["pNumber"]), "selamin aleykum")
            lcd.putstr("SMS yollandi")
            time.sleep(1)
            lcd.clear()