Çözüldü2.11K görüntülenmeLoralorae32 Loragurultu Stm32withloranoise
0

Merhaba, siparis no : 201365458354

 Lora e 32 433T30D modeli ve stm32(nucleo g431kb) ile uzaktan kumanda devresi yaptim. Aybi pcb uzerine lehimliler. GND ler ortak.

Potansiyometreden okudugum analog veriyi karsiya yollayabiliyorum. Ama ne zaman 4db anten ile gondermeye baslasam analog degerler +-100 deger degisiyor. Anteni soktugumde bu sorun olmadan gondermeye devam edebiliyorum. 

Denedigim seyler, 

1-Anten ile kontrolcunun beslemesini ayirmak. 

2-Anten girisine 10 ve 0.1 uf guc kaynagi cikisina 1000 uf kapasitor koymak. 

3-Antenin etrafina once gazete(kisa devre olmasini engellemek icin) ardindan uzerine aluminyum folyo kapladim. 

Aklima baska bisey gelmedi. Bir fikriniz var mi?

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Haziran 19, 2023
0

Merhaba, ayni konumda arduino ve jumperlarla yaptigim testte goyle bir gurultu olmadi. Sanirim sorun mesafe degil benim pcb tasarimim. Biseyleri gozden kacirmis olmaliyim.

Kodlar asagidaki gibi.

Gonderici kodu;

#include "include.h"
 HardwareSerial Serial1(D12, D13);
                         //AUX
LoRa_E32 e32ttl(&Serial1, D11, UART_BPS_RATE_115200);
 potentiometers pots;
Smooth smooth;
 // variables for smoothing pot val.
int smoothedPotVal;
int ewmaSmooth;
 struct dataSend
{
  int potLefty;
   }dataToSend;
 void send()
{
  dataToSend.potLefty = smoothedPotVal;
  ResponseStatus rs = e32ttl.sendFixedMessage(0, 17, 0, &dataToSend, sizeof(dataSend));
 }
void setup()
{
  Serial1.setRx(PB_4); // setrx of nucleo board
  Serial1.setTx(PB_3); /// setrx of nucleo board
  e32ttl.begin();
  Serial.begin(115200);
}
 void loop()
{
   pots.readPots(); // Read pot values
  ewmaSmooth = smooth.filter(pots.leftYRaw, 1, 2); // smooth for moving average of 0.1
  smoothedPotVal = (0.90 * smoothedPotVal) + (0.10 * ewmaSmooth); // additional low pass filter
  send(); // send struct.
  Serial.println(smoothedPotVal);//print what we send
    //delay(250);
}

Alici kodu ;

Adafruit_PWMServoDriver myServo = Adafruit_PWMServoDriver(); // servo driver
 #define SERVOMIN 100
#define SERVOMAX 600
 HardwareSerial Serial1(D17, D74);
LoRa_E32 e32ttl(&Serial1, PB2, UART_BPS_RATE_115200);
 struct Message
{
  int potLefty;
};
Message message;
 int potValue;
 void receive()
{
  if (e32ttl.available() > 1)
  {
    ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Message));
    message = *(Message *)rsc.data;
    Serial.println(message.potLefty); // print incoming pot val
    myServo.setPWM(0, 0, message.potLefty); // aplly to servo
    rsc.close();
  }
}
 void setup()
{
  Serial1.setRx(PB_15); // using pin name PY_n
  Serial1.setTx(PB_14); // using pin number PYn
  e32ttl.begin();
  myServo.begin();
  myServo.setPWMFreq(50); // Analog servos run at ~50 Hz updates
  Serial.begin(115200);
  delay(100);
}
 void loop()
{
  receive();
}

ejderhaa Cevaplanan soru Aralık 28, 2022
5 cevaptan 1'ini inceliyorsun, tüm cevapları görmek için buraya tıklayın.