ใครที่ชอบทำโปรเจกต์แนว IoT ลุยๆ เอาเซ็นเซอร์ไปตั้งไว้กลางแจ้ง คงเคยเจอปัญหา "แบตหมด เครื่องดับ SD Card พัง" กันมาบ้างใช่ไหมครับ? หรือพอฝนตก เครื่องก็ช็อตพังไปอีก
วันนี้เรามีโปรเจกต์สุดถึกทนมาฝาก! เป็นการสร้างระบบประมวลผลเสียงแบบเรียลไทม์ (Real-time audio processing) สำหรับงานนิเวศวิทยาหรือโปรเจกต์เสียงศิลปะ (Sound art) โดยใช้ Raspberry Pi Zero 2 W ทำงานร่วมกับแผงโซลาร์เซลล์ และวงจรสุดฉลาดที่ "คิดเองได้" ว่าตอนไหนควรเปิดเครื่อง ตอนไหนควรปิดเครื่อง เพื่อถนอมแบตเตอรี่ แถมยัดทุกอย่างลงกล่องกันน้ำ IP66 พร้อมลุยทุกสภาพอากาศ มาดูวิธีทำแบบ Step by Step กันเลยครับ!
คลิกเพื่อดูรูปภาพกล่องและอุปกรณ์เพิ่มเติม (View More)
อุปกรณ์ที่ต้องใช้ (Supplies)
อุปกรณ์โปรเจกต์นี้จัดเต็มมากครับ แบ่งเป็นหมวดๆ ได้ตามนี้:
สมองกล & เสียง: Raspberry Pi Zero 2 W, บอร์ดเสียง Raspiaudio MIC+ V2, ไมโครโฟน MEMS, ลำโพง Dynavox Minibass
พลังงาน & โซลาร์: แผงโซลาร์เซลล์ 2.5W 5V (2 แผง), แบตเตอรี่ 18650, Adafruit LC709203F (เช็กแบต), PowerBoost 500 Basic, Solar Charger BQ24074
วงจรลอจิกเปิด-ปิด: ชิป SN74HC02 (NOR Gates) x2, ชิป NE555P, ตัวต้านทาน 100k, คาปาซิเตอร์ 100u / 0.1u / 2200u
โครงสร้าง: กล่องกันน้ำ IP66 (150x116 มม.), แจ็คเสียง, สวิตช์ 2 ทาง, ปลั๊ก DC, และแผ่นไม้ MDF
Step 1 - 4: คอนเซปต์และวงจรจัดการพลังงานสุดฉลาด (Power Cycling Logic)
ปัญหาหลักของการตั้ง Pi ไว้กลางป่าคือ ถ้าแบตหมดแล้วไฟตัดไปดื้อๆ SD Card จะพัง! โปรเจกต์นี้เลยออกแบบวงจรลอจิกเกต (Positive NOR Gates) และชิปหน่วงเวลา NE555 มาคุมการจ่ายไฟครับ โดยมีเงื่อนไขคือ:
เปิดเครื่อง: เมื่อมีแสงแดด (PGOOD) และ แบตเตอรี่มีไฟเกิน 3.9V
ปิดเครื่อง: เมื่อพระอาทิตย์ตก หรือ แบตเตอรี่ต่ำกว่า 3.7V (โดยตัวบอร์ด Pi จะรันคำสั่ง Shutdown ตัวเองให้เสร็จก่อน จากนั้นวงจรถึงจะตัดไฟทั้งหมดทิ้งอย่างปลอดภัย)
คลิกเพื่อดูรูปภาพผังแนวคิดการทำงานและวงจรลอจิก (View More)
Step 5 - 9: ลง OS และเทสต์ฮาร์ดแวร์พื้นฐาน
ก่อนจะบัดกรีลงบอร์ดจริง เราต้องเทสต์ให้ชัวร์ก่อนว่าอุปกรณ์ทุกตัวคุยกับบอร์ด Raspberry Pi รู้เรื่อง:
ลง OS: ใช้ Raspberry Pi OS แบบ Headless (ตั้งค่าผ่าน Wi-Fi ไม่ต้องต่อจอ)
เทสต์การ์ดเสียง: เสียบบอร์ด Raspiaudio MIC+ แล้วรันสคริปต์เทสต์จากผู้ผลิตเพื่อดูว่าลำโพงซ้าย-ขวาและไมค์ทำงานปกติไหม
เทสต์ I2C กับแบตเตอรี่: ต่อบอร์ด LC709203F เข้ากับพิน I2C ของ Pi เพื่ออ่านค่าโวลต์แบตเตอรี่ (ตั้งให้มันเตือนตอนแบตเหลือ 3.9V)
เทสต์แผงโซลาร์: อ่านค่า PGOOD ผ่านพิน GPIO 13 เพื่อดูว่ามีแดดส่องแผงโซลาร์หรือไม่ (ถ้ามีแดดให้ปริ้นต์ "sun" ถ้าไม่มีให้ปริ้นต์ "no sun")
คลิกเพื่อดูและคัดลอกคำสั่ง & สคริปต์ Python ในการเทสต์ระบบ (View More)
1. การเปิดใช้งาน gpio-poweroff และ I2C (ใส่ในไฟล์ /boot/config.txt)
📋 คัดลอกโค้ด
# สโลว์ความเร็ว I2C ลงมาที่ 10KHz เพื่อให้อ่านค่าแบตเตอรี่ได้เสถียร
dtparam=i2c_arm=on
dtparam=i2c_arm_baudrate=10000
# เปิดใช้งาน Poweroff overlay (GPIO 26 จะ LOW ตอน Shutdown เสร็จ)
dtoverlay=gpio-poweroff,active_low
2. สคริปต์เทสต์แบตเตอรี่ (battery.py)
📋 คัดลอกโค้ด
import time
import board
from adafruit_lc709203f import LC709203F
sensor = LC709203F(board.I2C())
sensor._write_word(0x14, 3900) # ตั้งค่า Threshold ที่ 3.9V
while True:
print(sensor.cell_voltage)
time.sleep(1)
3. สคริปต์เทสต์โซลาร์เซลล์ (sun.py)
📋 คัดลอกโค้ด
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
sun = 13
GPIO.setup(sun, GPIO.IN)
while True:
if GPIO.input(sun):
print("no sun")
else:
print("sun")
time.sleep(1)
Step 10 - 18: ลุยบัดกรีแผงวงจร (Soldering & Assembly)
เมื่อเทสต์โค้ดผ่านหมดแล้ว ก็ถึงเวลาจับอุปกรณ์ทั้งหมดลงบนแผ่น Perf board เจาะรูเพื่อยึดน็อตให้พอดีกับกล่อง IP66 แล้วบัดกรี Socket, คาปาซิเตอร์, ลอจิกเกต, โมดูลบูสต์ไฟ (PowerBoost) และต่อสายไฟทุกอย่างเข้าด้วยกันตามผังวงจร
คลิกเพื่อดูรูปภาพขั้นตอนการบัดกรีและผังวงจรเพิ่มเติม (View More)
Step 19 - 26: ยัดลงกล่อง และทดสอบกันน้ำ! (Enclosure & Waterproof Test)
มาถึงขั้นตอนนี้ เราจะเจาะกล่องเพื่อใส่สวิตช์เปิด-ปิด, แจ็คเสียง, รังถ่านแบตเตอรี่, และไมโครโฟน MEMS โดย "ห้ามลืม" ปิดฝากล่องเปล่าๆ แล้วเอาไปฉีดน้ำฝักบัวในห้องน้ำเพื่อเทสต์รอยรั่วก่อนเด็ดขาด! ถ้าผ่าน ก็นำบอร์ด Pi และแผงวงจรทั้งหมดที่บัดกรีไว้ ขันน็อตยึดลงกล่องให้แน่นหนาได้เลยครับ
คลิกเพื่อดูรูปการประกอบกล่องและทดสอบกันน้ำ (View More)
Step 27 - 29: ตั้งค่าสคริปต์รันเบื้องหลัง (Daemon & Autostart)
ขั้นตอนสุดท้ายคือการสร้างสคริปต์ Python ให้ทำงานเป็นเบื้องหลัง (Daemon) ตลอดเวลา เพื่อให้มันคอยเช็กสภาพแสงแดดและแบตเตอรี่ หากถึงเวลาที่ต้องปิดเครื่อง สคริปต์นี้จะสั่ง Shutdown ตัว Pi อย่างปลอดภัยโดยอัตโนมัติ ไม่ต้องมีคนคอยเฝ้าครับ
คลิกเพื่อดูและคัดลอกโค้ดตั้งค่าระบบเบื้องหลัง (View More)
สร้างไฟล์ Service (เซฟไว้ที่ /lib/systemd/system/kn.service)
📋 คัดลอกโค้ด
[Unit]
Description=Klangnetze PCM
After=multi-user.target
[Service]
Type=simple
User=pi
ExecStart=/usr/bin/python3 /home/pi/src/python/main.py
Restart=on-abort
[Install]
WantedBy=multi-user.target
คำสั่งเริ่มการทำงานและเช็กสถานะ (รันใน Terminal)
📋 คัดลอกโค้ด
sudo chmod 644 /lib/systemd/system/kn.service
chmod +x /home/pi/src/python/main.py
sudo systemctl enable kn.service
sudo systemctl start kn.service
sudo systemctl status kn.service
สรุปความเจ๋งของโปรเจกต์:
นี่คือผลงานศิลปะเชิงวิศวกรรมที่ยอดเยี่ยมมากครับ การผสานเอาแผงโซลาร์เซลล์เข้ากับวงจรลอจิก ทำให้บอร์ด Raspberry Pi มีชีวิตและตัดสินใจจัดการพลังงานตัวเองได้! หมดปัญหาเรื่องต้องเดินสายไฟเข้าป่า หรือต้องเปลี่ยนแบตบ่อยๆ ใครกำลังทำโปรเจกต์ IoT กลางแจ้ง ลองเอาไอเดียนี้ไปดัดแปลงใช้ดูนะครับ!
สนใจบอร์ด Raspberry Pi Zero 2 W ไปลุยโปรเจกต์ IoT ไหม?
คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา
อ้างอิงและเรียบเรียงโดย: Globalbyteshop Blog
แหล่งที่มาหลัก: