DIY เคส Raspberry Pi ด้วย Stripboard/Veroboard (ตอนที่ 2)

ก่อนหน้านี้ฉันได้เขียนบทความหัวข้อ DIY เคส Raspberry Pi ด้วย Stripboard/Perfboard (ตอนที่ 1) ซึ่งฉันอธิบายวิธีที่ฉันสร้างกล่องหุ้มโมดูลาร์ที่ทำจาก แผ่นปริ้น PCB (stripboard/perfboard) หรือแนวคิดโดยรวม ตอนนี้ฉันได้ออกแบบสองด้านที่ “smart” สำหรับโครงตู้: ด้านสตริปบอร์ด LED 16 ดวง และด้านสตริปบอร์ดรีเลย์ 5V วันนี้ฉันจะอธิบายรายละเอียดว่าฉันทำสิ่งนี้ได้อย่างไร โดยมีรายละเอียดเกี่ยวกับอุปกรณ์อิเล็กทรอนิกส์, การบัดกรี, การประกอบ, การแจกจ่าย Linux (สร้างด้วย Yocto) รวมถึงโปรแกรม C, เพจ HTML และเชลล์สคริปต์ (CGI) ที่ใช้เพื่อทำให้ LED 16 ดวงและควบคุมหลอดไฟ 220V มาตรฐานพร้อมรีเลย์ผ่านเว็บเบราว์เซอร์ของโทรศัพท์ของฉัน

แผนผังด้านสตริปบอร์ด ไฟLED 16 ดวง, การบัดกรีและการทดสอบ

ฉันได้ตัดสินใจออกแบบแผงด้านบนของกล่องหุ้มด้วย LED หลายดวง, LED 3 ดวงที่ด้านข้าง และผลราสเบอร์รี่ (LED สีแดง 6 ดวง) และใบไม้ 2 ดวง (LED สีเขียว 4 ดวง) ก่อนเริ่มต้น ฉันได้ทดลองบนเบรดบอร์ด และค้นพบอย่างรวดเร็วว่า LED 5Vไม่สามารถวางเป็นอนุกรมได้ ( LED 2 ดวง 10V, LED 6 ดวง 30V และอื่นๆ) ดังนั้นฉันจึงต้องเชื่อมต่อพวกมันแบบขนาน กับตัวต้านทาน (resistor) แต่ละตัว แผนแรกของฉันคือการใช้ LED 11 ดวงในซีรีย์สำหรับ Raspberry เท่านั้น ซึ่งฉันลดขนาดลงเป็น LED 6 ดวง แบบคู่ขนานกันเนื่องจากไม่มีที่ว่าง

ในที่สุดฉันก็ไปกับแผนผังด้านล่าง ซึ่งวาดขึ้นเพื่อจุดประสงค์ในการโพสต์บล็อกนี้ด้วย Kicad ใน Ubuntu

Raspberry_Pi_Stripboard_LED_Schematics_Large
แผนผัง LED Stripboard Enclosure

เนื่องจาก LED เป็น 5V และ Raspberry Pi GPIO เอาต์พุต 3.3V คุณจึงต้องมีทรานซิสเตอร์เพื่อจัดการกับความแตกต่างของแรงดันไฟฟ้า ตัวต้านทานฐานทรานซิสเตอร์คือการจำกัด กระแส GPIO (ตัวต้านทาน 33k Ohm ใช้งานได้สำหรับฉัน) และฉันเลือกตัวต้านทาน LED ตามการทดลองและข้อผิดพลาดของเบรดบอร์ด 220 โอห์มดูเหมือนจะดีสำหรับไฟ LED สีแดงและสีเหลือง เช่นเดียวกับไฟ LED สีเขียวขนาดเล็ก แต่ผมต้องใช้ตัวต้านทาน 75 โอห์มสำหรับไฟ LED สีเขียว เนื่องจากพวกมันหรี่แสงเกินไปด้วยตัวต้านทาน 220 โอห์ม

ฉันตัดสินใจที่จะแสดงเฉพาะ LED ที่ด้านบนของบอร์ด และประสานส่วนประกอบอื่นๆ ทั้งหมดไว้ที่อีกด้านหนึ่ง คุณเพียงแค่ต้องใช้คีมเพื่อตัดสายนำส่วนประกอบให้ใกล้ที่สุดจากพื้นผิวแผ่นกระดาน

Raspberry_Pi_Stripboard_LED_Top

ฉันเริ่มบัดกรีสาย 5V และคุณสามารถเห็นได้ว่าฉันมีปัญหาเล็กน้อยในการเชื่อมต่อแผ่นบัดกรี ในที่สุดฉันพบว่าฉันต้องถอดหัวแร้งออกอย่างรวดเร็ว ทันทีที่บัดกรีละลายบนแผ่นสคริปบอร์ด 2 แผ่นที่อยู่ติดกัน และส่วนที่เหลือของบอร์ดก็ดูดีขึ้นเล็กน้อย

Raspberry_Pi_Stripboard_LED_solder_side

ก่อนทำการทดสอบ คุณควรตรวจสอบ และตรวจสอบอีกครั้ง การเชื่อมต่อกับมัลติมิเตอร์ หรือคุณอาจสร้างความเสียหายให้กับ Raspberry Pi ของคุณหากมีสิ่งผิดปกติเกิดขึ้น ฉันเชื่อมต่อ 5V และ GND กับส่วนหัว 26 พินของ Raspberry Pi รวมถึงพิน 3.3V เพื่อทดสอบอินพุต 9 ตัว (และ LED 16 ดวง) เมื่อฉันยืนยันว่าทุกอย่างทำงานแล้ว ฉันใช้ปืนกาวเพื่อเพิ่มการแยกระหว่างชิ้นส่วนที่เสี่ยงต่อการลัดวงจร

แผนผังด้านรีเลย์ สตริปบอร์ด การบัดกรีและการทดสอบ

ฉันใ่ช้โมดูลรีเลย์ เพื่อเพิ่มการ์ด SD/ด้านแหล่งจ่ายไฟของเคส Raspberry Pi

Raspberry_Pi_Relay
แผนผังบอร์ดรีเลย์  Raspberry Pi

ฉันปรับแผนผังด้านบนจากsusa.net เนื่องจากฉันไม่ต้องการD1 diode พิเศษ เพราะเป็นส่วนหนึ่งของบอร์ดรีเลย์อยู่แล้ว แทนที่จะใช้ทรานซิสเตอร์ BC337 ฉันใช้ 2N2222 กับตัวต้านทานฐานทรานซิสเตอร์ 33 kOhm ฉันต้องความระมัดระวังในขณะที่ฉันเชื่อมต่อโหลด 220V

เมื่อเทียบกับบอร์ด LED การบัดกรีเป็นเรื่องง่ายๆ

Raspberry_Pi_Stripboard_Relay

ฉันใช้ขา stand off 7 อัน เพื่อยึดบอร์ดรีเลย์เข้ากับบอร์ดของฉัน โดยเพิ่มแคปสำหรับแยกสกรูบางส่วน เนื่องจากสกรูขา stand off 3 ตัวที่ด้านบนยาวเกินไป 3 พิน ทางด้านซ้ายของภาพด้านล่างคือ +(เชื่อมต่อกับ 5V), –(เชื่อมต่อกับกราวด์) และ S (เชื่อมต่อกับ GPIO 25 บน RPi) ทางด้านขวา คุณจะพบกับโหลดสามพินโดยมี COMMON อยู่ตรงกลาง, NC (หน้าสัมผัสปิดปกติ) และ NO (หน้าสัมผัสปกติเปิด) ที่ด้านข้าง หากคุณต้องการให้อุปกรณ์ของคุณเปิดโดยค่าเริ่มต้น ให้เชื่อมต่อ NC และ COMMON มิฉะนั้น NO และ COMMON

Raspberry_Veroboard_Relay

เช่นเดียวกับบอร์ด LED ฉันตรวจสอบการเชื่อมต่อด้วยมัลติมิเตอร์ก่อนแล้วจึงใช้เบรดบอร์ด เนื่องจากการใช้ 220V กับเบรดบอร์ดจะไม่ดีนัก ฉันตัดสินใจที่จะใช้หลอดไฟ LED ที่ 5V สำหรับการทดสอบแทน

Raspberry_Pi_Relay_Breadboard

มันใช้งานได้ดี ดังนั้นถึงเวลาต้องย้ายไปประกอบโครงตู้แล้ว

การเชื่อมต่อและการประกอบตู้โมดูลาร์ Raspberry Pi

อันที่จริงฉันมี 3 ด้าน “smart”: บอร์ดด้านบน LED, บอร์ดรีเลย์ และบอร์ดเพื่อเข้าถึงคอนโซลซีเรียล
บอร์ด LED ต้องการ +5V และ GND และพิน GPIO 9 ตัวที่แสดงอยู่ในแผนผัง บอร์ดรีเลย์ต้องใช้พิน 5V และ GND อีกสองตัว เช่นเดียวกับ GPIO 25 ตัวและบอร์ดพอร์ตอนุกรมเชื่อมต่อกับ Tx/Rx และ GND สายเคเบิลทั้งหมดเชื่อมต่อกับหัวพิน P1 บน Raspberry Pi

Raspberry_Pi_Stripboard_LED_Relay_Connected_640px
การเชื่อมต่อ Perfboards

หลังจากตรวจสอบและตรวจสอบการเชื่อมต่ออีกครั้ง ฉันสามารถยึดชิ้นส่วนต่างๆ เข้าด้วยกันได้เหมือนเมื่อก่อนเมื่อไม่มีวงจรบนแผ่นต่อพ่วง

Rasbperry_Pi_Stripboard_LED_Relay

ขั้นตอนสุดท้ายก่อนที่จะย้ายไปใช้ซอฟต์แวร์คือการเชื่อมต่อโหลดที่น่าสนใจ ฉันพบว่าวิธีที่ง่ายที่สุดคือเชื่อมต่อหลอดไฟและถอดสวิตช์หลอดไฟ

Raspberry_Pi_Relay_Lamp_640px
ซ้าย: สวิตช์ถอดประกอบ; กลาง: การเชื่อมต่อกับรีเลย์; ขวา: Raspberry Pi และ โคมไฟ;

เพื่อหลีกเลี่ยงไม่ให้สายทั้ง 2 ส่วนลัดวงจร ฉันจึงใช้ฉนวนเทปสีดำ

ซอฟต์แวร์ – Linux, การควบคุม LED ด้วย GPIO และรีเลย์พร้อมหน้าเว็บ

มีคำแนะนำมากมายสำหรับควบคุม GPIO ของ Raspberry Pi ตั้งค่าเว็บเซิร์ฟเวอร์ ฯลฯ… แต่ฉันเพิ่มความท้าทายเล็กน้อยในการตั้งค่าโดยใช้การ์ด SD ขนาด 256MB นั่นหมายความว่า Raspbian ไม่สามารถติดตั้งได้ คุณต้องคอมไพล์โปรแกรมของคุณ เนื่องจากมีพื้นที่ไม่เพียงพอสำหรับติดตั้ง GCC toolchain และคุณไม่สามารถใช้เว็บเซิร์ฟเวอร์เช่น Apache2 หรือ nginx ได้เช่นกัน ซึ่งดูเหมือนเป็นสิ่งที่ไม่ดี แต่เป็นการฝึกหัดที่ดี เพราะมันใกล้เคียงกับสิ่งที่วิศวกรใช้จริงๆ ในการพัฒนาอุปกรณ์ฝังตัวในเครือข่าย

เนื่องจากฉันใช้ Raspbian ไม่ได้ ฉันจึงตัดสินใจใช้รูปภาพขั้นต่ำที่สร้างด้วย Yocto แทน ฉันได้เขียนคำแนะนำในการใช้Yocto สำหรับ Raspberry Piแล้ว แต่ฉันจะไม่ใช้อิมเมจ Yocto ที่ ฉันสร้างในโพสต์นั้นอย่างแน่นอน เนื่องจากฉันต้องเปิดใช้งานตัวเลือกเพิ่มเติมใน busybox

เราไม่สามารถสร้างอะไรได้โดยตรงบน Raspberry Pi ดังนั้นเราจึงต้องหา cross-toolchain แต่ว่า Yocto แล้วทำอย่างใด ซึ่งคุณจะพบใน./poky/build/tmp/sysroots/x86_64-linux/usr/bin/armv6-vfp-poky-linux-gnueabi/directory

มาเพิ่มในเส้นทางของเรา:


ฉันจะใช้ไลบรารี bcm2835 เพื่อควบคุมGPIO ดังนั้นมาดาวน์โหลด สร้าง และติดตั้งลงในไดเร็กทอรี ~/edev/rpi/gpio:


ฉันได้เขียนโปรแกรม C ง่าย ๆ สองโปรแกรม:

  • gpio_out.c – ใช้เพื่อตั้งค่าพิน GPIO ให้สูงหรือต่ำ การใช้งาน: ./gpio_out [พิน] [ค่า] ฉันจะใช้มันเพื่อควบคุมรีเลย์

  • stripboardled.c – วนเพื่อจุดไฟ LED 16 ดวงบนกระดานด้านบนอย่างแฟนซี


มาคอมไพล์ข้ามกันในไดเร็กทอรี ~/edev/rpi/gpio:


ตอนนี้เรามีไบนารีในพีซี Linux ของเราแล้ว วิธีทั่วไปในการแลกเปลี่ยนไฟล์ระหว่างอุปกรณ์เป้าหมายและเครื่องสร้างคือการใช้เซิร์ฟเวอร์ NFS:


จากนั้นแก้ไข /etc/exports เป็นรูท (sudo) และเพิ่มบรรทัด:


ตอนนี้เข้าถึงบอร์ด Raspberry Pi ผ่านคอนโซลซีเรียล, SSH หรือจอแสดงผล HDMI และติดตั้งการแชร์ NFS:


คัดลอกโปรแกรมในคอมพิวเตอร์ Linux ไปยัง NFS share:


เราสามารถลองใช้ Raspberry Pi เพื่อแฟลช LED และเปิดไฟที่เชื่อมต่อกับรีเลย์:


ไม่มีเซิร์ฟเวอร์ http ในอิมเมจ Yocto ขั้นต่ำ และเนื่องจากความต้องการของเรามีจำกัด (html + cgi) ฉันจะเปิดใช้งาน httpd ใน busybox อ้างถึงรูปภาพ โพสต์สำหรับ Raspberry Pi โดยใช้ Yocto Project เราจะต้องกำหนดค่า busybox เปิดใช้งาน httpd ด้วยการสนับสนุน CGI และสร้างภาพใหม่:


มาคัดลอกรูปภาพไปยังการ์ด SD บูต Raspberry Pi และสร้างไฟล์ที่จำเป็นในบอร์ดเพื่อควบคุมรีเลย์

  • /www/light.htm – แบบฟอร์ม HTML พร้อมปุ่มเปิด/ปิด (ดูรหัส )
  • /www/cgi-bin/lighton – เชลล์สคริปต์เพื่อเปิดรีเลย์ (ดูรหัส )
  • /www/cgi-bin/lightoff – เชลล์สคริปต์เพื่อปิดรีเลย์ (ดูรหัส )

สคริปต์เชลล์ lighton/off เป็นแฮ็กที่น่าเกลียดที่เรียก /usr/sbin/gpio_out และโหลดlight.htm ใหม่ด้วยการเปลี่ยนเส้นทาง มีวิธีที่ดีกว่าในการทำเช่นนี้กับ HTML + CGI อย่างแน่นอน แต่ได้ผล…

เรายังต้องคัดลอกไบนารี “GPIO” ไปยัง /usr/sbin ใน Raspberry Pi และตั้งค่าการอนุญาตสำหรับสคริปต์:


เนื่องจากฉันต้องการให้ระบบทำงานโดยอัตโนมัติ ฉันได้เพิ่มบรรทัดต่อไปนี้ที่ส่วนท้ายของ /etc/inittab:


และสร้าง /usr/sbin/ rpi.shเพื่อเริ่มเซิร์ฟเวอร์ http และโปรแกรมสาธิต LED:


สุดท้าย ตั้งค่าการอนุญาตสำหรับrpi.shและรีสตาร์ทบอร์ด:


ไฟ LED ควรเริ่มกะพริบหลังจากผ่านไปสองสามวินาที และคุณควรจะสามารถเปิด/ปิดหลอดไฟด้วยเว็บเบราว์เซอร์ได้ตามที่แสดงในการสาธิตด้านล่าง

แปลจากบทความภาษาอังกฤษ : DIY Stripboard/Veroboard Enclosure for Raspberry Pi (Part 2)

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
โฆษณา