Mục lục:

Điều khiển ánh sáng thở bằng Raspberry Pi: 5 bước
Điều khiển ánh sáng thở bằng Raspberry Pi: 5 bước

Video: Điều khiển ánh sáng thở bằng Raspberry Pi: 5 bước

Video: Điều khiển ánh sáng thở bằng Raspberry Pi: 5 bước
Video: [B01] Liên kết Pi với DS1307 sử dụng gói cài đặt i2c-tools 2024, Tháng bảy
Anonim
Điều khiển ánh sáng thở bằng Raspberry Pi
Điều khiển ánh sáng thở bằng Raspberry Pi

"Đèn tập thở" được mô tả ở đây là một loại đèn phát xung đơn giản và tương đối rẻ tiền có thể hỗ trợ bạn trong quá trình thực hiện thở và giúp bạn duy trì nhịp thở đều đặn. Nó cũng có thể được sử dụng, ví dụ: như một chiếc đèn ngủ êm dịu cho trẻ em. Trong giai đoạn hiện tại, nó là một nguyên mẫu hoạt động nhiều hơn.

Bạn cũng có thể sử dụng nó như một ví dụ xây dựng đơn giản và rẻ tiền cho "máy tính vật lý" với Raspberry Pi, ví dụ: được sử dụng như một dự án giáo dục ở cấp độ người mới bắt đầu, Ở đây bạn có đầu vào tương tự (chiết áp quay) và đầu vào kỹ thuật số (nút nhấn) cũng như đầu ra kỹ thuật số (LED) và PWM (chuỗi LED) và các tác động của thay đổi có thể nhìn thấy trực tiếp.

Ánh sáng chạy qua các vòng tròn lặp đi lặp lại bao gồm bốn pha: pha từ xanh lục (trên) sang đỏ (dưới), pha chỉ đỏ, pha chuyển từ đỏ sang xanh lá cây và pha chỉ xanh lục. Chiều dài của các pha này được xác định bằng các hằng số có thể được thay đổi bằng chiết áp. Quá trình có thể được bắt đầu, tạm dừng, tiếp tục và dừng bằng cách nhấn các nút nhấn. Đèn LED cho biết pha hiện tại, dựa trên ví dụ “Ánh sáng đom đóm” của Pimoroni (xem tại đây). Tương tự như “Firefly Light”, nó yêu cầu một Raspberry Pi (Zero), Pimoroni Explorer pHAT (hoặc HAT) và hai chuỗi đèn LED IKEA SÄRDAL. Sau đó được kết nối với hai cổng PMW / động cơ của pHAT. Thay vì sử dụng một cái lọ, tôi đã đặt các đèn LED trong một khung ảnh IKEA. Tôi đã cố gắng tối ưu hóa tập lệnh python “ánh sáng đom đóm” ban đầu một chút, triển khai hàm xoang tùy chọn cho các thay đổi độ sáng / độ rộng xung và đã giới thiệu hai giai đoạn “giữ” giữa các giai đoạn làm mờ. Trong khi sửa đổi các thông số để tìm kiểu ánh sáng cảm thấy thoải mái hơn, tôi thấy rằng thiết bị có thể hữu ích để hỗ trợ kiểu thở đều đặn, được xác định rất rõ ràng. Vì vậy, một số bạn có thể thấy “Hơi thở nhẹ” này hữu ích cho mục đích thiền định hoặc luyện tập. Vì Explorer pHAT có bốn đầu vào kỹ thuật số và bốn đầu vào tương tự, nên rất dễ dàng điều chỉnh tối đa bốn thông số khác nhau bằng cách sử dụng chiết áp trượt hoặc xoay, và giới thiệu các chức năng khởi động / khởi động lại / dừng cho đèn bằng các nút nhấn. Điều này sẽ cho phép bạn sử dụng thiết bị và tối ưu hóa các thông số theo nhu cầu của mình mà không cần gắn màn hình vào Pi.

Ngoài ra, Explorer pHAT đi kèm với bốn cổng ra kỹ thuật số, cho phép thêm đèn LED hoặc còi, cộng với hai cổng 5V và hai cổng Ground và hai cổng ra PWM cho động cơ hoặc các thiết bị tương tự. Hãy đảm bảo rằng bạn đang sử dụng đúng điện trở để giảm điện áp cho đèn LED của bạn.

Thư viện python Explorer pHAT của Pimoroni giúp việc kiểm soát tất cả các cổng I / O này trở nên cực kỳ đơn giản.

Trong phiên bản hướng dẫn này của thiết bị với các chiết áp 0, 2 và 4 và các nút được mô tả. Chọn một trong những phù hợp với nhu cầu của bạn.

Để chạy thiết bị một cách tự động, người ta có thể sử dụng bộ nguồn hoặc kết hợp giữa miếng đệm Pimoroni LiPo và pin LiPo, như được mô tả cho "Đèn đom đóm".

Phiên bản cập nhật vào ngày 28 tháng 12 năm 2018: thêm phiên bản 'bốn chiết áp và bốn nút nhấn'. 30: mã cho phiên bản 4-poti và thêm hình ảnh hấp dẫn.

Bước 1: Vật liệu được sử dụng / yêu cầu

Vật liệu được sử dụng / yêu cầu
Vật liệu được sử dụng / yêu cầu
Vật liệu được sử dụng / yêu cầu
Vật liệu được sử dụng / yêu cầu
Vật liệu được sử dụng / yêu cầu
Vật liệu được sử dụng / yêu cầu

- Raspberry Pi Zero (4,80 GBP tại Pimoroni, Vương quốc Anh) và thẻ micro SD (> = 8 GB) w / Raspian

- Pimoroni Explorer pHAT (10 GBP tại Pimoroni, Vương quốc Anh). Tùy chọn: tiêu đề một hàng, cáp jumper

- Đèn chuỗi LED IKEA SÄRDAL với 12 đèn LED (2 x, 3,99 € mỗi đèn tại IKEA Đức), hoặc bất kỳ chuỗi đèn LED 3-5V nào tương tự. - Khung ảnh IKEA RIBBA (13 x 18 cm, 2,49 € tại IKEA Đức).

- Một miếng xốp PU (2 x 18 x 13,5 cm), để giữ đèn LED. Ngoài ra, có thể sử dụng bọt styro.

- Một miếng nhựa đục (18 x 13,5 cm), đóng vai trò như bộ khuếch tán.

- Hai tờ giấy màu trong suốt (mỗi tờ 9 x 13,5 cm). Tôi đã sử dụng màu đỏ và xanh lá cây.

- Một miếng nhựa mỏng, có độ đục cao (18 x 13,5 cm), đóng vai trò như màn hình bên ngoài. Tôi đã sử dụng một tấm polycarbonate mỏng màu trắng. Tùy chọn, đối với phiên bản có thể điều chỉnh:

Để điều chỉnh thời gian dốc và thời gian ổn định, hoặc các thông số khác như độ sáng. - Chiết áp 10, 20 hoặc 50 kOhm (tối đa bốn, tôi đã sử dụng hai chiết áp 10 kOhm tương ứng là bốn 50 Ohm).

Như các nút bắt đầu / dừng / tạm dừng / tiếp tục: - Các nút nhấn (tối đa bốn, tôi đã sử dụng bốn hoặc hai)

Như các chỉ số cho các pha của vòng tròn: - Đèn LED màu và các điện trở cần thiết (sẽ phụ thuộc vào đặc điểm của đèn LED bạn sẽ sử dụng).

  1. khoảng 140 Ohm cho 5,2 -> 2, 2 V (vàng, cam, đỏ; một số đèn LED xanh lục),
  2. khoảng 100 Ohm cho 5,3 -> 3,3 V (một số đèn LED xanh lục; xanh lam, trắng)

- Cáp jumper và bảng mạch

Tùy chọn, đối với phiên bản chạy bằng pin:

  • Bộ nguồn 5V Micro-USB, hoặc
  • Pimoroni Zero LiPo chêm và pin LiPo

Bước 2: Lazout và lắp ráp

Lazout và lắp ráp
Lazout và lắp ráp
Lazout và lắp ráp
Lazout và lắp ráp
Lazout và lắp ráp
Lazout và lắp ráp

Lắp ráp pHAT của Explorer theo mô tả của nhà sản xuất. Tôi đã thêm một tiêu đề nữ một hàng để đơn giản hóa kết nối cáp jumper với các cổng I / O của pHATs. Thiết lập Pi của bạn và cài đặt thư viện Pimoroni cho Explorer HAT / pHAT, như được mô tả bởi Pimoroni. Tắt Pi và gắn pHAT vào Pi. Tháo pin khỏi chuỗi đèn LED bằng cách cắt dây và thiếc đầu dây. Cắt hai dây cáp nhảy nam 2x ở giữa, thiếc hai đầu dây. Hàn cáp jumper vào chuỗi đèn LED và cô lập các điểm hàn bằng cách sử dụng băng dính hoặc ống co lại. Trước khi hàn, hãy kiểm tra dây nào trong số các dây phải được kết nối với cổng cộng hoặc cổng nối đất và đánh dấu chúng cho phù hợp. Tôi đã sử dụng dây nhảy với nhiều màu sắc khác nhau, cắt miếng xốp để giữ đèn LED, bộ khuếch tán và tấm màn hình theo kích thước phù hợp. Trên tấm giữ đèn LED, đánh dấu các vị trí đặt đèn LED và đục các lỗ 3-5 mm vào tấm xốp. Sau đó chèn 24 đèn LED vào các vị trí đã cho. Đặt các tờ giấy màu và tấm khuếch tán lên tấm LED (xem hình ảnh), chúng đặt khung phía trên gói. Cố định các lớp bọt trong khung, ví dụ: sử dụng băng dính. Gắn các dây cáp dải LED vào các cổng "động cơ" của Explorer pHAT. Đối với phiên bản có thể điều chỉnh, hãy đặt chiết áp, nút nhấn, đèn LED điều khiển (và / hoặc còi) và điện trở trên bảng mạch và kết nối chúng với các cổng tương ứng trên Explorer pHAT.

Khởi động Pi của bạn và cài đặt các thư viện cần thiết, như được mô tả trên trang web Pimoroni, sau đó chạy tập lệnh Python 3 được cung cấp. Nếu một trong các chuỗi đèn LED không hoạt động, nó có thể được kết nối sai hướng. Sau đó, bạn có thể thay đổi kết nối cộng / trừ trên pHAT hoặc thực hiện thay đổi trong chương trình, ví dụ: thay đổi “eh.motor.one.backwards ()” thành “… forwards ()”.

Đính kèm, bạn tìm thấy các tập lệnh có cài đặt cố định mà bạn có thể thay đổi trong chương trình và một ví dụ trong đó bạn có thể sửa đổi một số cài đặt với chiết áp và bắt đầu và dừng chu kỳ đèn bằng các nút nhấn. Không quá khó để điều chỉnh các kịch bản phù hợp với bố cục “đèn thở” của riêng bạn.

Bước 3: Tập lệnh Python

Thư viện Python của Pimoroni dành cho Explorer HAT / pHAT giúp việc nhấn mạnh các thành phần được gắn vào các cổng I / O của HATs trở nên cực kỳ đơn giản. Hai ví dụ: "eh.two.motor.backwards (80)" điều khiển thiết bị được gắn vào cổng PWM / động cơ 2 với cường độ tối đa 80% theo hướng ngược lại, "eh.output.three.flash ()" làm cho đèn LED được kết nối để xuất ra đèn flash ở cổng số ba cho đến khi nó dừng. Tôi đã tạo ra một số biến thể của ánh sáng, về cơ bản là tăng thêm mức độ điều khiển bằng cách thêm tối đa bốn nút nhấn và chiết áp. Kèm theo bạn tìm thấy một chương trình Python có tên "Breathing light fixed lin cosin.py "trong đó tất cả bốn cài đặt tham số phải được sửa đổi trong chương trình. Ngoài ra, một phiên bản có tên là "Breathing light var lin cosin.py" trong đó độ dài của hai pha làm mờ có thể được điều chỉnh bằng cách sử dụng hai chiết áp và phiên bản phức tạp nhất "Breathing light var lin cosin3.py" cho phiên bản bốn chiết áp & nút nhấn. Các chương trình được viết bằng Python 3.

Trong mọi trường hợp, quá trình đạp xe có thể được kích hoạt và dừng lại bằng cách sử dụng hai nút nhấn, trong phiên bản bốn nút, bạn cũng có thể ngắt và khởi động lại quá trình. Ngoài ra, bốn đèn LED (màu) có thể được kết nối với các cổng đầu ra kỹ thuật số, cho biết các giai đoạn cụ thể. Một chu kỳ của thiết bị bao gồm bốn giai đoạn:

- giai đoạn "hít vào", trong đó đèn LED phía trên được làm mờ ở mức thấp và đèn LED phía dưới tăng cường độ

- giai đoạn "nín thở", trong đó đèn LED phía trên bị tắt và đèn LED phía dưới được đặt ở mức tối đa

- giai đoạn "thở ra", trong đó đèn LED phía dưới được làm mờ ở mức thấp và đèn LED phía trên tăng cường độ

- giai đoạn "thở ra", trong đó đèn LED phía dưới bị tắt và đèn LED phía trên sáng tối đa.

Chiều dài của tất cả bốn pha được xác định bởi một tham số số riêng lẻ, có thể được cố định trong chương trình và / hoặc có thể được điều chỉnh bằng cách sử dụng một chiết áp.

Tham số thứ năm xác định cường độ tối đa. Nó cho phép bạn đặt độ sáng tối đa của đèn LED, điều này có thể hữu ích nếu bạn muốn sử dụng nó như một chiếc đèn ngủ. Ngoài ra, nó có thể cho phép bạn cải thiện quá trình làm mờ, vì tôi có ấn tượng rằng khó có thể thấy sự khác biệt giữa cường độ 80 và 100%.

Tôi đã thêm một chức năng xoang (đồng) tùy chọn để tăng / giảm độ sáng, vì nó mang lại kết nối mượt mà hơn giữa các pha. Hãy thử các chức năng khác. Ví dụ. bạn có thể loại bỏ các ngắt và sử dụng hai chức năng xoang (phức tạp) khác nhau cho cả chuỗi LED và điều chỉnh tần số và biên độ bằng chiết áp.

# Đèn "thở": phiên bản hai nút & hai chiết áp

# sửa đổi ví dụ về đom đóm cho Pimoroni Explorer pHAT # tại đây: tăng / giảm sinoid của các giá trị động cơ / PWM # cho chức năng tuyến tính tắt tiếng hàm cosin tuyến tính và tắt tiếng # Phiên bản này "var" không đọc đầu vào tương tự, ghi đè cài đặt xác định trước # lần đọc đầu vào kỹ thuật số, các nút để bắt đầu và dừng "" "để bắt đầu khi bật Pi. bất cứ khi nào Pi của bạn khởi động. Mở một thiết bị đầu cuối và nhập crontab -e để chỉnh sửa crontab của bạn. Cuộn đến cuối tệp, bỏ qua tất cả các dòng bắt đầu bằng # và thêm dòng sau (giả sử mã của bạn ở /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Đóng và lưu crontab của bạn (nếu bạn đang sử dụng nano thì hãy nhấn control-x, y và enter để thoát và lưu). "" "nhập trình khám phá nhập thời gian dưới dạng nhập các giá trị hằng số toán học #sinus xmax = 316 step = 5 # step width, ví dụ: 315/5 cung cấp 63 bước / chu kỳ start_button = 0 # điều này xác định trạng thái của nút nhấn được kết nối với cổng đầu vào không có 1 điểm dừng_button = 0 # điều này xác định trạng thái của nút nhấn được kết nối với cổng đầu vào số 3 tạm dừng_1 = 0,02 # đặt chiều dài số lần nghỉ trong các bước trong giai đoạn "hít vào", do đó tốc độ tăng dần và khoảng thời gian tạm dừng_2 = 0,04 # đặt tốc độ tăng nhịp "thở ra" tạm dừng_3 = 1,5 # ngắt giữa giai đoạn hít vào và thở ra (tiếp tục hít vào) tạm dừng_4 = 1,2 # ngắt khi kết thúc thở ra pha (tiếp tục thở ra) max_intens = 0.9 # cường độ / độ sáng tối đa max_intens_100 = 100 * max_intens # giống nhau trong% # Có thể cho phép tối ưu hóa ấn tượng "thở" của đèn LED và giảm nhấp nháy. l_cosin = # danh sách có giá trị suy ra cosin (100> = x> = 0) l_lin = # danh sách có giá trị tuyến tính (100> = x> = 0) # tạo danh sách hàm cosinus cho tôi trong phạm vi (0, 316, 3): # 315 gần với Pi * 100, 105 bước # print (i) n_cosin = [(((math.cos (i / 100)) + 1) / 2) * 100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin # thêm giá trị vào danh sách # print (l_cosin) # tạo danh sách tuyến tính cho i trong phạm vi (100, -1, -1): # đếm ngược từ 100 đến 0 n_lin = l_lin = l_lin + n_lin # print (l_lin) # hiển thị một danh sách nhàm chán print () print ("" "Để bắt đầu các chu kỳ đèn, nhấn nút" Start "(Input One)" "") print () print ("" "Để dừng sáng, nhấn và giữ Nút "Dừng" (Đầu vào Ba) "" ") print () # đợi cho đến khi Nút Bắt đầu được nhấn trong khi (start_button == 0): start_button = eh.input.one.read () # read nút số một eh.output.one.blink () # nhấp nháy số đèn LED một lần.sleep (0.5) # đọc hai lần một giây # chạy đèn trong khi (stop_button == 0): # đọc đầu vào tương tự MỘT và HAI, xác định cài đặt_1 = eh.an alog.one.read () # xác định tốc độ tăng tốc red-> xanh lục pause_1 = set_1 * 0,02 # giá trị sẽ nằm trong khoảng từ 0 đến 0,13 giây / bước in ("set_1:", set_1, "-> pause _1:", pause_1) set_2 = eh.analog.two.read () # xác định màu xanh lục -> tốc độ tăng tốc màu đỏ pause_2 = set_2 * 0,02 # giá trị sẽ nằm trong khoảng từ 0 đến 0,13 giây / bước in ("set_2:", set_2, "-> pause _2: ", pause_2) # pha" hít vào "eh.output.one.on () # có thể điều khiển đèn LED hoặc tiếng bíp '' cho x trong phạm vi (len (l_lin)): fx = max_intens * l_lin [x] # đường cong tuyến tính eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () '' 'cho x trong phạm vi (len (l_cosin)): fx = max_intens * l_cosin [x] # đường cong tuyến tính eh.motor.one.backwards (fx) eh.motor.two.backwards (max_intens_100-fx) time.sleep (pause_1) eh.output.one.off () # kiểm tra xem Nút dừng có được nhấn hay không stop_button = eh.input.three.read () # Tạm dừng "Giữ hơi thở của bạn" ở cuối giai đoạn hít vào eh.output.two.on () # bật LED hai eh.motor.one.backwards (0) eh.motor.two.backwards (max_intens_100) time.sleep (pause_3) eh.output.two.off () # kiểm tra xem Nút dừng có được nhấn hay không stop_button = eh.input.three.read () # giai đoạn "thở ra" eh.output.three.on () # bật LED ba '' cho x trong phạm vi (len (l_lin)): fx = max_intens * l_lin [x] # đường cong tuyến tính eh.motor.one.backwards (max_intens_100-fx) eh.motor.two.backwards (fx) time.sleep (pause_2) '' 'cho x trong phạm vi (len (l_cosin)): fx = max_intens * l_cosin [x] # đường cong tuyến tính eh.motor.one.backwards (max_intens_100-fx) eh.motor.two. ngược lại (fx) time.sleep (pause_2) eh.output.three.off () # kiểm tra xem Nút dừng có được nhấn hay không stop_button = eh.input.three.read () # tạm dừng giữa giai đoạn "thở ra" và "hít vào" eh. output.four.on () eh.motor.one.backwards (max_intens_100) eh.motor.two.backwards (0) time.sleep (pause_4) eh.output.four.off () # kiểm tra xem Nút dừng có được nhấn stop_button không = eh.input.three.read () # shutdown, lần lượt tất cả các cổng đầu ra eh.motor.one.stop () eh.motor.two.stop () eh.output.one.off () eh.output.two.off () eh.output.three.off () eh.output.four.off () print () print ("Tạm biệt")

Nếu bạn muốn sử dụng đèn như một thiết bị độc lập, ví dụ: như đèn ngủ hoặc đèn đánh thức, bạn có thể thêm nguồn điện di động vào Pi và khởi động chương trình sau khi khởi động và sử dụng "Cron" để bật hoặc tắt nó vào những thời điểm nhất định. Cách sử dụng "Cron" đã được mô tả rất chi tiết ở những nơi khác.

Bước 4: Ví dụ về Video

Trong bước này, bạn sẽ tìm thấy một số video hiển thị ánh sáng trong điều kiện bình thường (tức là tất cả các giá trị> 0, # 1) và các điều kiện khắc nghiệt, vì tất cả các giá trị được đặt thành 0 (# 2), chỉ dốc (# 3 ), và không có đoạn đường dốc (# 5 ).;

Bước 5: Một số nhận xét

Vui lòng xin lỗi bất kỳ điều khoản sai, lỗi chính tả và lỗi nào. Tôi không phải là người bản ngữ nói tiếng Anh, cũng không có kiến thức chuyên sâu về điện, điện tử hoặc lập trình. Điều đó thực sự có nghĩa là tôi đang cố gắng viết một bài hướng dẫn bằng tiếng Anh về những thứ mà tôi khó có thể biết các thuật ngữ chính xác bằng ngôn ngữ của mình. Vì vậy, mọi gợi ý, chỉnh sửa hoặc ý tưởng để cải tiến đều được hoan nghênh.

Đề xuất: