Оглавление:

Сенсорная лампа для водолазного шлема: 5 шагов
Сенсорная лампа для водолазного шлема: 5 шагов

Видео: Сенсорная лампа для водолазного шлема: 5 шагов

Видео: Сенсорная лампа для водолазного шлема: 5 шагов
Видео: Террария ДЕМОНИЧЕСКАЯ РАКОВИНА или Как найти Демоническая раковина | Террария 1.4.4.x 2024, Июль
Anonim
Сенсорная лампа для водолазного шлема
Сенсорная лампа для водолазного шлема
Сенсорная лампа для водолазного шлема
Сенсорная лампа для водолазного шлема
Сенсорная лампа для водолазного шлема
Сенсорная лампа для водолазного шлема
Сенсорная лампа для водолазного шлема
Сенсорная лампа для водолазного шлема

В этом поучительном

Тебе понадобится

  1. Водолазный шлем или аналогичный
  2. Светодиодное кольцо, совместимое с Neopixel (я использовал кольцо с 38 светодиодами)
  3. Плата Wemos ESP32 (или эквивалентная)
  4. 3д принтер

Шаг 1. Распечатайте эти детали

Эти части могут нуждаться в адаптации, если вы используете другой водолазный шлем, я узнал, что тот, который у меня есть, довольно распространен.

Шаг 2. Загрузите код

Поместите свой ssid и пароль в код, а затем загрузите его на свою доску. Это позволяет OTA загружать новый код после сборки проекта. Вам нужно будет установить NeoPixelBus от Makuna, доступный здесь https://github.com/Makuna/NeoPixelBus. Вам также потребуется установить определения платы ESP32 в среду arduino, чтобы использовать эту плату.

// Wifi Jazz #include #include #include #include bool wifi_timout = 0; const char * ssid = "SSID"; const char * password = "Пароль"; // Неопиксельный джаз #include const uint16_t PixelCount = 38; const uint8_t PixelPin = 19; int colorSaturation = 50; int Яркость = 50; int R = 0; int G = 0; int B = 0; int Pulse = 1600; // Половина времени между пульсациями RgbColor black (0); // Кнопка Jazz float Button1_total = 0; int сглаживание = 50; const int debounce = 5; float Button1 [debounce]; bool PWR = 0; Кольцо NeoPixelBus (PixelCount, PixelPin); void setup () {Serial.begin (115200); Serial.println («Загрузка»); WiFi.mode (WIFI_STA); WiFi.begin (ssid, пароль); while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {Serial.println («Соединение не удалось!»); задержка (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 (); кольцо. Show (); } void loop () {if (millis () <600000) {ArduinoOTA.handle ();} else if (wifi_timout == 0) {ArduinoOTA.end (); wifi_timout = 1; WiFi.mode (WIFI_OFF); btStop (); } если (button1_capture () == 1) {ring. ClearTo (черный); 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"; // ПРИМЕЧАНИЕ: если при обновлении SPIFFS это место для размонтирования SPIFFS с помощью SPIFFS.end () Serial.println ("Начать обновление" + 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 ("Ошибка [% u]:", ошибка); 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 ("Конец сбой");}); ArduinoOTA.begin (); Serial.println («Готово»); Serial.print ("IP-адрес:"); Serial.println (WiFi.localIP ()); } int button1_capture () {для (int i = 0; i <(debounce-1); i ++) {Button1 = Button1 [i + 1]; } Button1 [debounce-1] = (touchRead (T0)); плавающий ток = MaxArray (Button1); float Button1_smooth = Button1_total / сглаживание; // с плавающей точкой current = AveArray (Button1); Serial.print (Button1_smooth); Serial.print (""); Serial.print (текущий); Serial.print (""); Serial.println (Button1 [debounce-1]); если (текущий <(0,85 * Button1_smooth)) {Button1_total = 0; // работает как противодействие return 1; } else {Button1_total = текущий + Button1_total -Button1_smooth; } return 0; } float MaxArray (float MaxMe ) {float mxm = MaxMe [0]; float mnm = MaxMe [0]; для (int я = 0; imxm) {mxm = MaxMe [я]; }} return mxm; } float AveArray (float AveMe ) {float total = 0; float ave = 0; для (int i = 0; i

Шаг 3: Сборка

сборка
сборка

Подключите плату, как показано, и убедитесь, что она работает.

Сеть, подключенная к «ручке», будет действовать как сенсорная кнопка. На моей плате ESP32 T0 подключен к D4. Вам нужно будет это проверить, если вы используете другую плату.

Присоединение оголенного провода к этому контакту будет вести себя так же. Двойное нажатие включит его, как ночник. В 3 раза ярче и в 4 раза белее.

Шаг 4: соберите детали в шлем

Соберите детали в шлем
Соберите детали в шлем
Соберите детали в шлем
Соберите детали в шлем

Чтобы включить лампу, мы будем использовать ручку шлема в качестве сенсорного датчика. Это означает, что он должен быть изолирован от остальной части шлема. Снимите ручку и заклейте контактную поверхность изоляционной лентой. Я использовал коричневую ленту, чтобы она растекалась, на изображении она выделена синим цветом. Просверлите отверстия так, чтобы винты находились в зазоре, и соберите несколько пластиковых шайб с другой стороны.

Присоедините булавку к одному из винтов ручки с помощью обжимного соединителя.

Если вы планируете использовать плавающий источник питания (почти все из них), вам нужно будет таким же образом подключить контакт GND к корпусу шлема. Теперь, чтобы включить лампу, возьмитесь одной рукой за шлем, а другой коснитесь ручки.

Шаг 5: Подключите питание

Image
Image
Подключите питание
Подключите питание

Прикрутите коммутационную плату micro USB к разъему перегородки, напечатанному на 3D-принтере, и закрепите гайкой.

Вместо этого можно использовать любой источник питания 5 В постоянного тока, но у меня дома полно зарядных устройств. Я использовал плетеный USB-кабель, чтобы имитировать старую гибкость и завершить внешний вид.

Вот и все, что вам нужно.

Если вы хотите изменить код, чтобы опробовать дополнительные цвета, эффекты или таймеры, тогда оно будет доступно как устройство Arduino OTA в течение первых 10 минут при каждом подключении. Затем оно отключится для экономии энергии.

Рекомендуемые: