Სარჩევი:
- ნაბიჯი 1: საჭირო მასალა
- ნაბიჯი 2: სქემის დიაგრამა
- ნაბიჯი 3: Arduino კოდი
- ნაბიჯი 4: ლამპარის ბაზის 3D ბეჭდვა
- ნაბიჯი 5: Led დანართი
- ნაბიჯი 6: ლამპარის დანართი
- ნაბიჯი 7: დაყენება
ვიდეო: Smart Lamp (TCfD) - Rainbow + Music Visualizer: 7 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
ეს პროექტი კეთდება კურსისთვის ტექნოლოგია კონცეფციის დიზაინში TUDelft– ში
საბოლოო პროდუქტი არის ESP-32 ბაზის LED ნათურა და დაკავშირებულია სერვერთან. პროტოტიპისთვის ნათურას აქვს ორი ფუნქცია; ცისარტყელას ეფექტი, რომელიც ასხივებს დამამშვიდებელ ფერს, რომელიც ანათებს მის გარემოს და მეორეც ხმის ვიზუალიზატორი, სადაც LED პიქსელები "ცეკვავენ" ხმის დონის შესაბამისად. სისტემა დაკავშირებულია wifi– სთან და მომხმარებელს შეუძლია აირჩიოს რა ეფექტი სურს ნათურისგან WIFI– ს საშუალებით.
იაფი ESP-32 მიკროჩიპი გვაძლევს მძლავრ პროცესორებს, ჩაშენებული დარბაზის სენსორს, ტემპერატურის სენსორს, შეხების სენსორს და ასევე wifi და bluetooth შესაძლებლობებს. ამასთან, მიუხედავად იმისა, რომ ამ პროექტისთვის მხოლოდ ორი ეფექტი იქნა არჩეული, ამ "ჭკვიანი" ნათურის მნიშვნელობა უსაზღვროა. ის გამოიყენებოდა მომხმარებლისთვის ამინდის ან ოთახის ტემპერატურის დასანიშნად, თავად ნათურა შეიძლება მოქმედებდეს როგორც განგაშის გამომწვევი, ან მისცეს დამამშვიდებელი მზის შუქი თქვენი საწოლის გვერდით, მზის ამოსვლის სიმულაციისთვის სასიამოვნო გაღვიძებისთვის.
ნაბიჯი 1: საჭირო მასალა
Arduino esp32
ხმის სენსორი
ოთხმხრივი ორმხრივი ორმხრივი ლოგიკური დონის კონვერტორი
ნეოპიქსელი led 2m 60 led/m
ჯუმბერის მავთულები
მიკრო USB კაბელი ადაპტერთან ერთად
ინტერნეტ კავშირი
ნაბიჯი 2: სქემის დიაგრამა
სქემის დიაგრამა შედგენილია და სქემა შედგენილია შესაბამისად, როგორც ეს მოცემულია
დიაგრამა ქვემოთ.
ნაბიჯი 3: Arduino კოდი
აქ, პირველ რიგში, ვიზუალიზატორის კოდი გაკეთდა. შემდეგ, ორი მაგალითი კოდი
; "Neoplxel RGBW starndtest"; და “simpleWebServerWifi” შეიცვალა და ინტეგრირებულია ვიზუალიზატორის კოდში. მიუხედავად იმისა, რომ კოდი ჯერ კიდევ შეცდომაშია (შემთხვევითი led ნათურა დროდადრო ანათებს). კოდის მომდევნო გამეორება (მას შემდეგ რაც საკმარისი დრო გვექნება) განახლდება.
#ჩართეთ
#ifdef _AVR_
#ჩართეთ
#დაასრულე თუ
const int numReadings = 5;
int საკითხები [numReadings];
int readIndex = 0;
int სულ = 0;
int საშუალო = 0;
int micPin = 33;
#განსაზღვრეთ PIN 4
#განსაზღვრეთ NUM_LEDS 120
#განსაზღვრეთ სიკაშკაშე 100
Adafruit_NeoPixel ზოლები = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
ბაიტი neopix_gamma = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 126, 127, 129, 131, 133, 135, 137, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 167, 169, 171, 173, 175, 177, 180, 182, 184, 186, 189, 191, 193, 196, 198, 200, 203, 205, 208, 210, 213, 215, 218, 220, 223, 225, 228, 231, 233, 236, 239, 241, 244, 247, 249, 252, 255 };
#ჩართეთ
#ჩართეთ
char ssid = "თქვენი ქსელი"; // თქვენი ქსელის SSID (სახელი)
char pass = "secretPassword"; // თქვენი ქსელის პაროლი
int keyIndex = 0; // თქვენი ქსელის გასაღების ინდექსის ნომერი (საჭიროა მხოლოდ WEP– ისთვის)
int სტატუსი = WL_IDLE_STATUS;
WiFiServer სერვერი (80);
ბათილად დაყენება ()
{
სერიული.დაწყება (9600); // სერიული კომუნიკაციის ინიციალიზაცია
pinMode (9, OUTPUT); // დააყენეთ LED pin რეჟიმი
// შეამოწმეთ ფარის არსებობა:
თუ (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("WiFi ფარი არ არის");
ხოლო (ჭეშმარიტი); // არ გააგრძელე
}
სიმებიანი fv = WiFi.firmwareVersion ();
თუ (fv! = "1.1.0") {
Serial.println ("გთხოვთ განაახლოთ firmware");
}
// Wifi ქსელთან დაკავშირების მცდელობა:
ხოლო (სტატუსი! = WL_CONNECTED) {
Serial.print ("ქსელთან დაკავშირების მცდელობა დასახელებულია:");
Serial.println (ssid); // დაბეჭდეთ ქსელის სახელი (SSID);
// დაუკავშირდით WPA/WPA2 ქსელს. შეცვალეთ ეს ხაზი, თუ იყენებთ ღია ან WEP ქსელს:
სტატუსი = WiFi.bigin (ssid, pass);
// დაელოდეთ 10 წამი კავშირისთვის:
დაგვიანება (10000);
}
server.begin (); // ვებ სერვერის დაწყება 80 პორტზე
printWifiStatus (); // თქვენ ახლა დაკავშირებული ხართ, ასე რომ დაბეჭდეთ სტატუსი
}
{
სერიული.დაწყება (9600);
strip.setBrightness (BRIGHTNESS);
ზოლები. დაწყება ();
ზოლები. ჩვენება (); // ყველა პიქსელის ინიციალიზაცია "გამორთვის"
pinMode (micPin, INPUT);
for (int thisReading = 0; thisReading <numReadings; thisReading ++) {
საკითხავი [thisReading] = 0;
}
}
ბათილი ცისარტყელა (uint8_t ლოდინი) {
uint16_t i, j;
for (j = 0; j <256; j ++) {
for (i = 0; i
strip.setPixelColor (i, Wheel ((i+j) & 255));
}
ზოლები. ჩვენება ();
დაგვიანება (ლოდინი);
}
}
void visualizer () {
სულ = სულ - კითხვები [readIndex];
კითხვები [readIndex] = analogRead (micPin);
სულ = სულ + კითხვა [readIndex];
readIndex = readIndex + 1;
if (readIndex> = numReadings) {
readIndex = 0;
}
საშუალო = სულ / რიცხვი;
დაგვიანება (1);
int micpixel = (საშუალოდ -100)/5;
Serial.println (მიკპიქსელი);
თუ (მიკპიქსელი> 0) {
{
for (int j = 0; j <= micpixel; j ++)
strip.setPixelColor (j, (micpixel*2), 0, (90-micpixel), 0);
for (int j = micpixel; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
ზოლები. ჩვენება ();
}
}
თუ (მიკპიქსელი <0) {
for (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
ზოლები. ჩვენება ();
}
}
ბათილი მარყუჟი () {
{
WiFiClient client = server.available (); // მოუსმინეთ შემომავალ კლიენტებს
თუ (კლიენტი) {// თუ მიიღებთ კლიენტს, Serial.println ("ახალი კლიენტი"); // დაბეჭდეთ შეტყობინება სერიული პორტიდან
სიმებიანი currentLine = ""; // გააკეთეთ სიმები კლიენტისგან შემოსული მონაცემების შესანახად
while (client.connected ()) {// მარყუჟი სანამ კლიენტი დაკავშირებულია
if (client.available ()) {// თუ კლიენტისგან წაკითხული ბაიტია, char c = client.read (); // წაიკითხე ბაიტი, მაშინ
სერიული. დაწერეთ (გ); // დაბეჭდე სერიული მონიტორი
if (c == '\ n') {// თუ ბაიტი ახალი ხაზის სიმბოლოა
// თუ მიმდინარე ხაზი ცარიელია, თქვენ მიიღეთ ორი ახალი ხაზის სიმბოლო ზედიზედ.
// ეს არის კლიენტის HTTP მოთხოვნის დასასრული, ასე რომ გამოაგზავნეთ პასუხი:
if (currentLine.length () == 0) {
// HTTP სათაურები ყოველთვის იწყება პასუხის კოდით (მაგ. HTTP/1.1 200 OK)
// და შინაარსის ტიპი, რათა კლიენტმა იცოდეს რა მოდის, შემდეგ ცარიელი ხაზი:
client.println ("HTTP/1.1 200 OK");
client.println ("შინაარსის ტიპი: ტექსტი/html");
client.println ();
// HTTP პასუხის შინაარსი მიჰყვება სათაურს:
client.print ("დააწკაპუნეთ აქ ჩართეთ ცისარტყელას ეფექტი");
client.print ("დააწკაპუნეთ აქ ჩართეთ ვიზუალიზატორი");
// HTTP პასუხი მთავრდება სხვა ცარიელი ხაზით:
client.println ();
// გარღვევა while მარყუჟიდან:
შესვენება;
} else {// თუ თქვენ გაქვთ ახალი ხაზი, მაშინ გაასუფთავეთ currentLine:
currentLine = "";
}
} else if (c! = '\ r') {// თუ თქვენ გაქვთ რაიმე სხვა გარდა ვაგონის დაბრუნების სიმბოლო, currentLine += c; // დაამატე მიმდინარე ხაზის ბოლოს
}
// შეამოწმეთ კლიენტის მოთხოვნა იყო "GET /H" ან "GET /L":
if (currentLine.endsWith ("GET /R")) {
ცისარტყელა (10); // ცისარტყელას ეფექტი ჩართულია
}
if (currentLine.endsWith ("GET /V")) {
ვიზუალიზატორი (); // ვიზუალიზატორი ჩართულია
}
}
}
// კავშირის დახურვა:
client.stop ();
Serial.println ("კლიენტი გათიშულია");
}
}
void printWifiStatus () {
// დაბეჭდეთ ქსელის SSID, რომელთანაც ხართ დაკავშირებული:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// დაბეჭდეთ თქვენი WiFi ფარის IP მისამართი:
IPAddress ip = WiFi.localIP ();
Serial.print ("IP მისამართი:");
Serial.println (ip);
// დაბეჭდეთ მიღებული სიგნალის სიძლიერე:
გრძელი rssi = WiFi. RSSI ();
Serial.print ("სიგნალის სიძლიერე (RSSI):");
Serial.print (rssi);
Serial.println ("dBm");
// დაბეჭდეთ სად წავიდეთ ბრაუზერში:
Serial.print ("ამ გვერდის მოქმედების სანახავად გახსენით ბრაუზერი https://" - ზე);
Serial.println (ip);
}
}
uint32_t ბორბალი (ბაიტი WheelPos) {
WheelPos = 255 - WheelPos;
თუ (WheelPos <85) {
დაბრუნების ზოლები. ფერი (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
თუ (WheelPos <170) {
WheelPos -= 85;
დაბრუნების ზოლი. ფერი (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
დაბრუნების ზოლი. ფერი (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t წითელი (uint32_t გ) {
დაბრუნება (c >> 16);
}
uint8_t მწვანე (uint32_t გ) {
დაბრუნება (c >> 8);
}
uint8_t ლურჯი (uint32_t გ) {
დაბრუნება (გ);
}
}
// სერიული. ბეჭდვა (მიკპიქსელი);
}
ნაბიჯი 4: ლამპარის ბაზის 3D ბეჭდვა
ნათურის ბაზის 3D მოდელი გაზომეს, შეიმუშავეს და დაბეჭდეს იმ ზომებით, რომელიც საკმარისად დიდია იმისათვის, რომ მოთავსდეს ყველა ელექტრო კომპონენტი ბაზის განყოფილებაში.
ნაბიჯი 5: Led დანართი
Led's იყო ჩასმული მუყაოს რულეტში და მიმაგრებული იყო ორმხრივი ლენტის გამოყენებით, ქვედა ნაწილში გაბურღული იყო ხვრელი მავთულის გასავლელად
ნაბიჯი 6: ლამპარის დანართი
დანართი გაკეთდა გამჭვირვალე ბოთლის პოვნით, რომლის სიგანეა ნათურის ფუძე და სიმაღლე, როგორც LED დანართი. შემდეგ იგი დაფარული იყო სქელი ქაღალდით სინათლის უკეთესი გავრცელებისთვის. როგორც ალტერნატივა, შესაძლებელია გამოიყენოთ ყინვაგამძლე მინა ან გამჭვირვალე პლასტმასის მილები, როგორც ნათურა.
ნაბიჯი 7: დაყენება
ყველაფერი შეკრული და აწყობილი იყო. და ნათურა მზად იყო გამოცდისთვის !.
გირჩევთ:
Arduino Music Desk Lamp Bluetooth– ით!: 9 ნაბიჯი
Arduino Music Desk Lamp Bluetooth– ით!: გამარჯობა! ამ ინსტრუქციაში მე ვაპირებ ავაშენო რაღაც ნათელი! ნება მომეცით გაგაცნოთ ჩემი მაგარი ახალი სამაგიდო ნათურა! ეს არის იაფი წვრილმანი გადაწყვეტა, რომ თქვენი მოსაწყენი მაგიდა დიჯეის ღამის მიმზიდველად აქციოთ! ან შეიძლება არ იყოს. მაგრამ გარწმუნებთ, რომ საბოლოო პროდუქტი
LightBox Music Visualizer: 5 ნაბიჯი (სურათებით)
LightBox Music Visualizer: LightBox იყენებს თქვენი ტელეფონის ან ტაბლეტის ჩამონტაჟებულ მიკროფონს მუსიკის გასაანალიზებლად, რათა შექმნას ლამაზი შუქის ნიმუშები, რომლებიც ემთხვევა მუსიკას. უბრალოდ დაიწყეთ აპლიკაცია, განათავსეთ თქვენი ტელეფონი ან ტაბლეტი სადმე ხმის წყაროს მახლობლად და თქვენი ყუთი ვიზუალიზაციას უკეთებს
Arduino Music Controller: 9 ნაბიჯი (სურათებით)
Arduino Music Controller: ეს არის სამეურვეო Arduino Music Controller შეუძლია შექმნას 1 მ ენაზე. Gemaakt door Kyo Schelfhout, Logan Wesse en Janis MosselmansB.OM:38 კაბელი (13 როდი, 13 ზვარტი, 12 გელი) გესმით: printplaat (4 გაზის
Steampunk Pi Jukebox გაშვებული Google Music: 11 ნაბიჯი (სურათებით)
Steampunk Pi Jukebox გაშვებული Google Music: გაფრთხილება !! თუ თქვენ ცდილობთ მსგავსი პროექტის განხორციელებას, გააცნობიერეთ, რომ თქვენ გაქვთ პოტენციალი აზბესტის ასვლისას ძველ რადიოში, როგორც წესი, მაგრამ არ შემოიფარგლება რაიმე სახის სითბოს დამცავი ან იზოლაციით. გთხოვთ, ჩაატაროთ საკუთარი კვლევა და მიიღოთ ზომები. მე
Nixie Tube Music Visualizer: 10 ნაბიჯი (სურათებით)
Nixie Tube Music Visualizer: ჰიპნოზირებადი მუსიკალური ვიზუალიზატორი, რომელიც შთაგონებულია იმ პატარა ზოლებით iTunes– ის ზედა ნაწილში. თოთხმეტი რუსული IN-13 ნიქსის ბარგრაფიული მილაკი გამოიყენება როგორც ჩვენება. სიგრძე, რომელიც ანათებს თითოეულ ნიქსი მილს, წარმოადგენს გარკვეული სიხშირის მოცულობას მუ