GPS, GSM modülü ve toz sensörü: üç seri cihazı tek Raspberry Pi’ye nasıl bağlarım?
Merhaba, yeniyim, umarım doğru yere yazıyorum.
Balkona hava kalitesi istasyonu yapıyorum. Elimde Raspberry Pi 4, bir NEO-6M GPS (aslında konum sabit ama saat için istedim), bir SIM7600 GSM modülü (evde Wi-Fi bazen gidiyor, yedek olsun diye) ve bir PMS5003 toz sensörü var. Üçü de seri port (UART) ile konuşuyor. Pi’de GPIO14/15’te tek bir seri port var gibi görünüyor, onu da GPS’e verdim, çalışıyor.
Diğer ikisini nereye takacağım? İnternette biri „USB-TTL dönüştürücü al“, biri „Pi 4’te gizli UART’lar var“ diyor. Bir de USB’ye taktığımda bazen /dev/ttyUSB0 bazen ttyUSB1 oluyor, script yanlış porttan okuyup saçmalıyor. Verileri sonra Hermetry’ye gönderiyorum, o kısım tamam.
SIM7600’ün zaten USB’si var, onu UART’tan değil USB’den bağlayın. Bir sorun eksilir.
Haklısınız, kartın üstünde micro USB var, hiç aklıma gelmedi. Onu USB’ye taktım, /dev/ttyUSB2 diye bir şey çıktı.
GPS’i de USB’li alsaydınız hepsi USB olurdu, ama sorun değil.
Ben bizim tesiste ortam izleme için aynı karışıklığı yaşadım, iki şeyi beraber yapınca düzeldi.
Pi 4’te gerçekten ek UART’lar var, overlay ile açılıyor. PMS5003’ü onlardan birine verin. /boot/firmware/config.txt sonuna:
enable_uart=1
dtoverlay=uart3 # TX GPIO4, RX GPIO5 -> /dev/ttyAMA3 (Bookworm'da numara değişebilir)
Yeniden başlatınca ls -l /dev/ttyAMA* ile bakın. PMS5003 5 V ile beslenir ama veri hattı 3,3 V, doğrudan Pi’ye bağlanabilir. Baud 9600.
USB numaralarının değişmesi için udev kuralı yazın, script hep aynı adı görsün. Önce kimliği bulun:
udevadm info -a -n /dev/ttyUSB2 | grep -E "idVendor|idProduct|bInterfaceNumber" | head
Sonra /etc/udev/rules.d/99-seri.rules:
SUBSYSTEM=="tty", ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9001", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="modem_at"
Script’te artık /dev/modem_at kullanırsınız. SIM7600 birkaç arayüz açtığı için interface numarası önemli, AT komutları genelde 02’de ama kendi kartınızda kontrol edin.
Ek olarak: GPS saati için gpsd + chrony kurarsanız Pi’nin saatini de düzeltir. Hermetry’ye ts ile gönderiyorsanız saatin doğru olması şart, senkronize olmamış saatle zaman damgası uydurmak yerine ts’siz gönderin.
Sonunda üçü birden çalışıyor! uart3 bende /dev/ttyAMA3 olarak geldi, PMS5003 oradan okunuyor. Modem için udev kuralı yaptım, interface 02 değil 03 çıktı bende, onu düzeltince oturdu. Chrony’yi de kurdum. Çok teşekkür ederim 🙏
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

