สารบัญ:
- ขั้นตอนที่ 1: วัสดุที่ใช้
- ขั้นตอนที่ 2: สคริปต์ MakeCode/JavaScript
- ขั้นตอนที่ 3: การวัด RGB: โหมดแสงที่ส่งผ่าน
- ขั้นตอนที่ 4: แสงสะท้อน RGB และการวัดความสว่าง
- ขั้นตอนที่ 5: การวัดแสงสะท้อน: ดอกไม้
วีดีโอ: การวัดแสงและสีด้วย Pimoroni Enviro:bit สำหรับ Micro:bit: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ฉันเคยทำงานกับอุปกรณ์บางตัวที่อนุญาตให้วัดแสงและสีได้ก่อนหน้านี้ และคุณอาจพบมากเกี่ยวกับทฤษฎีที่อยู่เบื้องหลังการวัดดังกล่าวได้จากคำแนะนำที่นี่และที่นี่
Pimoroni เพิ่งเปิดตัว enviro:bit ซึ่งเป็นส่วนเสริมสำหรับ micro:bit ซึ่งมาพร้อมกับไมโครโฟน MEMS สำหรับการวัดระดับเสียง เซ็นเซอร์อุณหภูมิ/ความชื้น/ความดันอากาศ BME280 และเซ็นเซอร์แสงและสี TCS3475 (RGBC) นอกจากนี้ยังมีไฟ LED สองดวงที่ด้านข้างของเซ็นเซอร์สี ซึ่งช่วยให้วัดสีของวัตถุด้วยแสงสะท้อนได้ การสร้างเครื่องมือด้วยตนเองเพื่อทำการวัดเหล่านี้ง่ายกว่าที่เคย
ฉันอยากจะอธิบายว่า enviro:bit สามารถใช้สำหรับการวัดสีและแสงได้อย่างไร และสคริปต์ MakeCode ที่อนุญาตให้ดำเนินการเหล่านี้ การผสมผสานระหว่าง micro:bit และ enviro:bit เป็นอุปกรณ์ที่ดีและราคาไม่แพงในการแสดงหลักการของการวัดทางวิทยาศาสตร์โดยลงมือปฏิบัติจริงและลองเล่นกับอุปกรณ์เหล่านี้
คำแนะนำนี้เป็นส่วนหนึ่งของการแข่งขัน "สายรุ้ง" ถ้าชอบก็ช่วยโหวตด้วยนะครับ ThanksH
ขั้นตอนที่ 1: วัสดุที่ใช้
Micro:bit, 13 GBP ที่ Pimoroni
Pimoroni Enviro:bit, 20 GBP ที่ Pimoroni
Pimoroni Power:bit, 6 GBP ที่ Piomoroni คุณอาจใช้แบตเตอรี่หรือ LiPo สำหรับ micro:bit
บล็อกตัวอย่างตัวกรองสี Rosco Cinegel ฉันได้ของฉันจาก Modulor เบอร์ลิน
ถ้วยพลาสติกสีอิเกีย อิเกีย, เบอร์ลิน.
ดอกไม้ป่า. ทุ่งหญ้าที่ Potsdam-Golm
ขั้นตอนที่ 2: สคริปต์ MakeCode/JavaScript
Pimoroni ได้พัฒนาไลบรารี่สำหรับ Enviro:bit ทั้งสำหรับสภาพแวดล้อมการเข้ารหัส MakeCode/JavaScript และสำหรับ MicroPython ฉันใช้ MakeCode ที่นี่ เนื่องจากสามารถอัปโหลดสคริปต์ไปยัง micro:bit ได้โดยตรง และอนุญาตให้เข้ารหัสบล็อก
สคริปต์อ่านค่าของช่องสีแดง สีเขียว และสีน้ำเงิน (RGB) และช่องสัญญาณที่ชัดเจน (C) ค่าแรกมีค่าตั้งแต่ 0 ถึง 255 ค่าที่สองในช่วงทั้งหมดตั้งแต่ 0 ถึงประมาณ 61000
ช่วงของช่องสัญญาณที่ชัดเจนนั้นกว้างมากและช่วยให้สามารถวัดได้ตั้งแต่กลางวันสว่างไปจนถึงห้องมืด
ถึงตอนนี้ ฉันไม่เข้าใจรายละเอียดทั้งหมดของฟังก์ชันการวัดสี แต่ฉันคิดว่าพวกมันมีกลไกการแก้ไขและการปรับให้เป็นมาตรฐาน
ในตอนแรกจะใช้ค่าของทั้งสี่ช่อง เพื่อให้สามารถแสดงผลบนเมทริกซ์ LED 5x5 ได้ ค่าที่วัดได้จะถูกใช้เพื่อวางผลลัพธ์ในถังขยะ 5 (RGB) หรือ 10 (C) ที่แสดงด้วย LED หนึ่งดวงในหนึ่งรายการ (R, G, B) หรือ สองแถว (C)
ในกรณีของ RGB มาตราส่วนจะเป็นเส้นตรง และขนาดช่วงของถังแต่ละถังกว้าง 51 หน่วย ในกรณีของ C สเกลจะเป็นลอการิทึมมากกว่า 10 ขั้นตอน (log3 ดังนั้นทุกขั้นตอนจึงเป็น 3 เท่าของขั้นตอนก่อนหน้า) ซึ่งช่วยให้แสดงสภาวะที่สลัวและสว่างมากได้เหมือนกัน
การกดปุ่ม A จะแสดงค่า R, G และ B เป็นตัวเลข โดยกด B ค่า C A+B เปิดใช้งาน LED และ B จะปิดตัวลง
ให้ bR = 0 // ถังขยะ
ให้ bG = 0 ให้ bB = 0 ให้ bS = 0 ให้ bC = 0 ให้ bCx = 0 ให้ S = 0 // ค่าที่วัดได้ ให้ C = 0 ให้ B = 0 ให้ G = 0 ให้ R = 0 basic.forever(() => { if (input.buttonIsPressed (Button. AB)) { envirobit.setLEDs (envirobit. OnOff. On) } else if (input.buttonIsPressed (Button. A)) { basic.showString ("R: " + R + " G: " + G + " B: " + B) } อย่างอื่น if (input.buttonIsPressed (Button. B)) { basic.showString ("C: " + C) envirobit.setLEDs (envirobit. OnOff. Off) } อื่น { basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 ถ้า (R > = 204) { // binning สูงสุด 255 bR = 4 } else if (R >= 153) { bR = 3 } else if (R >= 102) { bR = 2 } else if (R >= 51) { bR = 1 } อื่น ๆ { bR = 0 } if (G >= 204) { bG = 4 } else if (G >= 153) { bG = 3 } else if (G >= 102) { bG = 2 } else if (G >= 51)) { bG = 1 } อื่น { bG = 0 } if (B >= 204) { bB = 4 } else if (B >= 153) { bB = 3 } else if (B >= 102) { bB = 2 } อื่น ๆ ถ้า (B >= 51) { bB = 1 } อื่น ๆ { bB = 0 } ถ้า (C >= 60000) { // ความอิ่มตัว bCx = 4 } else if (C >= 20000) { bCx = 3 } else if (C >= 6600) { bCx = 2 } else if (C >= 2200) { bCx = 1 } else if (C >= 729) { bCx = 0 } else if (C >= 243) { bC = 4 } else if (C >= 81) { bC = 3 } else if (C >= 27) { bC = 2 } else if (C >= 9) { bC = 1 } else { bC = 0 } // เขียนไปที่ led basic.clearScreen() if (bCx < 5) { led.plot (1, bCx) } else { led.plot (0, bC) } led.plot(2, bR) led.plot(3, bG) led.plot(4, bB) } })
ขั้นตอนที่ 3: การวัด RGB: โหมดแสงที่ส่งผ่าน
ตามที่ระบุไว้ก่อนหน้านี้ การวัดสีมีสองโหมด: สเปกโทรสโกปีแบบส่งและแบบสะท้อนแสง ในโหมดแสงที่ส่องผ่าน แสงจะผ่านฟิลเตอร์สีหรือสารละลายไปยังเซ็นเซอร์ ในการวัดแสงสะท้อน จาก LEDs ถูกสะท้อนโดยวัตถุและถูกตรวจจับโดยเซ็นเซอร์
จากนั้น ค่า RGB จะแสดงในแถวที่ 3 ถึง 5 ของเมทริกซ์ LED micro:bit 5x5 โดยที่ LED ด้านบนแสดงค่าต่ำ LED ที่ต่ำกว่าจะเป็นค่าสูง
สำหรับการทดลองที่แสดงไว้ที่นี่เกี่ยวกับการวัดแสงที่ส่องผ่าน ฉันใช้แสงแดดและใส่ฟิลเตอร์สีจากชุดตัวอย่าง Rosco ไว้ด้านหน้าเซ็นเซอร์ คุณสามารถเห็นเอฟเฟกต์บนจอแสดงผลโดยเฉพาะในช่องสีแดง ดูภาพและเปรียบเทียบรูปแบบ
หากต้องการอ่านค่าจริง ให้กดปุ่ม A
ขั้นตอนที่ 4: แสงสะท้อน RGB และการวัดความสว่าง
สำหรับการวัดแสงสะท้อน ฉันเปิดไฟ LED (ปุ่ม [A+B]) และวางถ้วยเด็ก IKEA สีสันสดใสไว้ด้านหน้าเซ็นเซอร์ ดังที่เห็นได้จากรูปภาพ ค่า RGB กำลังเปลี่ยนแปลงตามที่คาดไว้
สำหรับการวัดความสว่าง ค่าต่ำจะแสดงเป็นค่าแรก ค่าสูงในแถวที่สอง ค่าต่ำในด้านบน ค่าที่สูงขึ้นโดย LED ด้านล่าง หากต้องการอ่านค่าที่แม่นยำ ให้กดปุ่ม B
ขั้นตอนที่ 5: การวัดแสงสะท้อน: ดอกไม้
ฉันเลือกดอกไม้ป่าจากทุ่งหญ้าและพยายามวัดสีดอกไม้ ดอกป๊อปปี้ ดอกคอร์นฟลาวเวอร์ แน็ปวีดสีน้ำตาล ฮาร์กวีดติดผนัง และใบไม้ไดแลนเดลอน ค่า RGB คือ [R, G, B]:
- ไม่มี [92, 100, 105]
- ดอกป๊อปปี้ (สีแดง) [208, 98, 99]
- คอร์นฟลาวเวอร์ (สีน้ำเงิน) [93, 96, 138]
- แหนบสีน้ำตาล (ม่วง) [122, 97, 133]
- ฮาร์กวีดผนัง (สีเหลือง) [144, 109, 63]
- ใบแดนดิลอน (สีเขียว) [164, 144, 124]
ซึ่งตรงกับความคาดหวังอย่างน้อยสำหรับสามโรงงานแรก ในการแสดงสีจากค่าต่างๆ คุณอาจใช้เครื่องคำนวณสีเป็นเครื่องคิดเลขที่นี่
แนะนำ:
การใช้ Pimoroni Enviro+ FeatherWing กับ Adafruit Feather NRF52840 Express: 8 ขั้นตอน
การใช้ Pimoroni Enviro+ FeatherWing กับ Adafruit Feather NRF52840 Express: Pimoroni Enviro+ FeatherWing เป็นบอร์ดที่อัดแน่นไปด้วยเซ็นเซอร์ที่ออกแบบมาเพื่อทำงานร่วมกับบอร์ดรุ่น Adafruit Feather เป็นจุดเริ่มต้นที่มีประโยชน์สำหรับทุกคนที่สนใจในการตรวจสอบด้านสิ่งแวดล้อม มลภาวะในชั้นบรรยากาศ และการทำลายข้อมูล ผม
Flipperkonsole สำหรับ PC Flipper / Pinball Console สำหรับ PC Pinballs: 9 ขั้นตอน
Flipperkonsole สำหรับ PC Flipper / Pinball Console สำหรับ PC Pinballs: ใช้งานได้กับ USB พื้นฐาน เกมสำหรับ PC-Flipperkästen Die Spannungsversorgung erfolgt über das USB Kabel. Implementiert sind die beiden Flipper Buttons และ ein Startbutton Zusätzlich ist ein stossen von unten, von links และ von rechts implem
IOT BIT 4G, 3G V1.5 Hat สำหรับ Raspberry Pi: 16 ขั้นตอน (พร้อมรูปภาพ)
IOT BIT 4G, 3G V1.5 Hat สำหรับ Raspberry Pi: IoT Bit ภูมิใจนำเสนอบอร์ดพัฒนา 4G ซึ่งเป็น 4G HAT สำหรับ Raspberry Pi ซึ่งให้ข้อมูลมือถือ 4G สำหรับมินิคอมพิวเตอร์ Raspberry Pi โมดูล HAT อัจฉริยะของเราให้ข้อมูลมือถือ Raspberry Pi ข้อมูลตำแหน่ง GPS
3.3V Mod สำหรับ Ultrasonic Sensors (เตรียม HC-SR04 สำหรับ 3.3V Logic บน ESP32/ESP8266, Particle Photon ฯลฯ): 4 ขั้นตอน
3.3V Mod สำหรับ Ultrasonic Sensors (เตรียม HC-SR04 สำหรับ 3.3V Logic บน ESP32/ESP8266, Particle Photon, ฯลฯ.): TL;DR: บนเซนเซอร์ ตัดร่องรอยไปที่ Echo pin จากนั้นเชื่อมต่อใหม่โดยใช้ a ตัวแบ่งแรงดันไฟฟ้า (Echo trace -> 2.7kΩ -> Echo pin -> 4.7kΩ -> GND) แก้ไข: มีการถกเถียงกันว่า ESP8266 นั้นทนทานต่อ GPIO 5V จริงหรือไม่ใน
ตัวเครื่องชั่ง Bell Jetranger สำหรับ Silverlit PicooZ Micro-RC-Helicopter: 4 ขั้นตอน
Bell Jetranger Scale Body สำหรับ Silverlit PicooZ Micro-RC-Helicopter: แปลง PicooZ ที่ดูน่าเล่นของคุณให้เป็นขนาด Bell 206 Jetranger หรือเฮลิคอปเตอร์โรเตอร์เดี่ยวอื่น ๆ เกือบทุกชนิด ฉันซื้อเฮลิ 3 ช่องให้ตัวเองเพื่อให้พร้อมสำหรับการทดลอง หากคุณต้องการสร้างเปลือกร่างกายที่ไม่ซ้ำใครสำหรับ PicooZ ของคุณ