//hitam>>merah A8:42:E3:49:E7:80
#include <esp_now.h>
#include <WiFi.h>
//JST1----------------------------------------------------------------------------------------//
#define NUM_SENSORS 7 // Array untuk menyimpan hasil pengukuran jarak
float input[NUM_SENSORS]; // Bobot untuk setiap sensor
bool startjst = 0; // defaul 0=bobot 1=bias 2=mainjst
int hidORout = 1; // case 1=hidden case 2=output
int layerIn = NUM_SENSORS; // defaul layerinput 7
int jlm1layer = 5; // defaul hiddenlayer=5 outputlayer=4
int jlminputbias = 5; // defaul hiddenlayer=5 outputlayer=4
// float weights[NUM_SENSORS] = { 0.5, 0.3, 0.3, 0.2, 0.2, 0.1, 0.1 };
//JST2---------------------------------------------------------------------------------------//
float weightsInputHidden[NUM_SENSORS][5]; // Bobot antara input dan lapisan tersembunyi
float weightsHiddenOutput[5][4]; // Bobot antara lapisan tersembunyi dan output
float biasHidden[5]; // Bias untuk lapisan tersembunyi
float biasOutput[4]; // Bias untuk output
//==========================================================================================//
// REPLACE WITH THE MAC Address of your receiver
uint8_t alamatESP32[] = { 0xA8, 0x42, 0xE3, 0x49, 0xE7, 0x80 };
//hitam//08:B6:1F:35:62:4C
//merah//A8:42:E3:49:E7:80
// Tentukan variabel untuk menyimpan bacaan BME280 yang akan dikirim
String gerakan;
String gerakan2;
// Tentukan variabel untuk menyimpan bacaan yang masuk //dari papan lain
int ddpn;
int dkir;
int dkan;
int dkir2;
int dkan2;
int ddki;
int ddka;
// Variabel untuk disimpan jika pengiriman data berhasil
String success;
// Contoh struktur untuk mengirim data
// Harus cocok dengan struktur penerima
typedef struct struct_message {
int dpn;
int kir;
int kan;
int kir2;
int kan2;
int dki;
int dka;
String gerak;
String gerak2;
} struct_message;
// Buat struct_message bernama BME280Readings untuk menampung pembacaan sensor
struct_message kirimBacaan;
// Buat struct_message untuk menahan pembacaan sensor yang masuk
struct_message BacaanYGmasuk;
esp_now_peer_info_t peerInfo;
// Panggilan balik saat data dikirim
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\rLast Packet Send Status:\t");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
if (status == 0) {
success = "Delivery Success :)";
} else {
success = "Delivery Fail :(";
}
}
// Panggilan balik saat data diterima
void OnDataRecv(const uint8_t *mac, const uint8_t *incomingData, int len) {
memcpy(&BacaanYGmasuk, incomingData, sizeof(BacaanYGmasuk));
// Serial.print("Bytes received: ");
// Serial.println(len);
ddpn = BacaanYGmasuk.dpn;
dkir = BacaanYGmasuk.kir;
dkan = BacaanYGmasuk.kan;
dkir2 = BacaanYGmasuk.kir2;
dkan2 = BacaanYGmasuk.kan2;
ddki = BacaanYGmasuk.dki;
ddka = BacaanYGmasuk.dka;
}
void setup() {
// Init Serial Monitor
Serial.begin(115200);
// Inisialisasi bobot dan bias
delay(5000);
Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
// initializeWeightsAndBiases();
// Set device as a Wi-Fi Station
WiFi.mode(WIFI_STA);
// Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Setelah ESP Now berhasil Init, kami akan mendaftar Kirim CB untuk
// mendapatkan status paket Ditransmisikan
esp_now_register_send_cb(OnDataSent);
// Daftar rekan
memcpy(peerInfo.peer_addr, alamatESP32, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
// Add peer
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Failed to add peer");
return;
}
// Mendaftar untuk fungsi callback yang akan dipanggil saat data diterima
esp_now_register_recv_cb(OnDataRecv);
}
void loop() {
switch (startjst) {
case 0:
datainputbobot(layerIn, jlm1layer, hidORout);
break;
case 1:
datainputbias(jlminputbias, hidORout);
break;
case 2:
loopV2();
break;
}
}
void loopV2() {
// modeoffline();
monitorBacaanYGmasuk();
JST2();
// seleksi();
// Tetapkan nilai untuk dikirim
kirimBacaan.gerak = gerakan;
kirimBacaan.gerak2 = gerakan2;
// Kirim pesan melalui ESP-NOW
esp_err_t result = esp_now_send(alamatESP32, (uint8_t *)&kirimBacaan, sizeof(kirimBacaan));
if (result == ESP_OK) {
Serial.println("Sent with success");
} else {
Serial.println("Error sending the data");
}
monitorBacaanYGkeluar();
delay(1000);
}