안녕하세요.
아두이노 공부를 하면서 BLE+WiFi 보드 esp32를 사용해서 BLE기능과 WiFi 기능을 동시에 사용해 보고 싶어서
beacon기능과 wifi연결 후 웹 서버까지 연결하려고 하는데 메모리 문제로 실행이 되지 않아서 도저히 방법을 모르겠습니다.
소스 코드는 아래에 있구요 도움 좀 주시면 감사하겠습니다. ㅠㅠ
#include "BLEDevice.h"
#include "BLEServer.h"
#include "BLEBeacon.h"
#include "esp_sleep.h"
#include "WiFi.h"
const char* ssid="CJWiFi_955E";
const char* password= "7001003570";
#define BEACON_UUID "8ec76ea3-6668-48da-9866-aaaaaaaaaaaa"
struct timeval now;
#define GPIO_DEEP_SLEEP_DURATION 5 // sleep x seconds and then wake up
BLEServer *pServer;
BLEAdvertising *pAdvertising;
void setup() {
{
gettimeofday(&now, NULL);
Serial.begin(115200);
Serial.printf("start ESP32 %d\n");
initBle();
startAdvertising();
Serial.println("Advertizing started...");
delay(100);
stopAdvertising();
// Deep sleep
Serial.printf("enter deep sleep\n");
delay(100);
}
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(10);
Serial.println("Setup done");
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
}
void loop() {
Serial.println(F("scan start"));
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
Serial.print(i + 1);
Serial.println(WiFi.SSID(i));
Serial.print((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
delay(10);
}
}
Serial.println("");
if(WiFi.status() == WL_CONNECTED){
Serial.println("WiFi connected: ");
Serial.print(ssid);
}else{
Serial.println("WiFi not connected");
}
delay(100);
}
void initBle() {
BLEDevice::init("MyBeacon");
pServer = BLEDevice::createServer();
}
void startAdvertising() {
// Create advertising manager
pAdvertising = pServer->getAdvertising();
// Set beacon data
setBeacon();
// Start advertising
pAdvertising->start();
}
void stopAdvertising() {
// Stop advertising
pAdvertising->stop();
}
void setBeacon() {
BLEBeacon oBeacon = BLEBeacon();
oBeacon.setProximityUUID(BLEUUID(BEACON_UUID));
oBeacon.setMajor(1); //Major 설정
oBeacon.setMinor(1); //Minor 설정
oBeacon.setManufacturerId(0x4C00);
}
|