Obsah:

Dotyková lampa potápěčské přilby: 5 kroků
Dotyková lampa potápěčské přilby: 5 kroků

Video: Dotyková lampa potápěčské přilby: 5 kroků

Video: Dotyková lampa potápěčské přilby: 5 kroků
Video: Dotyková RGB stolní lampa – Crystal Diamond 2024, Listopad
Anonim
Dotyková lampa potápěčské přilby
Dotyková lampa potápěčské přilby
Dotyková lampa potápěčské přilby
Dotyková lampa potápěčské přilby
Dotyková lampa potápěčské přilby
Dotyková lampa potápěčské přilby
Dotyková lampa potápěčské přilby
Dotyková lampa potápěčské přilby

V tomto pokynu

Budete potřebovat

  1. Potápěčská helma nebo ekvivalent
  2. Neopixel kompatibilní LED kroužek (použil jsem prsten s 38 LED)
  3. Deska Wemos ESP32 (nebo ekvivalent)
  4. 3D tiskárna

Krok 1: Vytiskněte tyto součásti

Pokud používáte jinou potápěčskou helmu, tyto části se možná budou muset přizpůsobit. Zjistil jsem, že ta, kterou mám, je docela běžná

Krok 2: Nahrajte kód

Vložte ssid a heslo do kódu a poté nahrajte na svou nástěnku. To je umožněno OTA odesílání nového kódu po sestavení projektu. K použití této desky budete muset nainstalovat NeoPixelBus od společnosti Makuna, který je k dispozici zde https://github.com/Makuna/NeoPixelBus. Také budete muset nainstalovat definice desky ESP32 do prostředí arduino.

// Wifi Jazz #include #include #include #include bool wifi_timout = 0; const char* ssid = "SSID"; const char* heslo = "Heslo"; // Neopixelový jazz #include const uint16_t PixelCount = 38; konst uint8_t PixelPin = 19; int colorSaturation = 50; int Jas = 50; int R = 0; int G = 0; int B = 0; int Pulse = 1600; // Poloviční doba mezi pulzacemi RgbColor černá (0); // Tlačítko Jazz float Button1_total = 0; int vyhlazení = 50; const int debounce = 5; float Button1 [odskakovat]; bool PWR = 0; Prsten NeoPixelBus (PixelCount, PixelPin); neplatné nastavení () {Serial.begin (115200); Serial.println ("Zavádění"); WiFi.mode (WIFI_STA); WiFi.begin (ssid, heslo); while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {Serial.println ("Připojení se nezdařilo!"); zpoždění (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); } neplatné OTA_init () {ArduinoOTA.onStart ( () {typ řetězce; if (ArduinoOTA.getCommand () == U_FLASH) type = "sketch"; else // U_SPIFFS typ = "souborový systém"; // POZNÁMKA: pokud aktualizace SPIFFS toto by bylo místo, kde můžete odpojit SPIFFS pomocí SPIFFS.end () Serial.println ("Začít aktualizovat" + typ);}).onEnd ( () {Serial.println ("\ nEnd");}).onProgress ( (průběh bez znaménka, celkový součet bez znaménka) {Serial.printf ("Průběh:%u %% / r", (průběh / (celkem / 100)));}).onError ( (ota_error_t chyba) {Serial.printf ("Chyba [%u]:", chyba); if (chyba == 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 ("Konec se nezdařil");}); ArduinoOTA.begin (); Serial.println ("Připraveno"); Serial.print ("IP adresa:"); 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 current = MaxArray (Button1); float Button1_smooth = Button1_total/smoothing; // float current = AveArray (Button1); Serial.print (Button1_smooth); Serial.print (""); Serial.print (aktuální); Serial.print (""); Serial.println (Button1 [debounce-1]); if (aktuální <(0,85*Button1_smooth)) {Button1_total = 0; // funguje jako návratnost odskoku 1; } else {Button1_total = aktuální +Button1_total -Button1_smooth; } návrat 0; } float MaxArray (float MaxMe ) {float mxm = MaxMe [0]; float mnm = MaxMe [0]; pro (int i = 0; imxm) {mxm = MaxMe ; }} vrátit mxm; } float AveArray (float AveMe ) {float total = 0; float ave = 0; pro (int i = 0; i

Krok 3: Sestavení

Shromáždění
Shromáždění

Zapojte desku podle obrázku a zkontrolujte, zda funguje.

Síť připojená k „držadlu“bude fungovat jako dotykové tlačítko. Na mé desce je ESP32 T0 připojen k D4. Pokud používáte jinou desku, budete to muset zkontrolovat.

Připojení holého vodiče k tomuto kolíku se bude chovat stejně. Dvojitým stisknutím jej zapnete na nízkou úroveň jako noční světlo. 3krát trochu jasnější a 4krát bílé.

Krok 4: Sestavte součásti do helmy

Sestavte díly do přilby
Sestavte díly do přilby
Sestavte díly do přilby
Sestavte díly do přilby

K zapnutí lampy použijeme rukojeť helmy jako dotykový senzor. To znamená, že musí být izolován od zbytku helmy. Sejměte rukojeť a překryjte kontaktní plochu izolační páskou. Použil jsem hnědou pásku, aby to splynulo, na obrázku je zvýrazněno modře. Vyvrtejte otvory tak, aby byly šrouby ve vůli a znovu je bylo možné znovu uzavřít pomocí některých plastových podložek na druhé straně.

Připojte svůj knoflík k jednomu z šroubů rukojetí pomocí krimpovacího konektoru.

Pokud plánujete použít plovoucí napájecí zdroj (téměř všechny), budete muset stejným způsobem připojit kolík GND k tělu helmy. Nyní pro zapnutí lampy položte jednu ruku na helmu a druhou se dotkněte rukojeti.

Krok 5: Připojte napájení

Image
Image
Připojte napájení
Připojte napájení

Přišroubujte desku micro USB breakout k 3D tištěnému přepážkovému konektoru a poté ji zajistěte maticí.

Místo toho lze použít jakýkoli napájecí zdroj 5 V DC, ale v mém domě je spousta USB nabíječek. Použil jsem pletený USB kabel, abych napodobil starý flex a dokončil vzhled.

Tím jste hotovi.

Pokud chcete kód upravit tak, aby vyzkoušel další barvy, efekty nebo časovače, bude k dispozici jako zařízení arduino OTA po dobu prvních 10 minut pokaždé, když je zapojen. Poté se vypne, aby šetřil energii.

Doporučuje: