สารบัญ:

สร้างโมดูลความสว่างด้วย AtHome: 7 ขั้นตอน
สร้างโมดูลความสว่างด้วย AtHome: 7 ขั้นตอน

วีดีโอ: สร้างโมดูลความสว่างด้วย AtHome: 7 ขั้นตอน

วีดีโอ: สร้างโมดูลความสว่างด้วย AtHome: 7 ขั้นตอน
วีดีโอ: LDR คืออะไร? LDR ทํางานยังไง? (Light Dependent Resistor) เซนเซอร์แสง ใช่หรือไม่ 2024, พฤศจิกายน
Anonim
สร้างโมดูลความสว่างด้วย AtHome
สร้างโมดูลความสว่างด้วย AtHome

AtHome เป็นโปรเจ็กต์สำหรับนักเรียนแบบโอเพนซอร์ซและโอเพ่นฮาร์ดแวร์ที่สมบูรณ์ซึ่งสร้างโดยกลุ่ม AtHome จาก Epitech โดยมีเป้าหมายเพื่อพัฒนาโซลูชันที่เชื่อมต่อกันของโมดูลเซ็นเซอร์แต่ละตัวที่สื่อสารกับฐานข้อมูลที่โฮสต์เองซึ่งเปิดเผย API ที่ใช้เพื่อป้อนแอปพลิเคชันสมาร์ทโฟนและเว็บแอปพลิเคชัน โมดูลจะตรวจสอบสภาพแวดล้อมในร่มของบ้านและสามารถให้การตอบรับด้วยภาพแก่ผู้ใช้ เปลี่ยนจากสีเขียว (ดี) เป็นสีแดง (แย่) และผู้ใช้สามารถมองเห็นข้อมูลที่ส่งผ่านการสื่อสารแบบอนุกรมของโมดูลหรือบน แอปพลิเคชันของเราหากคุณใช้งาน

แม้ว่าโครงการนี้ยังอยู่ระหว่างการพัฒนาอย่างแข็งขัน แต่ฟังก์ชันพื้นฐานของโมดูลของเราก็พร้อมแล้วและน่าจะใช้งานง่ายในการพัฒนาโมดูลที่กำหนดเอง นั่นเป็นเหตุผลที่ฉันเสนอให้คุณดูวิธีสร้างโมดูลอย่างง่ายของคุณเองด้วยตัวอย่างโมดูลความส่องสว่างนี้

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

ใช่ ไม่ใช่เรื่องใหม่ มีโครงการเซ็นเซอร์มากมาย แต่เราหวังว่าฟีเจอร์อื่นๆ เช่น การตรวจจับปัญหาสุขภาพ การสื่อสารและการจัดเก็บข้อมูลบนเซิร์ฟเวอร์ที่โฮสต์เองและแอปพลิเคชันการแสดงภาพจะช่วยคุณได้ หรือถ้าอยากเฝ้าบ้าน โครงการง่ายๆ หรือน่าสนใจไม่น้อย:)

ขั้นตอนที่ 1: รวบรวมส่วนประกอบ

รวบรวมส่วนประกอบ
รวบรวมส่วนประกอบ

สำหรับโครงการนี้ คุณจะต้องมีส่วนประกอบสองสามอย่างเพื่อสร้างโมดูล AtHome ของคุณ:

  • 1x บอร์ดที่เข้ากันได้กับ Arduino: ที่นี่ฉันจะใช้ Arduino UNO (แต่มันยังใช้งานได้กับบอร์ดอื่นๆ เช่น TI Launchpads และบอร์ด ESP8266)
  • เซ็นเซอร์ 1x: ฉันจะใช้เซ็นเซอร์ความส่องสว่าง TSL2561 (รายการเซ็นเซอร์ที่รองรับมีอยู่ในเอกสารประกอบของห้องสมุดของเรา)
  • 1x led: ฉันจะใช้ Grove Chainable RGB LED ที่นี่ (แต่อาจเป็นไฟ LED สีแดงธรรมดาหรือ NeoPixel ก็ได้)
  • สายดูปองท์

รายการส่วนประกอบที่เข้ากันได้มีอยู่ในเอกสารประกอบของโครงการของเรา

ขั้นตอนที่ 2: ติดตั้งห้องสมุดของเรา

การติดตั้งห้องสมุดของเรา
การติดตั้งห้องสมุดของเรา
การติดตั้งห้องสมุดของเรา
การติดตั้งห้องสมุดของเรา

ในการติดตั้งไลบรารี่ของเรา คุณจะต้องดาวน์โหลดจากที่เก็บของเรา (เราจะเผยแพร่ในภายหลังในรายการ Arduino IDE และ PlatformIO) ด้วยลิงก์นี้:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

จากนั้นไปที่ Arduino IDE แล้วเลือก "Sketch > Include Library > Add. ZIP Library…" จากนั้นเลือกไฟล์ zip ชื่อ "artifacts.zip" แล้วคลิก "ตกลง"

ขั้นตอนที่ 3: การติดตั้งไลบรารีที่จำเป็น

การติดตั้งไลบรารีที่จำเป็น
การติดตั้งไลบรารีที่จำเป็น
การติดตั้งไลบรารีที่จำเป็น
การติดตั้งไลบรารีที่จำเป็น
การติดตั้งไลบรารีที่จำเป็น
การติดตั้งไลบรารีที่จำเป็น

ในการทำงาน ห้องสมุดของเราต้องติดตั้งห้องสมุดอื่นในคอมพิวเตอร์ของคุณ:

  • ห้องสมุด Arkhipenko TaskScheduler
  • ห้องสมุดเซนเซอร์วัดแสงดิจิตอล SEED Studio Grove
  • SEEED Studio Grove ไลบรารี RGB LED ที่เชื่อมต่อได้
  • ห้องสมุด Adafruit NeoPixel

คุณสามารถติดตั้งผ่านตัวจัดการไลบรารีของ Arduino IDE โดยไปที่ "Sketch" > "รวมไลบรารี" > "จัดการไลบรารี…"

ในหน้าต่างใหม่ที่เปิดขึ้น ให้เขียนชื่อไลบรารีที่คุณต้องการติดตั้งในแถบค้นหาสีขาว จากนั้นคลิกที่บล็อก ปุ่ม "ติดตั้ง" จะปรากฏขึ้น คุณเพียงแค่คลิกที่มัน จากนั้น IDE จะดาวน์โหลดและติดตั้งให้คุณ

ขั้นตอนที่ 4: การประกอบโมดูล

การประกอบโมดูล
การประกอบโมดูล

เราจะเริ่มต้นด้วยเซ็นเซอร์ เชื่อมต่อผ่านสายพิน VCC ของ TSL2561 กับพิน 5V ของ Arduino, พิน GND ของเซ็นเซอร์กับหนึ่งในพิน GND ของ Arduino และพิน SDA และ SCL ของเซ็นเซอร์กับพิน SDA และ SCL ของ Arduino. ตอนนี้คุณทำเสร็จแล้ว!

ตอนนี้เชื่อมต่อพิน VCC ของ Grove Chainable RGB LED กับพิน 5V ของ Arduino และพิน GND ของ LED กับ GND ที่สองของ Arduino หากคุณเป็น Arduino เป็นขา 5V เพียงพินเดียว คุณสามารถใช้เขียงหั่นขนมเพื่อเชื่อมต่อ 5v ของ Arduino กับแถว + ของเขียงหั่นขนมและเชื่อมต่อส่วนประกอบทั้งหมดของคุณกับหมุด 5V หรือบัดกรีเข้าด้วยกันบนแผ่นแถบหรือ ใช้ขั้วต่อ wago หรืออะไรก็ได้ที่คุณต้องการ ตอนนี้เชื่อมต่อพิน CI ของ LED ของคุณกับพิน 7 ของ Arduino และพิน DI ของ LED ของคุณกับพิน 8 ของ Arduino ของคุณ หากคุณไม่มี LED แบบนี้ ไม่ต้องกังวล คุณสามารถใช้ LED ในตัวของบอร์ด Arduino ของคุณหรือ LED แบบคลาสสิกโดยมีการเปลี่ยนแปลงโค้ดเพียงเล็กน้อย

ขั้นตอนที่ 5: การเขียนร่างโมดูลความสว่าง

การเขียนร่างโมดูลความสว่าง
การเขียนร่างโมดูลความสว่าง

มาสร้างร่างใหม่และเขียนโค้ดสำหรับโมดูลของเรากัน

หากคุณไม่สนใจคำอธิบายของภาพสเก็ตช์ คุณสามารถคัดลอกและวางลงใน Arduino IDE ของคุณ:

#รวม

ใช้ LightModule = AtHomeModule; สตรีม *สตรีม = {&Serial, nullptr}; GroveChainableLED::หมุด grovePins = {7, 8}; GroveChainableLED led (& grovePins); LightModule *โมดูล = LightModule::getInstance(); การตั้งค่าเป็นโมฆะ () { // ใส่รหัสการตั้งค่าของคุณที่นี่เพื่อเรียกใช้ครั้งเดียว: Serial.begin (9600); โมดูล -> setStreams (สตรีม); GroveDigitalLightSensor * lightSensor = ใหม่ GroveDigitalLightSensor(); โมดูล -> setSensor (lightSensor); โมดูล -> setDisplay (&นำ); โมดูล -> การตั้งค่า (); } void loop() { // ใส่รหัสหลักของคุณที่นี่ เพื่อเรียกใช้ซ้ำ: module->run(); }

หากคุณต้องการเข้าใจทั้งหมดว่าโค้ดนี้ทำอะไร คุณสามารถอ่านข้อมูลต่อไปนี้ หรือหากคุณไม่สนใจ คุณสามารถข้ามไปยังขั้นตอนถัดไปได้โดยตรง

ในการเริ่มต้น เราต้องรวมห้องสมุดของเราไว้ในภาพร่างของเราโดยเขียนบรรทัดนี้ไว้ที่ด้านบนของภาพร่าง:

#รวม

ตอนนี้ เราต้องสร้างนามแฝงให้กับอ็อบเจ็กต์โมดูลที่เราจะใช้ คุณสามารถเห็นมันเป็นกล่องที่มีปุ่มหลายปุ่มที่ใช้เปลี่ยนส่วนประกอบ เริ่มการทำงาน หยุดการทำงาน …ฯลฯ เนื่องจากเป็นกล่องที่สร้างโดยเทมเพลต (เช่นเทมเพลตปกติที่เราใช้สำหรับโครงการในฐานะมนุษย์ มันมีฐานเริ่มต้นและคอมไพเลอร์ของ Arduino สร้างโค้ดสุดท้ายตามพารามิเตอร์ที่เราให้ไว้กับเขา) กำหนดประเภทที่แสดงค่าเซ็นเซอร์และ จำนวนค่าเซ็นเซอร์ที่เราต้องการเก็บไว้ในหน่วยความจำซึ่งระบุไว้ในชื่อและปกติควรทำซ้ำทุกครั้งที่ต้องการใช้ ซึ่งค่อนข้างน่ารำคาญ เราจึงเชื่อมโยงชื่อใหม่ นามแฝง เข้ากับชื่อเต็มของช่องนี้

ตัวอย่างเช่น ฉันต้องการตั้งชื่อกล่องนี้ว่า "LightModule" เนื่องจากจะใช้เพื่อติดตั้งโมดูลการตรวจสอบความส่องสว่าง และฉันต้องการเก็บค่าครั้งละ 1 ค่าเท่านั้น ความส่องสว่างจะแสดงเป็นลักซ์เป็นประเภทอินทิกรัลโดยเซ็นเซอร์ TSL2561 ของเรา ซึ่งคอมพิวเตอร์แสดงเป็น uint16_t นามแฝงของเราจะมีลักษณะดังนี้:

ใช้ LightModule = AtHomeModule;

คีย์เวิร์ด "using" หมายความว่าเรากำลังสร้างนามแฝง และชื่อที่เราตั้งให้หลังจากนี้สอดคล้องกับลำดับหลังอักขระ "="

"AtHomeModule" เป็นชื่อจริงของกล่องนี้ เรากำลังตั้งชื่อใหม่ และพารามิเตอร์ที่กำหนดการแสดงค่าและจำนวนค่าที่เก็บไว้ในหน่วยความจำจะแสดงอยู่ระหว่าง ""

ตอนนี้ เมื่อเราจะใช้ชื่อ "AtHomeModule" ในภายหลัง Arduino จะรู้ว่ามันหมายถึงชื่อเต็ม "AtHomeModule"

หากคุณต้องการให้กล่องของคุณสามารถเก็บค่า 5 ค่าในหน่วยความจำแทนที่จะเป็น 1 คุณเพียงแค่แทนที่ "1" ด้วย "5" แล้ว Arduino จะสร้างกล่องประเภทอื่นให้คุณทำสิ่งที่คุณต้องการได้ อย่างไรก็ตาม โปรดทราบว่าหากโมดูลได้รับการตั้งโปรแกรมให้ส่งค่าก่อนที่จะมีเวลาในการวัดค่าของเซ็นเซอร์ 5 ค่าอย่างมีประสิทธิภาพ คุณจะไม่เห็นค่า 5 รายการถูกส่งออกไป เนื่องจากจะส่งเฉพาะค่าใหม่นับตั้งแต่การอัปโหลดครั้งล่าสุด

ต่อไป เราต้องสร้างอาร์เรย์ของพอยน์เตอร์ที่มีพอยน์เตอร์บนสตรีม Arduino ที่ใช้โดยโมดูลเพื่อสื่อสาร ซึ่งจะถูกยุติโดยคีย์เวิร์ก "nullptr" เสมอ ที่นี่ ฉันใช้เฉพาะสตรีม "อนุกรม" ของ Arduino ซึ่งสื่อสารกับคอมพิวเตอร์ผ่านพอร์ต USB ดังนั้นอาร์เรย์จึงมีลักษณะดังนี้:

สตรีม *สตรีม = {&Serial, nullptr};

อักขระ "*" หมายถึงประเภทเป็นตัวชี้ (ตำแหน่งขององค์ประกอบ ไม่ใช่ตัวองค์ประกอบเอง) และเครื่องหมายวงเล็บ "" หมายถึงใน Arduino ว่าเป็นอาร์เรย์ ดังนั้นเราสามารถใส่ค่าได้หลายค่า

ต่อไปเราต้องสร้าง LED ของเรา เมื่อต้องการทำเช่นนี้ เราต้องเขียนสองบรรทัดต่อไปนี้

GroveChainableLED::หมุด grovePins = {7, 8};

GroveChainableLED led (& grovePins);

หากคุณไม่มี Grove RGB LED แต่ยังต้องการการตอบกลับด้วยภาพ คุณสามารถทำได้ด้วยการเปลี่ยนแปลงง่ายๆ ในสเก็ตช์ แทนที่สองบรรทัดก่อนหน้าด้วยบรรทัดนี้:

ไฟ LED สีเดียว (LED_BUILTIN);

ในการกำหนดค่านี้ LED สีเขียวในตัวจะเปิดขึ้นตราบเท่าที่ค่าที่ตรวจสอบนั้นใช้ได้เพื่อสุขภาพและดับลงเมื่อไม่มีการเชื่อมต่อ หากคุณต้องการให้เปิดเครื่องเมื่อแบตเตอรี่หมด (เพราะคุณใช้เช่น LED สีแดงแทนที่จะเป็นสีเขียวที่ขา 13) คุณสามารถใช้บรรทัดนี้แทนได้:

MonochromaticLED led (LED_BUILTIN จริง);

ขั้นตอนต่อไปคือการสร้างโมดูลของเราเอง เสร็จสิ้นในครั้งแรกที่เราได้รับตำแหน่งในหน่วยความจำโดยเรียกใช้เมธอด "getInstance" เช่นนี้

LightModule *โมดูล = LightModule::getInstance();

จากนั้น เราต้องตั้งค่าพารามิเตอร์ในฟังก์ชัน "setup()" ของ Arduino เริ่มต้นด้วยการเริ่มต้นพอร์ต "Serial" ตามปกติใน Arduino Sketches:

Serial.begin(9600);

เราสร้างเซ็นเซอร์วัดแสงโดยเขียนบรรทัดนี้:

GroveDigitalLightSensor * lightSensor = ใหม่ GroveDigitalLightSensor();

จากนั้น เราบอกให้โมดูลของเราใช้อาร์เรย์ของพอยน์เตอร์บน Arduino Stream เพื่อสื่อสารผ่านพวกมัน:

โมดูล -> setStreams (สตรีม);

นอกจากนี้เรายังบอกให้โมดูลของเราใช้เซ็นเซอร์วัดแสงเพื่อตรวจสอบความเข้มของแสงที่โมดูลอยู่:

โมดูล -> setSensor (lightSensor);

เราบอกให้โมดูลของเราใช้ LED เพื่อให้ข้อเสนอแนะด้วยภาพ:

โมดูล -> setDisplay (&นำ);

สุดท้าย เราบอกโมดูลของเราว่าพร้อมที่จะทำการกำหนดค่าภายในที่ต้องทำโดยเรียกใช้ฟังก์ชัน "ตั้งค่า" ของตัวเอง:

โมดูล -> การตั้งค่า ();

ขั้นตอนสุดท้ายของเราคือเรียกใช้ฟังก์ชัน "run()" ของโมดูลของเรา ซึ่งออกแบบมาเพื่อให้เรียกใช้ในการทำซ้ำฟังก์ชัน "loop" ของ Arduino แต่ละครั้งโดยเขียนบรรทัดนี้ในฟังก์ชัน "loop":

โมดูล -> รัน ();

ในที่สุด ร่างของเราก็พร้อมที่จะอัปโหลดไปยัง Arduino และทดสอบโมดูลของเราแล้ว!

ขั้นตอนที่ 6: การทดสอบโมดูล AtHome ของเรา

การทดสอบโมดูล AtHome ของเรา
การทดสอบโมดูล AtHome ของเรา
การทดสอบโมดูล AtHome ของเรา
การทดสอบโมดูล AtHome ของเรา

ในการอัปโหลดภาพสเก็ตช์ไปยัง Arduino ให้เลือกบอร์ด Arduino UNO ของคุณโดยไปที่ "เครื่องมือ" > "พอร์ต" > "[COMx หรือ /dev/x] (Arduino/Genuino UNO)"

สิ่งสุดท้าย เพียงคลิกที่ปุ่ม "อัปโหลด" (ปุ่มวงกลมที่มีลูกศรชี้ไปทางขวา ไอคอนที่สองของแถบเครื่องมือ) เพื่ออัปโหลดภาพร่างในบอร์ดของคุณ

มันจบแล้ว! ตอนนี้โมดูลของคุณควรจะทำงานและส่งค่าไปยังคอมพิวเตอร์ของคุณที่มองเห็นได้ใน Serial Monitor ของ Arduino คุณสามารถตรวจสอบได้โดยเปิด "Serial Monitor" ของ Arduino ในเมนู "เครื่องมือ" และคุณควรมีเอาต์พุตที่ดูเหมือนรูปภาพชื่อที่สองของขั้นตอนนี้:)

ขั้นตอนที่ 7: การสร้างเคสสำหรับโมดูล

การสร้างเคสสำหรับโมดูล
การสร้างเคสสำหรับโมดูล

คุณสามารถสร้างกล่องแบบเรียบง่ายสำหรับโมดูลของคุณได้โดยการตัดด้วยเลเซอร์ในแผ่นไม้อัด 3 มม.

ในการทำกล่องของเรา เราใช้ makercase เพื่อเตรียมเทมเพลตในขนาดที่ต้องการซึ่งเราปรับแต่งในภายหลัง คุณจะพบไฟล์ svg ของโมดูล luminosity ที่แนบมากับขั้นตอนนี้

จากนั้นเพียงแค่ทากาวที่ใบหน้าเข้าด้วยกัน ยกเว้นอันหนึ่งเพื่อให้คุณสามารถเปิดได้ในภายหลัง ใส่วงจรของคุณเข้าไปข้างในแล้วติด LED ลงในรูของเคส (เราใช้เทปใสเพื่อเติมรูและกระจายแสงนอกเหนือจากการติด LED ที่ด้านหน้า ของมัน)

ตอนนี้เพียงเพิ่มแบตเตอรี่เพื่อจ่ายไฟให้กับ Arduino ปิดเคสและโมดูลของคุณก็พร้อมและน่าจะดูดี:)

แนะนำ: