//ESP32 Master code #include #include #include constexpr int MPU=0x68;//Accelerometer address constexpr uint8_t broadcastAddr[]={0x24,0x62,0xAB,0xF9,0x09,0x8C};//Receiver's MAC Address struct struct_message{ int16_t x; int16_t y; int16_t z; }MPUReadings; void setup() { Wire.begin(); Wire.beginTransmission(MPU); Wire.write(0x6B); Wire.write(0x00); Wire.endTransmission(true); Wire.beginTransmission(MPU); Wire.write(0x1C); Wire.write(0x08); Wire.endTransmission(true); WiFi.mode(WIFI_STA); if(esp_now_init()!=ESP_OK){ ESP.restart(); } esp_now_peer_info_t peerInfo; memcpy(peerInfo.peer_addr,broadcastAddr,6); peerInfo.channel=0; peerInfo.encrypt=false; if(esp_now_add_peer(&peerInfo)!=ESP_OK){ ESP.restart(); } } void loop() { accRead(); esp_err_t result = esp_now_send(broadcastAddr,(uint8_t*)&MPUReadings,sizeof(MPUReadings)); } void accRead(){//Read MPU data Wire.beginTransmission(MPU); Wire.write(0x3B); Wire.endTransmission(false); Wire.requestFrom(MPU,6,true); MPUReadings.x=Wire.read()<<8|Wire.read(); MPUReadings.y=Wire.read()<<8|Wire.read(); MPUReadings.z=Wire.read()<<8|Wire.read(); Wire.endTransmission(true); } //****************************************************************************************** //ESP32 Slave code //****************************************************************************************** #include "SD.h" #include #include int16_t accX,accY,accZ; struct struct_message{ int16_t x; int16_t y; int16_t z; }incomingReadings; bool rec(false),fInit(false); void onDataRec(const uint8_t*mac,const uint8_t*incomingData,int len){ memcpy(&incomingReadings,incomingData,sizeof(incomingReadings)); accX=incomingReadings.x; accY=incomingReadings.y; accZ=incomingReadings.z; rec=true; } void setup() { if(!SD.begin()) ESP.restart(); WiFi.mode(WIFI_STA); if(esp_now_init()!=ESP_OK) ESP.restart(); esp_now_register_recv_cb(onDataRec); } void loop() { if(rec){ uint8_t cType=SD.cardType(); if(cType==CARD_NONE) ESP.restart(); else updateFiles(); rec=false; } } void updateFiles(){ if(!fInit) fInit=true; else{ appendFile(SD,"/AccX.txt",","); appendFile(SD,"/AccY.txt",","); appendFile(SD,"/AccZ.txt",","); } appendFile(SD,"/AccX.txt",accX); appendFile(SD,"/AccY.txt",accY); appendFile(SD,"/AccZ.txt",accZ); } template void appendFile(fs::FS&fs,const char*path,T mess){ File file=fs.open(path,FILE_APPEND); if(!file) ESP.restart(); else if(!file.print(mess)) ESP.restart(); file.close(); } ************************************************************ Python code to plot Acceleration data ************************************************************ import matplotlib.pyplot as plt import csv #Change the file directories as need be with open("AccelFirstData\AccX.txt") as f: read=csv.reader(f) xDat=list(read) xDat=[float(x) for x in xDat[0]]#Change to float values with open("AccelFirstData\AccY.txt") as f: read=csv.reader(f) yDat=list(read) yDat=[float(y) for y in yDat[0]] with open("AccelFirstData\AccZ.txt") as f: read=csv.reader(f) zDat=list(read) zDat=[float(z) for z in zDat[0]] plt.plot(xDat,c="red") plt.plot(yDat,c="blue") plt.plot(zDat,c="black") plt.legend(["X","Y","Z"],loc="upper left") plt.xlabel("Data points") plt.ylabel("Acceleration") plt.title("Acceleration Data")#Replace title and savefig fields as needed plt.savefig("FirstRawAccel",dpi=600) plt.show()