Spisu treści:

Lampa dotykowa do kasku nurkowego: 5 kroków
Lampa dotykowa do kasku nurkowego: 5 kroków

Wideo: Lampa dotykowa do kasku nurkowego: 5 kroków

Wideo: Lampa dotykowa do kasku nurkowego: 5 kroków
Wideo: ZLOT MŁODZIEŻY GRYPSUJĄCEJ 2024, Listopad
Anonim
Lampa dotykowa do kasku nurkowego
Lampa dotykowa do kasku nurkowego
Lampa dotykowa do kasku nurkowego
Lampa dotykowa do kasku nurkowego
Lampa dotykowa do kasku nurkowego
Lampa dotykowa do kasku nurkowego
Lampa dotykowa do kasku nurkowego
Lampa dotykowa do kasku nurkowego

W tym instruktażowym

Będziesz potrzebować

  1. Kask do nurkowania lub odpowiednik
  2. Pierścień LED kompatybilny z Neopixel (użyłem pierścienia z 38 diodami LED)
  3. Płyta Wemos ESP32 (lub odpowiednik)
  4. drukarka 3d

Krok 1: Wydrukuj te części

Te części mogą wymagać dostosowania, jeśli używasz innego kasku do nurkowania, dowiedziałem się, że ten, który mam, jest dość powszechny

Krok 2: Prześlij kod

Umieść swój identyfikator SSid i hasło w kodzie, a następnie prześlij je na swoją tablicę. Ma to na celu umożliwienie OTA wgrywania nowego kodu po zmontowaniu projektu. Będziesz musiał zainstalować NeoPixelBus by Makuna dostępny tutaj https://github.com/Makuna/NeoPixelBus Będziesz także musiał zainstalować definicje płyty ESP32 w środowisku arduino, aby korzystać z tej płyty.

//Wifi Jazz #include #include #include #include bool wifi_timout = 0; const char* ssid = "SSID"; const char* hasło = "Hasło"; //Neopixel jazz #include const uint16_t PixelCount = 38; const uint8_t PixelPin = 19; int kolor Nasycenie = 50; int Jasność = 50; int R = 0; int G = 0; int B = 0; wewn Impuls = 1600; //Połowa czasu między pulsacjami RgbColor black(0); //Button Jazz float Button1_total = 0; wygładzanie int = 50; const int debounce = 5; pływak Przycisk1[odbicie]; logiczny PWR = 0; Pierścień NeoPixelBus (PixelCount, PixelPin); void setup() { Serial.begin(115200); Serial.println("Uruchamianie"); tryb WiFi (WIFI_STA); WiFi.begin(SSid, hasło); while (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.println("Połączenie nie powiodło się!"); opóźnienie(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); pierścień. Rozpocznij(); pierścień. Pokaż(); } void loop() { if (millis()<600000){ArduinoOTA.handle();} else if (wifi_timout==0){ ArduinoOTA.end(); wifi_timout = 1; tryb WiFi (WIFI_OFF); btStop(); } if (button1_capture()==1){ ring. ClearTo(czarny);ring. Show(); PWR = !PWR; } if (millis()<1500){PWR = 0;} if (ring. CanShow()&&PWR==1){Light(0);} opóźnienie(10); } void OTA_init(){ ArduinoOTA.onStart(() { String type; if (ArduinoOTA.getCommand() == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filesystem"; // UWAGA: if aktualizacja SPIFFS byłoby to miejsce na odmontowanie SPIFFS za pomocą SPIFFS.end() Serial.println("Rozpocznij aktualizację " + wpisz); }).onEnd(() { Serial.println("\nEnd"); }).onProgress((postęp bez znaku, całkowita liczba bez znaku) { Serial.printf("Postęp: %u%%\r", (postęp / (łącznie / 100))); }).onError((ota_error_t error) { Serial.printf("Błąd[%u]: ", błąd); if (błąd == OTA_AUTH_ERROR) Serial.println("Uwierzytelnienie nie powiodło się"); else if (błąd == OTA_BEGIN_ERROR) Serial.println("Rozpocznij Niepowodzenie"); else if (błąd == OTA_CONNECT_ERROR) Serial.println("Połączenie nie powiodło się"); else if (błąd == OTA_RECEIVE_ERROR) Serial.println("Odbiór nie powiodło się"); else if (błąd == OTA_END_ERROR) Serial. println("Nieudane zakończenie"); }); ArduinoOTA.początek(); Serial.println("Gotowy"); Serial.print("adres IP: "); Serial.println(WiFi.localIP()); } int button1_capture(){ for (int i=0; i<(debounce-1);i++){ Button1=Button1[i+1]; } Przycisk1[debounce-1] = (dotknijRead(T0)); prąd pływający = MaxArray(Przycisk1); float Button1_smooth = Button1_total/wygładzanie; // float current = AveArray(Button1); Serial.print(Button1_smooth);Serial.print(" ");Serial.print(current);Serial.print(" ");Serial.println(Przycisk1[debounce-1]); if (bieżący < (0.85*Button1_smooth)){ Button1_total = 0; //działa jako debounce return 1; }else{ Button1_total = aktualny +Button1_total -Button1_smooth; } zwróć 0; } float MaxArray(float MaxMe){ float mxm = MaxMe[0]; pływak mnm = MaxMe[0]; for (int i=0; imxm) { mxm = MaxMe; } } return mxm; } float AveArray(float AveMe){ float total = 0; zmiennoprzecinkowa śr. = 0; dla (int i=0; i

Krok 3: Montaż

montaż
montaż

Podłącz swoją tablicę jak pokazano i sprawdź, czy działa.

Siatka podłączona do „uchwytu” będzie działała jak przycisk dotykowy. Na mojej płytce do D4 podpięty jest ESP32 T0. Musisz to sprawdzić, jeśli używasz innej płyty.

Dołączenie gołego przewodu do tego kołka będzie zachowywać się tak samo. Dwukrotne naciśnięcie go włączy nisko jak lampka nocna. 3 razy trochę jaśniejszy i 4 razy biały.

Krok 4: Zmontuj części w kasku

Zamontuj części w kasku
Zamontuj części w kasku
Zamontuj części w kasku
Zamontuj części w kasku

Aby włączyć lampę, użyjemy uchwytu kasku jako czujnika dotyku. Oznacza to, że musi być izolowany od reszty kasku. Zdejmij uchwyt i zakryj powierzchnię styku taśmą izolacyjną. Użyłem brązowej taśmy, aby się wtopił, jest podświetlony na niebiesko na obrazie. Wywierć otwory tak, aby śruby były w luzie i ponownie zmontuj je z kilkoma plastikowymi podkładkami po drugiej stronie.

Podłącz pinezkę do jednej ze śrub uchwytów za pomocą złącza zaciskanego.

Jeśli planujesz użyć zasilacza pływającego (prawie wszystkie), to będziesz musiał podłączyć pin GND do korpusu kasku w ten sam sposób. Teraz, aby włączyć lampę, połóż jedną rękę na kasku, a drugą dotknij uchwytu.

Krok 5: Podłącz zasilanie

Image
Image
Podłącz zasilanie
Podłącz zasilanie

Przykręć płytkę zaciskową micro USB do drukowanego w 3D złącza grodzi, a następnie zabezpiecz nakrętką.

Można użyć dowolnego zasilacza 5 V DC, ale w moim domu jest mnóstwo ładowarek USB. Użyłem plecionego kabla USB, aby naśladować starą taśmę i dopełnić wygląd.

To już koniec.

Jeśli chcesz zmodyfikować kod, aby wypróbować dodatkowe kolory, efekty lub timery, będzie on dostępny jako urządzenie arduino OTA przez pierwsze 10 minut po każdym podłączeniu. Następnie wyłączy się, aby oszczędzać energię.

Zalecana: