สารบัญ:

วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ส่วนที่ 2 - ซอฟต์แวร์: 5 ขั้นตอน (พร้อมรูปภาพ)
วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ส่วนที่ 2 - ซอฟต์แวร์: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ส่วนที่ 2 - ซอฟต์แวร์: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ส่วนที่ 2 - ซอฟต์แวร์: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Hall effect switch for the anemometer 2024, มิถุนายน
Anonim
วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ตอนที่ 2 - ซอฟต์แวร์
วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ตอนที่ 2 - ซอฟต์แวร์
วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ตอนที่ 2 - ซอฟต์แวร์
วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ตอนที่ 2 - ซอฟต์แวร์

บทนำ

นี่เป็นภาคต่อของโพสต์แรก "วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ตอนที่ 1 - ฮาร์ดแวร์" - ที่ฉันแสดงวิธีการประกอบอุปกรณ์วัดความเร็วลมและทิศทาง ที่นี่ เราจะใช้ประโยชน์จากซอฟต์แวร์ควบคุมการวัดที่ออกแบบมาเพื่อใช้ใน Nodemcu โดยใช้ Arduino IDE

รายละเอียดโครงการ

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

คำเตือน: เครื่องวัดความเร็วลมนี้ไม่ควรใช้เพื่อวัตถุประสงค์ทางวิชาชีพ ใช้สำหรับการศึกษาหรือที่บ้านเท่านั้น

หมายเหตุ: ภาษาอังกฤษไม่ใช่ภาษาธรรมชาติของฉัน หากคุณพบข้อผิดพลาดทางไวยากรณ์ที่ขัดขวางไม่ให้คุณเข้าใจโครงการ โปรดแจ้งให้เราทราบเพื่อแก้ไข ขอบคุณมาก.

ขั้นตอนที่ 1: การติดตั้ง Arduino IDE, บอร์ด ESP8266 และไลบรารี่และบัญชี ThingSpeak ของคุณ

การติดตั้ง Arduino IDE, บอร์ด ESP8266 และไลบรารี่ และบัญชี ThingSpeak ของคุณ
การติดตั้ง Arduino IDE, บอร์ด ESP8266 และไลบรารี่ และบัญชี ThingSpeak ของคุณ
การติดตั้ง Arduino IDE, บอร์ด ESP8266 และไลบรารี่ และบัญชี ThingSpeak ของคุณ
การติดตั้ง Arduino IDE, บอร์ด ESP8266 และไลบรารี่ และบัญชี ThingSpeak ของคุณ

การติดตั้ง Arduino IDE และ Nodemcu

หากคุณไม่เคยติดตั้ง IDE Arduino โปรดอ่านบทช่วยสอนในลิงค์ - วิธีติดตั้ง Arduino IDE - ซึ่งคุณจะพบคำแนะนำทั้งหมด

ขั้นตอนต่อไป ในการติดตั้งบอร์ด Nodemcu ให้ใช้บทช่วยสอนนี้จากคำสั่งสอนของ Magesh Jayakumar ซึ่งสมบูรณ์มาก วิธีการติดตั้ง Nodemcu no Arduino IDE

การติดตั้งไลบรารี

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

ห้องสมุด ThingSpeak -

ห้องสมุด ESP8266 -

การสร้างบัญชี ThingSpeak

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

เมื่อสร้างบัญชีแล้ว ให้เข้าสู่บทช่วยสอนนี้ - ThingSpeak Getting Started - เพื่อสร้างช่องของคุณ มันค่อนข้างอธิบายได้ดี โดยสรุป คุณต้องสร้างช่องทางที่จะเก็บข้อมูล ช่องนี้มี ID และ Key API ที่ควรอ้างอิงในแบบร่างทุกครั้งที่คุณต้องการบันทึกข้อมูล ThingSpeak จะจัดเก็บข้อมูลทั้งหมดในธนาคารและจะแสดงทุกครั้งที่คุณเข้าถึงบัญชีของคุณตามวิธีที่คุณกำหนดค่าไว้

ขั้นตอนที่ 2: สำรวจ Sketch

สำรวจร่าง
สำรวจร่าง
สำรวจร่าง
สำรวจร่าง

ผังงาน

ในแผนภาพ คุณสามารถเข้าใจฟลักซ์แกรมของภาพร่างได้ เมื่อคุณปลุก (ลิงก์) Nodemcu มันจะเชื่อมต่อกับเครือข่าย Wi-Fi ของคุณซึ่งมีพารามิเตอร์ที่คุณได้กำหนดค่าและเริ่มนับเวลา 1 นาทีเพื่อทำการวัด ขั้นแรกจะนับการหมุนของเครื่องวัดความเร็วลมเป็นเวลา 25 วินาที คำนวณ ความเร็วเชิงเส้นและอ่านทิศทางของลม ผลลัพธ์จะแสดงบน OLED ทำตามขั้นตอนเดิมอีกครั้ง และสำหรับการอ่านครั้งที่สองนี้ ข้อมูลจะส่งไปยัง ThingSpeak

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

โครงสร้างโปรแกรม

ในไดอะแกรม คุณสามารถดูโครงสร้างของแบบร่างได้

เครื่องวัดความเร็วลม_Instructables

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

การสื่อสาร

เชื่อมต่อ WiFi และส่งข้อมูลไปยัง ThingSpeak

credentials.h

กุญแจของเครือข่าย WiFi ของคุณและตัวระบุบัญชีของคุณใน ThingSpeak นี่คือที่ที่คุณจะเปลี่ยนรหัสคีย์และ API ของคุณ

กำหนด.h

ประกอบด้วยตัวแปรทั้งหมดของโปรแกรม นี่คือที่ที่คุณสามารถเปลี่ยนเวลาในการอ่านหรือระยะเวลาที่ nodemcu ควรนอน

ฟังก์ชั่น

ประกอบด้วยฟังก์ชันในการรวมพารามิเตอร์และอ่านมัลติเพล็กเซอร์ รวมทั้งฟังก์ชันในการอ่านการหมุนของเครื่องวัดความเร็วลม

oledDisplay

แสดงผลความเร็วและทิศทางลมบนหน้าจอ

ขั้นตอนที่ 3: คำอธิบายเกี่ยวกับ …

คำอธิบายเกี่ยวกับ …
คำอธิบายเกี่ยวกับ …
คำอธิบายเกี่ยวกับ …
คำอธิบายเกี่ยวกับ …
คำอธิบายเกี่ยวกับ …
คำอธิบายเกี่ยวกับ …
คำอธิบายเกี่ยวกับ …
คำอธิบายเกี่ยวกับ …

แนบขัดจังหวะ

การหมุนของเครื่องวัดความเร็วลมวัดโดยฟังก์ชัน attachInterrupt () (และ detachInterrupt ()) ใน GPIO 12 (พิน D6) ของ Nodemcu (มีฟีเจอร์ขัดจังหวะบนพิน D0-D8)

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

คุณสามารถอ่านรายละเอียดของฟังก์ชันได้ในลิงค์สำหรับบทช่วยสอนของ Arduino ดูไฟล์แนบInterrupt()

ไวยากรณ์: attachInterrupt (พิน, ฟังก์ชันการโทรกลับ, ประเภท/โหมดอินเตอร์รัปต์);

พิน = D6

ฟังก์ชันเรียกกลับ = rpm_anemometer - นับแต่ละพัลส์บนตัวแปร

ประเภท/โหมดขัดจังหวะ = เพิ่มขึ้น - ขัดจังหวะเมื่อพินเปลี่ยนจากต่ำไปสูง

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

การคำนวณความเร็วลม

เมื่อกำหนดจำนวนรอบการหมุนของเครื่องวัดความเร็วลมใน 25 วินาที เราจะคำนวณความเร็ว

  • RADIO คือการวัดจากแกนกลางของเครื่องวัดความเร็วลมถึงปลายลูกปิงปอง คุณต้องวัดได้ดีมาก - (ดูในแผนภาพที่ระบุว่า 10 ซม.)
  • RPS (หมุนต่อวินาที) = หมุน / 25 วินาที
  • RPM (การหมุนต่อนาที) = RPS * 60
  • OMEGA (ความเร็วเชิงมุม - เรเดียนต่อวินาที) = 2 * PI * RPS
  • Linear_Velocity (เมตรต่อวินาที) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km ต่อชั่วโมง) = 3.6 * Linear_Velocity และนี่คือสิ่งที่จะถูกส่งไปยัง ThingSpeak

อ่านทิศทางกังหันลม

เพื่ออ่านตำแหน่งของกังหันลมเพื่อกำหนดทิศทางของลม โปรแกรมจะส่งสัญญาณต่ำและสูงไปยังมัลติเพล็กเซอร์พร้อมพารามิเตอร์ A, B, C รวมกันทั้งหมด (muxABC matrix) และรอรับที่พิน A0 ผลลัพธ์ ที่สามารถเป็นแรงดันไฟฟ้าใดๆ ระหว่าง 0 ถึง 3.3V ชุดค่าผสมจะแสดงในแผนภาพ

ตัวอย่างเช่น เมื่อ C = 0 (ต่ำ) B = 0 (ต่ำ) A = 0 (ต่ำ) มัลติเพล็กเซอร์จะให้ข้อมูลของพิน 0 และส่งสัญญาณไปยัง A0 ที่ Nodemcu อ่าน ถ้า C = 0 (ต่ำ), B = 0 (ต่ำ), A = 1 (สูง) มัลติเพล็กเซอร์จะส่งข้อมูลของพิน 1 และอื่นๆ ให้คุณ จนกว่าการอ่าน 8 ช่องสัญญาณจะเสร็จสิ้น

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

ข้อมูลนี้ถูกเก็บไว้ใน vector val [8] ที่จะเปรียบเทียบกับอาร์เรย์ที่อยู่เป็นเข็มทิศ ดูเมทริกซ์ในแผนภาพ ตัวอย่างเช่น ถ้าเวกเตอร์ที่ได้รับคือ [0, 0, 1, 0, 0, 0, 0, 0, 0] มันบ่งชี้ในเมทริกซ์ถึงทิศทาง E และสอดคล้องกับมุม 90 องศา; ถ้า [0, 0, 0, 0, 0, 0, 1, 1] ระบุในเมทริกซ์ที่อยู่ WNW และสอดคล้องกับมุม 292.5 องศา N สอดคล้องกับ [1, 0, 0, 0, 0, 0, 0, 0, 0] และมุม 0 องศา

สิ่งที่จะส่งไปให้ ThingSpeak อยู่ที่มุม เพราะรับเฉพาะตัวเลข

ขั้นตอนที่ 4: การสื่อสาร

การสื่อสาร
การสื่อสาร
การสื่อสาร
การสื่อสาร

วิธีส่งข้อมูลไปยัง ThingSpeak

ฟังก์ชัน thingspeaksenddata () มีหน้าที่ในการส่งข้อมูล

ThingSpeak.setField (1, float (linear_velocity_kmh)) - ส่งข้อมูลความเร็วไปยัง field1 ของช่องของฉัน

ThingSpeak.setField (2, float (wind_Direction_Angle)) - ส่งข้อมูลที่อยู่ไปยัง field2 ของช่องของฉัน

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - ส่งไปที่ช่องของฉัน myChannelNumber ด้วย myWriteAPIKey API ที่เขียนโดย TS ข้อมูลนี้สร้างขึ้นโดย TS เมื่อสร้างบัญชีและช่องของคุณ

ในภาพด้านบน คุณจะเห็นว่า ThingSpeak แสดงข้อมูลที่ได้รับอย่างไร

ในลิงก์นี้ คุณสามารถเข้าถึงข้อมูลของโครงการของฉันได้ในช่องสาธารณะของ ThingSpeak

ขั้นตอนที่ 5: ตัวแปรหลัก

พารามิเตอร์ของกังหันลม

  • MUX_A D5 - mux pi A ถึง Nodemcu พิน D5
  • MUX_B D4 - mux pin B ถึง Nodemcu pin D4
  • MUX_C D3 - mux pin C ถึง Nodemcu pin D3
  • READPIN 0 - อินพุตแบบอะนาล็อกบน NodeMcu = A0
  • NO_PINS 8 - จำนวนหมุด mux
  • val[NO_PINS] - พอร์ต 0 ถึง 7 ของ mux
  • wind_Direction_Angle - มุมของทิศทางลม
  • สตริง windRose [16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenals หลักประกันและหลักประกันย่อย
  • windAng [16] = {0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180, 202.5, 225, 247.5, 270, 292.5, 315, 337.5} - มุมของแต่ละทิศทาง
  • ตัวเลข [16] [NO_PINS] - เมทริกซ์ทิศทาง
  • muxABC[8] [3] - ชุดค่าผสม mux ABC

พารามิเตอร์เครื่องวัดความเร็วลม

  • rpmcount - นับจำนวนรอบของเครื่องวัดความเร็วลมที่หมุนเต็มที่ในเวลาที่กำหนด
  • timemeasure = 25.00 - ระยะเวลาในการวัดเป็นวินาที
  • timetoSleep = 1 - เวลาตื่นของ Nodemcu เป็นนาที
  • sleepTime = 15 - เวลานอนต่อเป็นนาที
  • rpm, rps - ความถี่การหมุน (รอบต่อนาที รอบต่อวินาที)
  • รัศมี - เมตร - การวัดความยาวของปีกเครื่องวัดความเร็วลม
  • linear_velocity - ความเร็วเชิงเส้นในหน่วย m/seg
  • linear_velocity_kmh - ความเร็วเชิงเส้นเป็น km/h
  • โอเมก้า - ความเร็วเรเดียลใน rad/seg

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

ป้อนข้อมูลของเครือข่าย wifi และ ThingSpeak ID และ API Writer Key ในส่วน Credentials.h แล้วบันทึก อัปโหลดไปที่ Nodemcu และนั่นคือทั้งหมด

เพื่อทดสอบการทำงานของระบบ ผมขอแนะนำพัดลมหมุนที่ดี

หากต้องการเข้าถึงข้อมูลทางโทรศัพท์มือถือ ให้ดาวน์โหลดแอปพลิเคชันสำหรับ IOS หรือ Android ชื่อ ThingView ซึ่งโชคดีที่ยังคงฟรีอยู่

กำหนดการตั้งค่าบัญชีของคุณและคุณจะพร้อมที่จะดูสภาพลมในบ้านของคุณได้ทุกที่

หากคุณมีความสนใจ เข้าไปที่ช่อง ID ThingSpeak Channel ID ของฉัน: 438851 ซึ่งเป็นที่สาธารณะ และคุณจะพบการวัดลมและทิศทางในบ้านของฉัน

ฉันหวังว่าคุณจะสนุก

หากคุณมีข้อสงสัยอย่าลังเลที่จะติดต่อฉัน

ความนับถือ

แนะนำ: