Soru:
SoftwareSerial ve Serial arasındaki fark
Siddharth
2014-08-31 14:58:18 UTC
view on stackexchange narkive permalink

Örnek koddan

  #include <SoftwareSerial.h>SoftwareSerial mySerial (10, 11); // RX, TXvoid setup () {// Seri iletişimi açın ve bağlantı noktasının açılmasını bekleyin: Serial.begin (57600); while (! Seri) {; // seri bağlantı noktasının bağlanmasını bekleyin. Yalnızca Leonardo için gereklidir} Serial.println ("İyi geceler ay!"); // SoftwareSerial port mySerial.begin (4800) için veri hızını ayarlayın; mySerial.println ("Merhaba, dünya?");} void loop () // tekrar tekrar {if (mySerial.available ()) Serial.write (mySerial.read ()); if (Serial.available ()) mySerial.write (Serial.read ());}  

Aradaki fark nedir, AT komut çağrıları yapmak için neden 2 tür çağrı kullanılsın.

SoftwareSerial mySerial (10,11) mySerial.begin (10,11)

ve

Serial.begin ( 9600)

Düzenle, bu, sorumu @jfpoilpret yanıtına göre kendi kelimelerimle yanıtlıyor.

  1. Önemli SoftwareSerial gerçek komutları GSM'ye göndermek için kullanıldığından ve Serial'ın hata ayıklama bağlantı noktasındaki tüm komutları ve yanıtlarını görüntülemek için kullanıldığından, hem Seri hem de SoftwareSerial'ı başlatın GSM
  2. GSM ve Arduino'daki pinler, 2'yi bağlamak ve gerçek komutları iletmek için kullanılır. RS232 yalnızca hata ayıklama için kullanılırken. Bununla birlikte, GSM'yi masaüstüne (veya dizüstü bilgisayara) bağlamak için bir RS232'yi USB konektörüne bağlayabiliriz
  3. Döngüdeki kod, tüm gerçek komutların dönüştürülmesine yardımcı olmak için gereklidir. hata ayıklama RS232 portu ve tam tersi, GSM seri giriş pinlerine komutları iletmek için cutecom (ubuntu'da) gibi bir araç kullanmamızı sağlamak için.
  4. ol >

    Önemli Not: Cutecom'u kullanırken, komut göndermek için CR satırı sonu seçtiğinizden emin olun.

Iki yanıtlar:
jfpoilpret
2014-08-31 15:39:51 UTC
view on stackexchange narkive permalink

Arduino modellerinin dayandığı tüm Atmel MCU, seri iletişim için özel donanım içerir; MCU'nun bu kısmı USART olarak adlandırılır ( Evrensel Senkron / Asenkron Alıcı / Verici anlamına gelir).

Sahip olduğunuz Arduino modeline göre, siz MCU kartında yalnızca bir (örn. UNO'da) veya daha fazla USART (leonardo, mega ...) olabilir.

Her MCU USART, kartın belirli pinlerine eşlenir, bu pinleri değiştiremezsiniz.

Arduino'da, monitörü PC'nize hata ayıklama bilgisi göndermek için kullanırsanız, bir USART kullanılır, bu Serial kullandığınız zamandır.

Birden fazla seri iletişim bağlantısına ihtiyacınız varsa (örneğin, seri olarak iletişim kuran bazı cihazlara sahip olduğunuz için) ancak Arduino modelinizde yalnızca bir USART varsa, o zaman SoftwareSerial USART'ın işi yalnızca yazılımla. Dolayısıyla, USART donanımından çok daha az optimize edilmiştir.

SoftwareSerial 'in bir avantajı, onu istediğiniz herhangi bir pin çiftiyle eşleyebilmenizdir.

Kod örneğinize gitmek:

  if (mySerial.available ()) Serial.write (mySerial.read ()); if (Serial.available ()) mySerial.write (Serial.read ());  

Açıkçası burada, Seri hata ayıklama (bilgi PC'nizin seri monitörüne bilgi göndermek) için kullanılırken mySerial GSM cihazıyla iletişim kurmak için kullanılır.

Dolayısıyla bu taslak, monitörde AT komutları yazmanıza izin vermek için kullanılır ve bu komutlar daha sonra GSM cihazına iletilir; tersine, GSM cihazından döndürülen tüm dizeler seri monitöre yankılanacaktır.

Arduino Uno ile SIM808 modülünü kullanıyorum, anlamadığım bir şey, GSM modülüyle iletişim kurmak için Arduino'nun TX1 ve RX0'ını kullandığımda, yükleme işlemi sırasında Arduino yazılımında hata alıyorum: 'avrude ... . '. Ancak SoftwareSerial ayarını tx ve rx pinlerini pin7 ve pin8'e kullandığımda, pinler bağlandığında yüklemede sorun yok. Diğer bir şey de, Arduino'nun farklı sürümleri kullanıldığında SoftwareSerial kullanmıyorsanız GSM cihazıyla nasıl iletişim kurarsınız? Arduino ve SIM908'in SoftwareSerial kütüphanesinin diğer sürümleri için kod gördüm. hiç kullanılmıyor.
RegarBoy
2017-02-22 20:11:44 UTC
view on stackexchange narkive permalink
  #include <SoftwareSerial.h>SoftwareSerial GSMSerial (7, 8); // RX ve TXvoid kurulumu olarak 7 ve 8 numaralı pinleri kullanın () {GSMSerial.begin (19200); // GPRS / GSM baud hızı Serial.begin (19200); // GPRS / GSM baud hızı} void loop () {if (Serial.available ()) {// Seri Monitörden alınan komutları GSM modülüne göndermek için GSMSerial.print ((char) Serial.read ()); } else if (GSMSerial.available ()) {// GSM modülünden yanıtlanan verileri Seri Monitöre yazdırmak için. Serial.print ((char) GSMSerial.read ()); }}  

Yukarıdaki kodda, Serial Monitor'dan GMS modülüyle konuşmak için ilk olarak if ifadesi gerekiyorsa, iç döngü işlevi, ör. monitöre AT yazdığınızda ve enter tuşuna bastığınızda, komutunuz GSM modülüne gönderilir.

İkinci if ifadesi else if ne olursa olsun yazdırmaktır. GSM modülünden alındı ​​veya yanıtlandı, örn. GSM modülü, modüle AT komutunu gönderdikten sonra AT ve sonucu Tamam gibi alınan komuta yanıt verir.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...