สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: สร้างวงจรของคุณ:
- ขั้นตอนที่ 2: การเขียนโปรแกรม Arduino ของคุณ:
- ขั้นตอนที่ 3: การเขียนโปรแกรม Python เพื่อสร้างกราฟข้อมูลจาก Arduino:
- ขั้นตอนที่ 4: โปรแกรมสุดท้ายเพื่อตรวจสอบความเข้มของแสงในห้อง
- ขั้นตอนที่ 5: ผลลัพธ์:
วีดีโอ: การทำพล็อตความเข้มของแสงโดยใช้ Arduino และ Arduino Master Library ของ Python: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
Arduino เป็นเครื่องมือที่ประหยัดแต่มีประสิทธิภาพสูงและใช้งานได้จริง การเขียนโปรแกรมใน Embedded C ทำให้กระบวนการทำโปรเจ็กต์น่าเบื่อหน่าย! โมดูล Arduino_Master ของ Python ทำให้สิ่งนี้ง่ายขึ้น และช่วยให้เราทำการคำนวณ ลบค่าขยะ และพล็อตกราฟสำหรับการแสดงข้อมูลด้วยภาพ
หากคุณยังไม่รู้เกี่ยวกับโมดูลนี้ ให้ติดตั้งโดยใช้คำสั่ง pip install Arduino_Master
ไม่ต้องกังวลหากคุณไม่ทราบวิธีใช้โมดูลนี้ โปรดไปที่ลิงก์นี้ => Arduino_Master
อย่างไรก็ตาม รหัสสำหรับโครงการนี้จะอยู่ในคำแนะนำนี้เสมอ
เสบียง
สำหรับโครงการนี้ คุณจะต้องมีสิ่งต่อไปนี้:
- Arduino
- ตัวต้านทานแบบพึ่งพาแสง (LDR) และ
- Python 3 ติดตั้งบนคอมพิวเตอร์ของคุณ
ขั้นตอนที่ 1: สร้างวงจรของคุณ:
เราจะใช้พิน A1 ของ Arduino เพื่อรับข้อมูลอินพุต คุณสามารถใช้พิน 5V และ GND ของ Arduino แทนแบตเตอรี่ได้ ทำการเชื่อมต่อดังนี้:
- เชื่อมต่อปลายด้านหนึ่งของ LDR เข้ากับขั้วบวกของแบตเตอรี่ 5V หรือขา 5V ของ Arduino
- เชื่อมต่อปลายอีกด้านของ LDR ขนานกับพิน A1 และขั้วลบของแบตเตอรี่หรือพิน GND ของ Arduino
- ใช้ตัวต้านทานเพื่อให้แน่ใจว่ากระแสทั้งหมดไม่ไหลไปยัง GND ซึ่งจะส่งผลให้คุณไม่ได้รับสัญญาณที่แรงพอที่จะสัมผัสที่ขั้ว A1 ของ Arduino (กำลังใช้ตัวต้านทาน 10k โอห์ม)
ขั้นตอนที่ 2: การเขียนโปรแกรม Arduino ของคุณ:
โมดูล Arduino_Master ใช้ Serial Monitor ของ Arduino เพื่อส่งและรับข้อมูล ข้อดีของการใช้โมดูลนี้คือ เมื่อคุณตั้งโปรแกรม Arduino ของคุณแล้ว คุณสามารถเปลี่ยนโปรแกรม python เพียงอย่างเดียวสำหรับโครงการต่างๆ ได้ เนื่องจากการเขียนโปรแกรมใน python นั้นค่อนข้างง่ายกว่า!
รหัส:
// ตัวแปร LDR_1 ใช้เพื่อระบุพิน A1 ของ Arduino
int LDR_1 = A1;
// ข้อมูลที่ได้รับจาก A1 จะถูกเก็บไว้ใน LDR_Value_1
ลอย LDR_Value_1;
อินพุตสตริง;
การตั้งค่าเป็นโมฆะ ()
{ โหมดพิน (LDR_1, อินพุต); // LDR_1 ถูกตั้งค่าเป็นพิน INPUT Serial.begin(9600); // Communication baudrate ตั้งไว้ที่ 9600 }
วงเป็นโมฆะ ()
{ if(Serial.available()>0) // หากมีอินพุตใดในมอนิเตอร์ซีเรียล ให้ดำเนินการต่อ { อินพุต = Serial.readString (); // อ่านอินพุตเป็นสตริง if(input=="DATA") { LDR_Value_1=analogRead(LDR_1) * (5.0 / 1023.0); // (5 / 1023) เป็นปัจจัยการแปลงเพื่อให้ได้มูลค่าเป็นโวลต์ Serial.println(LDR_Value_1); // หากอินพุตเท่ากับ "DATA" ให้อ่านอินพุตจาก LDR_1 แล้วพิมพ์บน Serial Monitor } อื่น ๆ int i=0; // ถ้าอินพุตไม่เท่ากับ "DATA" ไม่ต้องทำอะไร ! }
}
ขั้นตอนที่ 3: การเขียนโปรแกรม Python เพื่อสร้างกราฟข้อมูลจาก Arduino:
LDR แต่ละตัวและทุกตัวจะมีค่าความต้านทานของมันเอง และเราต้องจำไว้ว่าไม่มีส่วนประกอบอิเล็กทรอนิกส์ใดที่ทำงานเหมือนกันทุกประการ ดังนั้นก่อนอื่นเราต้องหาแรงดันไฟฟ้าที่ความเข้มแสงต่างกัน
อัปโหลดโปรแกรมต่อไปนี้ไปยัง python IDE ของคุณและเรียกใช้:
ทำเช่นนี้สำหรับความเข้มของแสงต่างๆ และใช้กราฟสรุป เช่น ถ้าความเข้มน้อยกว่า 1 ห้องมืดเกินไป สำหรับความเข้มระหว่าง 1 ถึง 2 ห้องจะมืดมาก สำหรับความเข้มที่มากกว่า 2 ไฟจะเปิดขึ้น
# การนำเข้าโมดูล Arduino_Master
จากการนำเข้า Arduino_Master *
#กำลังรวบรวมข้อมูล
data=filter(ardata(8, squeeze=False, dynamic=True, msg="DATA", lines=30), expect_type='num', limit=[0, 5])
# จำกัด ตั้งไว้ที่ 5 เนื่องจากเราใช้แบตเตอรี่ 5V
#พล็อตค่า
กราฟ (data, stl='dark_background', label='Light Intensity')
ขั้นตอนที่ 4: โปรแกรมสุดท้ายเพื่อตรวจสอบความเข้มของแสงในห้อง
หลังจากที่ได้ข้อสรุปจากข้อมูลที่คุณได้รับแล้ว ให้อัปโหลดโปรแกรมต่อไปนี้และตรวจดูให้แน่ใจว่าได้เปลี่ยนขีดจำกัดตามข้อสรุปของคุณ
# การนำเข้าโมดูล Arduino_Master
จากการนำเข้า Arduino_Master # การรวบรวมข้อมูล data=filter(ardata(8, squeeze=False, dynamic=True, msg="DATA", lines=50), expect_type='num', limit=[0, 5]) #การจัดประเภทข้อมูล ขึ้นอยู่กับข้อมูลสรุป = สำหรับฉันในช่วง (len (ข้อมูล)): ความเข้ม = ข้อมูล ถ้าความเข้ม 1 และความเข้ม = 2: info.append ('Light ON') # การพล็อตกราฟ compGraph(ข้อมูล, ข้อมูล, stl='dark_background', label1='Light Intensity', label2='State')
ขั้นตอนที่ 5: ผลลัพธ์:
โปรแกรมจะใช้เวลาหนึ่งหรือสองนาทีในการทำงาน เนื่องจากคุณกำลังอ่านค่า 50 ค่าทันทีจาก Arduino
หากคุณต้องการเร่งกระบวนการให้ลองเปลี่ยนพารามิเตอร์ lines ของฟังก์ชัน ardata แต่จำไว้ว่ายิ่งการสังเกตน้อยเท่าไร คุณภาพของข้อมูลก็จะยิ่งน้อยลงเท่านั้น
หมายเหตุ: หากมองไม่เห็นกราฟทั้งหมดในรูปด้านบน ให้ดูกราฟด้านบนส่วนบทนำ
แนะนำ:
วิธีใช้ GPIO Pins ของ Raspberry Pi และ Avrdude เป็น Bit-bang-program DIMP 2 หรือ DA PIMP 2: 9 ขั้นตอน
วิธีใช้ GPIO Pins ของ Raspberry Pi และ Avrdude to Bit-bang-program DIMP 2 หรือ DA PIMP 2: นี่เป็นคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีใช้ Raspberry Pi และคำสั่งโอเพ่นซอร์สฟรี avrdude เป็น bit-bang - โปรแกรม DIMP 2 หรือ DA PIMP 2 ฉันคิดว่าคุณคุ้นเคยกับ Raspberry Pi และบรรทัดคำสั่ง LINUX คุณไม่จำเป็นต้อง
บาซิลิสคัส "α" Basilisk ของ Mandalorian พร้อมฮาร์ดแวร์ Raspberry Pi และ Raspbian OS: 19 ขั้นตอน
บาซิลิสคัส "α" Basilisk W/ Raspberry Pi Hardware และ Raspbian OS ของ Mandalorian: โครงการนี้เป็นเรื่องเกี่ยวกับอุปกรณ์ที่คุณสามารถใช้เป็นคอมพิวเตอร์ได้ทุกที่ทุกเวลา จุดประสงค์หลักของมันคือเพื่อให้คุณเขียนโค้ดของคุณหากคุณกำลังเขียนโปรแกรมหรือกำลังเรียนรู้ นอกจากนี้ หากคุณเป็นนักเขียนหรือชอบเขียนเรื่องราว แม้ว่า
การควบคุม LED หลายดวงด้วย Python และ GPIO Pins ของ Raspberry Pi: 4 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมไฟ LED หลายดวงด้วย Python และพิน GPIO ของ Raspberry Pi: คำแนะนำนี้สาธิตวิธีควบคุมพิน GPIO หลายอันบน RaspberryPi ของคุณเพื่อจ่ายไฟ 4 LEDs นอกจากนี้ยังจะแนะนำคุณเกี่ยวกับพารามิเตอร์และคำสั่งเงื่อนไขใน Python คำสั่งก่อนหน้าของเราโดยใช้ GPIO Pins ของ Raspberry Pi เพื่อต่อ
สร้างอุปกรณ์เซ็นเซอร์อุณหภูมิ HomeKit ของ Apple โดยใช้ ESP8266 และ BME280: 10 ขั้นตอน
สร้างอุปกรณ์เซ็นเซอร์อุณหภูมิ HomeKit ของ Apple โดยใช้ ESP8266 และ BME280: ในคำแนะนำของวันนี้ เราจะสร้างเซ็นเซอร์อุณหภูมิ ความชื้น และความชื้นต้นทุนต่ำโดยอิงจากเซ็นเซอร์อุณหภูมิ/ความชื้น AOSONG AM2302/DHT22 หรือ BME280, เซ็นเซอร์ความชื้น YL-69 และแพลตฟอร์ม ESP8266/Nodemcu และสำหรับการแสดง
IoT Hydroponics - การใช้ Watson ของ IBM สำหรับการวัดค่า PH และ EC: 7 ขั้นตอน (พร้อมรูปภาพ)
IoT Hydroponics - การใช้ Watson ของ IBM สำหรับการวัด PH และ EC: คำแนะนำนี้จะแสดงวิธีการตรวจสอบ EC, pH และอุณหภูมิของการตั้งค่าไฮโดรโปนิกส์และอัปโหลดข้อมูลไปยังบริการ Watson ของ IBM วัตสันมีอิสระที่จะเริ่มต้น มีแผนชำระเงิน แต่แผนฟรีมีมากเกินพอสำหรับโครงการนี้