nextgis / nextgislogger

Productive GSM data logger for Android
GNU General Public License v2.0
9 stars 6 forks source link

НГЛ не принимает данные по bluetooth передаваемые с UART пинов 0 и 1 #64

Open ABiatov opened 6 years ago

ABiatov commented 6 years ago

Взяли пример вашего скрипта с https://github.com/nextgis/nextgislogger/wiki/External-sensors-(Arduino)#sketch

Заменили в нем Bluetooth TX и RX на UART пины 0 и 1, т.к. программные порты уже заняты, пример скрипта ниже.

Что не правильно в скрипте?

Почему данные по Bluetooth не приходят в NGL ?

#include <SoftEasyTransfer.h>
#include <SoftwareSerial.h>

#define DIR 8                    // переключатель прием\передача

SoftwareSerial myRS485(7, 6);   // RX, TX   Serial для RS485

//SoftwareSerial bt(10, 11);       // Bluetooth at TX = 10, RX = 11
EasyTransfer ET;

// order, short and full name, unit of all sensors in json

 String pnp = "{\"0\":{\"short\":\"Temp\",\"full\":\"Temperature\",\"unit\":\"°C\"},\"1\":{\"short\":\"Hum\",\"full\":\"Humidity\",\"unit\":\"%\"}}";

struct RECEIVE_DATA_STRUCTURE{  
  float MAG_X;
  float MAG_Y; 
  float MAG_Z;
  float ACC_X; 
  float ACC_Y;
  float ACC_Z;
};

RECEIVE_DATA_STRUCTURE sensdata; 

void setup(){
  Serial.begin(9600); 
  myRS485.begin(9600);
  //bt.begin(9600);

  ET.begin(details(sensdata), &Serial);

  pinMode(DIR, OUTPUT);
  digitalWrite(DIR, LOW);                          

}

void loop(){

  if(ET.receiveData()){                           

  float mx = sensdata.MAG_X;
  float my = sensdata.MAG_Y;
  float mz = sensdata.MAG_Z;
  float ax = sensdata.ACC_X;
  float ay = sensdata.ACC_Y;
  float az = sensdata.ACC_Z;
  if (az > 0){
    digitalWrite(13, !digitalRead(13));
  }
   delay(500);
  }
     if (Serial.available()) {
        int val = Serial.read();

        // get json
        if (val == 'h' || val == 'H') {
            Serial.println(pnp);
            }

        // get data
        if (val == 'd' || val == 'D') {

      // send it to Bluetooth
      Serial.print(mz, 2); Serial.print(';');
      Serial.println(az, 2);
      }

   delay(10);
 }
}