สารบัญ:

หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์: 4 ขั้นตอน
หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์: 4 ขั้นตอน

วีดีโอ: หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์: 4 ขั้นตอน

วีดีโอ: หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์: 4 ขั้นตอน
วีดีโอ: คำนวณหาค่า R ตัวต้านทาน เพื่อใช้กับหลอด LED ยังไง ? 2024, กรกฎาคม
Anonim
หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์
หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์
หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์
หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์
หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์
หลอดไฟ LED จับคู่แสง Arduino ไร้สายโดยใช้โฟโตรีซีสเตอร์

คำแนะนำนี้มีรายละเอียดขั้นตอนที่จำเป็นในการสร้างหลอดไฟ LED ตรวจจับแสงแบบไร้สายเบื้องต้นโดยใช้ Arduino Unos และโฟโตรีซีสเตอร์ แอปพลิเคชันที่เป็นไปได้สำหรับอุปกรณ์นี้คือการให้แสงสว่างในห้องที่ไม่มีหน้าต่างที่มีแสงแดดเทียม เข้ากับสภาพแสงจริงภายนอกแบบเรียลไทม์ มาเริ่มกันเลย!

รายการซัพพลาย:

Arduino Uno x2

NRF24L01 ตัวรับส่งสัญญาณไร้สาย x2 (อุปกรณ์เสริม - กระเป๋าเป้ NRF24L01 x2)

TIP120 ดาร์ลิงตันทรานซิสเตอร์

โฟโตรีซีสเตอร์

ไฟ LED 5 มม. x3

ปุ่มกด

ตัวต้านทาน 100 โอห์ม x3

ตัวต้านทาน 10k โอห์ม x3

สายจัมเปอร์ต่างๆ

ขั้นตอนที่ 1: การเดินสายไฟโมดูลและวงจร NRF24L01

การเดินสายไฟโมดูลและวงจร NRF24L01
การเดินสายไฟโมดูลและวงจร NRF24L01
การเดินสายไฟโมดูลและวงจร NRF24L01
การเดินสายไฟโมดูลและวงจร NRF24L01
การเดินสายไฟโมดูลและวงจร NRF24L01
การเดินสายไฟโมดูลและวงจร NRF24L01

ในโครงการนี้ Arduino หนึ่งตัวจะทำหน้าที่เป็นตัวส่งสัญญาณ ส่งข้อมูลระดับแสงจากโฟโตรีซีสเตอร์เมื่อกดปุ่ม Arduino อีกตัวจะทำหน้าที่เป็นตัวรับ นำข้อมูลนั้นไปแปลงเป็นสัญญาณเป็น LED ภาพแรกแสดงไดอะแกรมเครื่องส่ง และภาพที่สองแสดงเครื่องรับ

หมายเหตุ: ในภาพถ่ายของโครงการของฉัน คุณจะสังเกตเห็นว่าตัวรับส่งสัญญาณ NRF24L01 ติดอยู่กับ PCB อื่น นี่คือโมดูลกระเป๋าเป้สะพายหลังสำหรับตัวรับส่งสัญญาณซึ่งทำหน้าที่เป็นตัวควบคุมพลังงาน นอกจากจะทำให้การเดินสายไฟง่ายขึ้นแล้ว กระเป๋าเป้เหล่านี้ยังควบคุมการจ่ายไฟเข้าสำหรับ NRF24L01 ซึ่งช่วยให้สามารถใช้แหล่งจ่ายไฟ 5V ได้ ฉันได้ละเว้นเป้เหล่านี้ในไดอะแกรมของฉันเพื่อความชัดเจน

(หากคุณตัดสินใจใช้เป้สะพายหลัง โปรดดูที่ลิงก์นี้เพื่อดูแผนผังตำแหน่งหมุดอ้างอิงจากสต็อก NRF24L01)

แนบด้านล่างเป็นสำเนา PDF ของวงจร เพื่อการซูม/ดูรายละเอียดที่ง่ายขึ้น

ขั้นตอนที่ 2: การเข้ารหัสเครื่องส่งสัญญาณ

ขั้นตอนสุดท้ายคือการเข้ารหัส คุณจะต้องติดตั้งไลบรารี RadioHead หรือไลบรารีที่เทียบเท่าเพื่อใช้กับโมดูล NRF24L01

สำหรับโครงการนี้ Arduinos ตัวส่งและตัวรับใช้รหัสต่างกันในแต่ละอัน นี่คือรหัสสำหรับเครื่องส่งสัญญาณ:

ฉันได้แนบไฟล์.ino (NRF_Send) เพื่อความสะดวก

#รวม

#รวม

RH_NRF24 nrf24; // กำลังเริ่มต้นตัวรับส่งสัญญาณเป็น nrf24

ปุ่ม int = 5; //การตั้งค่าพินสำหรับปุ่มและโฟโตรีซีสเตอร์

ตัวต้านทาน int = A0; ค่า int = 0; //ค่าแสงตั้งแต่ 0-1023

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); pinMode(ปุ่ม, INPUT); pinMode(ตัวต้านทาน, INPUT); if (!nrf24.init()) //เตือนผู้ใช้ว่าการเริ่มต้นโมดูลล้มเหลว Serial.println("init failed"); // ค่าเริ่มต้นหลังจากเริ่มต้นคือ 2.402 GHz (ช่อง 2), 2Mbps, 0dBm ถ้า (!nrf24.setChannel(1)) Serial.println ("setChannel ล้มเหลว"); ถ้า (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF ล้มเหลว"); }

วงเป็นโมฆะ ()

{ if (digitalRead (button)) {// ส่งข้อความหากกดปุ่ม value = analogRead (pResistor); //อ่านค่าของโฟโตรีซีสเตอร์ (0-1023) uint8_t data = {value}; //ตั้งค่าอาร์เรย์ที่เรียกว่า "data" ที่มีค่าแสง nrf24.send(data, sizeof(data)); //ส่งอาร์เรย์ไปยังผู้รับ nrf24.waitPacketSent(); //รอจนกว่าแพ็กเก็ตจะถูกส่ง Serial.println("Light Value:" +String(value)); //พิมพ์ค่าแสงลงในจอภาพอนุกรม } }

ขั้นตอนที่ 3: การเข้ารหัสตัวรับ

สำหรับผู้รับ รหัสยังใช้ RadioHead Library

#รวม

#รวม

RH_NRF24 nrf24;

int LEDPin = 3;

ค่า int = 0; //ค่าแสงตั้งแต่ 0-1023

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); โหมดพิน (LEDPin, เอาต์พุต); ถ้า (!nrf24.init()) Serial.println("init ล้มเหลว"); // ค่าเริ่มต้นหลังจากเริ่มต้นคือ 2.402 GHz (ช่อง 2), 2Mbps, 0dBm ถ้า (!nrf24.setChannel(1)) Serial.println ("setChannel ล้มเหลว"); ถ้า (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF ล้มเหลว"); }

วงเป็นโมฆะ ()

{ // รอข้อความ uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; //เก็บข้อความที่ได้รับเป็นอาร์เรย์ที่เรียกว่า "buf" uint8_t len = sizeof(buf); //เก็บขนาดของ buf เป็น "len" ในขณะที่ (nrf24.waitAvailableTimeout(200) && nrf24.recv(buf, &len)) //รับข้อความเป็นเวลา 200 มิลลิวินาทีหรือจนกว่าข้อความทั้งหมดจะได้รับ { value = buf[0]; //ตั้งค่าเป็นดัชนีแรกของ buf ซึ่งเป็นค่า int จาก photoresistor analogWrite(LEDPin, map(value, 0, 1023, 0, 255)); //ตั้งค่าพิน PWM เพื่อส่งออกค่ามาตราส่วนระหว่าง 0-255 สำหรับความสว่าง LED Serial.println(String(value)); } analogWrite (LEDPin, 0); }

ขั้นตอนที่ 4: เสร็จสิ้น

สนุกกับการเล่นกับระดับแสงต่างๆ และดูไฟ LED ที่ตรงกัน! โฟโตรีซีสเตอร์อาจมีความละเอียดในบางครั้ง และทำงานได้ดีที่สุดในห้องมืดที่มีแหล่งกำเนิดแสงเฉพาะที่ (แต่สามารถทำงานได้ภายใต้แสงแดดด้วย)

แนะนำ: