สารบัญ:
- ขั้นตอนที่ 1: การติดตั้ง Arduino IDE, บอร์ด ESP8266 และไลบรารี่และบัญชี ThingSpeak ของคุณ
- ขั้นตอนที่ 2: สำรวจ Sketch
- ขั้นตอนที่ 3: คำอธิบายเกี่ยวกับ …
- ขั้นตอนที่ 4: การสื่อสาร
- ขั้นตอนที่ 5: ตัวแปรหลัก
วีดีโอ: วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ส่วนที่ 2 - ซอฟต์แวร์: 5 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
บทนำ
นี่เป็นภาคต่อของโพสต์แรก "วิธีสร้างเครื่องวัดความเร็วลมของคุณเองโดยใช้ Reed Switches, Hall Effect Sensor และบางส่วนใน Nodemcu - ตอนที่ 1 - ฮาร์ดแวร์" - ที่ฉันแสดงวิธีการประกอบอุปกรณ์วัดความเร็วลมและทิศทาง ที่นี่ เราจะใช้ประโยชน์จากซอฟต์แวร์ควบคุมการวัดที่ออกแบบมาเพื่อใช้ใน Nodemcu โดยใช้ Arduino IDE
รายละเอียดโครงการ
ในโพสต์ที่แล้ว อุปกรณ์ติดอาวุธและเชื่อมต่อกับ Nodemcu สามารถวัดความเร็วและทิศทางของลมได้ ซอฟต์แวร์ควบคุมได้รับการออกแบบให้อ่านการหมุนของเครื่องวัดความเร็วลมเป็นระยะเวลาหนึ่ง คำนวณความเร็วเชิงเส้น อ่านทิศทางที่ใบพัดอยู่ แสดงผลใน OLED เผยแพร่ผลลัพธ์ใน ThingSpeak และนอนหลับเป็นเวลา 15 นาที การวัดครั้งต่อไป
คำเตือน: เครื่องวัดความเร็วลมนี้ไม่ควรใช้เพื่อวัตถุประสงค์ทางวิชาชีพ ใช้สำหรับการศึกษาหรือที่บ้านเท่านั้น
หมายเหตุ: ภาษาอังกฤษไม่ใช่ภาษาธรรมชาติของฉัน หากคุณพบข้อผิดพลาดทางไวยากรณ์ที่ขัดขวางไม่ให้คุณเข้าใจโครงการ โปรดแจ้งให้เราทราบเพื่อแก้ไข ขอบคุณมาก.
ขั้นตอนที่ 1: การติดตั้ง 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 ซึ่งเป็นที่สาธารณะ และคุณจะพบการวัดลมและทิศทางในบ้านของฉัน
ฉันหวังว่าคุณจะสนุก
หากคุณมีข้อสงสัยอย่าลังเลที่จะติดต่อฉัน
ความนับถือ
แนะนำ:
จอยสติ๊ก USB Hall Effect: 7 ขั้นตอน (พร้อมรูปภาพ)
จอยสติ๊ก USB ของ Hall Effect: คำแนะนำนี้แสดงวิธีใช้จอยสติ๊ก Hall Effect ระดับอุตสาหกรรมเพื่อสร้างจอยสติ๊ก USB ที่มีความแม่นยำสูง มีคำแนะนำอื่นที่เกี่ยวข้อง Tiny USB Joystick ที่สามารถให้โซลูชันต้นทุนต่ำได้>
Raspberry Pi A1332 Precision Hall - Effect Angle Sensor Java บทช่วยสอน: 4 ขั้นตอน
Raspberry Pi A1332 Precision Hall - เซ็นเซอร์มุมเอฟเฟกต์ บทช่วยสอน Java: A1332 เป็นเซ็นเซอร์ตำแหน่งมุมแม่เหล็กที่ตั้งโปรแกรมได้ความละเอียดสูง 360 °แบบไม่ต้องสัมผัส ออกแบบมาสำหรับระบบดิจิทัลโดยใช้อินเทอร์เฟซ I2C สร้างขึ้นจากเทคโนโลยี Circular Vertical Hall (CVH) และสัญญาณไมโครโปรเซสเซอร์ที่ตั้งโปรแกรมได้
True Bypass Guitar Effect Looper Station ที่ตั้งโปรแกรมได้โดยใช้ Dip Switches: 11 ขั้นตอน
True Bypass Guitar Effect Looper Station ที่ตั้งโปรแกรมได้โดยใช้ Dip Switches: ฉันเป็นคนที่คลั่งไคล้กีตาร์และเป็นนักเล่นอดิเรก โปรเจ็กต์ส่วนใหญ่ของฉันเกิดขึ้นจากอุปกรณ์เกี่ยวกับกีตาร์ ฉันสร้างแอมป์ของตัวเองและแป้นเหยียบเอฟเฟกต์บางอย่าง ในอดีตฉันเล่นในวงดนตรีเล็กๆ และโน้มน้าวตัวเองว่าฉันต้องการเพียงแอมป์ที่มีเ
Arduino Hall Effect Sensor พร้อมอินเตอร์รัปต์: 4 ขั้นตอน
Arduino Hall Effect Sensor พร้อมอินเตอร์รัปต์: สวัสดีทุกคน วันนี้ผมจะแสดงให้คุณเห็นว่าคุณสามารถเชื่อมต่อเซนเซอร์ Hall Effect กับ Arduino และใช้งานได้อย่างไรด้วยการขัดจังหวะเครื่องมือและวัสดุที่ใช้ในวิดีโอ (ลิงก์พันธมิตร): Arduino Uno: http ://s.click.aliexpress.com/e/biNyW0zKHall เซนเซอร์เอฟเฟกต์: h
Hall Effect Sensor บน Arduino โดยใช้ Fidget Spinner: 3 ขั้นตอน (พร้อมรูปภาพ)
Hall Effect Sensor บน Arduino โดยใช้ Fidget Spinner: บทคัดย่อในโครงการนี้ ฉันกำลังอธิบายเกี่ยวกับวิธีการทำงานของเซ็นเซอร์ Hall Effect ในการวัดความเร็วของ Fidget Spinner ด้วยบอร์ด Arduino การทำงาน: -A Hall effect sensor เป็นทรานสดิวเซอร์ที่เปลี่ยนแรงดันเอาต์พุตเพื่อตอบสนองต่อสนามแม่เหล็ก ฮอลล์เอฟเฟค