Electoday 2025

ประกาศ => Projects => Topic started by: JENG on July 25, 2014, 02:27:38 PM

Title: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: JENG on July 25, 2014, 02:27:38 PM
ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
ขออนุญาตท่านผู้นำนะคับ น่าจะมีประโยชน์กับคนที่อยากลองควบคุมอะไรบางอย่างจากระยะไกลแบบไร้สาย

ธงก้อนโฟมดุ๊กดิ๊ก
(http://image.free.in.th/v/2013/ia/140725021211.jpg) (http://pic.free.in.th/id/b404e2358d5079c97340e6baa1f6b651)

ธงก้อนโฟมดุ๊กดิ๊กต่อกับ servo
(http://image.free.in.th/v/2013/ig/140725021315.jpg) (http://pic.free.in.th/id/ca502b3006305f1e6e0c709d67e3c7db)

พร้อมแว้ว .... ^^
(http://image.free.in.th/v/2013/il/140725021404.jpg) (http://pic.free.in.th/id/8f34bfa2950e92a28ff0a11a5598c90d)

ถ้าเป็นตัวไม่มี PA ระยะแค่นี้ก็เดี้ยงแล้ว
(http://image.free.in.th/v/2013/ig/140725021513.jpg) (http://pic.free.in.th/id/3cfbf4788a07336c54a2ea49f041e841)

มันไกลจุงเบย ยังคุม servo ได้ปรกติ แต่เกือบมองไม่เห็นแล้ว เลยเลิก
(http://image.free.in.th/v/2013/in/140725021549.jpg) (http://pic.free.in.th/id/8c7965f136fee9d11669a23733e0ff15)

ภาครับ



// http://www.bajdi.com
// Nrf24L01 connected to Arduino Uno
// Nrf24L01 connection details http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
// Receives analog value from transmitter and maps it to a PWM range (0-255) to dim a led


#include <SPI.h>
#include <Servo.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

int rate;
int val;


Servo myservo;  // create servo object to control a servo

void setup(){
 
  Mirf.cePin = 9;             //ce pin on Mega 2560, REMOVE THIS LINE IF YOU ARE USING AN UNO
  Mirf.csnPin = 10;            //csn pin on Mega 2560, REMOVE THIS LINE IF YOU ARE USING AN UNO
  myservo.attach(6);  // attaches the servo on pin 9 to the servo object
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"serv1");
  Mirf.payload = sizeof(rate);
  Mirf.config();
}

void loop(){

  while(!Mirf.dataReady()){
  }
  Mirf.getData((byte *) &rate);
  val = map(rate, 0, 1023, 0, 179);
  myservo.write(val);
  delay(10);
}


ภาคส่ง

// http://www.bajdi.com
// Nrf24L01 connected to Mega 2560
// Nrf24L01 connection details http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
// Transmit analog value from pin A0 to the receiver

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

int rate;

void setup(){

  Serial.begin(9600);
  Mirf.cePin = 9;             //ce pin on Mega 2560, REMOVE THIS LINE IF YOU ARE USING AN UNO
  Mirf.csnPin = 10;            //csn pin on Mega 2560, REMOVE THIS LINE IF YOU ARE USING AN UNO
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"clie1");
  Mirf.payload = sizeof(rate);
  Mirf.config();
}

void loop(){
  rate = analogRead(A0);

  Mirf.setTADDR((byte *)"serv1");

  Mirf.send((byte *) &rate);

  while(Mirf.isSending()){
  }
}


สรุป

ระยะที่ module ทำได้จริงๆอาจได้ถึง 500 เมตรหรือไกลกว่านั้น ผมยังอึ้งๆอยู่แบบว่าราคากับคุณภาพมัน...ที่เหลืออธิบายด้วยภาพ
รายละเอียดต่างๆหาอ่านเพิ่มเติมได้จาก internet คับ
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: yupetch on July 25, 2014, 03:55:06 PM
สุดยอดครับท่าน Jeng
นำแนวคิดใหม่ๆ มานำเสนออีกแล้ว
ขอถามต่อนิดนึงครับ
ว่า ถ้าควบคุมได้ไกลมากๆ แล้วจะทราบได้อย่างไร ว่ามันทำงานได้ถูกต้องทุกคำสั่ง อ่ะครับ
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: wlasoi on July 25, 2014, 04:16:21 PM
ใช้หลายค่าย สรุปค่าย TI ดีสุด ถ้า  2.4GHz ก็ CC2xxx ดีกว่า ครับ .. อย่าง  CC2530 ที่ใช้ใช้เสาอากาศ Micro-strip ข้ามผนัง 4 ห้อง 20 เมตรที่ 99% คนล่ะเรื่องเลย ติด PA ไปได้ 1.5-3 กิโล กันเบย  ปัญหาของ nRF24xx คือเรื่องของคุณภาพการสื่อสาร ครับ .. เจอเข้า .. ปวดหัวตั้บ!

แต่ เด่นเรื่องราคา ยังกับไล่แจก ..
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: JENG on July 25, 2014, 04:43:21 PM
Quote from: yupetch on July 25, 2014, 03:55:06 PM
สุดยอดครับท่าน Jeng
นำแนวคิดใหม่ๆ มานำเสนออีกแล้ว
ขอถามต่อนิดนึงครับ
ว่า ถ้าควบคุมได้ไกลมากๆ แล้วจะทราบได้อย่างไร ว่ามันทำงานได้ถูกต้องทุกคำสั่ง อ่ะครับ

ก็คงต้องแล้วแต่เราออกแบบคับ ว่าเราจะมีวิธี error checking แบบไหน เพราะมันรับส่งได้สองทางอยู่แล้ว
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: tape_4 on July 29, 2014, 08:45:37 AM
Quote from: yupetch on July 25, 2014, 03:55:06 PM
สุดยอดครับท่าน Jeng
นำแนวคิดใหม่ๆ มานำเสนออีกแล้ว
ขอถามต่อนิดนึงครับ
ว่า ถ้าควบคุมได้ไกลมากๆ แล้วจะทราบได้อย่างไร ว่ามันทำงานได้ถูกต้องทุกคำสั่ง อ่ะครับ

ตัว module สามารถทำให้รับส่งได้ 2ทิศทางโดยการกำหนดที่ config ว่าจะต้องการรับหรือส่งครับ
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: skytec on July 29, 2014, 10:16:38 AM
ทำเป็น two way remote น่าสนใจน่ะครับ เอามาแทน REMOTE รถยนต์ แบบ One way บ้านเรา ราคา TWO WAY Remote แพงมากๆ  :) :)
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: IndigoBlue on August 13, 2014, 09:50:15 AM
PA คืออะไรครับ ?

ขออภัยที่ถาม ข้าพเจ้าไม่รู้จริงๆ และอยากรู้จริงๆ

ขอบคุณครับ
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: wlasoi on August 13, 2014, 10:14:25 AM
เต็มๆมันชื่อ 2.4-GHz RF Front  End ครับ ในตัวมีทั้ง PA (Poweramplifier)  , LNA Low-noise amplifier (LNA)  แต่เรียกง่ายๆ PA ขยายสัญญาน RF
เป็น chip แยกต่างหาก เช่นภ้าของ CC ก็เป็นเบอร์ CC2591
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: IndigoBlue on August 13, 2014, 10:24:00 AM
Quote from: wlasoi on August 13, 2014, 10:14:25 AM
เต็มๆมันชื่อ 2.4-GHz RF Front  End ครับ ในตัวมีทั้ง PA (Poweramplifier)  , LNA Low-noise amplifier (LNA)  แต่เรียกง่ายๆ PA ขยายสัญญาน RF
เป็น chip แยกต่างหาก เช่นภ้าของ CC ก็เป็นเบอร์ CC2591

ขอบคุณครับ  :) :)
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: tonjaa on August 26, 2014, 03:06:28 PM
ถ้าใช้ nRF24L01 มากกว่า 2 ตัว
-สามารถติดต่อกันได้ทุกตัวหรือเปล่าครับ
-มีวิธีการแยกข้อมูลที่ส่งมาจากแต่ละตัวได้หรือเปล่าครับ
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: jele99 on August 26, 2014, 05:08:12 PM
เคยลองเล่นมานานหลายปีแล้วตั้งแต่ ES เอามาขายแรกๆ เดี๋ยวนี้หาไม่เห็นมีเลย :'(
แต่ชอบที่ราคาถูกดี แล้วก็ยังสามารถรับข้อมูลได้พร้อมๆกันถึง 6 ตัว ;D
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: tonjaa on August 27, 2014, 12:11:09 AM
Quote from: jele99 on August 26, 2014, 05:08:12 PM
เคยลองเล่นมานานหลายปีแล้วตั้งแต่ ES เอามาขายแรกๆ เดี๋ยวนี้หาไม่เห็นมีเลย :'(
แต่ชอบที่ราคาถูกดี แล้วก็ยังสามารถรับข้อมูลได้พร้อมๆกันถึง 6 ตัว ;D


ขอบคุณท่าน jele99 มากครับสำหรับรูป ทำให้ผมไปค้นเจอรูปที่ท่านโพสใน datasheet ของ nRF24L01+

จากรูปสรุปว่า ตัว PRX(primary receiver) หนึ่งตัว สามารถติดต่อกับ PTX ได้ถึง 6 ตัวเลยใช่มั้ยครับ (1 master / 6 slave)
ถ้าใช้กับระบบที่มีถึง 7 node แบบในรูป ถือว่าลดต้นทุนได้มากเลยทีเดียว ถ้าเปรียบเทียบกับการใช้ wireless ชนิดอื่น (bluetooth หรือ zigbee)

ส่วนเรื่องการใช้พลังงาน และความแรงของสัญญาน(PA) ลองพิจารณาจากข้างล่างนี้ดูครับ
• Up to 2Mbps on air data rate
• Ultra low power operation
• 11.3mA TX at 0dBm output power
• 12.3mA RX at 2Mbps air data rate
• 900nA in power down


TX mode PA control has four programmable steps






SPI RF-SETUP     (RF_PWR) RF outputpower     DC current consumption     
110dBm11.3mA
10-6dBm9.0mA
01-12dBm7.5mA
00-18dBm7.0mA

อ้างอิงจาก: nRF24L01_Product_Specification_v2_0
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: wlasoi on August 27, 2014, 04:10:41 AM
TI มันออก  PA รุ่นใหม่มา  CC2592  แรงที่ +20 dBm  และ sense อยู่ที่ -100dBm เดี่ยวสักพัก จีนทำออกขาย ครับ  แรงโครตๆ ..  ;D
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: avr_lover on August 27, 2014, 09:06:55 AM
• Up to 2Mbps on air data rate
• Ultra low power operation
• 11.3mA TX at 0dBm output power
• 12.3mA RX at 2Mbps air data rate
• 900nA in power down
SPI RF-SETUP        (RF_PWR) RF outputpower        DC current consumption     
11   0dBm   11.3mA
10   -6dBm   9.0mA
01   -12dBm   7.5mA
00   -18dBm   7.0mA

Setting ที่ Low data rate 1MBps + 11   0dBm   11.3mA ก็จะทำให้ระยะรับส่งไกลขึ้นไปอีกครับ :)
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: projectartist on December 27, 2014, 10:45:48 AM
เจ๋งเป้งเลยคับ
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: S.poolpong93 on January 12, 2017, 09:29:28 AM
ตัว NRF24l01  เราสามารถset ให้เป็นทั้งรับและส่งในตัวเดียวกันได้ไหมครับ

เช่น ตัว A  ส่งค่า 0x01 ไปยัง B เมื่อ B ได้รับแล้ว เช็คว่าค่าเป้น 0x01 จริง ให้ส่งกลับไปยัง A ว่า 0x02  ไรงี้อ่ะคับ
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: หมูน้อย on January 12, 2017, 12:17:49 PM
Quote from: S.poolpong93 on January 12, 2017, 09:29:28 AM
ตัว NRF24l01  เราสามารถset ให้เป็นทั้งรับและส่งในตัวเดียวกันได้ไหมครับ

เช่น ตัว A  ส่งค่า 0x01 ไปยัง B เมื่อ B ได้รับแล้ว เช็คว่าค่าเป้น 0x01 จริง ให้ส่งกลับไปยัง A ว่า 0x02  ไรงี้อ่ะคับ

ได้ครับ มันเป็น Transceiver ลองดูดาต้าชีตครับ
https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf
Title: Re: ทดสอบระยะส่ง nRF24L01+ (PA) ครั้งที่สอง
Post by: chobui7 on April 30, 2017, 04:47:01 PM
ตัวหน้าตาแบบนี้ใช่ไหมครับ

https://www.9arduino.com/product/97/wireless-nrf24l01-2-4ghz-%E0%B9%81%E0%B8%9A%E0%B8%9A%E0%B8%A1%E0%B8%B5%E0%B9%80%E0%B8%AA%E0%B8%B2