- Walkie Talkie โดยใช้โมดูล RF nRF24L01
- ส่วนประกอบที่จำเป็นสำหรับเครื่องส่งรับวิทยุที่ใช้ Arduino
- Arduino Walkie Talkie Circuit Diagram
- รหัส Arduino Walkie Talkie
เรากำลังอยู่ในยุคของอุปกรณ์ที่รองรับ 5G และ 5G อย่างไรก็ตามเทคโนโลยีเก่า ๆ เช่นระบบเครื่องส่งรับวิทยุและระบบสื่อสาร RF ยังคงเป็นสิ่งสำคัญยิ่งในสถานการณ์ที่ต้องใช้การสื่อสารระยะไกลระยะทางสั้นราคาถูกและต้นทุนต่ำ ตัวอย่างเช่นหากคุณมีอาคารหรือ บริษัท รับเหมาก่อสร้างที่มีน้ำหนักมากคนงานของคุณจำเป็นต้องสื่อสารระหว่างกันเพื่อทำงานร่วมกัน ด้วยความช่วยเหลือของเครื่องส่งรับวิทยุพวกเขาสามารถสื่อสารกันและกระจายการนวดสั้น ๆ หรือคำแนะนำได้เพียงกดปุ่ม“ ปตท.” เพื่อส่งเสียงให้คนงานคนอื่นฟังและปฏิบัติตามคำสั่ง แอปพลิเคชันอื่นอาจอยู่ในหมวกกันน็อกอัจฉริยะในการสื่อสารระหว่างกลุ่มผู้ขับขี่ในระหว่างการขับขี่ที่ยาวนานรุ่นที่แนะนำนี้สามารถสื่อสารได้ครั้งละหกคน หากคุณต้องการตรวจสอบโครงการส่งสัญญาณเสียงไร้สายระยะสั้นประเภทอื่น ๆ โปรดไปที่โครงการเครื่องส่งสัญญาณเสียงไร้สายแบบ IR และเครื่องส่งสัญญาณเสียง Li-Fi โดยใช้ลิงก์
Walkie Talkie โดยใช้โมดูล RF nRF24L01
องค์ประกอบหลักของโครงการนี้คือโมดูล RF NRF24L01และArduino Unoซึ่งเป็นสมองหรือหน่วยประมวลผล เราได้เรียนรู้วิธีการเชื่อมต่อ Nrf24L01 กับ Arduino แล้วโดยการควบคุมเซอร์โวมอเตอร์จากระยะไกล สำหรับโครงการนี้ได้เลือกโมดูล RF NRF24L01 เนื่องจากมีข้อดีหลายประการเหนือสื่อการสื่อสารดิจิทัล มีแถบความถี่ ISM ความถี่สูงมาก 2.4 GHzและอัตราข้อมูลสามารถ 250kbps, 1Mbps, 2 Mbps มีช่องสัญญาณที่เป็นไปได้ 125 ช่องระหว่างระยะห่าง 1Mhz ดังนั้นโมดูลจึงสามารถใช้ 125 ช่องสัญญาณที่แตกต่างกันซึ่งทำให้สามารถมีเครือข่ายโมเด็มที่ทำงานได้อย่างอิสระ 125 รายการในที่เดียว
ที่สำคัญที่สุดสัญญาณ NRF24L01 จะไม่ทับซ้อนกันหรือข้ามส่วนต่อประสานกับระบบเครื่องส่งรับวิทยุอื่น ๆ เช่นเครื่องส่งรับวิทยุของตำรวจและเครื่องส่งรับวิทยุทางรถไฟและจะไม่รบกวนเครื่องส่งรับวิทยุอื่น ๆ โมดูล nrf24l01 เดียวสามารถสื่อสารกับโมดูล nrf24l01 อีก 6 โมดูลในเวลาที่อยู่ในสถานะรับ นอกจากนี้ยังเป็นโมดูลที่ใช้พลังงานต่ำซึ่งเป็นข้อดีเพิ่มเติม มีโมดูล NRF24L01 สองประเภทที่มีจำหน่ายและใช้กันอย่างแพร่หลายหนึ่งคือ NRF24L01 + และอีกประเภทหนึ่งคือ NRF24L01 + PA + LNA (แสดงด้านล่าง) พร้อมเสาอากาศในตัว
NRF24L01 +มีเสาอากาศออนบอร์ดและช่วงเพียง 100 เมตร เหมาะสำหรับใช้ภายในอาคารเท่านั้นและไม่เหมาะสำหรับการสื่อสารทางไกลกลางแจ้ง ยิ่งไปกว่านั้นหากมีผนังกั้นระหว่างตัวส่งและตัวรับสัญญาณแสดงว่าการส่งสัญญาณแย่มาก NRF24L01 + PA + LNA กับเสาอากาศภายนอกมี PAที่ช่วยเพิ่มพลังของสัญญาณก่อนที่จะส่ง LNA ย่อมาจาก Low Noise Amplifier มีความชัดเจนกรองสัญญาณรบกวนและเพิ่มระดับสัญญาณที่อ่อนมากและไม่แน่นอนที่ได้รับจากเสาอากาศ ช่วยในการสร้างระดับสัญญาณที่มีประโยชน์และมี เสาอากาศภายนอก 2dBซึ่งสามารถ ส่งสัญญาณครอบคลุมระยะออกอากาศได้ 1,000 เมตร ดังนั้นจึงเหมาะอย่างยิ่งสำหรับโครงการสื่อสารเครื่องส่งรับวิทยุกลางแจ้งของเรา
ส่วนประกอบที่จำเป็นสำหรับเครื่องส่งรับวิทยุที่ใช้ Arduino
- NRF24L01 + PA + LNA พร้อมเสาอากาศภายนอก 2DB (2 ชิ้น)
- Arduino UNO หรือ Arduino รุ่นใดก็ได้
- เครื่องขยายเสียง (2 ชิ้น)
- วงจรไมโครโฟน: คุณสามารถสร้างเองได้ (จะกล่าวถึงในภายหลัง) หรือซื้อโมดูลเซ็นเซอร์เสียง
- DC เป็น DC step-up booster module (2 ชิ้น)
- โมดูลควบคุมแรงดันไฟฟ้า 3.3V AMS1117
- ไฟ LED แสดงสถานะ (2 ชิ้น)
- ความต้านทาน 470 โอห์ม (2 ชิ้น)
- ลำโพงขนาด 4 นิ้ว (2 ชิ้น)
- ปุ่มกด (สำหรับปุ่ม PTT)
- 104 PF สำหรับสร้างปุ่ม PTT (2 ชิ้น)
- ตัวเก็บประจุ 100 NF สำหรับ NRF24L01 (2 ชิ้น)
- ความต้านทาน 1k สำหรับปุ่ม PTT (2 ชิ้น)
- แบตเตอรี่ลิเธียมไอออน 2 ชุด
- การชาร์จแบตเตอรี่ Li-ion และโมดูลป้องกันแบตเตอรี่ (2 ชิ้น)
- สายจัมเปอร์บางส่วน, พินส่วนหัวชาย, บอร์ด vero แบบจุด
Arduino Walkie Talkie Circuit Diagram
แผนภาพวงจรทั้งหมดสำหรับArduino Walkie Talkieแสดงในภาพด้านล่าง แผนภาพวงจรแสดงการเชื่อมต่อทั้งหมดรวมถึงปุ่ม PTT วงจรไมโครโฟนและเอาต์พุตเสียงสเตอริโอ
สำคัญ:ช่วงอินพุตแรงดันไฟฟ้าของโมดูล NRF24L01 คือ 1.9v ถึงสูงสุด 3.6 โวลต์และสำหรับแรงดันไฟฟ้าและความเสถียรของกระแสคุณต้องใช้ตัวเก็บประจุ 100nf ใน + VCC และ - GND แต่พินอื่น ๆ ของโมดูล nrf24l01 สามารถทนต่อสัญญาณ 5 โวลต์ได้ ระดับ
ขั้นตอนที่ 1:ฉันเริ่มต้นด้วยการสร้าง PCB แบบกำหนดเองแบบโฮมเมดและบอร์ด Arduino Atmega328p ฉันใส่ IC Atmega328p บนโปรแกรมเมอร์และกระพริบจากนั้นอัปโหลดรหัส จากนั้นฉันเพิ่มคริสตัล 16 MHz บน Atmega328p IC บน (PB6, PB7) พิน 9 และ 10 รูปภาพของ PCB ที่ทำขึ้นเองของฉันและบอร์ดที่ประกอบด้วย IC ที่ตั้งโปรแกรมไว้แสดงอยู่ด้านล่าง
ขั้นตอนที่ 2:ฉันเชื่อมต่อโมดูล NRF24L01 ตามที่แสดงในแผนภาพวงจรตามลำดับต่อไปนี้ CE เป็นพินดิจิทัล 7, CSN ไปยังพินหมายเลข 8, SCK ไปยังพินดิจิทัล 13, MOSI เป็นพินดิจิทัล 11, MISO เป็นพินดิจิทัล 12 และ IRQ เป็นพินดิจิทัล 2
สำหรับแหล่งจ่ายไฟคุณต้องลดแรงดันไฟฟ้าก่อนจาก 5 โวลต์ถึง 3.3 โวลต์โดยมีเสถียรภาพในปัจจุบันที่ดี นอกจากนี้คุณต้องใส่ตัวเก็บประจุ 100nF บน VCC และกราวด์ของโมดูล nrf24l01 ดังนั้นฉันจึงใช้ AMS1117ซึ่งเป็นตัวควบคุมแรงดันไฟฟ้า 3.3 โวลต์โมดูลนี้ยังลดขนาดโครงการของคุณและทำให้มีขนาดกะทัดรัด
หากคุณต้องการสร้างบอร์ดควบคุมแรงดันไฟฟ้านี้ด้วยตัวคุณเองคุณสามารถซื้อ IC ควบคุม 3.3 โวลต์เท่านั้นและสามารถทำได้โดยการเพิ่มแคปความต้านทานอินพุตและเอาต์พุตเนื่องจากเป็นสิ่งสำคัญมากสำหรับโมดูล RF ของคุณเนื่องจากเป็นอุปกรณ์ที่มีความอ่อนไหว หรือคุณสามารถใช้ตัวควบคุมแรงดันไฟฟ้าตัวแปร LM317 เพื่อสร้างวงจรควบคุม 3.3V เหมือนที่เราทำในโครงการจ่ายไฟ Breadboard
ขั้นตอนที่ 3:คุณสามารถซื้อเซ็นเซอร์เสียงหรือสร้างวงจรไมโครโฟนอย่างง่ายดังที่แสดงในแผนภาพวงจร มันประกอบด้วยเพียงหนึ่ง transistor- 2N3904 ทรานซิสเตอร์ ภาพด้านล่างแสดงวงจรไมโครโฟนแบบโฮมเมดที่สร้างขึ้นบนบอร์ด Vero นอกจากนี้คุณยังสามารถตรวจสอบวงจรขยายเสียงล่วงหน้าสำหรับข้อมูลเพิ่มเติมได้
เพื่อความเข้าใจที่ดีขึ้นฉันได้แสดงการเชื่อมต่อทั้งหมดกับค่าองค์ประกอบดังที่คุณเห็นด้านล่าง
ขั้นตอนที่ 4:สำหรับการเชื่อมต่อจากพินดิจิตอลไมโครคอนโทรลเลอร์หมายเลข 9 และ 10 ไปยังเครื่องขยายเสียงของคุณฉันใช้เครื่องขยายเสียงสเตอริโอ PAM8403เนื่องจากโดยค่าเริ่มต้นเอาต์พุตเสียง Arduino จะต่ำมาก (โดยปกติคุณจะได้ยินเสียงโดยใช้แค่หูฟังเท่านั้น ไม่ใช่ลำโพงดังนั้นเราจึงต้องมีเวทีขยายเสียง) โมดูลนี้สามารถขับลำโพงแล็ปท็อปสองตัวได้อย่างง่ายดายและมีราคาถูกมาก นอกจากนี้ยังมาพร้อมกับเครื่องขยายเสียงที่ทรงพลังมากในแพ็คเกจ SMD ซึ่งต้องการพื้นที่น้อยมาก โมดูลขยายเสียง PAM8403 แสดงอยู่ด้านล่าง
การเชื่อมต่อนั้นง่ายมากต้องใช้แหล่งจ่ายไฟ 3.7V ถึง 5V เพื่อจ่ายไฟให้กับเครื่องขยายเสียง อินพุตเสียงช่องสัญญาณซ้ายและช่องสัญญาณขวาจากขา Arduino 9 และ 10 พร้อมกับขากราวด์ควรได้รับเป็นอินพุตสำหรับโมดูลเครื่องขยายเสียงนี้ตามที่แสดงในแผนภาพวงจร ในกรณีของฉันฉันใช้ลำโพง 4 นิ้ว 8 โอห์มตัวเดียวและใช้เฉพาะช่องสัญญาณออกด้านขวาเท่านั้น หากต้องการคุณสามารถใช้ลำโพงสองตัวกับโมดูลนี้ได้
ขั้นตอนที่ 5:ต่อไปฉันสร้างสวิตช์ PTT โดยใช้ปุ่มกดธรรมดา ฉันเพิ่มตัวเก็บประจุ 104PF หรือ 0.1 ยูเอฟเพื่อป้องกันสวิตช์กระเด้งหรือสัญญาณผิดปกติเมื่อกดสวิตช์ ขณะนี้พิน 4 เชื่อมต่อโดยตรงกับ Arduino Digital พิน D3 เนื่องจากพินขัดจังหวะถูกกำหนดให้กับการเข้ารหัส
NRF24L01 + PA + LNA เมื่อส่งสัญญาณเสียงหรือแพ็กเก็ต DATA จะใช้พลังงานมากกว่าดังนั้นจึงใช้กระแสไฟมากกว่า เมื่อคุณกดปุ่ม PTT กะทันหันการใช้พลังงานจะเพิ่มขึ้น สำหรับการจัดการโหลดที่เพิ่มขึ้นอย่างกะทันหันนี้คุณต้องใช้ตัวเก็บประจุ 100nF บน + vcc และกราวด์เพื่อความเสถียรในการส่งผ่านของโมดูล NRF24L01 + PA + LNA
เมื่อกดสวิตช์บอร์ด Arduino จะรับ Arduino Interrupt ที่พิน D3 ในโปรแกรมเราจะประกาศขาดิจิตอล 3 ของ Arduino ตรวจสอบแรงดันไฟฟ้าขาเข้าอย่างต่อเนื่อง หากแรงดันไฟฟ้าขาเข้าต่ำเครื่องส่งรับวิทยุจะยังคงอยู่ในโหมดรับและหากพินดิจิตอลหมายเลข 3 สูงเครื่องส่งรับวิทยุจะเปลี่ยนเป็นโหมดส่งสัญญาณสำหรับการส่งสัญญาณเสียงที่รับโดยกระบวนการไมโครโฟนผ่านไมโครคอนโทรลเลอร์และส่งผ่าน NRF24L01 + PA + LNA พร้อมเสาอากาศภายนอก
ขั้นตอนที่ 6:สำหรับแหล่งจ่ายไฟฉันได้เลือกแบตเตอรี่ Li-ionนี้ ในการจ่ายไฟส่วนประกอบทั้งหมดเช่น Arduino IC Atmega328p, NRF24L01 + PA + LNA, เครื่องขยายเสียง, ปุ่ม PTT และวงจรไมโครโฟนฉันใช้แบตเตอรี่ Li-ion 2 ชุดสำหรับโครงการนี้ตามที่แสดงด้านล่าง
เซลล์ที่ดีมีระดับแรงดัน 3.8v ถึง 4.2 โวลต์และแรงดันไฟฟ้าที่ชาร์จคือ 4v ถึง 4.2 โวลต์เท่านั้น หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับแบตเตอรี่ลิเธียมคุณสามารถตรวจสอบบทความที่เชื่อมโยง แบตเตอรี่เหล่านี้เป็นที่นิยมอย่างมากในอุปกรณ์อิเล็กทรอนิกส์แบบพกพาและยานพาหนะไฟฟ้า แต่เซลล์แบตเตอรี่ Li-ion ไม่แข็งแรงเท่าแบตเตอรี่อื่น ๆ พวกเขาต้องการการปกป้องจากการชาร์จไฟเกินและคายประจุเร็วเกินไปซึ่งหมายความว่าควรรักษากระแสไฟ / การคายประจุและแรงดันไฟฟ้าให้อยู่ในขอบเขตที่ปลอดภัย ดังนั้นผมใช้ใบพัดแบตเตอรี่ Li-ion ที่สุดชาร์จโมดูล - TP4056ก่อนหน้านี้เราเคยใช้โมดูลนี้ในการสร้าง Portable Power Bank คุณสามารถตรวจสอบรายละเอียดเพิ่มเติมได้ในบอร์ดนี้
ขั้นตอนที่ 7: ฉันใช้ 2 Amp dc เป็น dc step up booster moduleเพราะ Arduino atmega328p, เครื่องขยายเสียง, วงจรไมโครโฟน, ปุ่ม PTT ทุกอย่างต้องการ 5 โวลต์ แต่แบตเตอรี่ของฉันจ่ายได้แค่ 3.7V ถึง 4.2V ดังนั้นฉันต้องมีตัวแปลงเพิ่ม ถึง 5V พร้อมเอาต์พุตกำลังที่เสถียรมากกว่า 1 แอมป์
หลังจากสร้างวงจรแล้วคุณสามารถประกอบเข้าในตู้ขนาดเล็กได้ ฉันใช้กล่องพลาสติกและวางวงจรของฉันตามที่แสดงในภาพด้านล่าง
รหัส Arduino Walkie Talkie
โปรแกรมที่สมบูรณ์สำหรับ Arduino walkie talkie ของคุณมีอยู่ที่ด้านล่างของหน้านี้ ในส่วนนี้เราจะพูดถึงวิธีการทำงานของโปรแกรม ก่อนที่จะไปที่นั่นคุณต้องรวมไลบรารีบางส่วนซึ่งแสดงไว้ด้านล่าง
- nRF24 ไลบรารี
- nRF24 ไลบรารีเสียง
- ห้องสมุด Maniaxbug RF24
เริ่มต้นการเขียนโปรแกรมโดยรวมส่วนหัว Radio and Audio Library ดังที่แสดงด้านล่าง
# รวม
เริ่มต้น RF Radio บนพิน 7 และ 8 และตั้งค่าหมายเลขวิทยุเสียงเป็น 0 นอกจากนี้เริ่มต้นปุ่ม ppt บนพิน 3
วิทยุ RF24 (7,8); // ตั้งค่าวิทยุโดยใช้พิน 7 (CE) 8 (CS) RF24Audio rfAudio (วิทยุ, 0); // ตั้งค่าเสียงโดยใช้วิทยุและตั้งค่าเป็นวิทยุหมายเลข 0 int talkButton = 3;
ภายในฟังก์ชั่นการตั้งค่าให้เริ่มมอนิเตอร์แบบอนุกรมที่ 115200 baudrate สำหรับการดีบัก จากนั้นเริ่มต้นปุ่ม ppt เชื่อมต่อกับพิน 3 เป็นพินขัดจังหวะ
การตั้งค่าเป็นโมฆะ () {Serial.begin (115200); printf_begin (); radio.begin (); radio.printDetails (); rfAudio.begin (); pinMode (talkButton, INPUT); // ตั้งค่าขัดจังหวะเพื่อตรวจสอบปุ่ม talk abutton กด attachInterrupt (digitalPinToInterrupt (talkButton), talk, CHANGE); // ตั้งค่าสถานะเริ่มต้นสำหรับแต่ละโมดูลเพื่อรับ rfAudio.receive (); }
ต่อไปเรามีฟังก์ชันที่เรียกว่า talk () ซึ่งเรียกว่าเพื่อตอบสนองต่อการขัดจังหวะ โปรแกรมจะตรวจสอบสถานะของปุ่มหากกดปุ่มค้างไว้จะเข้าสู่โหมดส่งสัญญาณเพื่อส่งเสียง หากปล่อยปุ่มจะเข้าสู่โหมดรับ
โมฆะ talk () {if (digitalRead (talkButton)) rfAudio.transmit (); อื่น rfAudio.receive (); } โมฆะลูป () {}
การทำงานทั้งหมดของโครงการนี้สามารถพบได้ในวิดีโอที่ลิงก์ด้านล่าง เครื่องส่งรับวิทยุส่งเสียงรบกวนระหว่างการใช้งานซึ่งเป็นเสียงรบกวนจากความถี่พาหะของโมดูล nRF24L01 สามารถลดได้โดยใช้เซ็นเซอร์เสียงหรือโมดูลไมโครโฟนที่ดี หากคุณมีคำถามใด ๆ เกี่ยวกับโครงการนี้คุณสามารถฝากไว้ในส่วนความคิดเห็นด้านล่าง คุณยังสามารถใช้ฟอรัมของเราเพื่อรับคำตอบอย่างรวดเร็วสำหรับคำถามทางเทคนิคอื่น ๆ ของคุณ