جدول المحتويات:

مصباح لمس خوذة الغوص: 5 خطوات
مصباح لمس خوذة الغوص: 5 خطوات

فيديو: مصباح لمس خوذة الغوص: 5 خطوات

فيديو: مصباح لمس خوذة الغوص: 5 خطوات
فيديو: لا تفقد معداتك مرة أخرى | إرفاق Bolt Snap في ثوان! 2024, يوليو
Anonim
مصباح لمس خوذة الغوص
مصباح لمس خوذة الغوص
مصباح لمس خوذة الغوص
مصباح لمس خوذة الغوص
مصباح لمس خوذة الغوص
مصباح لمس خوذة الغوص
مصباح لمس خوذة الغوص
مصباح لمس خوذة الغوص

في هذا التدريب

سوف تحتاج

  1. خوذة الغوص أو ما يعادلها
  2. حلقة LED متوافقة مع Neopixel (استخدمت حلقة بها 38 مصباحًا)
  3. لوحة Wemos ESP32 (أو ما يعادلها)
  4. طابعة 3D

الخطوة 1: اطبع هذه الأجزاء

قد تحتاج هذه الأجزاء إلى التكيف إذا كنت تستخدم خوذة غوص مختلفة ، فقد تعلمت أن الجزء الذي أملكه شائع إلى حد ما

الخطوة الثانية: قم بتحميل الكود

ضع ssid وكلمة المرور في الكود ثم قم بتحميله على منتداك. هذا موجود للسماح لـ OTA بتحميل رمز جديد بعد تجميع المشروع. ستحتاج إلى تثبيت NeoPixelBus بواسطة Makuna والمتوفر هنا https://github.com/Makuna/NeoPixelBus. ستحتاج أيضًا إلى تثبيت تعريفات لوحة ESP32 في بيئة اردوينو لاستخدام هذه اللوحة.

// Wifi Jazz #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 ؛ كثافة اللون التشبع = 50 ؛ سطوع int = 50 ؛ int R = 0 ؛ كثافة العمليات G = 0 ؛ كثافة العمليات ب = 0 ؛ نبض int = 1600 ؛ // نصف الوقت بين النبضات RgbColor أسود (0) ؛ // Button Jazz float Button1_total = 0 ؛ تجانس int = 50 ؛ const int debounce = 5 ؛ تعويم Button1 [debounce] ؛ منطقي PWR = 0 ؛ حلقة NeoPixelBus (PixelCount ، PixelPin) ؛ إعداد باطل () {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 () ، ring. Show () ؛ } حلقة باطلة () {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)؛ } باطل OTA_init () {ArduinoOTA.onStart ( () {String type؛ if (ArduinoOTA.getCommand () == U_FLASH) type = "sketch"؛ else // U_SPIFFS type = "filesystem"؛ // NOTE: if تحديث SPIFFS سيكون هذا هو المكان المناسب لإلغاء تحميل SPIFFS باستخدام SPIFFS.end () Serial.println ("بدء التحديث" + النوع) ؛}).onEnd ( () {Serial.println ("\ nEnd") ؛}).onProgress ( (التقدم غير الموقعة ، إجمالي عدد الصفحات غير الموقعة) {Serial.printf ("Progress:٪ u ٪٪ / r"، (progress / (total / 100)))؛}).onError ( (ota_error_t خطأ) {Serial.printf ("خطأ [٪ u]:" ، خطأ) ؛ إذا (خطأ == OTA_AUTH_ERROR) Serial.println ("فشل المصادقة") ؛ وإلا إذا (خطأ == OTA_BEGIN_ERROR) Serial.println ("ابدأ فشل ") ؛ وإلا إذا (خطأ == OTA_CONNECT_ERROR) Serial.println (" فشل الاتصال ") ؛ وإلا إذا (خطأ == OTA_RECEIVE_ERROR) Serial.println (" فشل الاستلام ") ؛ وإلا إذا (خطأ == OTA_END_ERROR) مسلسل. println ("فشل النهاية") ؛}) ؛ ArduinoOTA.begin () ، Serial.println ("جاهز") ؛ Serial.print ("عنوان IP:") ؛ Serial.println (WiFi.localIP ()) ؛ } int button1_capture () {for (int i = 0؛ i <(debounce-1)؛ i ++) {Button1 = Button1 [i + 1] ؛ } Button1 [debounce-1] = (touchRead (T0)) ؛ تعويم الحالي = MaxArray (Button1) ؛ تعويم Button1_smooth = Button1_total / smoothing ؛ // float 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 ؛ // يعمل كعائد للسحب 1 ؛ } آخر {Button1_total = current + Button1_total -Button1_smooth؛ } إرجاع 0؛ } تعويم MaxArray (تعويم MaxMe ) {float mxm = MaxMe [0]؛ تعويم mnm = MaxMe [0] ؛ لـ (int i = 0 ؛ imxm) {mxm = MaxMe ؛ }} إرجاع mxm؛ } تعويم AveArray (float AveMe ) {float total = 0؛ تعويم ave = 0 ؛ لـ (int i = 0 ؛ i

الخطوة 3: التجميع

المجسم
المجسم

قم بربط اللوحة الخاصة بك كما هو موضح وتحقق من أنها تعمل.

ستعمل الشبكة المتصلة بـ "المقبض" كزر لمس. على لوحي ، يتم توصيل ESP32 T0 بـ D4. سوف تحتاج إلى التحقق من هذا إذا كنت تستخدم لوحة مختلفة.

سيؤدي إرفاق سلك مكشوف إلى هذا الدبوس إلى التصرف بنفس الطريقة. سيؤدي الضغط عليه مرتين إلى تشغيله على الوضع المنخفض مثل ضوء الليل. 3 مرات أكثر إشراقًا و 4 مرات بيضاء.

الخطوة 4: قم بتجميع الأجزاء في الخوذة

قم بتجميع الأجزاء في الخوذة
قم بتجميع الأجزاء في الخوذة
قم بتجميع الأجزاء في الخوذة
قم بتجميع الأجزاء في الخوذة

لتشغيل المصباح ، سنستخدم مقبض الخوذة كجهاز استشعار باللمس. هذا يعني أنه يجب عزلها عن بقية الخوذة. انزع المقبض وقم بتغطية وجه التلامس بشريط عازل. لقد استخدمت الشريط البني لأجعله ممتزجًا ، وتم تمييزه باللون الأزرق في الصورة. احفر الفتحات بحيث تكون البراغي في خلوص وأعد وضعها ببعض الحلقات البلاستيكية على الجانب الآخر.

قم بتوصيل دبوس الزر الخاص بك بأحد مسامير المقابض باستخدام موصل تجعيد.

إذا كنت تخطط لاستخدام مصدر طاقة عائم (جميعها تقريبًا) ، فستحتاج إلى توصيل دبوس GND بجسم الخوذة بنفس الطريقة. الآن لتشغيل المصباح ، ضع إحدى يديك على الخوذة والمس المقبض بأخرى.

الخطوة 5: قم بتوصيل الطاقة

Image
Image
قم بتوصيل الطاقة
قم بتوصيل الطاقة

قم بربط لوحة الفصل USB الصغيرة بموصل الحاجز المطبوع ثلاثي الأبعاد ثم قم بتثبيتها في مكانها باستخدام الجوز.

يمكن استخدام أي مصدر طاقة بجهد 5 فولت تيار مستمر بدلاً من ذلك ، لكن شواحن USB متوفرة بكثرة في منزلي. لقد استخدمت كبل USB مضفرًا لتقليد ثني قديم وإكمال المظهر.

هذا هو انت انتهيت.

إذا كنت ترغب في تعديل الكود لتجربة ألوان أو تأثيرات أو مؤقتات إضافية ، فسيكون متاحًا كجهاز اردوينو OTA لأول 10 دقائق في كل مرة يتم توصيله فيها. سيتم إيقاف هذا بعد ذلك لتوفير الطاقة.

موصى به: