- คำอธิบายการทำงาน:
- ส่วนประกอบที่ต้องการ:
- แผนภูมิวงจรรวม:
- การทำงานกับ nRF24L01 + Wireless Transceiver Module:
- การเขียนโปรแกรม Arduinos:
- โปรแกรมการประมวลผล:
- การทดสอบ:
การสร้างเครือข่ายท้องถิ่นเพื่อแบ่งปันบุคลากรและข้อมูลที่เป็นความลับนั้นแทบจะเป็นไปไม่ได้สำหรับคนทั่วไปในโลกสมัยใหม่ของเรา ส่วนใหญ่เป็นเพราะวิธีการแชททั่วไปเช่น Whatsapp, Facebook, Hangout และเกือบทุกอย่างเกี่ยวข้องกับการเชื่อมต่ออินเทอร์เน็ต
เกิดอะไรขึ้นถ้าเราสามารถใช้ข้อมูลร่วมกันได้โดยไม่ต้องกลางของอินเทอร์เน็ต ?
จะเจ๋งแค่ไหนถ้าคุณสามารถสื่อสารกับคนในบ้านหรือที่ทำงานโดยไม่ต้องใช้เน็ตแพ็คหรือการเชื่อมต่ออินเทอร์เน็ต
จะเป็นอย่างไรหากเราสามารถปรับแต่งหน้าจอแชทด้วยจินตนาการของเราเอง
ทั้งหมดนี้เป็นไปได้ด้วยไมโครคอนโทรลเลอร์และสื่อส่งสัญญาณไร้สาย นี้ห้อง Arduino การพูดคุยโดยใช้โครงการ nRF24L01จะแนะนำคุณในการตั้งค่าต้นทุนต่ำห้องสนทนาในท้องถิ่นของคุณ
มาดูวิธีการทำงานกันดีกว่า
คำอธิบายการทำงาน:
โดยพื้นฐานแล้วในการทำให้สิ่งนี้ใช้งานได้เราจะต้องมีบอร์ด Arduinoและโมดูลไร้สายราคาถูก โมดูลไร้สายที่เราจะใช้ที่นี่เป็นnRF24L01เหตุผลในการเลือกโมดูลเหล่านี้คือโมดูลเหล่านี้เป็นตัวต่อของ Zigbee และใช้งานง่ายด้วยการเชื่อมต่อที่ตั้งค่าไว้ นอกจากนี้โมดูลเหล่านี้ยังทำงานบน 2.4 GHz (แถบ ISM) พร้อมด้วยความถี่ในการแพร่กระจายสเปกตรัมและตัวเลือกการสั่นสะเทือนซึ่งทำให้เรารู้สึกผ่อนคลายจากปัญหาการรบกวน
Arduino และ NRF24L01 ของเราเชื่อมต่อเข้าด้วยกันเพื่อสร้างการสื่อสารแบบอนุกรมเพื่อให้สามารถพูดคุยกันได้ NRF24L01 เป็นโมดูลตัวรับส่งสัญญาณ half duplex ดังนั้นจึงสามารถส่งและรับข้อมูลได้ ข้อมูลถูกรวบรวมจากผู้ใช้และส่งข้อมูลนี้สามารถรับได้โดยโมดูลใด ๆ (หรือเฉพาะอย่างใดอย่างหนึ่ง) และแสดงบนหน้าจอ
แต่!!!!! เราจะสนทนาโดยใช้หน้าจอ Debug ของ Arduino หรือไม่? ไม่แน่นอน เรากำลังจะสร้างและปรับแต่งหน้าจอแชทของเราเองด้วยความช่วยเหลือของ 'การประมวลผล' การประมวลผลเป็นซอฟต์แวร์ที่สามารถสื่อสารกับ Arduino โดยใช้ UART เราจะสร้างไฟล์. exe ด้วยภาษาประมวลผลซึ่งสามารถทำงานบนคอมพิวเตอร์เครื่องใดก็ได้ที่มี Java Runtime ในการแชทเราต้องเสียบ Arduino ของเราและเปิดไฟล์. exe นี้และ Booooom !! เราอยู่ในห้องแชทส่วนตัวของเราเองโดยไม่เสียค่าใช้จ่าย
โปรเจ็กต์นี้ จำกัด เฉพาะการเพิ่มสมาชิกสองคนในห้องแชท แต่ nRF24L01 มี 6 ไปป์ไลน์ดังนั้นจึงอาจมีสมาชิกได้สูงสุด 6 คนในห้องแชทของเรา ห้องถ่านนี้สามารถทำงานได้ในระยะ100 เมตรขึ้นอยู่กับโมดูล nRF24L01
ไปช้อปกันเถอะ !!!!
ส่วนประกอบที่ต้องการ:
- Arduino (ทุกรุ่นหรือทุกรุ่น) - 2Nos
- nRF24L01 + โมดูลตัวรับส่งสัญญาณไร้สาย - 2Nos
- 3.3 ตัวควบคุมแรงดันไฟฟ้า - 2Nos (ไม่บังคับ)
- การเชื่อมต่อสายไฟ
- ดอกเบี้ย (Lolz)
แผนภูมิวงจรรวม:
Arduino Mega พร้อม nRF24L01:
Arduino Nano พร้อม nRF24L01:
โครงการของเราไม่เกี่ยวข้องกับการเชื่อมต่อที่ซับซ้อนใด ๆ ฉันใช้Arduino Mega และ Arduino Nanoและการเชื่อมต่อกับ nRF24L01 แสดงไว้ด้านบน คุณสามารถใช้ Arduino รุ่นใดก็ได้
การทำงานกับ nRF24L01 + Wireless Transceiver Module:
อย่างไรก็ตามเพื่อที่จะทำให้ nRF24L01 ของเราทำงานได้โดยปราศจากเสียงรบกวนเราอาจต้องพิจารณาสิ่งต่อไปนี้ ฉันทำงานกับ nRF24L01 + นี้มานานและได้เรียนรู้ว่าประเด็นต่อไปนี้สามารถช่วยคุณจากการโดนกำแพงได้
1. โมดูล nRF24L01 + ส่วนใหญ่ในตลาดเป็นของปลอม ราคาถูกที่เราสามารถหาได้ใน Ebay และ Amazon นั้นแย่ที่สุด (ไม่ต้องกังวลด้วยการปรับแต่งเล็กน้อยเราสามารถทำให้มันใช้งานได้)
2. ปัญหาหลักคือแหล่งจ่ายไฟไม่ใช่รหัสของคุณ รหัสออนไลน์ส่วนใหญ่จะทำงานได้อย่างถูกต้องตัวฉันเองมีรหัสที่ใช้งานได้ซึ่งฉันทดสอบเป็นการส่วนตัวโปรดแจ้งให้เราทราบหากคุณต้องการ
3. ให้ความสนใจเนื่องจากโมดูลที่พิมพ์เป็น NRF24L01 + นั้นแท้จริงแล้วคือ Si24Ri (ใช่ผลิตภัณฑ์ของจีน)
4. โมดูลโคลนและของปลอมจะใช้พลังงานมากขึ้นดังนั้นอย่าพัฒนาวงจรไฟฟ้าของคุณตามแผ่นข้อมูล nRF24L01 + เนื่องจาก Si24Ri จะมีการใช้กระแสไฟฟ้าสูงประมาณ 250mA
5. ระวังการกระเพื่อมของแรงดันไฟฟ้าและไฟกระชากโมดูลเหล่านี้มีความอ่อนไหวมากและอาจไหม้ได้ง่าย (;-(ทอดไป 2 โมดูลแล้ว)
6. การเพิ่มตัวเก็บประจุสองตัว (10uF และ 0.1uF) ใน Vcc และ Gnd ของโมดูลช่วยในการทำให้แหล่งจ่ายของคุณบริสุทธิ์และใช้ได้กับโมดูลส่วนใหญ่
หากคุณมีปัญหารายงานในส่วนความคิดเห็นหรืออ่านสิ่งนี้
การเขียนโปรแกรม Arduinos:
โปรแกรมสำหรับ Arduino Nano และ Mega จะคล้ายกันสำหรับการเปลี่ยนหมุด CE และ CS ฉันจะอธิบายโปรแกรมโดยแยกออกเป็นส่วนเล็ก ๆ
เนื่องจาก Arduino และ nRF24L01 สื่อสารผ่าน SPI เราจึงเรียกร้องให้มีไลบรารี SPI เราได้รวม Maniacbug RF24 lib ไว้ด้วยเพื่อให้โมดูล RF ของเราทำงานได้ ดาวน์โหลดไฟล์จากที่นี่และเพิ่มลงใน IDE ของคุณ
# รวม
โมดูล NRF ของเราเชื่อมต่อกับพิน 8 และ 10 ถึง CE และ CS ตามลำดับ
RF24 myRadio (8, 10);
เราสร้างแพคเกจข้อมูลที่มีโครงสร้างที่เรียกว่าแพคเกจ ข้อความ ตัวแปรจะถูกใช้เพื่อส่งข้อมูลออนแอร์
โครงสร้างแพคเกจ {char text; // ข้อความที่จะส่งทางอากาศ}; แพ็คเกจ typedef struct package; ข้อมูลแพ็คเกจ;
ในฟังก์ชัน void setup () เราเริ่มต้นอัตราการรับส่งข้อมูลเป็น 9600 และตั้งค่าโมดูลของเราเป็น 115 โดยใช้พลังงานขั้นต่ำและความเร็ว 250KBPS คุณสามารถปรับแต่งค่าเหล่านี้ได้ในภายหลัง
การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); ล่าช้า (1,000); //Serial.print("Setup Initialized "); myRadio.begin (); myRadio.setChannel (115); // 115 แบนด์เหนือสัญญาณ WIFI myRadio.setPALevel (RF24_PA_MIN); // นาทีพลังงานต่ำ rage myRadio.setDataRate (RF24_250KBPS); // ความเร็วขั้นต่ำ}
โมดูลถูกสร้างขึ้นเพื่อทำงานในโหมดการส่งหากได้รับข้อมูลผ่านบัฟเฟอร์อนุกรมมิฉะนั้นจะอยู่ในโหมดตัวรับที่กำลังมองหาข้อมูลบนอากาศ ข้อมูลจากผู้ใช้จะถูกเก็บไว้ใน char Array และส่งไปยัง WriteData () เพื่อส่งข้อมูล
void loop () {while (Serial.available ()> 0) // รับค่าจากผู้ใช้ {val = Serial.peek (); ถ้า (ดัชนี <19) // หนึ่งน้อยกว่าขนาดของอาร์เรย์ {inChar = Serial.read (); // อ่านอักขระ inData = inChar; // จัดเก็บดัชนี ++; // ส่วนเพิ่มที่จะเขียนต่อไป inData = '\ 0'; // Null สิ้นสุดสตริง} if (val == '#') {strcpy (data.text, inData); WriteData (); // ใส่โมดูลในโหมดส่งในขณะที่ (ดัชนี! = 0) {inData = ''; ดัชนี--; }}} ReadData (); // ใส่โหมดรับโมดูล}
เป็นโมฆะฟังก์ชัน WriteData () เขียนข้อมูลบนที่อยู่ 0xF0F0F0F0AA ที่อยู่นี้ใช้เป็นท่อเขียนบนโมดูลอื่น
โมฆะ WriteData () {myRadio.stopListening (); // หยุดการรับและเริ่มการแปลง myRadio.openWritingPipe (0xF0F0F0F066); // ส่งข้อมูลบนที่อยู่ 40 บิต myRadio.write (& data, sizeof (data)); ล่าช้า (300); }
เป็นโมฆะฟังก์ชัน ReadData () เขียนข้อมูลบน 0xF0F0F0F066 ที่อยู่นี้แอดเดรสนี้ใช้เป็นท่ออ่านบนโมดูลอื่น
เป็นโมฆะ ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // ท่อไหนอ่าน 40 bit Address myRadio.startListening (); // หยุดการส่งสัญญาณและเริ่มการเปิดเผย if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
เพียงเท่านี้ส่วนการเขียนโปรแกรมของเราก็จบลงแล้ว หากคุณไม่เข้าใจบางสิ่งที่นี่ให้ตรวจสอบสองโปรแกรมสำหรับ Arduinos ทั้งสองตามที่ระบุไว้ในส่วนรหัสด้านล่างฉันได้เพิ่มบรรทัดความคิดเห็นเพื่ออธิบายสิ่งต่างๆได้ดีขึ้นมาก
โปรแกรมการประมวลผล:
'การประมวลผล'เป็นซอฟต์แวร์โอเพ่นซอร์สที่ศิลปินใช้สำหรับการออกแบบกราฟิก ซอฟต์แวร์นี้ใช้เพื่อพัฒนาซอฟต์แวร์และแอปพลิเคชัน Android มันค่อนข้างง่ายในการพัฒนาและคล้ายกับ Android Development IDE มาก ดังนั้นฉันจึงอธิบายให้สั้นลง
รหัสการประมวลผลสำหรับทั้งสองหน้าจอแชทมีให้ที่นี่:
- รหัสประมวลผลหน้าจอแชท 1
- รหัสประมวลผลหน้าจอแชท 2
คลิกขวาที่พวกเขาและคลิกที่ 'บันทึกลิงค์เป็น.. ' เพื่อดาวน์โหลดและเปิดในคอมพิวเตอร์ของคุณหลังจากตั้งค่า Arduinos คุณต้องติดตั้งซอฟต์แวร์ "กำลังประมวลผล" เพื่อเปิดไฟล์ *.pde เหล่านี้จากนั้น "เรียกใช้" เพื่อเปิดกล่องแชท ส่วนความคิดเห็นเปิดให้สอบถามได้ ภาพร่างการประมวลผลสำหรับโมดูลเครื่องส่งและตัวรับจะเหมือนกัน
ในส่วนโค้ดด้านล่าง "port = new Serial (this, Serial.list (), 9600); // อ่านพอร์ตที่ 4 ที่ 9600 baudrate" มีความสำคัญเนื่องจากจะตัดสินใจว่าจะใช้พอร์ตใดกับข้อมูล
การตั้งค่าเป็นโมฆะ () {ขนาด (510,500); พอร์ต = Serial ใหม่ (นี่คือ Serial.list (), 9600); // อ่านพอร์ตที่ 4 ที่ 9600 baudrate println (Serial.list ()); พื้นหลัง (0); }
ที่นี่ฉันได้อ่านข้อมูลจากพอร์ตที่ 4 จาก Arduino ของฉันแล้ว
ตัวอย่างเช่นถ้าคุณมี COM COM COM COM COM COM
จากนั้นโค้ดด้านบนจะอ่านข้อมูลจาก COM
การทดสอบ:
ตอนนี้เนื่องจากการประมวลผลและร่าง Arduino ของเราพร้อมแล้วเพียงแค่อัปโหลดโปรแกรมไปยัง Arduino แล้วเสียบเข้ากับแล็ปท็อปของคุณ เปิดภาพร่างการประมวลผลของคุณและเริ่มพิมพ์และกด "Enter" ข้อความของคุณจะถูกส่งไปยัง Arduino เครื่องอื่นซึ่งจะแสดงข้อความที่ได้รับบนแอปพลิเคชันการประมวลผลอื่นที่เชื่อมต่อกับคอมพิวเตอร์เครื่องอื่น ตรวจสอบวิดีโอด้านล่างเพิ่มเติมสำหรับการสาธิตแบบเต็ม
ดังนั้นวิธีที่คุณสามารถพูดคุยกับเพื่อนและครอบครัวของคุณในพื้นที่ท้องถิ่นของคุณได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ตใด ๆ โดยใช้ราคาไม่แพงนี้Arduino ห้องสนทนา