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?
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(); }