ESP32RX
ESP32RX
#include "Arduino.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"
#include <driver/i2s.h>
#include <stdint.h>
#define I2S_DOUT 25
#define I2S_BCLK 27 // I2S
#define I2S_LRC 26
#define REC_BUTTON 21
#define PLAY_BUTTON 4
#define MIC_PIN 32
#define RXp2 16
#define TXp2 17
size_t byteCounter = 0;
uint32_t fileSize;
const short bytesPerWrite = 4;
const int arrSize = 2;
int receivedSample;
uint8_t samplesArray[arrSize];
Audio audio1;
File audioFile;
void setup() {
pinMode(REC_BUTTON, INPUT_PULLUP);
pinMode(PLAY_BUTTON, INPUT_PULLUP);
pinMode(SD_CS, OUTPUT);
digitalWrite(SD_CS, HIGH);
SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
Serial.begin(9600);
Serial2.begin(115200, SERIAL_8N1, RXp2, TXp2);
delay(1000);
if (!SD.begin(SD_CS)) {
Serial.println("SD card initialization failed.");
return;
}
Serial.println("SD card initialized.");
writeWavHeader(audioFile);
void loop() {
if (isRecording) {
receivedSample = receiveData();
writeSample(audioFile, receivedSample);
Serial.print("Sample Value: ");
Serial.println(receivedSample);
delay(50);
if (digitalRead(REC_BUTTON) == LOW) {
Serial.println("Recording stopped!");
isRecording = false;
headerSizeFiller();
audioFile.close();
fileSizePrinter();
delay(50);
if (digitalRead(PLAY_BUTTON == LOW)) {
isPlaying = true;
Serial.println("Button pressed. Waiting to play audio...");
playAudio();
}
}
}
int receiveData() {
int receivedData;
void playAudio() {
audio1.connecttoFS(SD, "/0005.wav");
while(true) {
//currMillis = millis();
audio1.processLocalFile(30000000, 2);
delay(2000);
if (digitalRead(PLAY_BUTTON == LOW)) {
isPlaying = true;
Serial.println("Playing audio...");
playAudio();
}
}
// print frequency
Serial.print("Frequency: ");
Serial.print(frequency);
Serial.println(" Hz");
file.write(bytes, 2);
byteCounter += 2;
}
void fileSizePrinter() {
void headerSizeFiller() {
audioFile.seek(4);
audioFile.write((uint8_t*)&fileSize, 4); // File size placeholder
audioFile.seek(40);
audioFile.write((uint8_t*)&byteCounter, 4); // File size placeholder