Mục lục:

Máy chiếu tâm trạng (Philips Hue Light với GSR) TfCD: 7 bước (có hình ảnh)
Máy chiếu tâm trạng (Philips Hue Light với GSR) TfCD: 7 bước (có hình ảnh)

Video: Máy chiếu tâm trạng (Philips Hue Light với GSR) TfCD: 7 bước (có hình ảnh)

Video: Máy chiếu tâm trạng (Philips Hue Light với GSR) TfCD: 7 bước (có hình ảnh)
Video: Chỉ có mỗi cái đèn thôi nhưng vợ chồng hạnh phúc hơn hẳn =)) | Tự động hóa đèn Philips Hue 2024, Tháng bảy
Anonim
Image
Image
Ngoài ánh sáng Huế
Ngoài ánh sáng Huế

Bởi Laura Ahsmann & Maaike Weber

Mục đích: Tâm trạng thấp và căng thẳng là một phần quan trọng trong nhịp sống nhanh hiện đại. Nó cũng là thứ vô hình với bên ngoài. Điều gì sẽ xảy ra nếu chúng tôi có thể chiếu cả mức độ căng thẳng bằng hình ảnh và âm thanh của chúng tôi với một sản phẩm, để có thể thể hiện cảm giác của bạn. Nó sẽ giúp bạn giao tiếp dễ dàng hơn về những vấn đề này. Phản ứng của chính bạn cũng có thể phù hợp hơn với thời điểm nhận được phản hồi về mức độ căng thẳng của bạn.

GSR, hoặc sức đề kháng của da mạ, một phép đo được thực hiện trên đầu ngón tay của người dùng, được chứng minh là một yếu tố dự báo căng thẳng thực sự tốt. Vì các đường mồ hôi ở tay chủ yếu phản ứng với căng thẳng (không chỉ vận động cơ thể), mức độ căng thẳng tăng lên tạo ra độ dẫn điện cao hơn. Biến này được sử dụng trong dự án này.

Ý tưởng: Điều gì sẽ xảy ra nếu chúng ta có thể nhanh chóng phát hiện ra căng thẳng hoặc tâm trạng và thể hiện nó bằng ánh sáng màu và âm nhạc? Hệ thống GSR có thể biến điều đó thành hiện thực. Trong phần Có thể hướng dẫn này, chúng tôi sẽ tạo ra một hệ thống dựa trên Arduino để làm điều đó! Được vận hành bởi cả Phần mềm Arduino và Phần mềm xử lý, nó sẽ chuyển các giá trị độ dẫn của da thành một ánh sáng màu nhất định và một loại nhạc nhất định.

Bạn cần gì?

  • Arduino Uno
  • Dây điện
  • Đèn Philips Hue (Màu sắc sống động)
  • Ba điện trở 100 Ohm (cho đèn LED RGB)
  • Một điện trở 100 KOhm (cho cảm biến GSR)
  • Một cái gì đó để hoạt động như cảm biến độ dẫn, như lá nhôm
  • Phần mềm Arduino
  • Phần mềm xử lý (chúng tôi đã sử dụng v2.2.1, những phần mềm mới hơn có xu hướng bị lỗi)
  • SolidWorks, để thiết kế nhà ở (tùy chọn)
  • Truy cập vào nhà máy CNC (tùy chọn)
  • Xốp mô hình xanh (EPS)
  • Breadboard (tùy chọn, cũng có thể hàn)

Bước 1: Ngoài ánh sáng Huế

Bước này rất dễ dàng, chỉ cần dùng một lực (hoặc tuốc nơ vít) để làm mất và nứt mở đèn. Một số kết nối nhanh giữ sản phẩm với nhau, vì vậy rất dễ tháo rời.

Giờ đây, đèn ở trên cùng có thể được vặn ra và ngắt kết nối với phần còn lại của các thiết bị điện tử. Chúng tôi sẽ chỉ cần ánh sáng và đỉnh của nhà ở. Lưu hoặc ném phần còn lại, tùy thuộc vào bạn!

Bước 2: Chuẩn bị phần cứng

Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng
Chuẩn bị phần cứng

Đối với dự án này, chúng tôi đã sử dụng đèn Philips Hue để làm cho hiện thân đẹp hơn và nhanh hơn. Tuy nhiên, bạn cũng có thể sử dụng đèn LED RGB thông thường, như trong hình với bảng mạch.

Để vận hành đèn LED RGB, hãy kết nối các chân với ba cổng PWM khác nhau của Arduino (được chỉ ra ba a ~). Sử dụng điện trở 100Ohm cho kết nối này. Kết nối chân dài nhất với đầu ra 5V của Arduino. Để xem ghim nào tương ứng với màu nào, hãy xem hình ảnh cuối cùng của bước này.

Đối với Hue Light, các bước thực hiện tương tự. Đèn LED được kết nối dễ dàng với Arduino bằng cách hàn dây vào các khe được chỉ định, xem hình thứ ba trong bước này. Các khe có R, G và B, cho biết dây nào sẽ đi tới đâu. Nó cũng có một khe cắm + và một -, được kết nối tương ứng với 5V của Arduino và nối đất của Arduino. Sau khi kết nối đèn LED, bạn có thể vặn lại vào vỏ.

Để kết nối các cảm biến GSR, được làm từ lá nhôm (hoặc sử dụng các hộp tealights bằng alumium, trông đẹp hơn một chút), hãy hàn hoặc dán chúng vào dây và kết nối một với 5V. Kết nối cái còn lại với điện trở 100KOhm và tụ điện 0, 1mF (song song), sau đó sẽ được kết nối với đất và khe A1 trên Arduino. Điều này sẽ cung cấp đầu ra của mức ứng suất, sau đó sẽ được sử dụng làm đầu vào cho màu ánh sáng và âm nhạc. Tuy nhiên, hãy cẩn thận để các cảm biến không chạm vào nhau!

Hình ảnh cuối cùng cho thấy nó có thể được thực hiện như thế nào mà không có breadboard.

Bước 3: Đo lường mức ứng suất

Đo lường mức ứng suất
Đo lường mức ứng suất

Việc đo mức độ căng thẳng chỉ với những cảm biến tự chế này chắc chắn sẽ không cho phép đo chính xác mức độ căng thẳng chính xác của bạn. Tuy nhiên, khi hiệu chỉnh đúng, nó có thể đưa ra giá trị gần đúng.

Để đo mức GSR, chúng tôi sẽ sử dụng đoạn mã sau, trong môi trường Arduino. Để có một phép đo ít dao động hơn, giá trị trung bình được lấy sau mỗi 10 lần đọc.

const int numReadings = 10; int lần đọc [numReadings]; // nhập từ A1 int index = 0; // chỉ số của lần đọc hiện tại int total = 0; // tổng số trung bình dài chưa được đánh dấu đang chạy = 0; // trung bình

int inputPin = A1;

void setupGSR ()

{// đặt tất cả các bài đọc thành 0:

for (int i = 0; i <numReadings; i ++) lượt đọc = 0; }

unsigned long runGSR () {

total = tổng số - số lần đọc [chỉ số]; // đọc từ các bài đọc của cảm biến GSR [index] = analogRead (inputPin); // thêm bài đọc mới vào tổng tổng số = tổng số + số lần đọc [chỉ số]; // vị trí tiếp theo của mảng index = index + 1;

// kiểm tra kết thúc của mảng

if (index> = numReadings) // và bắt đầu lại index = 0;

// trung bình là bao nhiêu

trung bình = tổng số / numReadings; // gửi nó đến máy tính dưới dạng các chữ số ASCII trả về giá trị trung bình;

}

Trong một tab khác (để giữ mọi thứ có tổ chức), chúng tôi sẽ tạo mã để phản ứng với các phép đo, hãy xem bước tiếp theo!

Bước 4: Quản lý đèn

Quản lý đèn
Quản lý đèn
Quản lý đèn
Quản lý đèn
Quản lý đèn
Quản lý đèn

Để quản lý đèn, trước tiên chúng ta phải hiệu chỉnh các phép đo. Kiểm tra giới hạn trên đối với phép đo của bạn bằng cách mở màn hình nối tiếp. Đối với chúng tôi, các phép đo nằm trong khoảng từ 150 (khi chúng tôi thực sự cố gắng thư giãn) và 300 (khi chúng tôi thực sự cố gắng trở nên căng thẳng).

Sau đó, quyết định màu sắc sẽ đại diện cho mức ứng suất nào. Chúng tôi đã tạo ra nó để:

1. Mức độ căng thẳng thấp: ánh sáng trắng, chuyển thành ánh sáng xanh với mức độ căng thẳng ngày càng tăng

2. Mức độ căng thẳng trung bình: ánh sáng xanh lục, chuyển thành ánh sáng xanh lam với mức độ căng thẳng ngày càng tăng

3. Mức độ căng thẳng cao: ánh sáng xanh, chuyển thành màu đỏ với mức độ căng thẳng ngày càng tăng

Mã sau được sử dụng để xử lý các phép đo và biến chúng thành các giá trị để gửi đến đèn LED:

// MASTER #define DEBUG 0

// GSR = A1

int gsrVal = 0; // Biến để lưu dữ liệu đầu vào từ các cảm biến

// Như đã đề cập, sử dụng các chân Điều chế độ rộng xung (PWM)

int redPin = 9; // Đèn LED màu đỏ, được kết nối với chân số 9 int grnPin = 9; // Đèn LED màu xanh lá cây, được kết nối với chân số 10 int bluPin = 5; // Đèn LED màu xanh lam, được kết nối với chân kỹ thuật số 11

// Biến chương trình

int redVal = 0; // Các biến để lưu các giá trị để gửi đến các chân int grnVal = 0; int bluVal = 0;

không dấu long gsr = 0;

void setup ()

{pinMode (bluPin, OUTPUT); pinMode (grnPin, OUTPUT); pinMode (redPin, OUTPUT); pinMode (A1, INPUT);

Serial.begin (9600);

setupGSR (); }

void loop ()

{gsrVal = gsr; if (gsrVal <150) // Phần ba thấp nhất của dải ô gsr (0-149) {gsr = (gsrVal / 10) * 17; // Chuẩn hóa thành 0-255 redVal = gsrVal; // tắt đến đầy đủ grnVal = gsrVal; // Màu xanh lá cây từ tắt đến đầy đủ bluVal = gsrVal; // Từ màu xanh lam đến đầy đủChuỗi SoundA = "A"; Serial.println (SoundA); // để sử dụng sau này trong điều hành âm nhạc} else if (gsrVal <250) // 1/3 giữa của dải ô gsr (150-249) {gsrVal = ((gsrVal-250) / 10) * 17; // Chuẩn hóa thành 0-255 redVal = 1; // Tắt grnVal = gsrVal; // Màu xanh lá cây từ đầy đến tắt bluVal = 256 - gsrVal; // Màu xanh lam từ tắt đến đầy String SoundB = "B"; Serial.println (SoundB); } else // Phần ba phía trên của dải ô gsr (250-300) {gsrVal = ((gsrVal-301) / 10) * 17; // Chuẩn hóa thành 0-255 redVal = gsrVal; // Màu đỏ từ tắt đến đầy đủ grnVal = 1; // Tắt màu xanh lá cây thành đầy đủ bluVal = 256 - gsrVal; // Màu xanh lam từ đầy đến tắt String SoundC = "C"; Serial.println (SoundC); }

analogWrite (redPin, redVal); // Ghi giá trị vào chân LED analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); gsr = runGSR (); chậm trễ (100); }

Vì vậy, bây giờ đèn LED đang phản ứng với mức độ căng thẳng của bạn, hãy thêm một số bản nhạc để thể hiện tâm trạng của bạn, trong bước tiếp theo.

Bước 5: Quản lý âm nhạc

Quản lý âm nhạc
Quản lý âm nhạc

Chúng tôi đã chọn đại diện cho 3 mức độ căng thẳng với âm nhạc sau:

1. Mức độ thấp (A): hót bát và chim hót líu lo, âm thanh rất nhẹ.

2. Mức độ trung bình (B): một cây đàn piano u sầu, âm thanh nặng hơn một chút

3. Mức độ căng thẳng cao (C): Một cơn bão sấm sét, một âm thanh u ám (mặc dù khá thư giãn)

Mã được viết bằng Xử lý, một phần mềm để cung cấp phần phản hồi phần mềm của Arduino:

import processing.serial. *; import ddf.minim. *;

Minimum tối thiểu;

Trình phát AudioPlayer ;

int lf = 10; // Nguồn cấp dữ liệu tuyến tính trong ASCII

String myString = null; Nối tiếp myPort; // Cổng nối tiếp int sensorValue = 0;

void setup () {

// Liệt kê tất cả các cổng nối tiếp có sẵn printArray (Serial.list ()); // Mở cổng bạn đang sử dụng với tốc độ giống như Arduino myPort = new Serial (this, Serial.list () [2], 9600); myPort.clear (); // xóa số đo myString = myPort.readStringUntil (lf); myString = null; // chúng ta chuyển nó cho Minim để nó có thể tải các tập tin minim = new Minim (this); player = new AudioPlayer [3]; // Thay đổi tên của tệp âm thanh ở đây và thêm nó vào các trình phát thư viện [0] = minim.loadFile ("Tiếng hát-bát-và-chim-chirping-sleep-music.mp3"); player [1] = minim.loadFile ("Melancholic-piano-music.mp3"); người chơi [2] = minim.loadFile ("Storm-sound.mp3"); }

void draw () {

// kiểm tra xem có giá trị mới không while (myPort.available ()> 0) {// lưu trữ dữ liệu trong myString myString = myPort.readString (); // kiểm tra xem chúng ta thực sự có thứ gì không if (myString! = null) {myString = myString.trim (); // kiểm tra xem có cái gì không if (myString.length ()> 0) {println (myString); thử {sensorValue = Integer.parseInt (myString); } catch (Exception e) {} if (myString.equals ("A")) // xem mức ứng suất mà nó đo lường {player [0].play (); // phát theo nhạc} else {player [0].pause (); // nếu nó không đo mức độ căng thẳng thấp, không phát bài hát theo} if (myString.equals ("B")) {player [1].play (); } else {người chơi [1].pause (); } if (myString.equals ("C")) {player [2].play (); } else {người chơi [2].pause (); }}}}}

Mã này sẽ phát nhạc theo mức căng thẳng trên loa máy tính xách tay của chúng tôi.

Bước 6: Thiết kế Phương án

Image
Image
Thiết kế phương án
Thiết kế phương án

Chúng tôi đã sử dụng phần trên của Philips Hue Light, nhưng đã sử dụng phần dưới bằng bọt xanh. SolidWorksfile có ở đây, nhưng cũng có thể rất thú vị khi bạn tự đo đèn và thiết kế theo sở thích của mình!

Chúng tôi đã sử dụng ảnh chụp đỉnh đèn làm lớp lót trong SW, để đảm bảo hình dạng của đáy theo đường cong của đỉnh (xem ảnh đầu tiên).

Để có mô hình cnc'd, hãy lưu nó dưới dạng tệp STL và tìm máy xay tại địa phương của bạn (ví dụ: uni).

Bước 7: Nguồn

Nếu bạn muốn biết thêm thông tin về chủ đề này hoặc xem các mã mở rộng hơn để đo lường căng thẳng, hãy xem các trang web và dự án sau:

  • Giải thích thêm về cách kích hoạt tệp âm thanh trong Xử lý (chúng tôi đã sử dụng)
  • Cẩm nang đẹp về GSR
  • Cách tiếp cận khác biệt thú vị để dự báo tâm trạng
  • Máy dò căng thẳng thực sự tuyệt vời với nhiều cảm biến (nguồn cảm hứng lớn cho dự án này)
  • Máy chiếu âm thanh (thay vì căng thẳng) với đèn LED RGB
  • Bài viết hay về GSR

Đề xuất: