เครื่องซักผ้าพร้อม Wi-Fi คุ้มไหมที่จะซื้อ? สร้างเรือมหัศจรรย์ราคาประหยัดด้วยการควบคุม WiFi ตาม ESP8266 การควบคุมเครื่องผ่าน wifi

ทุกคนมีแฟชั่นและงานอดิเรกเป็นของตัวเอง ดังนั้นบางครั้งก็เป็นเรื่องดีที่ได้พบคนที่มีความคิดเหมือนกัน ชื่นชมการสะสมแสตมป์หรือทักษะในเกมบางเกม ต่อไปนี้เป็นการรวบรวมวิดีโอต่าง ๆ ที่อุทิศให้กับงานอดิเรกอย่างใดอย่างหนึ่ง ไม่ว่าคุณจะชอบหมากรุก เทนนิส หรือสะสมสัตว์ป่าเปลี่ยวไว้ใต้หลังคาของคุณ คุณจะพบได้ที่นี่ วิดีโอที่ดี- เนื้อหาที่คุณชอบ


ในปัจจุบัน งานอดิเรกอย่างหนึ่งได้รับความนิยมอย่างมากทั้งทางออนไลน์และในชีวิตจริง โดยส่วนใหญ่เข้าถึงได้เฉพาะผู้หญิงเท่านั้น นั่นคือการแต่งหน้าหน้ากล้อง สำหรับผู้ชมทั่วไปดูเหมือนว่าในวิดีโอเหล่านี้สาว ๆ เพียงแค่แต่งหน้าและทำเรื่องใหญ่จากภูเขา แต่ในความเป็นจริงแล้ว ความงามเหล่านี้กำลังแสดงทักษะทางศิลปะซึ่งพวกเขาได้พัฒนามาตลอดหลายปีที่ผ่านมา ในวิดีโอดังกล่าว คุณจะพบเคล็ดลับ เคล็ดลับในชีวิตประจำวัน และยังเน้นประเด็นที่เป็นประโยชน์มากมายที่คุณพลาดไปในชีวิต นางแบบโค้งงอและสไตลิสต์จะบอกคุณว่าควรเลือกอายแชโดว์แบบไหนและควรเลือกชุดไหนให้เหมาะกับทรงผมของคุณ สำหรับผู้หญิงหลายคน สิ่งนี้กลายเป็นงานอดิเรกที่พวกเธอทุ่มเทเกือบทั้งชีวิต


นอกจากการแต่งหน้าแล้ว สาว ๆ หลายคนยังชื่นชอบการช้อปปิ้ง จึงมักอัปโหลดการไปเที่ยวศูนย์การค้าท้องถิ่นบน YouTube เพื่อตุนเสื้อผ้าและเริ่มรีวิวและลองสวม เด็กผู้หญิงเหล่านี้มักจะสะสมชุดต่าง ๆ มากมายที่บ้านและบางคนก็สามารถเปิดร้านของตัวเองและขายเสื้อผ้าเป็นเวลาหลายปี - พวกเขามีชุดที่ซื้อมามากมาย และคอลเลกชันอันกว้างใหญ่ทั้งหมดก็ตกอยู่ที่เลนส์กล้อง พูดตามตรงฉันไม่เข้าใจว่าทำไมผู้หญิงหลายคนถึงดูสิ่งนี้ แต่มีลูกค้าสำหรับเนื้อหาประเภทนี้และมันก็แปลกนิดหน่อย


อย่างไรก็ตาม ไม่เพียงแต่สาวๆ ที่รักแฟชั่นและสไตล์เท่านั้น และยังมีงานอดิเรกที่แตกต่างกันอีกด้วย ผู้ชายยังมีงานอดิเรกที่แตกต่างกันมากมายที่สามารถทำให้ประหลาดใจได้จนถึงแก่นแท้ บางคนเก็บผ้าเช็ดปากจากร้านค้า บางคนชอบเล่นเกมจำลองการเล่นกีฬา (ซึ่งมันบ้าบอมากในตัวเอง) แต่ก็มีคนที่ใช้เวลาทั้งวันเพื่อรบกวนผู้หญิงและสะสมจูบของพวกเขา ในเวลาเดียวกัน พวกเขาต้องการบันทึกการผจญภัยด้วยกล้องวิดีโอ จากนั้นจึงนำวิดีโอไปแสดงต่อสาธารณะ และทำให้ตัวเองเป็นผู้ชายที่ยอดเยี่ยม


ไม่ว่าในกรณีใด ในโลกของเรามีงานอดิเรก กิจกรรม กิจการต่างๆ มากมาย และสิ่งเหล่านี้สามารถดึงดูดบุคคลที่มีกรอบความคิดที่แน่นอนได้เป็นระยะเวลาหนึ่ง และอาจตลอดชีวิตด้วยซ้ำ มีจำนวนมากจนไม่มีประโยชน์ที่จะแสดงรายการเพิ่มเติม ในหน้านี้คุณจะพบกับวิดีโอต่างๆ หลายร้อยรายการและสามารถเป็นเรื่องเกี่ยวกับอะไรก็ได้ ท้ายที่สุดแล้วมีกี่คนมีงานอดิเรกมากมาย แต่ละคนสามารถประดิษฐ์นักฆ่าเวลาเฉพาะสำหรับตนเองได้ บางครั้งคุณอาจประหลาดใจกับสิ่งที่สมองของมนุษย์สามารถทำได้เมื่อมันเบื่อ แต่อย่าแปลกใจถ้างานอดิเรกของคุณเองนั้นแปลกสำหรับใครบางคน


มองดูผู้คนทำในสิ่งที่พวกเขาชื่นชอบ หัวเราะกับความโง่เขลาของสิ่งที่เกิดขึ้น หรือเน้นย้ำกับตัวเองถึงบางสิ่งที่คุณสามารถหาประโยชน์ได้ในชีวิต ที่นี่ ความบันเทิง ข้อมูล และเนื้อหาวิดีโอที่มีสไตล์ส่วนใหญ่จะถูกรวบรวมไว้ที่นี่

รถ RC สามารถเป็นรถ WiFi ได้...?

รถ RC นั้นดี แต่รถ RC ราคาถูกมีระยะการใช้งานที่จำกัด และควบคุมโดยรีโมทคอนโทรลเฉพาะที่ให้มาในชุดเท่านั้น

ฉันซื้อ RC Jeep 4x4 พร้อมระบบกันสะเทือนแบบยืดหยุ่นและยางออฟโรดในราคาประมาณ 30 เหรียญสหรัฐ หลังจากเล่นเครื่องแล้วตัดสินใจว่าจะปรับปรุงให้ดีขึ้นได้ ความช่วยเหลือเกี่ยวกับ Wi-Fiและระบบปฏิบัติการ Android หลังจากใช้เวลาสักพักฉันก็ถอดบอร์ดออกจากเครื่องจนหมด ฉันวัดแรงดันไฟฟ้าบนบอร์ดนี้และพัฒนาระบบควบคุมมอเตอร์ที่ Arduino ช่วยด้วย- ระบบควบคุมแบบเดิมไม่ได้ใช้ PWM ในการควบคุมความเร็ว รถได้รับการออกแบบให้ขับข้ามสิ่งกีดขวางด้วยเกียร์ต่ำมากและส่งผลให้ช้ามาก วงจรของฉันใช้ PWM

ฉันใช้ Arduino มาหลายเดือนแล้ว ฉันยังซื้อ asynclabs WiFi Sheild สำหรับ Duemilanoe Arduino เพื่อทดลองกับ WiFi มันมาพร้อมกับไลบรารี่ที่ติดตั้งใน Arduino IDE ฉันสามารถสร้างโปรแกรมที่ให้คุณควบคุมมอเตอร์และทิศทางการเคลื่อนไหวโดยใช้ WiFi ได้

ด้วยความช่วยเหลือ วิชวลสตูดิโอฉันได้พัฒนาหน้าต่างโปรแกรมที่เชื่อมต่อกับเซิร์ฟเวอร์ของรถยนต์และให้คำสั่งแก่มัน หลังจากพยายามไม่กี่ครั้ง ฉันก็เขียนแอป Android ที่ใช้ตัวตรวจวัดความเร่งในการควบคุมรถ

เครื่องมือและองค์ประกอบ

นี่คือรายการเครื่องมือและรายการทั่วไปที่ใช้ในโปรเจ็กต์นี้ เอกสารของ Eagle ให้รายละเอียดที่แน่นอน ข้อกำหนดทางเทคนิคส่วนประกอบที่ใช้

มัลติมิเตอร์
หัวแร้ง
ประสาน
ไขควง
โซลูชั่นการแกะสลักกระดาน
ไฟเบอร์กลาสฟอยล์
คีม
อาร์ดูโน่
โล่ WiFi ของ AsyncLabs
ขั้วต่อ RJ45
ตัวขับมอเตอร์ H-Bridge
ตัวเก็บประจุ

ไดร์เวอร์มอเตอร์

การใช้ Eagle ฉันออกแบบวงจรนี้และสร้าง แผงวงจรพิมพ์สำหรับเธอ มันทำหน้าที่เป็นไดรเวอร์มอเตอร์และตัวควบคุมพลังงานสำหรับ Arduino
ซึ่งช่วยให้สามารถใช้แบตเตอรี่มาตรฐาน 7.2V เพื่อจ่ายไฟให้กับมอเตอร์หลักและมอเตอร์บังคับเลี้ยวและ Arduino

วงจรนี้ใช้ไดรเวอร์ H-bridge แบบรวมคู่ SN754410 เพื่อควบคุมมอเตอร์ หมุดควบคุมไดรเวอร์เชื่อมต่อกับสายเคเบิล RJ45 ซึ่งเชื่อมต่อกับ AsyncLabs WiFi Sheild

โล่ Arduino

การใช้ไลบรารี SparkFun ใน Eagle ฉันออกแบบ Arduino Shield ซึ่งจะส่งพินไปยัง WiFi Shield และเชื่อมต่อกับไดรเวอร์มอเตอร์ผ่านขั้วต่อ RJ45 และขั้วต่อสกรู 2 ตัว

pinout ของพิน RJ45 มีความสำคัญมาก ข้อผิดพลาดในการเชื่อมต่ออาจนำไปสู่ผลลัพธ์ที่คาดเดาไม่ได้ และคุณจะต้องทำบอร์ดใหม่

การแกะสลัก PCB

หัวข้อนี้ครอบคลุมหลายครั้งแล้ว และฉันจะไม่ลงรายละเอียดเกี่ยวกับเรื่องนี้
ฉันใช้มันและมันเหมาะกับฉัน และด้วยประสบการณ์มันให้ผลลัพธ์ที่ยอดเยี่ยม

Velcro ใช้สำหรับติดบอร์ดเข้ากับเคส ฉันโชคดีเพราะ... รถของฉันมีพื้นที่สำหรับอุปกรณ์อิเล็กทรอนิกส์มากมายใต้โครงท่อ
ฉันลืมถ่ายรูปการเชื่อมต่อระหว่างบอร์ดควบคุมมอเตอร์กับบอร์ดอื่นๆ แต่มันเข้ากันได้ดีและไม่ใช้พื้นที่มากนักในเคส

โปรแกรม

รหัสของฉันอาจไม่มีประสิทธิภาพเพียงพอ แต่ใช้งานได้

เครื่องพิมพ์ดีด

ฉันสามารถสร้าง CarServer ตามตัวอย่าง SocketServer ที่ฉันได้รับจาก AsynLabs Wifi Sheild
คุณจะต้องป้อนข้อมูลเกี่ยวกับของคุณ เครือข่ายไร้สายไปจนถึงโค้ด Arduino เมื่อเปิดเครื่องแล้ว ให้เวลา 15-45 วินาทีเพื่อสร้างการเชื่อมต่อกับเราเตอร์ ไฟ LED สีแดงบน WiFi Shield หมายความว่าการเชื่อมต่อได้ถูกสร้างขึ้นแล้ว

ฉันสร้างโปรแกรมนี้โดยใช้ C# และ MS Visual Studio 2008 ฉันสร้างหน้าต่างที่สวยงามและสามารถควบคุมรถได้ด้วยลูกศร

ทำไมไม่ควบคุมรถจากโทรศัพท์ของคุณ?

ความคิดนี้เกิดขึ้นกับฉันประมาณหนึ่งสัปดาห์หลังจากซื้อ DroidX ฉันเริ่มทดลองและใช้ในที่สุด ระบบปฏิบัติการ Android- ฉันพบแอปที่คล้ายกันซึ่งใช้มาตรความเร่งในการควบคุม เมื่อดูแอปพลิเคชันเหล่านี้ ฉันก็เขียนเอง

วาง IP และพอร์ตที่ระบุในโค้ด Arduino ถือโทรศัพท์ของคุณในแนวนอน จากนั้นเอียงมันออกจากตัวคุณเพื่อไปข้างหน้าและเอียงเข้าหาตัวเพื่อถอยหลัง ใช้โทรศัพท์ของคุณเป็นพวงมาลัย
นี่เป็นแอป Android หลักแอปแรกของฉัน มันยังมีข้อบกพร่องอยู่บ้าง แต่ส่วนใหญ่ก็ใช้งานได้ดี

ขับรถ 4x4 ของคุณด้วย WiFi ในบ้านของคุณ!

ฉันมีช่วงเวลาที่ดีในการสร้างโครงการนี้ ฉันได้รับความรู้และทักษะใหม่ๆ มากมาย และตอนนี้ฉันมีรถ 4x4 ที่สามารถควบคุมได้จากโทรศัพท์ของฉัน

ฉันต้องมีกล้องติดตั้งอยู่ด้านหลังกระจกหน้ารถเพื่อที่จะได้เห็นว่าฉันกำลังขับรถไปที่ไหน เธอควรจะอยู่ด้วย การใช้พลังงานต่ำและยังส่งวิดีโอได้ด้วยตัวเองอีกด้วย (ฉันคิดว่า Arduino สามารถจัดการสิ่งนี้ได้)

รายชื่อธาตุกัมมันตภาพรังสี ประเภทการกำหนด นิกาย จำนวน หมายเหตุ ร้านค้า สมุดบันทึกของฉันไอซี1 ซี1, ซี2 ยู1 T1 R1 3 ดอลลาร์สหรัฐฯ
ไดร์เวอร์มอเตอร์
ชิปSN7544101 ไปยังสมุดบันทึก
ตัวควบคุมเชิงเส้น5 โวลต์1 ไปยังสมุดบันทึก
ทรานซิสเตอร์แบบไบโพลาร์

2N3904

1 ไปยังสมุดบันทึก
ตัวเก็บประจุด้วยไฟฟ้า 2 ไปยังสมุดบันทึก
ตัวเชื่อมต่อ2 เอาท์พุท7 ไปยังสมุดบันทึก
ตัวเชื่อมต่อ8 พิน1 ไปยังสมุดบันทึก
โล่ Arduino
บอร์ดอาร์ดูโน่ 1 ไปยังสมุดบันทึก
ทรานซิสเตอร์แบบไบโพลาร์

2N3904

1 ไปยังสมุดบันทึก
ตัวต้านทาน 1 ไปยังสมุดบันทึก
ตัวต้านทานทริมเมอร์ 1 ไปยังสมุดบันทึก
ตัวเชื่อมต่อ2 เอาท์พุท2

คำแนะนำโดยละเอียดเกี่ยวกับวิธีการใช้ ESP8266 เพิ่มกาวและโฟมเล็กน้อย และมอบความสนุกสนานให้กับเด็กๆ (และผู้ใหญ่) อย่างเต็มที่

คู่มือประกอบด้วยส่วนต่างๆ ดังต่อไปนี้:







คำอธิบายของคณะกรรมการ

สมองของเรือคือบอร์ดที่ซื้อจาก Aliexpress บอร์ดพัฒนานี้เป็นวิธีที่สะดวกในการเริ่มต้นใช้งานโมดูล WiFi ESP8266-12
ตัวโมดูลนั้นถูกบัดกรีเข้ากับบอร์ด และพินของโมดูลทั้งหมดจะถูกส่งไปยังขั้วต่อพิน ไฟ LED สีแดงถูกบัดกรีเป็น 6 พินผ่านตัวต้านทานจำกัดกระแส RGB LED ถูกบัดกรีเข้ากับพินอีกสามพิน
นอกจากนี้ยังมีโคลง 3.3 V, ตัวต้านทานการเดินสายไฟของโมดูลเป็นแบบต่อสาย, มีโฟโตรีซีสเตอร์ที่อินพุต ADC และมีจัมเปอร์สำหรับนำโมดูลเข้าสู่โหมดการเขียนโปรแกรม
เอาต์พุต USART จะแสดงแยกกัน และเครื่องหมาย Rx และ Tx จะกลับกัน
ช่องใส่แบตเตอรี่สำหรับแบตเตอรี่ 3 ก้อนถูกบัดกรีเข้ากับกำลังไฟฟ้าของโมดูล และโมดูลนั้นถูกโหลดด้วยเฟิร์มแวร์ทดสอบภายใต้การควบคุมซึ่งเท่าที่ฉันจำได้ว่ามีการสร้างจุดเข้าใช้งานใหม่ ด้วยการเชื่อมต่อกับจุดเข้าใช้งานนี้ คุณสามารถควบคุมไฟ LED บนบอร์ดได้ ถ้ามันเหมือนกับครั้งแรก มันก็เป็นแค่เวทย์มนตร์บางอย่างเท่านั้น

ความเป็นมาของการสร้างเรือ

ในกระบวนการของการศึกษาด้วยตนเองที่ซบเซาในการสร้างบ้านอัจฉริยะ บอร์ดนี้ถูกซื้อเมื่อปีที่แล้ว (ร้านค้าที่ซื้อสินค้าปิดอยู่ในขณะนี้) เมื่อใช้ร่วมกับโมดูลนี้ ฉันจึงนำโมดูล ESP8266-12 เปลือยอีกสองโมดูลมาใช้งานเพื่อใช้งานเทอร์โมมิเตอร์/เครื่องวัดความชื้นสองเครื่อง ซึ่งยังคงทำงานได้สำเร็จ

ต่อไปฉันพยายามเชื่อมต่อกับ MajorDoMo - เปิดและ ระบบฟรีการจัดการ สมาร์ทโฮม- แต่อย่างใดสิ่งนี้ไม่ได้ผลดังนั้นฉันจึงละทิ้งมันไปชั่วคราว
กลางฤดูร้อนฉันก็เจอ ปรากฎว่าสามารถตั้งโปรแกรม esp8266 ได้เหมือน Arduino ทั่วไป!!! และไลบรารี Arduino สำหรับ esp8266 ได้รับการย้ายแล้วในทุกโอกาส
ขั้นตอนใหม่ในการควบคุม esp8266 เชิงคุณภาพได้มาถึงแล้วสำหรับฉัน...
ฉันเล่นกับตัวอย่างห้องสมุดบ่อยครั้งและอยากทำอะไรบางอย่างกับการใช้งานจริง
ฉันตัดสินใจสร้างเรือขับเคลื่อนด้วยตัวเองสำหรับเด็กๆ สำหรับบ่อในชนบทของพวกเขา ไม่ใช่เรือธรรมดา แต่เป็นเรือที่สามารถควบคุมได้จากสมาร์ทโฟนทุกเครื่อง!


วัสดุที่ใช้

เลือกใช้ชิ้นส่วนโฟมโพลีสไตรีนที่เก็บฝุ่นในตู้เสื้อผ้าเป็นวัสดุก่อสร้างของอาคาร


มอเตอร์ที่ใช้คือมอเตอร์สับเปลี่ยนจากเครื่องเล่นดีวีดี เพื่อควบคุมเรือ จึงตัดสินใจใช้ระบบขับเคลื่อนสองเครื่องยนต์ - เราบังคับให้เรือเลี้ยวซ้ายหรือขวาโดยการลดความเร็วของเครื่องยนต์ซ้าย/ขวา


ใบพัดทำจากแผ่นดีบุก
เข็มถัก (เวนคืนจากภรรยาของฉัน) พอดีกับเพลาใบพัดพอดี


ท่อหดด้วยความร้อนที่มีเส้นผ่านศูนย์กลางต่างกันเหมาะอย่างยิ่งสำหรับการเชื่อมต่อที่เชื่อถือได้และยืดหยุ่นระหว่างเพลาใบพัดและมอเตอร์


ตัวปากกาลูกลื่นธรรมดาถูกใช้เป็นลูกปืนเลื่อนสำหรับเพลาใบพัด


กาวมังกรและปืนกาวร้อนก็มีประโยชน์เช่นกัน


เพื่อควบคุมมอเตอร์ พบทรานซิสเตอร์เอฟเฟกต์สนามสองตัวอยู่ในที่ซ่อน ซึ่งบัดกรีออกจากเมนบอร์ดตัวเก่า
แหล่งพลังงานคือแบตเตอรี่ 18650 ที่ซื้อแบบออฟไลน์
ฉันยังจำเป็นต้องมีสวิตช์สลับขนาดเล็กเพื่อจ่ายไฟ ตัวต้านทานหลายตัว และเขียงหั่นขนมเพื่อเชื่อมต่อไฟฟ้าทั้งหมดเข้าด้วยกัน




ทำเรือ

สำหรับการตัดโฟมเข้าไป การแก้ไขอย่างรวดเร็ว ThermoElectroCutter ประกอบขึ้นด้วยแท่งไม้ สกรูยาวสองตัว และลวดเส้นเล็กหนึ่งชิ้น ควรใช้ลวดนิกโครม แต่ฉันไม่มี (และฉันไม่ต้องการทำลายตัวต้านทานแบบลวดพันของโซเวียตเพื่อจุดประสงค์นี้) ดังนั้นฉันจึงใช้ลวดเหล็กเส้นเล็ก
เครื่องชั่วคราวนี้ขับเคลื่อนผ่าน . ทั้งสองถูกซื้อต้องขอบคุณบทวิจารณ์ที่นี่
โดยรวมแล้ว ในภาพนี้ สายตาที่อยากรู้อยากเห็นสามารถพบกับผลิตภัณฑ์ที่เคยรีวิวบน Muska ได้มากถึง 10 รายการ


ด้วยการปรับแรงดันไฟฟ้าที่เอาต์พุตของตัวแปลง DC-DC ในการทดลองจำเป็นต้องสร้างความร้อนของลวด ThermoElectroCutter ซึ่งโฟมจะถูกตัดอย่างง่ายดายและเป็นธรรมชาติ
เป็นผลให้เราได้พลาสติกโฟมมากขึ้นหรือน้อยลงซึ่งสะดวกในการประกอบครั้งต่อไป
ชิ้นส่วนที่ใหญ่ที่สุดสองชิ้นถูกใช้เป็นตัวเรือ โดยติดกาวเข้าด้วยกันด้วยกาวมังกร


ใบพัดผลิตขึ้นในหลายรูปแบบ:

ตัดช่องว่างสี่เหลี่ยมจากดีบุก (ฉันมี 20*20 มม.)
- เชื่อมมุมทแยงกับความเสี่ยงเพื่อหาจุดศูนย์กลาง


- เจาะรูตรงกลาง (เส้นผ่านศูนย์กลาง 3.5 มม.)
- ขันให้แน่นด้วยสกรูและน็อตที่เหมาะสม (M 3*20)
- จับสกรูไว้ในหัวจับดอกสว่านด้วยความเร็วต่ำ วาด (เกา) วงกลมด้วยวัตถุมีคมที่เหมาะสม
- ตัดวงกลมคู่ออก


- ตัดวงกลมตามเส้นทแยงมุมที่มีอยู่ 2/3 ของรัศมีแล้วงอเป็นมุม (30-45 องศา)

จากนั้นเราก็เอาเข็มถัก ตัดท่อหดด้วยความร้อนขนาด 25-30 มม. ที่มีเส้นผ่านศูนย์กลางใหญ่กว่าเข็มถักเล็กน้อย หมุนเข็มถักโดยให้ความร้อนหดตัวบนเปลวไฟเล็กๆ ของเตาแก๊ส (หรือไฟฟ้า) จนกระทั่งท่ออุ่นขึ้นและปิดเข็มถักไว้แน่น
ต่อไป เราจะตัดท่อที่มีเส้นผ่านศูนย์กลางใหญ่กว่านี้ออก... ฯลฯ จนท่อต่อไปสามารถใส่เกียร์เครื่องยนต์ได้ ที.เค. หากใส่เกียร์บนเพลาเครื่องยนต์แน่นเพียงพอ จะส่งแรงบิดไปยังเพลาใบพัดได้ดี
เรานำการหดตัวด้วยความร้อนชิ้นสุดท้ายมาวางบนเพลาใบพัดและเครื่องยนต์ไปพร้อมๆ กัน
หลังจากทำความร้อนการหดตัวของความร้อนแล้ว เราก็จะได้การเชื่อมต่อที่ดี




ได้เวลาติดตั้งเครื่องยนต์ในตัวถังแล้ว
ใช้สว่านเจาะรูสองรูในตัวถังสำหรับเพลาใบพัด จากด้านล่างเราใส่ตลับลูกปืนธรรมดา


เราตั้งค่าเครื่องยนต์ และโดยการหมุนเพลาตามแรงต้านการหมุนน้อยที่สุด เราจะพบตำแหน่งที่เหมาะสมที่สุดสำหรับเครื่องยนต์แต่ละตัว
เรารักษาผลลัพธ์ไว้อย่างไม่เห็นแก่ตัวด้วยกาวร้อน




เราใส่ใบพัดและยึดให้แน่นด้วยกาวร้อน เพื่อการยึดเกาะที่ดีขึ้นกับกาว ปลายเข็มถักจะมีรอยบุบเล็กน้อยด้วยเครื่องตัดลวด และพื้นผิวของสกรูที่อยู่ใกล้ตรงกลางจะมีรอยขีดข่วนจนมีสภาพหยาบ

เราเชื่อมต่อและประสานทุกอย่างตามแผนภาพ


พลังงานจากแบตเตอรี่จะถูกส่งผ่านสวิตช์สลับ จากนั้นไปที่มอเตอร์และไปยังตัวปรับเสถียรภาพเชิงเส้น 3.3 V ขั้วต่อที่สองของมอเตอร์แต่ละตัวเชื่อมต่อผ่านทรานซิสเตอร์เอฟเฟกต์สนามกับแหล่งจ่ายไฟลบ ด้วยการส่งสัญญาณของรอบการทำงานของพัลส์ที่แตกต่างกันจากเอาต์พุตของ ESP8266 ไปยังเกตของทรานซิสเตอร์เอฟเฟกต์สนาม PWM เราจะควบคุมความเร็วในการหมุนของมอเตอร์
แรงดันไฟฟ้าของแหล่งจ่ายยังจ่ายผ่านตัวแบ่งตัวต้านทานไปยังอินพุต ADC ของโมดูล ESP8266 เพื่อตรวจสอบสถานะแบตเตอรี่
ทรานซิสเตอร์กำลังพร้อมตัวต้านทานที่มีผลผูกพัน, สวิตช์ไฟ, โคลง, ตัวแบ่งตัวต้านทานสำหรับการวัดแรงดันไฟฟ้าของแบตเตอรี่ - ทุกอย่างวางอยู่บนเขียงหั่นขนม บอร์ดที่มีโมดูล ESP8266 ขั้วแบตเตอรี่และมอเตอร์ก็ถูกบัดกรีด้วย
อะแดปเตอร์ USB-TTL เชื่อมต่อกับโมดูล


ทุกอย่างจึงพร้อมจะจุดประกายชีวิตลงในเรือที่เกือบจะเสร็จแล้ว...


การเขียนโปรแกรม

วิธีการติดตั้ง Arduino IDE และให้การสนับสนุน ESP8266 นั้นได้อธิบายไว้ค่อนข้างดีในข้างต้น

เพื่อควบคุมเรือ เราจะสร้างจุดเข้าใช้งานบน ESP8266 และตั้งค่าเว็บเซิร์ฟเวอร์ โดยการเชื่อมต่อสมาร์ทโฟนของคุณเข้ากับจุดเข้าใช้งานและพิมพ์ที่อยู่เซิร์ฟเวอร์ (192.168.4.1) ในเบราว์เซอร์ คุณจะเห็นหน้าเว็บพร้อมการควบคุมและการตรวจวัดระยะไกลจากบนเรือของเรา


เพื่อลดภาระบน ESP8266 ลดเวลาตอบสนองของการดำเนินการควบคุมและเพิ่มการโต้ตอบ ฉันจึงตัดสินใจใช้เทคนิคคำขอ AJAX

ตัดตอนมาจากวิกิพีเดีย:

AJAX, Ajax (ˈeɪdʒæks จากภาษาอังกฤษ Asynchronous Javascript และ XML - “ จาวาสคริปต์แบบอะซิงโครนัสและ XML") เป็นแนวทางในการสร้างอินเทอร์เฟซผู้ใช้แบบโต้ตอบสำหรับแอปพลิเคชันเว็บที่เกี่ยวข้องกับการแลกเปลี่ยนข้อมูลเบราว์เซอร์ "เบื้องหลัง" กับเว็บเซิร์ฟเวอร์ ส่งผลให้เมื่ออัปเดตข้อมูลหน้าเว็บจะโหลดไม่เสร็จสมบูรณ์และเว็บแอปพลิเคชันจะเร็วขึ้นและสะดวกยิ่งขึ้น

ในโมเดลแอปพลิเคชันเว็บแบบคลาสสิก:

เบราว์เซอร์สร้างและส่งคำขอไปยังเซิร์ฟเวอร์
ในการตอบสนอง เซิร์ฟเวอร์จะสร้างหน้าเว็บใหม่ทั้งหมดและส่งไปยังเบราว์เซอร์ ฯลฯ จากนั้นเบราว์เซอร์จะโหลดทั้งหน้าใหม่ทั้งหมด

เมื่อใช้ AJAX:
ผู้ใช้เยี่ยมชมหน้าเว็บและคลิกที่องค์ประกอบบางส่วน
สคริปต์ (ใน JavaScript) กำหนดว่าข้อมูลใดที่จำเป็นในการอัปเดตเพจ
เบราว์เซอร์ส่งคำขอที่เกี่ยวข้องไปยังเซิร์ฟเวอร์
เซิร์ฟเวอร์ส่งคืนเฉพาะส่วนของเอกสารที่มีการร้องขอเท่านั้น
สคริปต์ทำการเปลี่ยนแปลงโดยคำนึงถึงข้อมูลที่ได้รับ (ไม่มี รีบูตเต็มรูปแบบหน้า)


หลังจากทรมาน Google มาระยะหนึ่งเพื่อค้นหาการดำเนินการตามความปรารถนาของฉันอย่างเหมาะสม ฉันก็เจอ
ซึ่งฉันยืมรหัสที่เหมาะสม

รหัสเริ่มต้น

#include #include เซิร์ฟเวอร์ ESP8266WebServer(80); const char* ssid="yourSSID"; const char* รหัสผ่าน = "รหัสผ่านของคุณ"; สตริงเว็บไซต์,จาวาสคริปต์,XML; รอนานไม่ได้ลงนาม wait000=0UL,wait001=1000UL; int LED=16;const int ตัวเลื่อนMAX=10; // นี่เป็นการตั้งค่าจำนวนแถบเลื่อนที่คุณต้องการใน SliderVal=(60),ESPval; เป็นโมฆะ buildWebsite())( buildJavascript(); webSite="\n"; webSite+="\n"; webSite+=" นี่คือเว็บไซต์ ESP ... \n"; webSite+="Runtime = \n"; webSite+= " ความแรงของสัญญาณ a= \n"; webSite+= ศิลา ;// ความแรง สัญญาณไวไฟเว็บไซต์+="\n";

เว็บไซต์+=" \n"; for(int i=0;i \n"; // นี่คือตัวอย่างของแถบเลื่อน webSite+=" \n"; // 1 แถบเลื่อน เว็บไซต์+=" \n"; // 1 แถบเลื่อน เว็บไซต์+="\n"; // 1 แถบเลื่อน เว็บไซต์+=" RPM = \n"; เว็บไซต์+="มอเตอร์ = * \n"; // 1 แถบเลื่อน เว็บไซต์+=" \n"; // 1 แถบเลื่อน เว็บไซต์+="\n"; // 1 แถบเลื่อน เว็บไซต์+=" ทิศทาง = \n"; webSite+="การเคลื่อนไหว = \n"; // 1 แถบเลื่อน เว็บไซต์+=" \n"; // 1 แถบเลื่อน เว็บไซต์+="\n"; // 1 แถบเลื่อน เว็บไซต์+="
\n"; เว็บไซต์+="
\n"; // 2 แถบเลื่อน เว็บไซต์+="
การแก้ไข = \n"; webSite+="Motors =
\n"; webSite+="\n"; webSite+="\n"; ) String millis2time())( // แปลงมิลลิวินาทีเป็น h/m/s String Time=""; ss ยาวที่ไม่ได้ลงนาม; ไบต์ mm,hh; ss=มิลลิวินาที()/1000; hh=ss/3600; mm=(ss-hh*3600)/60; ss=(ss-hh*3600)-mm*60; =มิลลิวินาที()+1000UL; millis()>wait001)( wait001=millis()+300; // อัปเดตค่าทุกๆ 300 มิลลิวินาที Trimer = (ESPval*.0015); Serial.print(" Skorost] " ); Serial.print(ESPval); Serial.print(ESPval); ESPval > 200)( // ถ้าตัวเลื่อนความเร็ว > 200 ถ้า (ESPval > 600) ( // ถ้าตัวเลื่อนการหมุน > 600 ให้เลี้ยวซ้าย analogWrite(OUT1, ESPval); analogWrite(OUT2, int (ESPval * Povorot*Trimer) ; Serial.print(" Le "); Serial.print(ESPval * Povorot*Trimer); else if (400 > ESPval)( // หากแถบเลื่อนการหมุน< 400 то поворачиваем на право analogWrite(OUT1, int(ESPval * Povorot)); analogWrite(OUT2, int(ESPval*Trimer)); Serial.print(" Pr "); Serial.print(int(ESPval * Povorot)); } else { // Если слайдер поворота >400 และ< 600то едем прямо analogWrite(OUT1, ESPval); analogWrite(OUT2, int(ESPval*Trimer)); Serial.print(" OK "); } } else { // Если слайдер скорости < 200 - выключить моторы analogWrite(OUT1, 0); analogWrite(OUT2, 0); Serial.print(" Stop "); } Serial.print(" Batareya "); Serial.println(Batareya); } }


มีคำอธิบายค่อนข้างมากในโค้ด ฉันหวังว่าทุกอย่างชัดเจน
เครื่องยนต์ของเรือถูกควบคุมโดยการเปลี่ยนตำแหน่งของตัวเลื่อนของตัวเลื่อนสามตัวบนหน้า
- สไลเดอร์ตัวแรกมีหน้าที่รับผิดชอบความเร็วในการหมุนของมอเตอร์ (และความเร็วของเรือ ตามลำดับ) หากคุณเปลี่ยนตำแหน่งของแถบเลื่อนของแถบเลื่อนนี้จาก 20 เป็น 100% ค่าของตัวแปร ESPval ที่เกี่ยวข้องกับแถบเลื่อนจะเปลี่ยนไป ค่าตัวแปรถูกเขียนลงในพอร์ต OUT1 และ OUT2 ของ ESP8266 (เอาต์พุตที่ไปที่ประตูควบคุม ทรานซิสเตอร์สนามผล) และความเร็วรอบเครื่องยนต์จะเพิ่มขึ้นจาก 0 เป็นสูงสุด
ในช่วงตำแหน่งของแถบเลื่อนนี้ตั้งแต่ 0 ถึง 20% จะมีการเขียน 0 ไปที่พอร์ตและเครื่องยนต์จะหยุดทำงาน
- แถบเลื่อนตัวที่สองมีหน้าที่ในการเลี้ยว (ตัวแปร ESPval) หากตัวเลื่อนอยู่ในตำแหน่งขวาหรือซ้าย ค่าความเร็วของมอเตอร์ที่เกี่ยวข้องจะลดลง 0.8 (ค่าคงที่ Povorot) เครื่องยนต์จะช้าลงและเรือจะเลี้ยวไปในทิศทางที่ถูกต้อง
- จำเป็นต้องใช้แถบเลื่อนตัวที่สาม (ตัวแปร ESPval และ Trimer) เพื่อแยกแยะความแตกต่างในลักษณะเครื่องยนต์ คุณสามารถชะลอหรือเร่งความเร็วเครื่องยนต์ตัวใดตัวหนึ่งได้ ทั้งนี้ขึ้นอยู่กับตำแหน่งของตัวเลื่อน

น่าเสียดายที่ไม่สามารถใช้งานฟังก์ชันการวัดแรงดันไฟฟ้าของแบตเตอรี่ได้อย่างสมบูรณ์ ในระหว่างขั้นตอนการตั้งค่า อินพุตโมดูล ADC ถูกไฟไหม้ (ฉันคิดว่ามันลัดวงจรไปที่ + แบตเตอรี่)...
การวัดความแรงของสัญญาณ WiFi ใช้งานได้ แต่ต้องมีการสอบเทียบที่แม่นยำยิ่งขึ้น

สำหรับการดีบักเราใช้การเชื่อมต่อกับบ้าน เครือข่าย WiFiและส่งข้อมูลออกทางพอร์ตอนุกรม


ในโค้ดเวอร์ชันที่ใช้งานได้ โมดูลจะเพิ่มจุดเชื่อมต่อแยกต่างหากและไม่จำเป็นต้องใช้เอาต์พุต - บรรทัดของโค้ดที่เกี่ยวข้องจะถูกใส่เครื่องหมายความคิดเห็น

ภาพร่างถูกรวบรวมใน IDE เวอร์ชัน 1.6.12

มีหน่วยความจำว่างเหลืออยู่มากเกินพอที่จะนำความปรารถนาที่ตามมามาไปใช้ในโค้ดได้

หากใครมีการเพิ่มเติม/แก้ไขโค้ดที่สร้างสรรค์ โปรดแสดงความคิดเห็นในความคิดเห็น


การว่ายน้ำ

ขั้นแรกมีการทดสอบการทำงานในบริเวณห้องน้ำ โดยพิจารณาจากผลการปรับปรุงดังต่อไปนี้:
- แบตเตอรี่ AA 4 ก้อนในแหล่งจ่ายไฟถูกแทนที่ด้วยแบตเตอรี่ 18650 จำนวน 2 ก้อนโดยไม่มีเงื่อนไข
- เพิ่มการตัดแต่งเครื่องยนต์ตัวใดตัวหนึ่งให้กับการปรับความเร็วและการหมุน
- ระยะพิทช์ของใบพัดเพิ่มขึ้น

จากนั้นในการเดินทางครั้งต่อไปที่เดชาเรือก็ถูกส่งออกไปแล่นบนน้ำสูงอย่างเคร่งขรึม


การทดสอบภาคสนามแสดงให้เห็นว่าเวอร์ชันถัดไปต้องการ:
- เพิ่มความแรงของสัญญาณของโมดูล WiFi โดยการเพิ่ม เสาอากาศภายนอก
- เพิ่มขนาดเส้นผ่านศูนย์กลางของใบพัด (หรือสั่งใบพัดใน Aliexpress)
- เพิ่มการเบรกของเครื่องยนต์เมื่อเปลี่ยนจาก 20% เป็น 40-50%
- ปรับเปลี่ยนร่างกายให้ไหลเวียนดีขึ้น
- เปลี่ยนมอเตอร์เป็นมอเตอร์ไร้แปรงถ่าน
- ทำพวงมาลัยขับเคลื่อนด้วยเซอร์โว
- ขันสกรูบน FPV
- เพิ่มไฟ LED สำหรับการว่ายน้ำตอนกลางคืน
- ติดตั้งดอกไม้ไฟบนดาดฟ้าแล้วจุดพลุกลางสระน้ำ
- อะไรก็ได้ที่ใจคุณปรารถนา...

แต่การปรับปรุงเหล่านี้อาจจะถูกนำมาใช้ในฤดูกาลใหม่

ดังนั้น ด้วยเวลาและเงินเพียงเล็กน้อย ช่างฝีมือทั่วไปก็สามารถประกอบของเล่นที่ควบคุมด้วยวิทยุของตัวเองได้

หากไม่มีการเปลี่ยนแปลงโปรแกรมอย่างมีนัยสำคัญ คุณสามารถสร้างรถยนต์ที่ควบคุมได้ (หรือรถยนต์หลายคัน) ด้วยวิธีง่ายๆ เดียวกันเพื่อขี่สนุกไปรอบ ๆ อพาร์ทเมนต์ในช่วงเย็นฤดูหนาวที่ยาวนาน

ฉันคงจะดีใจถ้าบทประพันธ์นี้เป็นแรงบันดาลใจให้ทุกคนมีความคิดสร้างสรรค์

วางแผนที่จะซื้อ +87 เพิ่มในรายการโปรด ชอบรีวิว +131 +257

ดังนั้นเราจะควบคุมเครื่องยนต์ที่พลิกกลับได้ (หมุนได้ทั้งสองทิศทาง) สองเครื่องยนต์: เครื่องยนต์หลักและพวงมาลัย เราจะจ่ายไฟให้กับพวกมันจากแบตเตอรี่ 3.7 V แต่โดยหลักการแล้วคุณสามารถจ่ายไฟได้สูงสุด 12 V หากคุณประสานแหล่งจ่ายไฟของคอนโทรลเลอร์หรือจัดระเบียบด้วยแบตเตอรี่แยกต่างหาก

ในส่วนกำลัง เราใช้ไดรเวอร์สเต็ปเปอร์มอเตอร์ขนาดเล็กที่ง่ายที่สุด l9110s หรือคุณสามารถใช้ชุดประกอบที่ใช้ L293\8 หรือตัวอื่นที่ทรงพลังพอๆ กันที่คุณพบ โดยทั่วไปแล้วฉันวาดทุกอย่างในภาพ

คุณสามารถซื้อส่วนประกอบสำหรับโครงการใน Aliexpress:

ตัวควบคุม WiFi ที่ใช้คือ NodeMCU 0.9 ESP8266 ที่ฉันชื่นชอบ แต่คุณสามารถใช้ WeMos D1 mini ที่เล็กกว่าได้

สามารถชาร์จแบตเตอรี่ได้ผ่านไมโคร USB หลังจากนั้นจะจ่ายไฟให้กับไดรเวอร์มอเตอร์โดยตรงและควบคุม WiFi ผ่านบูสต์คอนเวอร์เตอร์ 5V

รหัสโปรแกรม:

#รวม
const char* ssid = "ชื่อเครือข่าย Wi-Fi ของคุณ";
รหัสผ่าน const char* = "รหัสผ่านเครือข่ายของคุณ";
int ขึ้น = 2; //จำนวนเอาต์พุตที่ไม่ต่อเนื่อง
int ลง = 14;
int ซ้าย = 4;
int ขวา = 12;
// สร้างอินสแตนซ์ของเซิร์ฟเวอร์
// ระบุพอร์ตที่จะฟังเป็นอาร์กิวเมนต์
เซิร์ฟเวอร์เซิร์ฟเวอร์ WiFi (80);
การตั้งค่าเป็นโมฆะ () (
อนุกรมเริ่มต้น(9600);
ล่าช้า(10);
//กำลังเตรียมเอาท์พุต
pinMode(ขึ้น, เอาท์พุท);
digitalWrite (ขึ้น, 0);
pinMode (ลง, เอาต์พุต);
digitalWrite (ลง, 0);
pinMode (ซ้าย, เอาต์พุต);
digitalWrite (ซ้าย, 0);
pinMode (ขวา, เอาต์พุต);
digitalWrite (ขวา, 0);

// เชื่อมต่อกับเครือข่าย WiFi
อนุกรม.println();
อนุกรม.println();
Serial.print("กำลังเชื่อมต่อกับ ");
Serial.println(ssid);

WiFi.begin(ssid, รหัสผ่าน);

ในขณะที่ (WiFi.status() != WL_CONNECTED) (
ล่าช้า (500);
Serial.print(".");
}
Serial.println("");
Serial.println("เชื่อมต่อ WiFi");

//เริ่มเซิร์ฟเวอร์
เซิร์ฟเวอร์.เริ่มต้น();
Serial.println("เซิร์ฟเวอร์เริ่มทำงาน");
//ส่งออกที่อยู่ IP ไปยังมอนิเตอร์พอร์ต
Serial.println(WiFi.localIP());
}
เป็นโมฆะวน() (
//ตรวจสอบว่าไคลเอนต์เชื่อมต่ออยู่หรือไม่
ไคลเอนต์ WiFiClient = server.available();
ถ้า (!ลูกค้า) (
กลับ;
}

//รอจนกว่าลูกค้าจะส่งข้อมูลบางส่วน
Serial.println("ลูกค้าใหม่");
ในขณะที่(!client.available())(
ล่าช้า(1);
}

//อ่านบรรทัดแรกของคำขอ
String req = client.readStringUntil("\r");
Serial.println(ต้องการ);
ลูกค้า.ฟลัช();

//การประมวลผลคำสั่ง
ถ้า (req.indexOf("/gpio/up") != -1)(
digitalWrite (ขึ้น, 1);
digitalWrite (ลง, 0);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
}
อย่างอื่นถ้า (req.indexOf("/gpio/down") != -1)(
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 1);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
}
อย่างอื่นถ้า (req.indexOf("/gpio/left") != -1)(
digitalWrite (ขึ้น, 1);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 1);
digitalWrite (ขวา, 0);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 0);
digitalWrite (ขวา, 0);
}
อย่างอื่นถ้า (req.indexOf("/gpio/right") != -1)(
digitalWrite (ขึ้น, 1);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 0);
digitalWrite (ขวา, 1);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 0);
digitalWrite (ขวา, 0);
}
อื่น(
Serial.println("คำขอไม่ถูกต้อง");
}

ลูกค้า.ฟลัช();
//เตรียมการตอบรับ
String s = "HTTP/1.1 200 ตกลง\r\nประเภทเนื้อหา: text/html\r\n\r\n\r\n\r\n ";

ส += "
ขึ้น.
";
ส += "
ซ้าย ";
s += "ถูกต้อง
";
ส += "
ลง";
s += "\n";
//ส่งคำตอบให้กับลูกค้า
ลูกค้าพิมพ์(s);
ล่าช้า(1);
Serial.println("ไคลเอนต์ถูกตัดการเชื่อมต่อ");
) โปรแกรมเขียนด้วย Arduino IDE วิธีกำหนดค่า Arduino IDE ให้ทำงานกับคอนโทรลเลอร์ NodeMCU 0.9 ESP8266 ดูลิงค์ หลังจากโหลดโปรแกรมลงในคอนโทรลเลอร์แล้ว มอนิเตอร์พอร์ตสามารถอ่านที่อยู่ IP ที่บอร์ดจะได้รับหลังจากเชื่อมต่อกับเราเตอร์ WiFi ของคุณ ในเบราว์เซอร์คอมพิวเตอร์ของคุณคุณต้อง แถบที่อยู่ป้อนที่อยู่นี้และไปที่หน้าที่โปรแกรมคอนโทรลเลอร์จะสร้าง มันจะมีลักษณะเช่นนี้:

ลง

เมื่อคลิกลิงค์ UP รถจะเคลื่อนไปข้างหน้า 1 วินาทีแล้วหยุด เมื่อกด DOWN รถจะถอยหลัง 1 วินาที LEFT - มอเตอร์หมุนจะหมุนล้อไปทางซ้าย และรถจะขับไปทางซ้าย 1 วินาที ไปทางขวาเช่นเดียวกันเมื่อคุณกด RIGHT

ระบบทั้งหมดนี้ใช้งานได้กับจุดเชื่อมต่อ WiFi ที่กำหนดค่าไว้ (เราเตอร์ WiFi) เท่านั้น แต่ในอนาคตฉันสนใจที่จะเล่นกับคอนโทรลเลอร์ NodeMCU 0.9 ESP8266 ซึ่งจะจัดระเบียบจุดเชื่อมต่อและทำหน้าที่ของเว็บเซิร์ฟเวอร์ด้วยตัวมันเอง นั่นคือเมื่อเข้าถึง IP จากเบราว์เซอร์ เราจะเห็นหน้าเว็บพร้อมการควบคุม การจัดระเบียบการถ่ายโอนข้อมูลจากตัวควบคุมหนึ่งไปยังอีกตัวควบคุมหนึ่งผ่านเครือข่าย WiFi อัตโนมัติก็น่าสนใจเช่นกัน

ฉันเพิ่งตัดสินใจอัพเกรดรถจี๊ปของเล่นที่ควบคุมด้วยวิทยุของลูกชาย ตัวควบคุมวิทยุหยุดทำงานเกือบจะในทันที จากการชันสูตรพลิกศพพบว่า เครื่องยนต์ที่ติดตั้งในรถอ่อนแอเกินไปและงุ่มง่าม ฉันเปลี่ยนมอเตอร์ขับเคลื่อนหลักให้มีขนาดและกำลังที่ใหญ่กว่าทันที ในการทำเช่นนี้ ฉันต้องทำงานเป็นช่างแกะสลักโดยมีเลื่อยวงเดือนติดตั้งอยู่ (ฉันจะจัดสรรพื้นที่ให้เพียงพอได้อย่างไร) แผงรับสัญญาณวิทยุก็ถูกโยนทิ้งไปเช่นกัน

จากนั้นโดยไม่ต้องคิดซ้ำสอง แนวคิดก็ถูกเลือก การควบคุมระยะไกลทำตามตัวอย่างของรถแลนด์โรเวอร์ Mars: ได้รับคำสั่งแล้วรถจี๊ปก็ขับออกไปและหยุด ทั้งหมดเป็นเพราะความไม่แน่นอนที่ลูกชายวัย 2.5 ขวบของฉันจะสามารถควบคุมเครื่องยนต์ด้วยรีโมทคอนโทรลมาตรฐานได้ ฉันแน่ใจว่ามันจะควบคุมการควบคุมได้เป็นเวลานานไม่ว่าพฤติกรรมของเครื่องจะเป็นอย่างไร และหลักการของรถแลนด์โรเวอร์ Mars: ขับไป 20 ซม. แล้วหยุดก็ค่อนข้างเหมาะสม ยิ่งไปกว่านั้น ฉันใฝ่ฝันที่จะลองใช้มันมานานแล้ว อย่างน้อยก็ในรูปแบบที่ง่ายที่สุด ในการใช้งานนี้ เราจะไม่เดินทาง 20 ซม. แต่เป็นเวลา 1 วินาที

ดังนั้นเราจะควบคุมเครื่องยนต์ที่พลิกกลับได้ (หมุนได้ทั้งสองทิศทาง) สองเครื่องยนต์: เครื่องยนต์หลักและพวงมาลัย เราจะจ่ายไฟให้กับพวกมันจากแบตเตอรี่ 3.7 V แต่โดยหลักการแล้วคุณสามารถจ่ายไฟได้สูงสุด 12 V หากคุณประสานแหล่งจ่ายไฟของคอนโทรลเลอร์หรือจัดระเบียบด้วยแบตเตอรี่แยกต่างหาก

ในส่วนของกำลัง เราใช้อันจิ๋วที่ง่ายที่สุดหรืออันทรงพลังพอ ๆ กันที่คุณพบ โดยทั่วไปแล้วฉันวาดทุกอย่างในภาพ

สามารถชาร์จแบตเตอรี่ได้ผ่านไมโคร USB หลังจากนั้นจะจ่ายไฟให้กับไดรเวอร์มอเตอร์โดยตรงและควบคุม WiFi ผ่านทาง

รหัสโปรแกรม:

#รวม
const char* ssid = "ชื่อเครือข่าย Wi-Fi ของคุณ";
รหัสผ่าน const char* = "รหัสผ่านเครือข่ายของคุณ";
int ขึ้น = 2; //จำนวนเอาต์พุตที่ไม่ต่อเนื่อง
int ลง = 14;
int ซ้าย = 4;
int ขวา = 12;
// สร้างอินสแตนซ์ของเซิร์ฟเวอร์
// ระบุพอร์ตที่จะฟังเป็นอาร์กิวเมนต์
เซิร์ฟเวอร์เซิร์ฟเวอร์ WiFi (80);
การตั้งค่าเป็นโมฆะ () (
อนุกรมเริ่มต้น(9600);
ล่าช้า(10);
//กำลังเตรียมเอาท์พุต
pinMode(ขึ้น, เอาท์พุท);
digitalWrite (ขึ้น, 0);
pinMode (ลง, เอาต์พุต);
digitalWrite (ลง, 0);
pinMode (ซ้าย, เอาต์พุต);
digitalWrite (ซ้าย, 0);
pinMode (ขวา, เอาต์พุต);
digitalWrite (ขวา, 0);

// เชื่อมต่อกับเครือข่าย WiFi
อนุกรม.println();
อนุกรม.println();
Serial.print("กำลังเชื่อมต่อกับ ");
Serial.println(ssid);

WiFi.begin(ssid, รหัสผ่าน);

ในขณะที่ (WiFi.status() != WL_CONNECTED) (
ล่าช้า (500);
Serial.print(".");
}
Serial.println("");
Serial.println("เชื่อมต่อ WiFi");

//เริ่มเซิร์ฟเวอร์
เซิร์ฟเวอร์.เริ่มต้น();
Serial.println("เซิร์ฟเวอร์เริ่มทำงาน");
//ส่งออกที่อยู่ IP ไปยังมอนิเตอร์พอร์ต
Serial.println(WiFi.localIP());
}
เป็นโมฆะวน() (
//ตรวจสอบว่าไคลเอนต์เชื่อมต่ออยู่หรือไม่
ไคลเอนต์ WiFiClient = server.available();
ถ้า (!ลูกค้า) (
กลับ;
}

//รอจนกว่าลูกค้าจะส่งข้อมูลบางส่วน
Serial.println("ลูกค้าใหม่");
ในขณะที่(!client.available())(
ล่าช้า(1);
}

//อ่านบรรทัดแรกของคำขอ
String req = client.readStringUntil("\r");
Serial.println(ต้องการ);
ลูกค้า.ฟลัช();

//การประมวลผลคำสั่ง
ถ้า (req.indexOf("/gpio/up") != -1)(
digitalWrite (ขึ้น, 1);
digitalWrite (ลง, 0);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
}
อย่างอื่นถ้า (req.indexOf("/gpio/down") != -1)(
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 1);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
}
อย่างอื่นถ้า (req.indexOf("/gpio/left") != -1)(
digitalWrite (ขึ้น, 1);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 1);
digitalWrite (ขวา, 0);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 0);
digitalWrite (ขวา, 0);
}
อย่างอื่นถ้า (req.indexOf("/gpio/right") != -1)(
digitalWrite (ขึ้น, 1);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 0);
digitalWrite (ขวา, 1);
ล่าช้า (1,000);
digitalWrite (ขึ้น, 0);
digitalWrite (ลง, 0);
digitalWrite (ซ้าย, 0);
digitalWrite (ขวา, 0);
}
อื่น(
Serial.println("คำขอไม่ถูกต้อง");
}

ลูกค้า.ฟลัช();
//เตรียมการตอบรับ
String s = "HTTP/1.1 200 ตกลง\r\nประเภทเนื้อหา: text/html\r\n\r\n\r\n\r\n ";

ส += "
ขึ้น.
";
ส += "
ซ้าย ";
s += "ถูกต้อง
";
ส += "
ลง";
s += "\n";
//ส่งคำตอบให้กับลูกค้า
ลูกค้าพิมพ์(s);
ล่าช้า(1);
Serial.println("ไคลเอนต์ถูกตัดการเชื่อมต่อ");
) โปรแกรมเขียนด้วย Arduino IDE คอนโทรลเลอร์ NodeMCU 0.9 ESP8266 ซึ่งจะจัดระเบียบจุดเข้าใช้งานและทำหน้าที่ของเว็บเซิร์ฟเวอร์นั่นคือเมื่อคุณเข้าถึง IP จากเบราว์เซอร์เราจะเห็นหน้าเว็บพร้อมการควบคุม การจัดระเบียบการถ่ายโอนข้อมูลจากตัวควบคุมหนึ่งไปยังอีกตัวควบคุมหนึ่งผ่านเครือข่าย WiFi อัตโนมัติก็น่าสนใจเช่นกัน