Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
I dette instruerbare
Du vil trenge
- Dykkerhjelm eller tilsvarende
- Neopixel -kompatibel LED -ring (jeg brukte en ring med 38 lysdioder)
- Wemos ESP32 -kort (eller tilsvarende)
- 3D -skriver
Trinn 1: Skriv ut disse delene
Disse delene må kanskje tilpasses hvis du bruker en annen dykkerhjelm, jeg lærte at den jeg har er ganske vanlig
Trinn 2: Last opp koden
Plasser ssid og passord i koden, og last deretter opp til brettet ditt. Dette er der for å tillate OTA å laste opp ny kode etter at prosjektet er satt sammen. Du må installere NeoPixelBus av Makuna tilgjengelig her https://github.com/Makuna/NeoPixelBus Du må også installere ESP32 -kortdefinisjonene i arduino -miljøet for å kunne bruke dette kortet.
// Wifi Jazz #include #include #include #include bool wifi_timout = 0; const char* ssid = "SSID"; const char* password = "Password"; // Neopixel jazz #include const uint16_t PixelCount = 38; const uint8_t PixelPin = 19; int colorSaturation = 50; int Lysstyrke = 50; int R = 0; int G = 0; int B = 0; int Puls = 1600; // Halv tid mellom pulsasjoner RgbColor svart (0); // Button Jazz float Button1_total = 0; int utjevning = 50; const int debounce = 5; float Button1 [debounce]; bool PWR = 0; NeoPixelBus -ring (PixelCount, PixelPin); ugyldig oppsett () {Serial.begin (115200); Serial.println ("oppstart"); WiFi.mode (WIFI_STA); WiFi.begin (ssid, passord); mens (WiFi.waitForConnectResult ()! = WL_CONNECTED) {Serial.println ("Tilkobling mislyktes!"); forsinkelse (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 (svart); ring. Show (); PWR =! PWR; } if (millis () <1500) {PWR = 0;} if (ring. CanShow () && PWR == 1) {Light (0);} delay (10); } ugyldig OTA_init () {ArduinoOTA.onStart ( () {String type; if (ArduinoOTA.getCommand () == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filsystem"; // MERK: hvis oppdatering av SPIFFS dette ville være stedet for å avmontere SPIFFS ved å bruke SPIFFS.end () Serial.println ("Start oppdatering" + type);}).onEnd ( () {Serial.println ("\ nEnd");}).onProgress ( (unsigned int progress, unsigned int total) {Serial.printf ("Progress:%u %% / r", (progress / (total / 100)));}).onError ( (ota_error_t feil) {Serial.printf ("Feil [%u]:", feil); hvis (error == OTA_AUTH_ERROR) Serial.println ("Auth mislyktes"); ellers hvis (error == OTA_BEGIN_ERROR) Serial.println ("Start Mislyktes "); ellers hvis (feil == OTA_CONNECT_ERROR) Serial.println (" Koble til mislyktes "); ellers hvis (feil == OTA_RECEIVE_ERROR) Serial.println (" Motta mislyktes "); ellers hvis (feil == OTA_END_ERROR) Seriell. println ("Slutt mislyktes");}); ArduinoOTA.begin (); Serial.println ("Klar"); Serial.print ("IP -adresse:"); Serial.println (WiFi.localIP ()); } int button1_capture () {for (int i = 0; i <(debounce-1); i ++) {Button1 = Button1 [i+1]; } Knapp1 [debounce-1] = (touchRead (T0)); flytestrøm = MaxArray (Button1); float Button1_smooth = Button1_total/smoothing; // flytestrøm = AveArray (Button1); Serial.print (Button1_smooth); Serial.print (""); Serial.print (current); Serial.print (""); Serial.println (Button1 [debounce-1]); if (nåværende <(0,85*Button1_smooth)) {Button1_total = 0; // fungerer som en tilbakeslagsavkastning 1; } annet {Button1_total = current +Button1_total -Button1_smooth; } returnere 0; } float MaxArray (float MaxMe ) {float mxm = MaxMe [0]; float mnm = MaxMe [0]; for (int i = 0; imxm) {mxm = MaxMe ; }} returner mxm; } float AveArray (float AveMe ) {float total = 0; float ave = 0; for (int i = 0; i
Trinn 3: Montering
Koble opp brettet som vist, og sjekk at det fungerer.
Nettet som er koblet til 'håndtaket' vil fungere som en berøringsknapp. På brettet mitt er ESP32 T0 festet til D4. Du må sjekke dette hvis du bruker et annet bord.
Å feste en ledning til denne pinnen vil oppføre seg på samme måte. Hvis du trykker på den to ganger, slås den på som et nattlys. 3 ganger litt lysere og 4 ganger hvit.
Trinn 4: Monter delene i hjelmen
For å slå på lampen bruker vi håndtaket på hjelmen som en berøringssensor. Dette betyr at den må isoleres fra resten av hjelmen. Fjern håndtaket og dekk til kontaktflaten med isolasjonstape. Jeg brukte brun tape for å få den til å smelte inn, den er markert blå i bildet. Bor hullene slik at skruene er i klaring og kan settes sammen med noen plastskiver på den andre siden.
Koble knappnålen til en av håndtakets skruer ved hjelp av en krympekontakt.
Hvis du planlegger å bruke en flytende strømforsyning (stort sett alle), må du koble en GND -pinne til hjelmen på samme måte. Nå for å slå på lampen, legg den ene hånden på hjelmen og berør håndtaket med den andre.
Trinn 5: Koble til strømmen
Skru mikro -USB -utbruddskortet til den 3D -trykte skottkontakten og fest den på plass med mutteren.
Enhver 5V DC strømforsyning kan brukes i stedet, men usb -ladere er det mange av i huset mitt. Jeg brukte en flettet usb -kabel for å etterligne en gammel flex og fullføre utseendet.
Det er det du er ferdig.
Hvis du vil endre koden for å prøve ut ekstra farger, effekter eller tidtakere, vil den være tilgjengelig som en arduino OTA -enhet de første 10 minuttene hver gang den kobles til. Dette slås deretter av for å spare strøm.