Soru:
Arduino Pro Micro, Tx pininden veri alınsın mı?
user3320919
2014-05-09 03:08:00 UTC
view on stackexchange narkive permalink

Üzerinde ATmega32u4 bulunan bir Sparkfun Arduino Pro Micro ve bir Roving Networks RN32 Bluetooth Modülü var

Teorik olarak şunları yapabilmeliyim Bluetooth'un Rx'ini arduino'daki Tx'e lehimleyin ve bunun tersini de yapın ve Bluetooth üzerinden seri iletişim kurmalıyım.

Elbette yok. Ancak, ilk soru olarak: Arduino'mun verileri Tx pini üzerinden iletmesini nasıl sağlayabilirim?

Bunu Arduino'ya hiçbir kesinti olmadan yükledim:

  void setup () {Serial.begin (9600);} void loop () {Serial.print (" HelloWurld ");}  

Ancak, ne zaman O-kapsamımı takıyorum, Tx hattı üzerinden sinyal görmüyorum. Nada. USB üzerinden bilgisayarımdaki COM bağlantı noktasına gelen verileri görüyorum, ancak Tx pininden hiçbir şey gelmiyor.

Arduino'nun Tx pinine seri veri koymasını nasıl sağlayabilirim?

Gücü var mı?
Ve dürbün üzerindeki zemin Arduino'nun toprağına bağlı mı?
Evet, + 5v girişine sahiptir ve kapsam, arduino'nun gnd pinindedir. Seri verileri TX (digital0) pini üzerinden nasıl iletirim? Bunun bir kod sorunu olduğunu biliyorum
Kodunuz iyi görünüyor
Teşekkür ederim, ama ikimiz de yanılıyoruz. Bu kodu arduinoya koyduğumda ve ardından TX pinini (dijital 0) araştırdığımda, hiçbir şey görmüyorum, sadece düz. Ancak windoes makinemdeki serialport programımda "helloWurld" mesajını görüyorum. Şimdilik serialport programı umurumda değil. Verilerin USB'den DEĞİL TX pininden çıkması gerekiyor. bu mantıklı mı?
Pin 1'i denediniz mi?
Bu RX pini ve evet, çıkışları görmek için her pini denedim. Karttaki tüm pinler sessizdir, çipteki pinler lehimlemeyi bırakın, problanamayacak kadar küçüktür.
TX pininden çıkan hiçbir şey yok. Kapsam gayet iyi ayarlanmış. Akıl kontrolü olarak TX pinini sorunsuz bir şekilde +5'ten 0'a çıkarabiliyorum. Arduino döngü çağrısına geçmek yaklaşık 2ms sürer. İşte kod: `void setup () {Serial.begin (9600); pinMode (5, OUTPUT);} void döngü () {Serial.print ("HelloWurld"); analogWrite (0,1); analogWrite (0,0);} `` Bu sadece TX pinini attırmak için bir sos. Dijital başlık derken, kartın yan tarafındaki pimleri mi yoksa atmega yongasının üzerindeki pimleri mi kastediyorsunuz? Yardımınız için çok teşekkür ederim, minnettarım.
Ah, kafa karışıklığının geldiği yer burası olabilir. Bu bir stok UNO DEĞİLDİR, bu tek gibi davranan bir SparkFun kartıdır. Ben de yardım için SparkFun ile konuşmaya çalışıyorum. Yorumunuza: ATMEGA çipinin TX hattını mı kastediyorsunuz? TX pininden nasıl veri çıktığını anlamaya çalışıyorum, 5V salınımını görmüyorum ve ardından USB veri aktarımını bilgisayarıma da alıyorum. Üzgünüm, gerçekten anlamıyorum. Yardımın için çok teşekkürler.
[! [resim açıklamasını buraya girin] (http://i.stack.imgur.com/yftHW.jpg)] (http://i.stack.imgur.com/yftHW.jpg) Tam pinout bırakmak istedim. .
Beş yanıtlar:
Chris Stratton
2014-05-10 01:33:33 UTC
view on stackexchange narkive permalink

USB iletişiminin seri veri olarak oluşturulmak yerine doğrudan ana ATmega32u4 işlemcisinden sağlandığı ve daha sonra geleneksel Arduino'larda olduğu gibi farklı bir USB-seri dönüştürücüye iletildiği "pro mikro" tarzı bir kartınız var gibi görünüyor. Kullandığınız pano türünü yalnızca bir ürün bağlantısı olarak değil, kelimelerle açıkça belirtmiş olsaydınız (bu yüzden bunu sorunuza dahil ettim) , sorunuz çok daha hızlı çözülebilirdi.

Resmi Arduino Pro Micro için belgelerine göre:

Seri: 0 (RX) ve 1 (TX). ATmega32U4 donanım seri özelliğini kullanarak TTL seri verilerini almak (RX) ve iletmek (TX) için kullanılır. Micro'da, Serial sınıfının USB (CDC) iletişimini ifade ettiğini unutmayın; 0 ve 1 pinlerinde TTL seri için, Serial1 sınıfını kullanın.

Bu nedenle, donanım UART'ında çıktı oluşturmak için Serial 'ın tüm oluşumlarını şu şekilde değiştirmeniz gerekir: Serial1

  void setup () {Serial1.begin (9600);} void loop () {Serial1.print ("HelloWurld");}  

İletim verileri, başlıklarda "D1" (dijital pin 1) olan ATmega32u4 pin 21'den alınacaktır. Araştırmak isterseniz, bunu yapmak için en iyi yer burasıdır.

Verileri ATmega32u4'ün UART'ına bağlı olmayan farklı bir pinden iletmek istiyorsanız (dijital pin 5 ipuçlarıyla örneğinizde olduğu gibi) genel amaçlı bir I / O pininden seri verileri bit-bang yapmak için bunun yerine SoftwareSerial veya benzer bir uygulama kullanmanız gerekir.

Örneğin ( bu örnekten esinlenilmiştir):

  SoftwareSerial mySerial (4, 5); // RX, TXvoid setup () {mySerial.begin (9600);} void loop () {mySerial.print ("HelloWurld");}  
İyi tespit Chris! +1
jfpoilpret
2014-05-09 09:51:58 UTC
view on stackexchange narkive permalink

Bluetooth kartı veri sayfasına göre 5V değil, 3.3V kullanır.

Bu nedenle, voltaj düzeyini kaydırmanız gerekir ve Arduino kartı arasında ( 5V olan). Özellikler sayfasının 2 dirençle (sayfa tipik uygulama devresinde R1 ve R2 , sayfa 5) nasıl kolayca yapılabileceğini gösterdiğine dikkat edin.

Ayrıca bluetooth modülünde RS232 arayüzünün 4 iğnesi vardır:

  • UART_TX
  • UART_RX
  • UART_CTS
  • UART_RTS

Cihazın gelen baytları okumasını sağlamak için UART_CTS 0 olmalıdır. Normalde bu, dahili bir açılır dirençle yapılır, ancak bu pimi +V

Son olarak, modülün baud hızının doğru olduğundan emin olun programınızdakiyle aynı şekilde 9600 baud olarak ayarlayın.

Tüm bunların farkındayım, yine de aynı şekilde teşekkür ederim. Ancak benim sorunum çok daha basit. Bluetooth'u buna bağlayabilmem için TX pininden veri almam gerekiyor. Arduino kartındaki bir pinden veri alamazsam, bluetooth işe yaramaz. Arduino kartından nasıl seri veri alabilirim? USB pinleri seri verileri gayet iyi gönderiyor, ancak veri çıkışı için başka pinler alamıyorum. Bluetooth'a veri almak için USB pinlerine lehimlemem gerekir mi? Herhangi bir yardım için çok teşekkür ederim, bunu çok takdir ediyorum
DarkXDroid
2014-11-14 01:07:42 UTC
view on stackexchange narkive permalink

Bluetooth modülündeki seri pinleri ilgili Pro Micro pinlerine bağlayın: TX - RX ve RX - TX. Umarım bu birisine yardımcı olabilir.

O zaman şu gibi verileri arayın:

  void setup () {Serial1.begin (9600); // 0 ve 1 pinlerinde Donanım Seri bağlantı noktasını başlat - Bluetooth Serial.begin (9600); // Sanal Seri Bağlantı Noktasını Başlat - Machine Keyboard.begin (); // Init HID - Keyboard} void loop () {if (Serial1.available () > 0) {char myData = Serial1.read () // Bluetooth / Sensörden Makineye veri gönder - Sanal Seri Port Serial.println ( benim verim); // HID Aygıtı Öykün - Klavye if (myData == 0x7F) {// Android geri silme tuşunun kodunu algıla Keyboard.write (0xB2); // Alınan kod karakterini geri al tuşu için PC / Linux ascii anahtar koduna dönüştürün. Bu, farklı işletim sistemleri arasında değişebilir! } else {Keyboard.write (myData); }}}  
Sackhorn
2016-01-15 08:24:49 UTC
view on stackexchange narkive permalink

Ben de benzer bir problem yaşarken bu konuya rastladım, ancak HC-05 modülüyle. Bu yüzden finaller sırasında ellerimde çok fazla boş zamanım olduğu için (hayır yok) bazen birine yardımcı olabilecek küçük bir github deposu oluşturmaya karar verdim. https://github.com/Sackhorn/HC-05-Pro-Micro-Hookup

Kod şu şekildedir:

  // Yazılmıştır pro micro için // Bunların yararlı olduğu kanıtlandı //http://arduino.stackexchange.com/questions/1471/arduino-pro-micro-get-data-out-of-tx-pin//https://forum .sparkfun.com / viewtopic.php? f = 32&t = 38889&sid = 8178cdb38005ff33cc380a5da34fb583&start = 15void kurulumu () {pinMode (9, OUTPUT); digitalWrite (9, YÜKSEK); Serial.begin (9600); Serial1.begin (38400);} void loop () {// Serial1, TX ve RX pinlerindeki fiziksel Seri Bağlantılardır eğer (Serial1.available ()) Serial.write (Serial1.read ()); // Seri, benim USB aracılığıyla bilgisayarla sanal bağlantıyı anladığımdan if (Serial.available ()) Serial1.write (Serial.read ());}  

enter image description here

Serial ve Serial1'in güzel kullanımı. Kodunuz ve diyagramınızla bir düzenleme yayınladım.
TheSnarfster
2015-10-11 06:32:29 UTC
view on stackexchange narkive permalink

Ayrıca, " SoftwareSerial" kitaplığını da denemek isteyebilirsiniz. Bu şekilde seri iletişimler için neredeyse istediğiniz tüm pinleri kullanabilirsiniz. Aslında, birkaç seri bağlantı noktasına sahip olabilirsiniz.

Yine de lütfen SoftwareSerial kitaplığında okuyun. Bazı kısıtlamaları var.



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