Taula de continguts:
- Pas 1: Material necessari
- Pas 2: diagrama del circuit
- Pas 3: Codi Arduino
- Pas 4: Impressió en 3D de la base del llum
- Pas 5: fitxer adjunt de led
- Pas 6: Tancament de la làmpada
- Pas 7: Configuració
Vídeo: Smart Lamp (TCfD) - Visualitzador Rainbow + Music: 7 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Aquest projecte es realitza per al curs Tecnologia per al disseny conceptual al TUDelft
El producte final és un llum LED de base ESP-32 i està connectat al servidor. Per al prototip, la làmpada té dues funcions; un efecte arc de Sant Martí que emet un suau resplendor de color cap al seu entorn i, en segon lloc, un visualitzador de so on els píxels LED "ballen" segons els nivells sonors. El sistema està connectat a wifi i l'usuari pot triar quin efecte vol des de la làmpada mitjançant WIFI.
El microxip ESP-32 econòmic ens proporciona processadors potents, sensor de sala incorporat, sensor de temperatura, sensor tàctil i també capacitat de wifi i bluetooth. Amb això, tot i que només es van triar dos efectes per a aquest projecte, la implicació d’aquest llum “intel·ligent” és il·limitada. S’utilitzaria per indicar el temps a l’usuari o la temperatura de l’habitació, la llum mateixa pot actuar com a disparador d’alarma o pot donar un resplendor tranquil·litzant al sol al costat del llit simulant la sortida del sol per a una bona experiència de despertar.
Pas 1: Material necessari
Arduino esp32
Sensor de so
Convertidor de nivell lògic bidireccional de quatre vies
Neopixel led 2m 60 led / m
Filferros de pont
Cable micro USB amb adaptador
connexió a Internet
Pas 2: diagrama del circuit
Es va dibuixar un diagrama de circuits i es va fer el circuit en conseqüència tal com es mostra a
el diagrama següent.
Pas 3: Codi Arduino
Aquí es va crear primer el codi del visualitzador. A continuació, dos exemples de codi
; "Neoplxel RGBW starndtest"; i "simpleWebServerWifi" es va modificar i integrar dins del codi del visualitzador. Tot i que el codi encara és erroni de vegades (el led aleatori s’encén de tant en tant). S'actualitzarà la següent iteració del codi (un cop obtinguem prou temps).
#incloure
#ifdef _AVR_
#incloure
#endif
const int numLectures = 5;
lectures int [numLectures];
int readIndex = 0;
int total = 0;
int mitjana = 0;
int micPin = 33;
#defineix el PIN 4
#define NUM_LEDS 120
#define BRIGHTNESS 100
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
byte 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 };
#incloure
#incloure
char ssid = "la vostra xarxa"; // el vostre SSID de xarxa (nom)
char pass = "contrasenya secreta"; // la vostra contrasenya de xarxa
int keyIndex = 0; // el número d'índex de la vostra clau de xarxa (només necessari per a WEP)
int status = WL_IDLE_STATUS;
Servidor WiFiServer (80);
configuració nul·la ()
{
Serial.begin (9600); // inicialitzar la comunicació en sèrie
pinMode (9, OUTPUT); // estableix el mode de pin LED
// comproveu la presència de l'escut:
if (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("No hi ha escut WiFi");
mentre que (cert); // no continueu
}
Cadena fv = WiFi.firmwareVersion ();
if (fv! = "1.1.0") {
Serial.println ("Actualitzeu el firmware");
}
// intenteu connectar-vos a la xarxa Wifi:
while (estat! = WL_CONNECTED) {
Serial.print ("Intent de connectar-se a la xarxa anomenada:");
Serial.println (ssid); // imprimeix el nom de la xarxa (SSID);
// Connecteu-vos a la xarxa WPA / WPA2. Canvieu aquesta línia si utilitzeu una xarxa oberta o WEP:
estat = WiFi.begin (ssid, pass);
// espereu 10 segons per a la connexió:
retard (10000);
}
server.begin (); // iniciar el servidor web al port 80
printWifiStatus (); // ja esteu connectat, així que imprimiu l'estat
}
{
Serial.begin (9600);
strip.setBrightness (LLUMINOSITAT);
strip.begin ();
strip.show (); // Inicialitza tots els píxels a "off"
pinMode (micPin, INPUT);
for (int thisReading = 0; thisReading <numReadings; thisReading ++) {
lectures [thisReading] = 0;
}
}
arc de Sant Martí buit (uint8_t espera) {
uint16_t i, j;
per a (j = 0; j <256; j ++) {
per a (i = 0; i
strip.setPixelColor (i, Wheel ((i + j) & 255));
}
strip.show ();
retard (esperar);
}
}
visualitzador buit () {
total = total - lectures [readIndex];
lectures [readIndex] = analogRead (micPin);
total = total + lectures [readIndex];
readIndex = readIndex + 1;
if (readIndex> = numLectures) {
readIndex = 0;
}
mitjana = total / numLectures;
retard (1);
int micpixel = (mitjana-100) / 5;
Serial.println (micpixel);
if (micpíxel> 0) {
{
for (int j = 0; j <= micpixel; j ++)
strip.setPixelColor (j, (micpixel * 2), 0, (90 micpixels), 0);
for (int j = micpixel; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
strip.show ();
}
}
if (micpíxel <0) {
per a (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
bucle buit () {
{
Client WiFiClient = servidor.available (); // escoltar els clients entrants
if (client) {// si obteniu un client, Serial.println ("client nou"); // imprimeix un missatge al port sèrie
String currentLine = ""; // feu una cadena per contenir les dades entrants del client
while (client.connected ()) {// loop mentre el client està connectat
if (client.available ()) {// si hi ha bytes per llegir del client, char c = client.read (); // llegir un byte, doncs
Serial.write (c); // imprimeix-lo al monitor sèrie
if (c == '\ n') {// si el byte és un caràcter de línia nova
// si la línia actual està en blanc, teniu dos caràcters de línia nova seguits.
// aquest és el final de la sol·licitud HTTP del client, així que envieu una resposta:
if (currentLine.length () == 0) {
// Les capçaleres HTTP sempre comencen amb un codi de resposta (per exemple, HTTP / 1.1 200 OK)
// i un tipus de contingut perquè el client sàpiga què vindrà i, a continuació, una línia en blanc:
client.println ("HTTP / 1.1 200 OK");
client.println ("Tipus de contingut: text / html");
client.println ();
// el contingut de la resposta HTTP segueix la capçalera:
client.print ("Feu clic aquí Activa l'efecte arc de Sant Martí");
client.print ("Feu clic aquí Activa Visualizer");
// La resposta HTTP acaba amb una altra línia en blanc:
client.println ();
// sortir del bucle while:
trencar;
} else {// si teniu una nova línia, esborreu currentLine:
Línia actual = "";
}
} else if (c! = '\ r') {// si teniu alguna cosa més que un caràcter de retorn de carro, Línia actual + = c; // Afegiu-lo al final de la línia actual
}
// Comproveu si la sol·licitud del client era "GET / H" o "GET / L":
if (currentLine.endsWith ("GET / R")) {
Arc de Sant Martí (10); // S'ha activat l'efecte arc de Sant Martí
}
if (currentLine.endsWith ("GET / V")) {
Visualitzador (); // El visualitzador està activat
}
}
}
// tanca la connexió:
client.stop ();
Serial.println ("client desconnectat");
}
}
void printWifiStatus () {
// imprimeix el SSID de la xarxa a la qual estàs connectat:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// imprimeix l'adreça IP del teu escut WiFi:
Adreça IP ip = WiFi.localIP ();
Serial.print ("Adreça IP:");
Serial.println (ip);
// imprimeix la intensitat del senyal rebut:
llarg rssi = WiFi. RSSI ();
Serial.print ("intensitat del senyal (RSSI):");
Serial.print (rssi);
Serial.println ("dBm");
// imprimeix on anar en un navegador:
Serial.print ( Per veure aquesta pàgina en acció, obriu un navegador a
Serial.println (ip);
}
}
uint32_t Wheel (byte WheelPos) {
WheelPos = 255 - WheelPos;
if (WheelPos <85) {
tira de retorn. Color (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
if (WheelPos <170) {
WheelPos - = 85;
tira de retorn. Color (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos - = 170;
tira de retorn. Color (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t vermell (uint32_t c) {
retorn (c >> 16);
}
uint8_t verd (uint32_t c) {
retorn (c >> 8);
}
uint8_t blau (uint32_t c) {
retorn (c);
}
}
//Serial.println(micpixel);
}
Pas 4: Impressió en 3D de la base del llum
Es va mesurar, dissenyar i imprimir un model en 3D de la base de la làmpada amb unes dimensions prou grans per adaptar-se a tots els components elèctrics dins del compartiment de la base.
Pas 5: fitxer adjunt de led
Els led s’enrotllaven en rotllo de cartró i s’adherien amb cinta de doble cara, es feia un forat a la part inferior per fer passar el cable
Pas 6: Tancament de la làmpada
Es va fer un recinte trobant una ampolla transparent amb una amplada similar a la base i l’alçada de la làmpada com la fixació LED. Després es va cobrir amb paper gruixut per a una millor difusió de la llum. Com a alternativa, és possible utilitzar vidre esmerilat o tubs de plàstic translúcid com a tancament de la làmpada.
Pas 7: Configuració
Tot estava enganxat i muntat. I el llum estava preparat per fer algunes proves !.
Recomanat:
Active Music Party LED Lantern i altaveu Bluetooth amb brillantor en la foscor PLA: 7 passos (amb imatges)
Active Music Party LED Lantern i altaveu Bluetooth amb brillantor a la foscor PLA: Hola, i gràcies per sintonitzar el meu instructable. Cada any faig un projecte interessant amb el meu fill que ara té 14 anys. Hem construït un rellotge Quadcopter, Swimming Pace Clock (que també és instructiu), un banc de tancament CNC i Fidget Spinners.Wi
Lune - Controlador MIDI amb Arduino (per a DJ o músic): 5 passos (amb imatges)
Lune - Controlador MIDI amb Arduino (per a DJ o músic): Aquest és el meu primer nom de projecte. Volia aprendre arduino amb un projecte ampli i útil, així que vaig decidir fabricar un controlador midi DJ que tingués totes les funcions necessàries per a ser autònom a barrejar. Tot tipus de sensor (potentio
Music Box amb mini monitor (OLED) i LED: 8 passos (amb imatges)
Music Box With Mini Monitor (OLED) i LED: la meva idea era una caixa que reproduís música quan l'obriu. També té una pantalla amb un emoji que es desperta i us saluda. També hi ha un LED que s’encén si manteniu premuda la resistència sensible a la força entre els dits, mentre el
Music Spectrum amb rellotge digital i temperatura: 9 passos (amb imatges)
Music Spectrum amb rellotge digital i temperatura: tornem a ser aquí amb un projecte que us agradarà. Si t'agrada escoltar música i gaudir de la visualitat, aquest projecte és per a tu. KIT ELECTRONNIC D’ESPECTRE DE MÚSICA DE RELLOTGE DIGITAL AMB PANTALLA DE TEMPERATURA. Es tracta d’un kit electrònic. Quan completeu el pr
Steampunk Pi Jukebox amb Google Music: 11 passos (amb imatges)
Steampunk Pi Jukebox amb Google Music: AVÍS! Si intenteu fer un projecte similar, enteneu que teniu el potencial de trobar-vos amb amiant en una ràdio antiga, normalment però no restringit a algun tipus d’escut tèrmic o aïllament. Feu la vostra pròpia investigació i preneu precaucions