arduino uno+hc-06+rs485

KBa3umoda
Offline
Зарегистрирован: 06.02.2018

Всем доброе времени суток. Есть такой вопрос, собрался я сделать мобильное устройство для опросов оборудования. Есть Ардуина, блютуз модуль НС-06 и преобразователь RS 485.

по сути у меня есть несколько вопросов.

1е - сколько Сериал портов я могу организовать на ардуино Уно или Нано.

- я использую 6,7 порт для НС-06

- 10,11 для rs485

- 0,1 - решил не трогать так как они основные и при перепрошивке приходится вынимать блютуз если он там стоит

2е на сколько каряв мой код-

#include <SoftwareSerial.h>

#define RX485     10
#define TX485     11

#define RXBT      6
#define TXBT      7

#define OnOff     3

#define transmit   HIGH
#define recive     LOW

#define LinePin   13


SoftwareSerial Serial485 (RX485, TX485);
SoftwareSerial SerialBT (RXBT, TXBT);

char byte485;
char byteBT;
char byteSer;
int Send;

void setup() {
  // put your setup code here, to run once:
Serial.begin(19200);
Serial.println("Go Go Go");

pinMode(OnOff, OUTPUT);
pinMode(LinePin, OUTPUT);

digitalWrite(LinePin, recive);

Serial485.begin(19200);

SerialBT.begin(19200);
SerialBT.println("Start BT");
}

void loop() {
  // put your main code here, to run repeatedly:
if(Serial.available())
{byteSer = Serial.read();

SerialBT.println(byteSer);
  
}
else if (Serial485.available())
{

  }
  else if (SerialBT.available())
  {byteBT = SerialBT.read();
  Serial.write(byteBT);}
}

 

KBa3umoda
Offline
Зарегистрирован: 06.02.2018

На данном этапе достиг только того что получил сообщение в монитор порта с блютуза и обратно.

 

KBa3umoda
Offline
Зарегистрирован: 06.02.2018

обновил код - теперь запросы с монитор порта и НС-06 доходят до устройства - но ответ на экран смартфона и монитор порта не возращаются :(

#include <SoftwareSerial.h>

#define RX485     10
#define TX485     11

#define RXBT      6
#define TXBT      7

#define OnOff     3

#define transmit   HIGH
#define recive     LOW

#define LinePin   13


SoftwareSerial Serial485 (RX485, TX485);
SoftwareSerial SerialBT (RXBT, TXBT);

char byte485;
char byteBT;
char byteSer;
int Send;

void setup() {
  // put your setup code here, to run once:
Serial.begin(19200);
Serial.println("Go Go Go");

pinMode(OnOff, OUTPUT);
pinMode(LinePin, OUTPUT);

digitalWrite(LinePin, recive);

Serial485.begin(19200);

SerialBT.begin(19200);
SerialBT.println("Start BT");
}

void loop() {
  // put your main code here, to run repeatedly:

Ser485();

SerBT();

 while (Serial485.available())
{
byte485 = Serial485.read();
Serial.print(byte485);
  }
}  

void Ser485()
{
  if(Serial.available()>0)
    {
      byteSer = Serial.read();
      digitalWrite(OnOff, transmit);
      Serial485.write(byteSer);
      digitalWrite(OnOff, recive);
    }  
    delay(20);
}
  void SerBT()
  {
  if(SerialBT.available()>0)
     {
     byteBT = SerialBT.read();
     digitalWrite(OnOff, transmit);
     Serial485.write(byteBT);
     digitalWrite(OnOff, recive);
     } 
     delay(20); 
   }