Taula de continguts:
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-13 06:57
En aquest instructiu
Necessitarà
- Casc de busseig o equivalent
- Anell LED compatible amb Neopixel (he utilitzat un anell amb 38 LED)
- Tauler Wemos ESP32 (o equivalent)
- Impressora 3D
Pas 1: imprimiu aquestes parts
És possible que calgui adaptar aquestes parts si utilitzeu un casc de busseig diferent, he après que el que tinc és bastant comú
Pas 2: pengeu el codi
Col·loqueu el vostre ssid i la vostra contrasenya al codi i pengeu-la al tauler. Això és allà per permetre que OTA pugi codi nou després de muntar el projecte. Haureu d’instal·lar NeoPixelBus de Makuna disponible aquí https://github.com/Makuna/NeoPixelBus També haureu d’instal·lar les definicions de la placa ESP32 a l’entorn arduino per poder utilitzar aquesta placa.
// Wifi Jazz #include #include #include #include bool wifi_timout = 0; const char * ssid = "SSID"; const char * password = "Contrasenya"; // Neopixel jazz #include const uint16_t PixelCount = 38; const uint8_t PixelPin = 19; int colorSaturació = 50; int Lluminositat = 50; int R = 0; int G = 0; int B = 0; int Pols = 1600; // La meitat del temps entre pulsacions RgbColor negre (0); // Button Jazz float Button1_total = 0; int smoothing = 50; const int debounce = 5; botó flotant1 [debounce]; bool PWR = 0; Anell NeoPixelBus (PixelCount, PixelPin); configuració nul·la () {Serial.begin (115200); Serial.println ("Arrencada"); WiFi.mode (WIFI_STA); WiFi.begin (ssid, contrasenya); while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {Serial.println ("La connexió ha fallat!"); retard (5000); //ESP.restart (); } OTA_init (); touch_pad_init (); touchSetCycles (0x6000, 0x6000); // touch_pad_set_cnt_mode (0, TOUCH_PAD_SLOPE_7, TOUCH_PAD_TIE_OPT_HIGH); ring. Begin (); ring. Show (); } void loop () {if (millis () <600000) {ArduinoOTA.handle ();} else if (wifi_timout == 0) {ArduinoOTA.end (); wifi_timout = 1; WiFi.mode (WIFI_OFF); btStop (); } if (button1_capture () == 1) {ring. ClearTo (black); ring. Show (); PWR =! PWR; } if (millis () <1500) {PWR = 0;} if (ring. CanShow () && PWR == 1) {Light (0);} delay (10); } void OTA_init () {ArduinoOTA.onStart ( () {Tipus de cadena; if (ArduinoOTA.getCommand () == U_FLASH) type = "sketch"; else // U_SPIFFS type = "sistema de fitxers"; // NOTA: if actualitzant SPIFFS aquest seria el lloc per desmuntar SPIFFS mitjançant SPIFFS.end () Serial.println ("Comença a actualitzar" + tipus);}).onEnd ( () {Serial.println ("\ nFin");}).onProgress ( (progrés int signat, total int signat) {Serial.printf ("Progrés:% u %% / r", (progrés / (total / 100)));}).onError ( (ota_error_t error) {Serial.printf ("Error [% u]:", error); if (error == OTA_AUTH_ERROR) Serial.println ("Autenticació fallida"); else if (error == OTA_BEGIN_ERROR) Serial.println ("Begin Fallat "); else if (error == OTA_CONNECT_ERROR) Serial.println (" Error de connexió "); else if (error == OTA_RECEIVE_ERROR) Serial.println (" Error de recepció "); else if (error == OTA_END_ERROR) Sèrie. println ("Finalització fallida");}); ArduinoOTA.begin (); Serial.println ("Llest"); Serial.print ("adreça IP:"); Serial.println (WiFi.localIP ()); } int button1_capture () {for (int i = 0; i <(debounce-1); i ++) {Button1 = Button1 [i + 1]; } Botó1 [debounce-1] = (touchRead (T0)); corrent flotant = MaxArray (Button1); float Button1_smooth = Botó1_total / suavitzat; // corrent flotant = AveArray (Button1); Serial.print (Button1_smooth); Serial.print (""); Serial.print (actual); Serial.print (""); Serial.println (Button1 [debounce-1]); if (actual <(0.85 * Button1_smooth)) {Button1_total = 0; // funciona com a devolució de retorn 1; } else {Button1_total = current + Button1_total -Button1_smooth; } retorn 0; } float MaxArray (float MaxMe ) {float mxm = MaxMe [0]; float mnm = MaxMe [0]; for (int i = 0; imxm) {mxm = MaxMe ; }} retorn mxm; } float AveArray (float AveMe ) {float total = 0; float ave = 0; per a (int i = 0; i
Pas 3: Muntatge
Connecteu el tauler com es mostra i comproveu que funcioni.
La xarxa connectada al "mànec" actuarà com un botó tàctil. Al meu tauler, l'ESP32 T0 està connectat a D4. Haureu de comprovar-ho si utilitzeu un tauler diferent.
Enganxar un fil nu a aquest pass comportarà el mateix. Si la premeu dues vegades, s’encendrà com una llum nocturna. 3 vegades una mica més brillant i 4 vegades blanca.
Pas 4: munteu les peces al casc
Per encendre la làmpada utilitzarem el mànec del casc com a sensor tàctil. Això vol dir que s’ha d’aïllar de la resta del casc. Traieu el mànec i cobriu la cara de contacte amb cinta aïllant. Vaig fer servir cinta marró perquè es fongués, es ressalta de color blau a la imatge. Traieu els forats de manera que els cargols quedin lliures i es puguin tornar a utilitzar amb unes volanderes de plàstic a l’altra banda.
Connecteu el botó a un dels cargols de les nanses mitjançant un connector de crimpat.
Si teniu previst utilitzar una font d'alimentació flotant (gairebé totes), haureu de connectar un passador GND al cos del casc de la mateixa manera. Ara per encendre la làmpada, col·loqueu una mà al casc i toqueu la nansa amb l'altra.
Pas 5: connecteu l'alimentació
Enrosqueu la placa micro USB al connector del mampar imprès en 3D i, a continuació, fixeu-la al lloc amb la femella.
Es pot utilitzar qualsevol font d'alimentació de 5 V CC, però a casa meva hi ha molts carregadors USB. Vaig utilitzar un cable USB trenat per fer imatges d’un vell flex i completar l’aspecte.
Això és el que has acabat.
Si voleu modificar el codi per provar colors, efectes o temporitzadors addicionals, estarà disponible com a dispositiu OTA arduino els primers 10 minuts cada vegada que estigui endollat. Tot seguit, s'apagarà per estalviar energia.