정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 메모리 때문에 질문 드립니다...
hunam | 2019-03-20

안녕하세요.

아두이노 공부를 하면서 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); 
 }

 

프로필사진

kocoafab 2019-03-21 11:48:02

현재 올려주신 내용만 봐서는 메모리문제가 어떤 문제인지 확인이 힘든것 같습니다.

 

문제가 어떻게 나오는지 스크린샷을 찍어 올려주시면 감사하겠습니다.

프로필사진

hunam 2019-03-24 16:39:19

스케치 저장 하는 공간이 부족하다고 계속 뜹니다. 메모리가 113% 또는 114% 라서 사용할 수 없다 이런 식으로 떠서 플래쉬 메모리 줄이는 방법으로 라이브러리랑 변수 안 쓰는 것 등 지워보라고 해서 최대한 줄여봐도 1% 2% 줄어드는게 다네요... ㅠㅠ

프로필사진

kocoafab 2019-03-25 09:00:19

아두이노 우노보드를 사용하시면 한번 메가보드로 바꿔서 사용해 보세요.

 

라이브러리를 모두 사용해야하는거면 메모리 용량이 큰 메가 보드로 바꾸시는게 좋을 것 같습니다.

이전글   |    GY-521 MPU-6050 센서 관련 글에서 질문에 답변에 다시 질문 남깁니다.... 2019-03-20
다음글   |    에러 메시지가 계속 뜹니다 2019-03-22