首页 文章

如何使用json库串行发送数据并同时读取串行数据

提问于
浏览
0

我刚刚开始在我的项目中使用ArduinoJson库 . 我的目标是使用json格式从我的arduino nano使用BT向RasPi发送三个传感器值 . 此外,通过从BT接收“0”或“1”来控制继电器 .

我成功地能够发送数据 . 但是,当我包含以下代码时:(读取串行数据)if(Serial.available> 0)

我发一个'1';我的数据传输受到干扰,json字符串受到影响 . 当我发送'0'时,它会恢复正常 .

我需要帮助来解决这个问题,因为我无法找出我的错误!请做必要!!

我的代码:

#include <ArduinoJson.h>
#include <SoftwareSerial.h>
#include <DHT.h>
#define DHTPIN 12 // what pin we're connected to
#define DHTTYPE DHT11 // DHT 11 sensor
DHT dht(DHTPIN, DHTTYPE); //initilize the DHT sensor
int ldr = A0; // LDR connected to A0
int relay = 13;
float h,t;
int rx = 11; // softwareserial rx of arduino is pin 11
int tx = 10; // softwareserial tx of arduino is pin 12
SoftwareSerial mySerial(rx,tx);

int l; // variable to store the value coming from the sensor
int bt = 0; // variable to store incoming BT data

void setup() 
{
  pinMode(relay, OUTPUT);
  pinMode(ldr, INPUT);
  Serial.begin(9600);
  mySerial.begin(9600);
  mySerial.println(" Project FLIP");
  mySerial.println("sensor testing");
  mySerial.println(" DHT11 test!");
  dht.begin();
  delay(2000); 
}

void loop() 
{
  humidity_read();//read humidity value
  temperature_read();//read temperature
  light_read(); //read LDR value
  jason_print();
  relay_control();//control relay by reading serial data 0=off, 1=on
  jason_print();
}

void jason_print()
{
  StaticJsonBuffer<200> temp;
  JsonObject& root = temp.createObject();
  root["humidity"] = h;
  root["temp"] = t;
  root["light"] = l;
  root.printTo(Serial);
  Serial.println();
  delay(1000);
}

void humidity_read()
{
  h = dht.readHumidity(); //
}

void temperature_read()
{
  t = dht.readTemperature(); // Read temperature as Celsius (the default)
}

void relay_control()
{
  if (Serial.available() > 0)
  {
    bt = Serial.read();
    if (bt == '1')
    {
      digitalWrite(relay, HIGH);
    }
    else if (bt == '0')
    {
      digitalWrite(relay, LOW);
    }
  }
}
void light_read()
{
  l = analogRead(ldr); //Read LDR value
}

1 回答

  • 0

    我尝试使用软件串行概念,相同的代码似乎工作得很好!我将HC-05 BT模块连接到arduino的D10和11引脚,并成功地使用我的手机控制继电器 . 此外,不会干扰正在传输的json数据 .

    但是,我仍然不知道为什么如果我使用arduino IDE的串行监视器进行相同的操作有问题..

相关问题