Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

GPS, GSM modülü ve toz sensörü: üç seri cihazı tek Raspberry Pi’ye nasıl bağlarım?

GPS, GSM modülü ve toz sensörü: üç seri cihazı tek Raspberry Pi’ye nasıl bağlarım?

Çözüldü 6 5

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.

♥ 0

SIM7600’ün zaten USB’si var, onu UART’tan değil USB’den bağlayın. Bir sorun eksilir.

Sahadan selamlar.
♥ 0

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ı.

♥ 0

GPS’i de USB’li alsaydınız hepsi USB olurdu, ama sorun değil.

♥ 0

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.

Modbus sadece register'dır, ta ki olmayana kadar.
Kabul edilen çözüm♥ 1

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.

♥ 2

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 🙏

♥ 2
7 yazı görüntüleniyor – 1 ile 7 arası (toplam 7)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.

Sohbete katılın

Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

Paylaş