sdcard support (experimental)
This commit is contained in:
1 parent
92c4401db4
commit
86c3685f6c
12 files changed
+145
-7
No files matched your search
@@ -18,6 +18,14 @@
|
||||
#define SPI_SCLK GPIO_NUM_18
|
||||
#define SPI_CS GPIO_NUM_5
|
||||
|
||||
// enable only if you want to store a local paxcount table on the device
|
||||
#define HAS_SDCARD 1 // this board has an SD-card-reader/writer
|
||||
// Pins for SD-card
|
||||
#define SDCARD_CS (13)
|
||||
#define SDCARD_MOSI (15)
|
||||
#define SDCARD_MISO (2)
|
||||
#define SDCARD_SCLK (14)
|
||||
|
||||
// enable only if device has these sensors, otherwise comment these lines
|
||||
// tutorial to connect BME sensor see here:
|
||||
// https://sbamueller.wordpress.com/2019/02/26/paxcounter-mit-umweltsensor/
|
||||
|
||||
@@ -18,6 +18,14 @@
|
||||
#define LED_ACTIVE_LOW 1 // Onboard LED is active when pin is LOW
|
||||
#define HAS_BUTTON KEY_BUILTIN
|
||||
|
||||
// enable only if you want to store a local paxcount table on the device
|
||||
#define HAS_SDCARD 1 // this board has an SD-card-reader/writer
|
||||
// Pins for SD-card
|
||||
#define SDCARD_CS (13)
|
||||
#define SDCARD_MOSI (15)
|
||||
#define SDCARD_MISO (2)
|
||||
#define SDCARD_SCLK (14)
|
||||
|
||||
// Pins for I2C interface of OLED Display
|
||||
#define MY_OLED_SDA (4)
|
||||
#define MY_OLED_SCL (15)
|
||||
|
||||
@@ -19,6 +19,14 @@
|
||||
// disable brownout detection (needed on TTGOv2 for battery powered operation)
|
||||
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||
|
||||
// enable only if you want to store a local paxcount table on the device
|
||||
#define HAS_SDCARD 1 // this board has an SD-card-reader/writer
|
||||
// Pins for SD-card
|
||||
#define SDCARD_CS (13)
|
||||
#define SDCARD_MOSI (15)
|
||||
#define SDCARD_MISO (2)
|
||||
#define SDCARD_SCLK (14)
|
||||
|
||||
// Pins for I2C interface of OLED Display
|
||||
#define MY_OLED_SDA (21)
|
||||
#define MY_OLED_SCL (22)
|
||||
|
||||
@@ -15,6 +15,14 @@
|
||||
#define HAS_LORA 1 // comment out if device shall not send data via LoRa
|
||||
#define CFG_sx1276_radio 1 // HPD13A LoRa SoC
|
||||
|
||||
// enable only if you want to store a local paxcount table on the device
|
||||
#define HAS_SDCARD 1 // this board has an SD-card-reader/writer
|
||||
// Pins for SD-card
|
||||
#define SDCARD_CS (13)
|
||||
#define SDCARD_MOSI (15)
|
||||
#define SDCARD_MISO (2)
|
||||
#define SDCARD_SCLK (14)
|
||||
|
||||
// enable only if device has these sensors, otherwise comment these lines
|
||||
// BME280 sensor on I2C bus
|
||||
//#define HAS_BME 1 // Enable BME sensors in general
|
||||
|
||||
@@ -19,6 +19,14 @@
|
||||
#define HAS_LED NOT_A_PIN // no usable LED on board
|
||||
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||
|
||||
// enable only if you want to store a local paxcount table on the device
|
||||
#define HAS_SDCARD 1 // this board has an SD-card-reader/writer
|
||||
// Pins for SD-card
|
||||
#define SDCARD_CS (13)
|
||||
#define SDCARD_MOSI (15)
|
||||
#define SDCARD_MISO (2)
|
||||
#define SDCARD_SCLK (14)
|
||||
|
||||
#define HAS_DISPLAY 1
|
||||
#define DISPLAY_FLIP 1 // rotated display
|
||||
//#define BAT_MEASURE_ADC ADC1_GPIO35_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_7
|
||||
|
||||
@@ -323,6 +323,11 @@ void setup() {
|
||||
assert(spi_init() == ESP_OK);
|
||||
#endif
|
||||
|
||||
#if (HAS_SDCARD)
|
||||
if ( sdcardInit() )
|
||||
strcat_P(features, " SD");
|
||||
#endif
|
||||
|
||||
#if (VENDORFILTER)
|
||||
strcat_P(features, " FILTER");
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
// routines for writing data to an SD-card, if present
|
||||
|
||||
// Local logging tag
|
||||
static const char TAG[] = __FILE__;
|
||||
|
||||
#include "sdcard.h"
|
||||
|
||||
static bool useSDCard;
|
||||
|
||||
static void createFile(void);
|
||||
|
||||
File fileSDCard;
|
||||
|
||||
bool sdcardInit() {
|
||||
ESP_LOGD(TAG, "looking for SD-card...");
|
||||
useSDCard = SD.begin(SDCARD_CS, SDCARD_MOSI, SDCARD_MISO, SDCARD_SCLK);
|
||||
if (useSDCard)
|
||||
createFile();
|
||||
return useSDCard;
|
||||
}
|
||||
|
||||
void sdcardWriteData(uint16_t noWifi, uint16_t noBle) {
|
||||
static int counterWrites = 0;
|
||||
char tempBuffer[12 + 1];
|
||||
time_t t = now();
|
||||
|
||||
if (!useSDCard)
|
||||
return;
|
||||
|
||||
ESP_LOGD(TAG, "writing to SD-card");
|
||||
sprintf(tempBuffer, "%02d.%02d.%4d,", day(t), month(t), year(t));
|
||||
fileSDCard.print(tempBuffer);
|
||||
sprintf(tempBuffer, "%02d:%02d:%02d,", hour(t), minute(t), second(t));
|
||||
fileSDCard.print(tempBuffer);
|
||||
sprintf(tempBuffer, "%d,%d", noWifi, noBle);
|
||||
fileSDCard.println(tempBuffer);
|
||||
|
||||
if (++counterWrites > 2) {
|
||||
// force writing to SD-card
|
||||
ESP_LOGD(TAG, "flushing data to card");
|
||||
fileSDCard.flush();
|
||||
counterWrites = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void createFile(void) {
|
||||
char bufferFilename[8 + 1 + 3 + 1];
|
||||
|
||||
useSDCard = false;
|
||||
|
||||
for (int i = 0; i < 100; i++) {
|
||||
sprintf(bufferFilename, SDCARD_FILE_NAME, i);
|
||||
ESP_LOGD(TAG, "SD: looking for file <%s>", bufferFilename);
|
||||
bool fileExists = SD.exists(bufferFilename);
|
||||
if (!fileExists) {
|
||||
ESP_LOGD(TAG, "SD: file does not exist: opening");
|
||||
fileSDCard = SD.open(bufferFilename, FILE_WRITE);
|
||||
if (fileSDCard) {
|
||||
ESP_LOGD(TAG, "SD: name opended: <%s>", bufferFilename);
|
||||
fileSDCard.println(SDCARD_FILE_HEADER);
|
||||
useSDCard = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
+8
-3
@@ -51,6 +51,11 @@ void SendPayload(uint8_t port, sendprio_t prio) {
|
||||
spi_enqueuedata(&SendBuffer);
|
||||
#endif
|
||||
|
||||
// write data to sdcard, if present
|
||||
#ifdef HAS_SDCARD
|
||||
sdcardWriteData(macs_wifi, macs_ble);
|
||||
#endif
|
||||
|
||||
} // SendPayload
|
||||
|
||||
// interrupt triggered function to prepare payload to send
|
||||
@@ -72,7 +77,7 @@ void sendData() {
|
||||
if (cfg.blescan)
|
||||
payload.addCount(macs_ble, MAC_SNIFF_BLE);
|
||||
#endif
|
||||
#if (HAS_GPS)
|
||||
#if (HAS_GPS)
|
||||
if (GPSPORT == COUNTERPORT) {
|
||||
// send GPS position only if we have a fix
|
||||
if (gps.location.isValid()) {
|
||||
@@ -82,7 +87,7 @@ void sendData() {
|
||||
ESP_LOGD(TAG, "No valid GPS position");
|
||||
}
|
||||
#endif
|
||||
#if (PAYLOAD_OPENSENSEBOX)
|
||||
#if (PAYLOAD_OPENSENSEBOX)
|
||||
if (cfg.wifiscan)
|
||||
payload.addCount(macs_wifi, MAC_SNIFF_WIFI);
|
||||
if (cfg.blescan)
|
||||
@@ -110,7 +115,7 @@ void sendData() {
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if (HAS_GPS)
|
||||
#if (HAS_GPS)
|
||||
case GPS_DATA:
|
||||
if (GPSPORT != COUNTERPORT) {
|
||||
// send GPS position only if we have a fix
|
||||
|
||||
Reference in new issue
Block a user