Inhaltsverzeichnis:
- Schritt 1: Drucken Sie diese Teile
- Schritt 2: Laden Sie den Code hoch
- Schritt 3: Montage
- Schritt 4: Montieren Sie die Teile in den Helm
- Schritt 5: Schließen Sie die Stromversorgung an
Video: Tauchhelm-Touch-Lampe - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
In diesem anweisbaren
Du wirst brauchen
- Taucherhelm oder gleichwertig
- Neopixel-kompatibler LED-Ring (ich habe einen Ring mit 38 LEDs verwendet)
- Wemos ESP32-Board (oder gleichwertig)
- 3D Drucker
Schritt 1: Drucken Sie diese Teile
Diese Teile müssen möglicherweise angepasst werden, wenn Sie einen anderen Taucherhelm verwenden. Ich habe gelernt, dass der, den ich habe, ziemlich verbreitet ist
Schritt 2: Laden Sie den Code hoch
Geben Sie Ihre ssid und Ihr Passwort in den Code ein und laden Sie ihn dann auf Ihr Board hoch. Dies ist da, damit OTA neuen Code hochladen kann, nachdem das Projekt zusammengestellt wurde. Sie müssen NeoPixelBus von Makuna installieren, das hier verfügbar ist https://github.com/Makuna/NeoPixelBus Sie müssen auch die ESP32-Board-Definitionen in der Arduino-Umgebung installieren, um dieses Board zu verwenden.
//Wifi Jazz #include #include #include #include bool wifi_timout = 0; const char* ssid = "SSID"; const char* passwort = "Passwort"; // Neopixel-Jazz #include const uint16_t PixelCount = 38; const uint8_t PixelPin = 19; int colorSättigung = 50; int Helligkeit = 50; intR = 0; intG = 0; intB = 0; int Puls = 1600; // Halbe Zeit zwischen Pulsationen RgbColor schwarz (0); // Schaltfläche Jazz-Float Button1_total = 0; int-Glättung = 50; const int debounce = 5; float Button1[entprellen]; bool PWR = 0; NeoPixelBus-Ring (PixelCount, PixelPin); Void setup () { Serial.begin (115200); Serial.println ("Booten"); WiFi.mode(WIFI_STA); WiFi.begin(ssid, Passwort); while (WiFi.waitForConnectResult () != WL_CONNECTED) { Serial.println ("Verbindung fehlgeschlagen!"); Verzögerung (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(); aufrechtzuerhalten. aufrechtzuerhalten. Void Schleife () { if (millis () < 600000) {ArduinoOTA.handle ();} else if (wifi_timout = = 0) { ArduinoOTA.end (); wifi_timout = 1; WiFi.mode (WIFI_OFF); btStop(); aufrechtzuerhalten. Wenn (button1_capture () = = 1) {ring. ClearTo (schwarz); ring. Show (); PWR = !PWR; } if (millis()<1500){PWR = 0;} if (ring. CanShow()&&PWR==1){Light(0);} delay(10); } void OTA_init(){ ArduinoOTA.onStart(() { String type; if (ArduinoOTA.getCommand() == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filesystem"; // HINWEIS: if SPIFFS aktualisieren Dies wäre der Ort, um SPIFFS mit SPIFFS.end() Serial.println("Start update" + type); }).onEnd(() { Serial.println("\nEnd"); }).onProgress((unsigned int progress, unsigned int total) { Serial.printf("Progress: %u%%\r", (progress / (total / 100))); }).onError((ota_error_t error) { Serial.printf("Error[%u]:", error); if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) Serial. println("Ende fehlgeschlagen"); }); ArduinoOTA.begin(); Serial.println ("Bereit"); Serial.print ("IP-Adresse: "); Serial.println (WiFi.localIP()); } int button1_capture(){ for (int i=0; i<(debounce-1);i++){ Button1=Button1[i+1]; } Button1[debounce-1] = (touchRead(T0)); Float-Strom = MaxArray (Button1); float Button1_smooth = Button1_total/Glättung; // Float-Strom = AveArray (Button1); Serial.print (Button1_smooth); Serial.print (" "); Serial.print (aktuell); Serial.print (" "); Serial.println (Button1 [debounce-1]); if (aktuell < (0,85*Button1_smooth)){ Button1_total = 0; //funktioniert als Entprellung return 1; }sonst{ Button1_total = aktuell +Button1_total -Button1_smooth; } Rückgabe 0; aufrechtzuerhalten. Float MaxArray (float MaxMe) { float mxm = MaxMe[0]; float mm = MaxMe[0]; für (int i=0; imxm) {mxm = MaxMe; } } return mxm; aufrechtzuerhalten. Float AveArray (float AveMe ) { Float total = 0; Schwimmer ave = 0; für (int i=0; i
Schritt 3: Montage
Verdrahten Sie Ihr Board wie gezeigt und überprüfen Sie, ob es funktioniert.
Das mit dem „Griff“verbundene Netz fungiert als Touch-Taste. Auf meinem Board ist der ESP32 T0 an D4 angeschlossen. Sie müssen dies überprüfen, wenn Sie ein anderes Board verwenden.
Das Anbringen eines blanken Drahtes an diesem Stift verhält sich genauso. Durch zweimaliges Drücken wird es wie ein Nachtlicht auf niedrig geschaltet. 3 mal etwas heller und 4 mal weiß.
Schritt 4: Montieren Sie die Teile in den Helm
Zum Einschalten der Lampe verwenden wir den Griff des Helms als Berührungssensor. Dies bedeutet, dass er vom Rest des Helms isoliert sein muss. Griff abnehmen und Kontaktfläche mit Isolierband abdecken. Ich habe braunes Klebeband verwendet, um es einzublenden, es ist im Bild blau hervorgehoben. Bohren Sie die Löcher so, dass die Schrauben im Spiel sind und auf der anderen Seite mit einigen Kunststoffscheiben wieder zusammensetzbar sind.
Verbinden Sie Ihren Knopfstift mit einem Crimpverbinder mit einer der Griffschrauben.
Wenn Sie eine schwimmende Stromversorgung (so ziemlich alle) verwenden möchten, müssen Sie auf die gleiche Weise einen GND-Pin mit dem Helmkörper verbinden. Um nun die Lampe einzuschalten, legen Sie eine Hand auf den Helm und berühren Sie mit der anderen den Griff.
Schritt 5: Schließen Sie die Stromversorgung an
Schrauben Sie die Micro-USB-Breakout-Platine an den 3D-gedruckten Schottanschluss und befestigen Sie sie dann mit der Mutter.
Stattdessen kann jedes 5-V-DC-Netzteil verwendet werden, aber USB-Ladegeräte sind in meinem Haus reichlich vorhanden. Ich habe ein geflochtenes USB-Kabel verwendet, um einen alten Flex nachzuahmen und den Look zu vervollständigen.
Damit bist du fertig.
Wenn Sie den Code ändern möchten, um zusätzliche Farben, Effekte oder Timer auszuprobieren, steht er bei jedem Anschließen für die ersten 10 Minuten als Arduino-OTA-Gerät zur Verfügung. Dies wird dann ausgeschaltet, um Strom zu sparen.