Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
V tomto pokynu
Budete potřebovat
- Potápěčská helma nebo ekvivalent
- Neopixel kompatibilní LED kroužek (použil jsem prsten s 38 LED)
- Deska Wemos ESP32 (nebo ekvivalent)
- 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í
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
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í
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.