Questão:
Arduino Pro Micro, obter dados do pino Tx?
user3320919
2014-05-09 03:08:00 UTC
view on stackexchange narkive permalink

Tenho um Sparkfun Arduino Pro Micro com um ATmega32u4 e um Módulo Roving Networks RN32 Bluetooth

Teoricamente, deveria ser capaz de soldar o Rx do Bluetooth ao Tx do arduino e vice-versa e devo obter comunicação serial pelo Bluetooth.

Claro, eu não. No entanto, como primeira pergunta: como faço para que meu Arduino transmita dados pelo pino Tx?

Eu carreguei isso para o Arduino sem soluços:

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

No entanto, quando Eu plugo meu o-scope, não vejo nenhum sinal na linha Tx. Nada. Vejo dados vindo do USB para a porta COM no meu computador, mas nada pelo pino Tx.

Como faço para que o Arduino coloque dados seriais no pino Tx?

Você o tem alimentado?
E o aterramento do osciloscópio está conectado ao aterramento do Arduino?
Sim, ele tem a entrada de + 5v e o escopo está no pino gnd do arduino. Como faço para enviar dados seriais sobre o pino TX (digital0)? Eu sei que é um problema de código
Seu código parece bom
Obrigado, mas nós dois estamos errados então. Quando coloco esse código no arduino e sondo o pino TX (digital 0), não vejo nada, é apenas plano. No entanto, em meu programa serialport em minha máquina de janelas, vejo a mensagem `helloWurld`. EU NÃO ME IMPORTO com o programa serialport por enquanto. Preciso que os dados saiam do pino TX, NÃO do USB. Isso faz sentido?
Você já experimentou o pino 1?
Esse é o pino RX e sim, tentei todos os pinos para ver as saídas. Todos os pinos da placa são silenciosos, os pinos do chip são pequenos demais para serem testados, quanto mais para serem soldados.
Não tenho nada saindo do pino TX. O escopo está configurado perfeitamente. Consigo fazer o pino TX ir de +5 a 0 sem problemas como uma verificação de sanidade. Demora cerca de 2 ms para alternar na chamada de loop Arduino. Aqui está o código: `void setup () {Serial.begin (9600); pinMode (5, OUTPUT);} void loop () {Serial.print ("HelloWurld"); analogWrite (0,1); analogWrite (0,0);} `Este é apenas um molho para pulsar o pino TX. Por cabeçalho digital, você quer dizer os pinos na lateral da placa ou os pinos no próprio chip atmega? Muito obrigado por sua ajuda, eu agradeço.
Ah, pode ser daí que vem a confusão. Este NÃO é um estoque UNO, este é um painel SparkFun que se comporta como um. Estou tentando falar com SparkFun para obter ajuda também. Para seu comentário: Então você quer dizer a linha TX do chip ATMEGA? Estou tentando entender como posso ter dados saindo do pino TX, não ver a oscilação de 5V, e também fazer com que o USB transmita dados para o meu computador. Sinto muito, eu realmente não entendo. Muito obrigado por sua ajuda.
[! [insira a descrição da imagem aqui] (http://i.stack.imgur.com/yftHW.jpg)] (http://i.stack.imgur.com/yftHW.jpg) Só queria deixar a pinagem completa. .
Cinco respostas:
Chris Stratton
2014-05-10 01:33:33 UTC
view on stackexchange narkive permalink

Você parece ter uma placa de estilo "pro micro" na qual a comunicação USB é fornecida diretamente do processador ATmega32u4 principal, em vez de gerada como dados seriais e, em seguida, encaminhada para um conversor USB-serial distinto como nos Arduinos tradicionais. Sua pergunta poderia ter sido resolvida muito mais rapidamente se você tivesse declarado claramente o tipo de placa que estava usando em palavras, em vez de apenas como um link de produto (então eu editei isso em sua pergunta) .

De acordo com a documentação do Arduino Pro Micro oficial:

Serial: 0 (RX) e 1 (TX). Usado para receber (RX) e transmitir (TX) dados seriais TTL usando o recurso serial de hardware ATmega32U4. Observe que, no Micro, a classe Serial se refere à comunicação USB (CDC); para TTL serial nos pinos 0 e 1, use a classe Serial1.

Portanto, para gerar saída no UART de hardware, você precisará alterar todas as ocorrências de Serial para Serial1

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

Os dados de transmissão serão originados do pino 21 do ATmega32u4, que é "D1" (pino digital 1) nos conectores. Se você deseja sondá-lo, esse é o melhor lugar para fazê-lo.

Se você deseja transmitir dados de um pino diferente que não está conectado ao UART do ATmega32u4 (como seu exemplo com dicas do pino 5 digital você pode), você deve usar SoftwareSerial ou implementação semelhante para extrair os dados seriais de um pino de E / S de uso geral.

Por exemplo (inspirado neste exemplo):

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

A placa bluetooth usa 3,3 V , não 5 V de acordo com a folha de dados.

Portanto, você precisará mudar o nível de tensão entre ele e a placa Arduino (que é 5V ). Observe que a folha de especificações mostra como isso pode ser feito facilmente com 2 resistores ( R1 e R2 na folha de circuito de aplicação típico, página 5).

Além disso, no módulo bluetooth, a interface RS232 possui 4 pinos:

  • UART_TX
  • UART_RX
  • UART_CTS
  • UART_RTS

UART_CTS deve ser 0 para garantir que o dispositivo leia os bytes de entrada. Normalmente, isso é feito por um resistor suspenso interno, mas você deve garantir que não conectou esse pino a +V Budap.

Finalmente, certifique-se de que a taxa de transmissão do módulo está correta definido como 9600 bauds , o mesmo que em seu programa.

Estou ciente de tudo isso, obrigado ainda assim. Porém, meu problema é muito mais básico. Preciso obter dados do pino TX para poder conectar o bluetooth a ele. Se eu não conseguir obter dados de um pino na placa Arduino, o bluetooth é inútil. Como obtenho dados seriais da placa arduino? Os pinos USB estão enviando dados seriais muito bem, mas não consigo fazer com que outros pinos enviem dados de saída. Preciso soldar os pinos USB para inserir dados no Bluetooth? Muito obrigado por qualquer ajuda, eu agradeço muito
DarkXDroid
2014-11-14 01:07:42 UTC
view on stackexchange narkive permalink

Basta conectar os pinos seriais do módulo bluetooth aos pinos Pro Micro correspondentes: TX a RX e RX a TX. Espero que isso possa ajudar alguém.

Então procure por dados como este:

  void setup () {Serial1.begin (9600); // Porta serial de inicialização do hardware nos pinos 0 e 1 - Bluetooth Serial.begin (9600); // Porta serial virtual Init - Machine Keyboard.begin (); // Init HID - teclado} void loop () {if (Serial1.available () > 0) {char myData = Serial1.read () // Enviar dados do Bluetooth / Sensor para a máquina - Porta serial virtual Serial.println ( meus dados); // Emular dispositivo HID - teclado if (myData == 0x7F) {// Detectar o código da tecla de retrocesso do Android Keyboard.write (0xB2); // Converte o char do código recebido para o código ascii do PC / Linux para a tecla backspace. Isso pode mudar entre os diferentes sistemas operacionais! } else {Keyboard.write (myData); }}}  
Sackhorn
2016-01-15 08:24:49 UTC
view on stackexchange narkive permalink

Então me deparei com este tópico enquanto tinha um problema semelhante, mas com o módulo HC-05. Então, como tenho muito tempo livre em minhas mãos durante as finais (não, não tenho), decidi criar um pequeno repositório github que pode ajudar alguém em algum momento. https://github.com/Sackhorn/HC-05-Pro-Micro-Hookup

O código é:

  // Writen para pro micro // Estes provaram ser úteis //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 setup () {pinMode (9, OUTPUT); digitalWrite (9, ALTO); Serial.begin (9600); Serial1.begin (38400);} void loop () {// Serial1 são as conexões seriais físicas nos pinos TX e RX if (Serial1.available ()) Serial.write (Serial1.read ()); // Serial é do meu entendimento a conexão virtual com o computador via USB if (Serial.available ()) Serial1.write (Serial.read ());}  

enter image description here

Bom uso de Serial e Serial1. Publiquei uma edição com seu código e diagrama.
TheSnarfster
2015-10-11 06:32:29 UTC
view on stackexchange narkive permalink

Você também pode experimentar a biblioteca " SoftwareSerial". Dessa forma, você pode usar quase todos os pinos que desejar para comunicações seriais. Na verdade, você pode ter algumas portas seriais.

No entanto, leia sobre a biblioteca SoftwareSerial. Ele tem algumas restrições.



Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...