Подключите два esp32 через Bluetooth для отправки данных датчика - PullRequest
0 голосов
/ 20 января 2020

Мой проект требует подключения двух esp32 для обмена данными через Bluetooth. Я работал над серверной частью кода, как упомянуто ниже:

#include "BluetoothSerial.h"
#include <QMC5883LCompass.h>

QMC5883LCompass compass;

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;
int state=0;
void setup() {
  Serial.begin(115200);
  compass.init();
  SerialBT.begin("ESP32loda"); //Bluetooth device name
  Serial.println("The device started, now you can pair it with bluetooth!");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
   state=Serial.read();
   if (state == '1') {
      hmc();
   }
  delay(20);
}
void hmc(){

 compass.read();
 compass.init();

  byte a = compass.getAzimuth();

  char myArray[3];
  compass.getDirection(myArray, a);

  Serial.print(myArray[0]);
  Serial.print(myArray[1]);
  Serial.print(myArray[2]);
  Serial.println();

  delay(250);

}

, но я не мог определить клиент esp32 для получения передаваемой информации и отображения на oled-дисплее. Мне просто нужен код, чтобы получить значения магнитометра, передаваемого сервером на клиентскую сторону.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


void setup() {
  Serial.begin(9600);

  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }

  // Show initial display buffer contents on the screen --
  // the library initializes this with an Adafruit splash screen.
   // Pause for 2 seconds

  // Clear the buffer
  display.clearDisplay();

  // Draw a single pixel in white

}
void loop() {
  if(Serial.available() > 0){ // Checks whether data is comming from the serial port
display.display();
  delay(2000);
}
}
...