zhensolid vor 3 Monaten
Commit
1be6276d53
7 geänderte Dateien mit 179 neuen und 0 gelöschten Zeilen
  1. 5 0
      .gitignore
  2. 10 0
      .vscode/extensions.json
  3. 37 0
      include/README
  4. 46 0
      lib/README
  5. 39 0
      platformio.ini
  6. 31 0
      src/main.cpp
  7. 11 0
      test/README

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+.pio
+.vscode/.browse.c_cpp.db*
+.vscode/c_cpp_properties.json
+.vscode/launch.json
+.vscode/ipch

+ 10 - 0
.vscode/extensions.json

@@ -0,0 +1,10 @@
+{
+    // See http://go.microsoft.com/fwlink/?LinkId=827846
+    // for the documentation about the extensions.json format
+    "recommendations": [
+        "platformio.platformio-ide"
+    ],
+    "unwantedRecommendations": [
+        "ms-vscode.cpptools-extension-pack"
+    ]
+}

+ 37 - 0
include/README

@@ -0,0 +1,37 @@
+
+This directory is intended for project header files.
+
+A header file is a file containing C declarations and macro definitions
+to be shared between several project source files. You request the use of a
+header file in your project source file (C, C++, etc) located in `src` folder
+by including it, with the C preprocessing directive `#include'.
+
+```src/main.c
+
+#include "header.h"
+
+int main (void)
+{
+ ...
+}
+```
+
+Including a header file produces the same results as copying the header file
+into each source file that needs it. Such copying would be time-consuming
+and error-prone. With a header file, the related declarations appear
+in only one place. If they need to be changed, they can be changed in one
+place, and programs that include the header file will automatically use the
+new version when next recompiled. The header file eliminates the labor of
+finding and changing all the copies as well as the risk that a failure to
+find one copy will result in inconsistencies within a program.
+
+In C, the convention is to give header files names that end with `.h'.
+
+Read more about using header files in official GCC documentation:
+
+* Include Syntax
+* Include Operation
+* Once-Only Headers
+* Computed Includes
+
+https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html

+ 46 - 0
lib/README

@@ -0,0 +1,46 @@
+
+This directory is intended for project specific (private) libraries.
+PlatformIO will compile them to static libraries and link into the executable file.
+
+The source code of each library should be placed in a separate directory
+("lib/your_library_name/[Code]").
+
+For example, see the structure of the following example libraries `Foo` and `Bar`:
+
+|--lib
+|  |
+|  |--Bar
+|  |  |--docs
+|  |  |--examples
+|  |  |--src
+|  |     |- Bar.c
+|  |     |- Bar.h
+|  |  |- library.json (optional. for custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
+|  |
+|  |--Foo
+|  |  |- Foo.c
+|  |  |- Foo.h
+|  |
+|  |- README --> THIS FILE
+|
+|- platformio.ini
+|--src
+   |- main.c
+
+Example contents of `src/main.c` using Foo and Bar:
+```
+#include <Foo.h>
+#include <Bar.h>
+
+int main (void)
+{
+  ...
+}
+
+```
+
+The PlatformIO Library Dependency Finder will find automatically dependent
+libraries by scanning project source files.
+
+More information about PlatformIO Library Dependency Finder
+- https://docs.platformio.org/page/librarymanager/ldf.html

+ 39 - 0
platformio.ini

@@ -0,0 +1,39 @@
+; PlatformIO Project Configuration File
+;
+;   Build options: build flags, source filter
+;   Upload options: custom upload port, speed and extra flags
+;   Library options: dependencies, extra library storages
+;   Advanced options: extra scripting
+;
+; Please visit documentation for the other options and examples
+; https://docs.platformio.org/page/projectconf.html
+
+[env:esp32s3-n16r8]
+platform = espressif32
+board    = esp32-s3-devkitc-1    ; 选通用 S3 DevKitC
+framework= arduino
+
+; --- Flash & PSRAM 接口配置 ---
+board_build.flash_mode    = qio       ; Flash 用 QIO
+board_build.arduino.memory_type = qio_opi  ; Flash QIO + PSRAM Octal
+board_build.psram_type    = opi       ; PSRAM 用 Octal mode
+
+; --- 大小定义 ---
+board_upload.flash_size   = 16MB
+board_upload.maximum_size = 16777216  ; 一定要和 16MB 对齐
+board_build.partitions    = default_16MB.csv  ; 用 16MB 分区表
+
+; --- 启用 PSRAM 宏 ---
+board_build.extra_flags   = -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1
+
+; --- 启用蓝牙功能 ---
+build_flags = 
+    -DCONFIG_BT_NIMBLE_ENABLED=1
+    -DCONFIG_BT_ENABLED=1
+
+lib_deps =
+    h2zero/NimBLE-Arduino @ ^1.4.1
+
+; --- 串口监视器配置 ---
+monitor_speed = 115200    ; 设置串口监视器波特率
+monitor_filters = esp32_exception_decoder  ; 启用 ESP32 异常解码器

+ 31 - 0
src/main.cpp

@@ -0,0 +1,31 @@
+#include <Arduino.h>
+#include <NimBLEDevice.h>
+
+NimBLEScan *pBLEScan;
+
+void setup()
+{
+  Serial.begin(115200);
+  Serial.println("BLE Scan Test Start");
+  BLEDevice::init("");
+  pBLEScan = BLEDevice::getScan();
+  pBLEScan->setActiveScan(true); // 主动扫描,获取更多信息
+}
+
+void loop()
+{
+  Serial.println("Scanning...");
+  BLEScanResults foundDevices = pBLEScan->start(5, false); // 扫描5秒
+  for (int i = 0; i < foundDevices.getCount(); i++)
+  {
+    BLEAdvertisedDevice device = foundDevices.getDevice(i);
+    Serial.print("Device: ");
+    Serial.print(device.getAddress().toString().c_str());
+    Serial.print(" RSSI: ");
+    Serial.print(device.getRSSI());
+    Serial.print(" Name: ");
+    Serial.println(device.getName().c_str());
+  }
+  pBLEScan->clearResults();
+  delay(5000); // 每5秒扫描一次
+}

+ 11 - 0
test/README

@@ -0,0 +1,11 @@
+
+This directory is intended for PlatformIO Test Runner and project tests.
+
+Unit Testing is a software testing method by which individual units of
+source code, sets of one or more MCU program modules together with associated
+control data, usage procedures, and operating procedures, are tested to
+determine whether they are fit for use. Unit testing finds problems early
+in the development cycle.
+
+More information about PlatformIO Unit Testing:
+- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html