ส่วนของเว็บไซต์
ตัวเลือกของบรรณาธิการ:
- วิธีลบโปรแกรม Avast อย่างสมบูรณ์เพื่อลบ Avast
- แอปพลิเคชั่นมือถือ Aliexpress
- รูปแบบแป้นพิมพ์ QWERTY และ AZERTY แป้นพิมพ์ Dvorak เวอร์ชันพิเศษ
- เกาะเซาวิเซนเต เกาะเซาวิเซนเต
- กฎที่เราฝ่าฝืน สามารถวางข้อศอกบนโต๊ะได้หรือไม่?
- แฟลชไดรฟ์ USB ตัวใดที่น่าเชื่อถือและเร็วที่สุด?
- การเชื่อมต่อแล็ปท็อปเข้ากับทีวีผ่านสาย USB เพื่อเชื่อมต่อแล็ปท็อปเข้ากับทีวี VGA
- การเปลี่ยนอินเทอร์เฟซ Steam - จากรูปภาพธรรมดาไปจนถึงการนำเสนอทั้งหมดบนหน้าจอ การออกแบบไอน้ำใหม่
- วิธียกเลิกการสมัครสมาชิก Megogo บนทีวี: คำแนะนำโดยละเอียด วิธียกเลิกการสมัครสมาชิก Megogo
- วิธีแบ่งพาร์ติชันดิสก์โดยติดตั้ง Windows โดยไม่สูญเสียข้อมูล แบ่งพาร์ติชันดิสก์ 7
การโฆษณา
เซ็นเซอร์สถานีตรวจอากาศบน Arduino สถานีตรวจอากาศไร้สาย |
การดูสภาพอากาศเป็นกิจกรรมที่น่าตื่นเต้นมาก ฉันตัดสินใจสร้างสถานีตรวจอากาศของตัวเองตามความนิยม . ต้นแบบสถานีตรวจอากาศมีลักษณะดังนี้: ฟังก์ชั่นของสถานีตรวจอากาศของฉัน:
ไมโครคอนโทรลเลอร์ อาร์ดูโน่ นาโน 3.0 "หัวใจ" ของสถานีตรวจอากาศของฉันคือไมโครคอนโทรลเลอร์ อีเบย์): เพื่อควบคุมการแสดงผลและการโพลของเซ็นเซอร์ ฉันใช้ตัวจับเวลา 1 อาร์ดูโน่ทำให้เกิดการหยุดชะงักด้วยความถี่ 200 Hz (คาบ - 5 ms) ตัวบ่งชี้ ฉันเชื่อมต่อเพื่อแสดงการอ่านค่าเซ็นเซอร์ที่วัดได้และเวลาปัจจุบัน อาร์ดูโน่สี่หลัก ไฟ LED แสดงสถานะ ลานหน้าบ้าน FYQ-5643BHด้วยขั้วบวกทั่วไป (ขั้วบวกของส่วนที่เหมือนกันของการปล่อยทั้งหมดจะรวมกัน) แอโนดตัวบ่งชี้เชื่อมต่อผ่านตัวต้านทานจำกัดกระแสเข้ากับขั้วต่อ อาร์ดูโน่:
แคโทดของเซ็กเมนต์เชื่อมต่อกับพิน อาร์ดูโน่:
ส่วนตัวบ่งชี้จะสว่างขึ้นหากมีศักยภาพสูงที่ขั้วบวกของการคายประจุที่สอดคล้องกัน (1) และมีศักยภาพต่ำที่แคโทด (0) ฉันใช้ ตัวบ่งชี้แบบไดนามิกเพื่อแสดงข้อมูลบนตัวบ่งชี้ - มีเพียงตัวเลขเดียวเท่านั้นที่ใช้งานได้ตลอดเวลา การคายประจุที่ใช้งานอยู่สลับกับความถี่ 200 Hz (ระยะเวลาการแสดงผล 5 ms) ในเวลาเดียวกันการกะพริบของปล้องนั้นไม่สามารถมองเห็นได้ด้วยตา เซ็นเซอร์อุณหภูมิ DS18x20 ฉันเชื่อมต่อเซ็นเซอร์เพื่อให้สามารถวัดอุณหภูมิจากระยะไกลได้ ซึ่งให้การวัดอุณหภูมิภายนอกในช่วงกว้าง เซ็นเซอร์เชื่อมต่อกับบัส 1-ลวดและมีเอาต์พุต 3 ช่อง - กำลัง ( วีซีซี), ข้อมูล ( ดีเอที), โลก ( จีเอ็นดี):
ระหว่างหมุด วีซีซีและ ดีเอทีฉันรวมตัวต้านทานแบบดึงขึ้น 4.7 kOhm หากต้องการแปลงระหว่างองศาเซลเซียสและฟาเรนไฮต์ คุณสามารถใช้ตารางต่อไปนี้: ฉันวางเซ็นเซอร์ไว้นอกหน้าต่างบ้านในกล่องปากกาลูกลื่นพลาสติก: สถานีตรวจอากาศมืออาชีพใช้หน้าจอ Stevenson เพื่อปกป้องเทอร์โมมิเตอร์จากแสงแดดโดยตรง และรับประกันการไหลเวียนของอากาศ หน้าจอสตีเวนสัน): เซ็นเซอร์ความดันและอุณหภูมิ BMP280 บารอมิเตอร์แบบปรอทและบารอมิเตอร์แบบแอนรอยด์มักใช้ในการวัดความดันบรรยากาศ ใน บารอมิเตอร์ปรอทความดันบรรยากาศจะสมดุลโดยน้ำหนักของคอลัมน์ปรอท ซึ่งความสูงที่ใช้ในการวัดความดัน: ใน บารอมิเตอร์แบบแอนรอยด์ใช้การบีบอัดและขยายกล่องภายใต้ความดันบรรยากาศ: ในการวัดความดันบรรยากาศและอุณหภูมิห้องในสถานีตรวจอากาศที่บ้าน ฉันใช้เซ็นเซอร์ - เล็ก เอสเอ็มดี-เซนเซอร์ขนาด 2 x 2.5 มม. ใช้เทคโนโลยีพายโซรีซิสทีฟ: เซ็นเซอร์เชื่อมต่อกับบัส ไอทูซี(รายละเอียดการติดต่อ- เอสดีเอ/เอสดีไอ, ติดต่อการซิงโครไนซ์ - เอสซีแอล/เอสซีเค):
อดาฟรุ๊ต- ไฟล์ Adafruit_Sensor.h, อดาฟรุต_BMP280.h, อดาฟรุต_BMP280.cpp. หน่วยความดันบรรยากาศ เซ็นเซอร์ผ่านฟังก์ชั่น อ่านความดันแสดงความดันบรรยากาศเป็นปาสคาล หน่วยพื้นฐานของการวัดความดันบรรยากาศคือ เฮกโตปาสคาล(hPa) (1 hPa = 100 Pa) อะนาล็อกซึ่งเป็นหน่วยที่ไม่ใช่ระบบ " มิลลิบาร์" (mbar) (1 mbar = 100Pa = 1hPa) สำหรับการแปลงระหว่างหน่วยแรงดันนอกระบบที่ใช้กันทั่วไป " มิลลิเมตรปรอท" (mmHg) และเฮกโตปาสคาล ใช้อัตราส่วนต่อไปนี้: การขึ้นอยู่กับความดันบรรยากาศต่อระดับความสูงเหนือระดับน้ำทะเล ความกดอากาศสามารถแสดงได้ทั้งในรูปแบบสัมบูรณ์และแบบสัมพัทธ์ พยากรณ์อากาศ การวิเคราะห์การเปลี่ยนแปลงของแรงดันทำให้คุณสามารถสร้างการพยากรณ์อากาศได้ และความแม่นยำของมันจะสูงขึ้น ความกดดันก็จะเปลี่ยนแปลงอย่างรวดเร็วยิ่งขึ้น ตัวอย่างเช่น กฎทั่วไปเก่าสำหรับกะลาสีเรือคือความดันลดลง 10 hPa (7.5 มม. ปรอท) ในช่วงเวลา 8 ชั่วโมงบ่งชี้ว่าลมกำลังพัดเข้ามา ลมมาจากไหน? อากาศจะไหลเข้าสู่ศูนย์กลางบริเวณความกดอากาศต่ำทำให้เกิด ลม- การเคลื่อนที่ในแนวนอนของอากาศจากบริเวณที่มีความกดอากาศสูงไปยังบริเวณที่มีความกดอากาศต่ำ (ความกดอากาศสูงจะบีบมวลอากาศลงในบริเวณที่มีความกดอากาศต่ำ) หากความกดอากาศต่ำมากลมก็อาจพัดแรงได้ พายุ- ขณะเดียวกันในพื้นที่ ลดลงความกดอากาศ (ความกดดันหรือพายุไซโคลน) อากาศอุ่นลอยขึ้นและก่อตัวเป็นเมฆซึ่งมักนำมาซึ่ง ฝนหรือ หิมะ. ในอุตุนิยมวิทยา ทิศทางของลมถือเป็นทิศทางที่ลมพัด: อัลกอริทึมมักใช้ในการพยากรณ์อากาศตามความกดอากาศและทิศทางลม ซัมเบรตติ. เซ็นเซอร์ความชื้น ฉันใช้โมดูลนี้เพื่อตรวจสอบความชื้นสัมพัทธ์ในอากาศ DHT11(ซื้อมาจากตลาดนัด. อีเบย์):
เซ็นเซอร์ความชื้น DHT11มีเอาต์พุต 3 ช่อง - แหล่งจ่ายไฟ ( + ), ข้อมูล ( ออก), โลก ( - ):
เพื่อทำงานกับเซ็นเซอร์ที่ฉันใช้ห้องสมุดจาก อดาฟรุ๊ต- ไฟล์ DHT.h, DHT.cpp. ความชื้นในอากาศเป็นตัวกำหนดปริมาณไอน้ำที่มีอยู่ในอากาศ ความชื้นสัมพัทธ์แสดงเปอร์เซ็นต์ความชื้นในอากาศสัมพันธ์กับปริมาณสูงสุดที่เป็นไปได้ที่อุณหภูมิปัจจุบัน ใช้สำหรับวัดความชื้นสัมพัทธ์ : สำหรับมนุษย์ช่วงความชื้นในอากาศที่เหมาะสมคือ 40 ... 60% นาฬิกาเรียลไทม์ ฉันใช้โมดูลเป็นนาฬิกาเรียลไทม์ RTC DS1302(ซื้อผ้าพันคอพร้อมนาฬิกาบนแพลตฟอร์มการซื้อขาย อีเบย์):
โมดูล DS1302เชื่อมต่อกับรถบัส 3-Wire- หากต้องการใช้โมดูลนี้ร่วมกับ อาร์ดูโน่ห้องสมุดได้รับการพัฒนา iarduino_RTC (จาก iarduino.ru). บอร์ดพร้อมโมดูล DS1302มีพินห้าพินที่ฉันเชื่อมต่อกับพินบอร์ด อาร์ดูโน่ นาโน:
เพื่อรักษาการอ่านนาฬิกาให้ถูกต้องเมื่อปิดเครื่อง ฉันจึงใส่แบตเตอรี่เข้าไปในช่องบนบอร์ด CR2032. ความแม่นยำของโมดูลนาฬิกาของฉันไม่สูงมาก - นาฬิกาจะเร็วประมาณหนึ่งนาทีในสี่วัน ดังนั้นฉันจึงรีเซ็ตนาทีเป็น "ศูนย์" และชั่วโมงเป็นค่าที่ใกล้ที่สุดโดยกดปุ่มที่เชื่อมต่อกับพิน A0 ของ Arduino ค้างไว้หลังจากเปิดเครื่องของสถานีตรวจอากาศ หลังจากการกำหนดค่าเริ่มต้น พิน A0 จะใช้ในการส่งข้อมูลผ่านการเชื่อมต่อแบบอนุกรม การถ่ายโอนข้อมูลไปยังคอมพิวเตอร์และทำงานผ่านโปรโตคอล MQTT เพื่อถ่ายโอนข้อมูลผ่านการเชื่อมต่อแบบอนุกรมไปยัง อาร์ดูโน่เชื่อมต่อ ยูเอสบี-ยูอาร์ทีตัวแปลง: บทสรุป อาร์ดูโน่ใช้ในการส่งข้อมูลในรูปแบบ 8N1(8 บิตข้อมูล ไม่มีพาริตี 1 บิตหยุด) ที่ 9600 bps ข้อมูลจะถูกส่งเป็นแพ็กเก็ต โดยมีความยาวแพ็กเก็ต 4 ตัวอักษร การถ่ายโอนข้อมูลดำเนินการใน " บิตปังโหมด " โดยไม่ต้องใช้ฮาร์ดแวร์ พอร์ตอนุกรม อาร์ดูโน่. รูปแบบข้อมูลที่ส่ง:
มคต โกลังแอปพลิเคชันไคลเอ็นต์โปรโตคอล มคตส่งข้อมูลที่ได้รับจากสถานีตรวจอากาศไปยังเซิร์ฟเวอร์ ( มคต-นายหน้า) : คุณสามารถใช้เพื่อตรวจสอบการอ่านสถานีตรวจอากาศได้ หุ่นยนต์-แอปพลิเคชัน : โภชนาการ เพื่อขับเคลื่อนสถานีตรวจอากาศที่ฉันใช้ ที่ชาร์จจากเก่า โทรศัพท์มือถือ โมโตโรล่าสร้างแรงดันไฟ 5 V กระแสสูงสุด 0.55 A และต่อเข้ากับหน้าสัมผัส 5V(+) และ จีเอ็นดี (-): การดำเนินงานของสถานีตรวจอากาศ เมื่อเริ่มต้น เซ็นเซอร์จะถูกเตรียมใช้งานและทดสอบ ในกรณีที่ไม่มีเซ็นเซอร์ DS18x20ข้อผิดพลาด "E1" ปรากฏขึ้นเมื่อไม่มีเซ็นเซอร์ - ข้อผิดพลาด "E3" จากนั้นวงจรการทำงานของสถานีตรวจอากาศจะเริ่มต้นขึ้น:
แสดงอุณหภูมิ เมื่อวัดอุณหภูมิ จะแสดงตัวเลขอุณหภูมิสองหลัก และสำหรับอุณหภูมิลบจะมีเครื่องหมายลบ (โดยมีสัญลักษณ์องศาอยู่ที่หลักขวาสุด) จอแสดงผลความดัน เมื่อวัดความดันจะแสดงความดันสามหลักเป็น mmHg (มีสัญลักษณ์ " ป" ในตำแหน่งที่ถูกต้องสุด): หากความดันลดลงอย่างรวดเร็ว ให้ใช้สัญลักษณ์แทน " ป“สัญลักษณ์ทางด้านขวาสุดปรากฏขึ้น” ล“ถ้ามันโตเร็วขนาดนั้น” ชม" เกณฑ์สำหรับความคมชัดของการเปลี่ยนแปลงคือ 8 มม. ปรอทใน 8 ชั่วโมง: เนื่องจากสถานีตรวจอากาศของฉันแสดงความกดอากาศสัมบูรณ์ ( คิวเอฟอี) จากนั้นการอ่านกลับกลายเป็นว่าประเมินต่ำเกินไปเมื่อเทียบกับข้อมูลในรายงาน เมต้า(ซึ่งให้ คิวเอ็นเอช) (14 UTC วันที่ 28 มีนาคม 2018): อัตราส่วนความดัน (ตาม เอทิส) มีจำนวน $(1,015 \over 998) = $1.017 ระดับความสูงของสนามบินโกเมล (รหัส ICAO อืม) เหนือระดับน้ำทะเล 143.6 ม. อุณหภูมิตามมาตรฐาน ATIS คือ 1 ° ค. ค่าที่อ่านได้จากสถานีตรวจอากาศของฉันเกือบจะใกล้เคียงกับความกดดันสัมบูรณ์ คิวเอฟอีตามข้อมูล เอทิส! ความดันสูงสุด/ต่ำสุด ( คิวเอฟอี) ซึ่งบันทึกโดยสถานีตรวจอากาศของฉันตลอดระยะเวลาการสังเกต: จอแสดงผลความชื้นสัมพัทธ์ ความชื้นสัมพัทธ์ในอากาศจะแสดงเป็นเปอร์เซ็นต์ (สัญลักษณ์เปอร์เซ็นต์จะแสดงเป็นตัวเลขด้านขวาสองหลัก): แสดงเวลาปัจจุบัน เวลาปัจจุบันจะแสดงบนตัวบ่งชี้ในรูปแบบ "HH:MM" โดยมีโคลอนแยกจะกะพริบหนึ่งครั้งต่อวินาที: การแสดงข้างขึ้นข้างแรมและวันข้างขึ้นข้างแรม ตัวเลขสองหลักแรกแสดงข้างขึ้นข้างแรมปัจจุบัน และอีกสองหลักถัดไปคือวันจันทรคติปัจจุบัน: ดวงจันทร์มีแปดระยะ (ระบุชื่อภาษาอังกฤษและรัสเซีย (สีน้ำเงิน - ไม่ถูกต้อง)): เฟสจะแสดงบนตัวบ่งชี้ตามรูปสัญลักษณ์:
การถ่ายโอนข้อมูลไปยังคอมพิวเตอร์ หากคุณเชื่อมต่อสถานีตรวจอากาศด้วย ยูเอสบี-ยูอาร์ทีตัวแปลง (ตัวอย่างเช่น อิงจากไมโครวงจร ซีพี2102) เชื่อมต่อกับ ยูเอสบี- พอร์ตคอมพิวเตอร์ คุณสามารถใช้โปรแกรมเทอร์มินัลเพื่อดูข้อมูลที่ส่งโดยสถานีตรวจอากาศ: ฉันพัฒนาด้วยภาษาโปรแกรม โกลังโปรแกรมที่เก็บบันทึกการสังเกตสภาพอากาศและส่งข้อมูลไปยังบริการ และสามารถดูได้ที่ หุ่นยนต์-สมาร์ทโฟนที่ใช้แอพพลิเคชั่น : ตามบันทึกการสังเกตสภาพอากาศ คุณสามารถสร้างกราฟการเปลี่ยนแปลงของความกดอากาศได้ เช่น การปรับปรุงตามแผน:
ในสถานีตรวจอากาศ เครื่องวัดความเร็วลมสามถ้วย (1) ใช้ในการวัดความเร็วลม และใช้ใบพัดตรวจอากาศ (2) เพื่อกำหนดทิศทางลม: ใช้ในการวัดความเร็วลมด้วย เครื่องวัดความเร็วลมแบบลวดร้อน(ภาษาอังกฤษ) เครื่องวัดความเร็วลมแบบลวดร้อน- ในฐานะที่เป็นลวดให้ความร้อนคุณสามารถใช้ไส้หลอดทังสเตนจากหลอดไฟที่มีกระจกแตกได้ ในเครื่องวัดความเร็วลมแบบลวดร้อนที่ผลิตในอุตสาหกรรม เซ็นเซอร์มักจะติดตั้งอยู่บนท่อยืดไสลด์: หลักการทำงานของอุปกรณ์นี้คือความร้อนจะถูกลบออกจากองค์ประกอบความร้อนเนื่องจากการพาความร้อนโดยการไหลของอากาศ - ลม ในกรณีนี้ ความต้านทานของเส้นใยจะถูกกำหนดโดยอุณหภูมิของเส้นใย กฎแห่งการเปลี่ยนแปลงความต้านทานของไส้หลอด $R_T$ ขึ้นอยู่กับอุณหภูมิ $T$ มีรูปแบบ: เมื่อความเร็วการไหลของอากาศเปลี่ยนแปลง อุณหภูมิจะเปลี่ยนไปตามกระแสไส้หลอดคงที่ (เครื่องวัดความเร็วลมด้วย ดี.ซี, ภาษาอังกฤษ ซีซีเอ- หากอุณหภูมิขององค์ประกอบความร้อนคงที่ กระแสไฟฟ้าที่ไหลผ่านองค์ประกอบจะเป็นสัดส่วนกับความเร็วของการไหลของอากาศ (เครื่องวัดความเร็วลมอุณหภูมิคงที่ ภาษาอังกฤษ) ซีทีเอ). ที่จะดำเนินต่อไป ใน เวลาว่างและครั้งนี้ฉันเขียนคำแนะนำในการสร้างสถานีตรวจอากาศขนาดเล็ก โดยจะทำหน้าที่เป็นนาฬิกาพร้อมวันที่และแสดงอุณหภูมิภายในและภายนอก เราจะใช้ Arduino UNO เป็นตัวควบคุมหลัก แต่บอร์ดอื่นที่มี Atmega328p บนบอร์ดก็ใช้งานได้เช่นกัน สำหรับการแสดงผลเราใช้หน้าจอกราฟิก WG12864B เราจะเชื่อมต่อเซ็นเซอร์อุณหภูมิ ds18b20 สองตัวด้วย อันหนึ่งอยู่ในอาคาร ส่วนอันที่สองจะถูกพาออกไปข้างนอก มาเริ่มกันเลย ในกระบวนการสร้างผลิตภัณฑ์โฮมเมดเราจะต้อง: Arduino UNO (หรือบอร์ดที่รองรับ Arduino อื่น ๆ ) ขั้นตอนที่ 1 เตรียม WG12864B3. ตัวเลือก A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T ตัวเลือก B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ แสดง AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J4, 4F, 2, 12864J-1 ตัวเลือก C: เซินเจิ้น Jinghua Displays Co Ltd. JM12864 ตัวเลือก D: Wintek-Cascades WD-G1906G, Wintek - GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS19264/HD61202 พวกเขาดูเกือบจะเหมือนกัน แต่หมุดเชื่อมต่อนั้นแตกต่างกัน ฉันเลือกและแนะนำให้คุณ WG12864B3 V2.0 แต่หากหน้าจอที่คุณได้รับแตกต่างออกไปหรือคุณไม่มีหน้าจอในมือ คุณสามารถค้นหาได้อย่างง่ายดายโดยใช้ตาราง: ลักษณะโดยย่อ: มีมากมายบนอินเทอร์เน็ต แผนการที่แตกต่างกันการเชื่อมต่อและทุกอย่างดูเหมือนจะทำงานได้ ประเด็นก็คือไม่เพียงมีหน้าจอที่แตกต่างกันเท่านั้น แต่ยังมีวิธีเชื่อมต่อสองวิธี: แบบอนุกรมและแบบขนาน เมื่อใช้การเชื่อมต่อผ่าน พอร์ตอนุกรม– เราต้องการเอาต์พุตไมโครคอนโทรลเลอร์เพียง 3 ตัวเท่านั้น ด้วยค่าขั้นต่ำแบบขนานที่ 13 ตัวเลือกในกรณีนี้ชัดเจน Arduino ไม่ได้มีพินมากมายอยู่แล้ว สำหรับการเชื่อมต่อแบบขนาน แผนภาพการเชื่อมต่อจะเป็นดังนี้: สำหรับการเชื่อมต่อแบบอนุกรมที่เราจะใช้ แผนภาพจะเป็นดังนี้: WG12864B – Arduino UNO 1 (GND) – GND 2 (VCC) – +5V 4 (RS) – 10 5 (R/W) – 11 6 (E) – 13 15 (PSB) – GND 19 (BLA) – ผ่านตัวต้านทาน 100 โอห์ม - +5V 20 (BLK) – GND หากต้องการปรับคอนทราสต์ จะต้องมีโพเทนชิออมิเตอร์บนหน้าจอ มีหน้าจอที่ไม่มีมัน แต่ตอนนี้หายากแล้ว: จำเป็นต้องใช้ตัวต้านทาน 100 โอห์มเพื่อให้แรงดันไฟฟ้า 5 โวลต์ไม่ทำให้ไดโอดแบ็คไลท์ไหม้โดยไม่ตั้งใจ ขั้นตอนที่ 2 การสร้างร่างกาย ตัดฟิล์มใสที่ด้านบนของกล่องออกเพื่อไม่ให้เหลือชิ้น: จากนั้นใช้มีดอเนกประสงค์ตัดหน้าต่างขนาด 37x69 สำหรับหน้าจอออก ที่ด้านหลังตามขอบของช่องเจาะเราใช้เทปกาวสองหน้าโดยควรเป็นสีดำ: เรานำกระดาษป้องกันออกจากเทปแล้วติดหน้าจอของเราไว้: จากภายนอกควรมีลักษณะดังนี้: ด้านล่างหน้าจอด้วยเทปสองหน้าเราจึงติด Arduino โดยที่เคยทำการตัดมาก่อนหน้านี้ พอร์ต USBและปลั๊กไฟ: ต้องทำช่องเจาะสำหรับซ็อกเก็ต Arduino ทั้งสองด้านของกล่องเพื่อให้สามารถปิดได้อย่างอิสระ: ขั้นตอนที่ 3 เซ็นเซอร์อุณหภูมิ สำหรับตัวเลือกแหล่งจ่ายไฟใดๆ เซ็นเซอร์จะเชื่อมต่อแบบขนาน: เราจะวางเซ็นเซอร์วัดอุณหภูมิภายในไว้บนกระดานเล็กๆ พร้อมด้วยปุ่มสองปุ่มที่เราจะใช้ตั้งเวลาและวันที่ของนาฬิกา: เราเชื่อมต่อสายไฟทั่วไปจากทั้งสองปุ่มเข้ากับ GND เชื่อมต่อสายไฟจากปุ่มแรกไปที่ A0 จากปุ่มที่สองถึง A1 ควรเลือกเซ็นเซอร์ที่ควรวางไว้นอกห้องในตัวเรือนโลหะ กันฝุ่น และกันน้ำ: คำนวณสายไฟตามความยาวที่ต้องการเพื่อให้คุณสามารถแขวนเซ็นเซอร์ไว้นอกหน้าต่างได้ สิ่งสำคัญคือต้องไม่เกิน 5 เมตร หากคุณต้องการความยาวที่ยาวกว่านี้ คุณจะต้องลดค่าของการดึงขึ้น ตัวต้านทาน เราเชื่อมต่อสายไฟจากบัสข้อมูล DQ ของเซ็นเซอร์ทั้งสองตัวเข้ากับขา 5 ของ Arduino ขั้นตอนที่ 4 โภชนาการ หรือคุณสามารถวางช่องใส่แบตเตอรี่ไว้ในกล่องใส่แบตเตอรี่ AAA สี่ก้อนได้ และเชื่อมต่อสายบวกจากช่องเข้ากับ Vin Arduino และสายลบเข้ากับ GND ขั้นตอนที่ 5 เตรียมสภาพแวดล้อมการเขียนโปรแกรม และยังเพิ่มไลบรารีสองแห่งที่จำเป็นสำหรับการร่างภาพด้วย OneWire - จำเป็นสำหรับการสื่อสารกับเซ็นเซอร์ ds18b20: U8glib – ใช้เพื่อแสดงข้อมูลบนหน้าจอ: กำลังดาวน์โหลดไลบรารี่ จากนั้นเราจะแตกไฟล์เก็บถาวรและย้ายเนื้อหาของไฟล์เก็บถาวรไปยังโฟลเดอร์ "ไลบรารี" ซึ่งอยู่ในโฟลเดอร์ที่ติดตั้ง Arduino IDE คุณยังสามารถเพิ่มไลบรารีผ่าน Arduino IDE ได้ หากต้องการทำสิ่งนี้โดยไม่ต้องคลายไฟล์เก็บถาวรให้เปิด Arduino IDE แล้วเลือก Sketch - เชื่อมต่อไลบรารีจากเมนู ที่ด้านบนสุดของรายการแบบเลื่อนลง ให้เลือก “ไลบรารี Add.Zip” เราระบุตำแหน่งของไฟล์เก็บถาวรที่ดาวน์โหลด หลังจากทำตามขั้นตอนทั้งหมดแล้ว คุณต้องรีสตาร์ท Arduino IDE ขั้นตอนที่ 6 การแก้ไขร่าง ไบต์ addr1=(0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63); // ที่อยู่ภายใน ไบต์ addr2=(0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97); // ที่อยู่ภายนอก เซ็นเซอร์ เราแทนที่ที่อยู่ของตำแหน่งเซ็นเซอร์ที่เกี่ยวข้องด้วยที่อยู่ของเรา //u8g.setPrintPos(44, 50); u8g.print(วินาที); // ส่งออกวินาทีเพื่อควบคุมความถูกต้องของการเคลื่อนไหว ติดตั้ง เวลาที่เหมาะสมผ่านทางมอนิเตอร์พอร์ต ในการดำเนินการนี้ ให้เปิดมอนิเตอร์พอร์ต รอให้การวัดอุณหภูมิเริ่มต้นเสร็จสิ้น แล้วจึงเข้าไป วันที่ปัจจุบันและเวลาในรูปแบบ "วัน เดือน ปี ชั่วโมง นาที วินาที" ไม่มีการเว้นวรรค ตัวเลขคั่นด้วยลูกน้ำหรือจุด หากนาฬิกาเร่งรีบ เราจะเปลี่ยนค่าให้มากขึ้น ฉันแนะนำให้ทดลองเพิ่มทีละ 100 หน่วย หากฉันล้าหลัง ฉันควรลดค่าในบรรทัด: ถ้า (micros() - prevmicros >494000) ( // เปลี่ยนเป็นอย่างอื่นเพื่อแก้ไขให้ถูกต้องคือ 500000 เรากำหนดตัวเลขที่นาฬิกาทำงานได้อย่างแม่นยำโดยเชิงประจักษ์ เพื่อกำหนดความแม่นยำของการเคลื่อนที่ คุณต้องแสดงวินาที หลังจากปรับเทียบตัวเลขอย่างแม่นยำแล้ว วินาทีก็สามารถใส่เครื่องหมายวินาทีและลบออกจากหน้าจอได้ ฉันอยากมีสถานีตรวจอากาศเป็นของตัวเอง ซึ่งจะส่งการอ่านค่าจากเซ็นเซอร์ไปยังแผนที่ตรวจสอบสาธารณะ (ค้นหาบน Google ใน 5 วินาที) ปรากฎว่ามันไม่ยากอย่างที่คิด มาดูกันว่าได้ทำอะไรไปบ้าง สำหรับ ของการกระทำนี้ฉันเอามันไปเอง อาร์ดูโน่ อูโน่และ Ethernet Shield w5100 สำหรับมัน ทั้งหมดนี้สั่งจากจีนใน Aliexpress ฉันยังสั่งเซ็นเซอร์ที่นั่นด้วย: DHT22, DHT11, DS18B20, BMP280 (มีการวางแผนเซ็นเซอร์ก๊าซและควันด้วย...) หลังจากค้นหาฟอรัม, Google, Yandex ฉันพบร่างเวอร์ชันที่ดี - https://student-proger.ru/2014/11/meteostanciya-2-1/ ในความคิดเห็นมีคนโพสต์ภาพร่างที่เสร็จสมบูรณ์พร้อมเซ็นเซอร์แสงและก๊าซ ฉันเอาพวกมันมาเป็นพื้นฐาน ในภาพร่างเหล่านั้นไม่มีการรองรับเซ็นเซอร์ความดันที่ 280 เราได้พูดคุยกับผู้เขียนเขาแทนที่ 180 ด้วย 280 ทุกอย่างทำงานได้อย่างสมบูรณ์แบบ (ขอบคุณเขามากสำหรับสิ่งนี้) ด้านล่างนี้เป็นตัวอย่างของภาพร่างสุดท้ายที่ฉันคิดขึ้นมา ใน ในขณะนี้ฉันได้เชื่อมต่อเซ็นเซอร์แล้ว: ความสนใจ! ก่อนอัพโหลดภาพร่างอย่าลืมเปลี่ยนที่อยู่ MAC ของอุปกรณ์เพื่อไม่ให้รบกวนผู้อื่น (เช่น นำที่อยู่ Mac ของโทรศัพท์มือถือของคุณไปเปลี่ยนตัวอักษร/ตัวเลขตัวสุดท้ายในนั้น ซึ่งจะไม่ “รบกวน” ” เครือข่ายท้องถิ่นของคุณ! แผนภาพการเชื่อมต่อโดยประมาณ (ภาพที่ถ่ายจากภาพร่างนี้บนอินเทอร์เน็ต): ด้วยเหตุผลทางเทคนิค ฉันไม่สามารถโพสต์ภาพร่างโดยตรงที่นี่ได้ ฉันใส่มันไว้ในเอกสารสำคัญ ลิงค์ไปอยู่ในบรรทัดด้านบน อย่างที่คุณเห็น มีการอ่านค่าและมันทำงานอย่างถูกต้อง ตัวอย่างเช่น ฉันจะโพสต์ภาพหน้าจอสองสามภาพจากเซ็นเซอร์ของฉัน:
ขอแนะนำให้ดาวน์โหลดเฟิร์มแวร์ก่อนเชื่อมต่อส่วนประกอบเพื่อให้แน่ใจว่าบอร์ดใช้งานได้ หลังจากประกอบแล้วคุณสามารถแฟลชได้อีกครั้งบอร์ดควรจะกระพริบอย่างราบรื่น ในโครงการที่มีผู้บริโภคที่ทรงพลังในวงจรจ่ายไฟของบอร์ด 5V (ระบุแอดเดรสได้ แถบนำ,เซอร์โว,มอเตอร์ ฯลฯ) จำเป็นต้องจ่ายไฟ 5V ภายนอกเข้าวงจรก่อน กำลังเชื่อมต่อ Arduinoไปยังคอมพิวเตอร์ เนื่องจาก USB จะไม่จ่ายกระแสไฟที่ต้องการ เช่น เทปต้องการ นี่อาจทำให้ไดโอดป้องกันบนบอร์ด Arduino ไหม้ได้ คำแนะนำในการดาวน์โหลดและอัพโหลดเฟิร์มแวร์อยู่ใต้สปอยเลอร์ในบรรทัดถัดไป เนื้อหาของโฟลเดอร์ในไฟล์เก็บถาวร
นอกจากนี้
การตั้งค่าเฟิร์มแวร์
#define RESET_CLOCK 0 // รีเซ็ตนาฬิกาในขณะที่กำลังโหลดเฟิร์มแวร์ (สำหรับโมดูลที่มีแบตเตอรี่แบบถอดไม่ได้) อย่าลืมใส่ 0 แล้วแฟลชอีกครั้ง! #define SENS_TIME 30000 // อัปเดตเวลาการอ่านเซ็นเซอร์บนหน้าจอ มิลลิวินาที #define LED_MODE 0 // ประเภท LED RGB: 0 - แคโทดหลัก, 1 - แอโนดหลัก #define LED_BRIGHT 255 // ความสว่าง LED CO2 (0 - 255) # กำหนด BLUE_YELLOW 1 // สีเหลืองแทนที่จะเป็นสีน้ำเงิน (1 ใช่, 0 ไม่ใช่) แต่เนื่องจากคุณสมบัติการเชื่อมต่อสีเหลืองจึงไม่สว่างนัก #define DISP_MODE 1 // แสดงผลที่มุมขวาบน: 0 - ปี, 1 - วัน ของสัปดาห์ 2 - วินาที #define WEEK_LANG 1 // ภาษาของวันในสัปดาห์: 0 - อังกฤษ, 1 - รัสเซีย (ทับศัพท์) #define DEBUG 0 // แสดงบันทึกการเริ่มต้นเซ็นเซอร์เมื่อเริ่มต้น #define PRESSURE 1 // 0 - กราฟความดัน, 1 - กราฟพยากรณ์ฝน (แทนความกดดัน) อย่าลืมปรับขีดจำกัดกราฟ // แสดงขีดจำกัดของกราฟ #define TEMP_MIN 15 #define TEMP_MAX 35 #define HUM_MIN 0 #define HUM_MAX 100 #define PRESS_MIN -100 #define PRESS_MAX 100 #define CO2_MIN 300 #define CO2_MAX 2000 วันหนึ่ง ขณะเดินไปรอบๆ เมือง ฉันเห็นร้านอุปกรณ์วิทยุอิเล็กทรอนิกส์แห่งใหม่เปิดขึ้น พอเข้าไปก็เจอโล่สำหรับ Arduino เยอะมาก เพราะ... ฉันมี Arduino Uno และ Arduino Nano ที่บ้าน และไอเดียนี้ก็มาเล่นกับเครื่องส่งสัญญาณจากระยะไกลทันที ฉันตัดสินใจซื้อเครื่องส่งและตัวรับสัญญาณที่ถูกที่สุดที่ 433 MHz: เครื่องส่งสัญญาน.
เมื่อเขียนร่างการส่งข้อมูลอย่างง่าย (ตัวอย่างที่นำมาจากที่นี่) ปรากฎว่าอุปกรณ์ส่งสัญญาณอาจค่อนข้างเหมาะสำหรับการส่งข้อมูลอย่างง่าย เช่น อุณหภูมิ ความชื้น เครื่องส่งสัญญาณมีลักษณะดังต่อไปนี้: รับลักษณะโมดูล: อินเทอร์เน็ตบอกว่าช่วงการส่งข้อมูลที่ 2Kb/วินาทีสามารถเข้าถึงได้สูงสุด 150 เมตร ฉันไม่ได้ตรวจสอบด้วยตัวเอง แต่ในอพาร์ทเมนต์สองห้องก็เป็นที่ยอมรับทุกที่ ฮาร์ดแวร์สถานีตรวจอากาศที่บ้าน หลังจากการทดลองหลายครั้ง ฉันตัดสินใจเชื่อมต่อเซ็นเซอร์อุณหภูมิ ความชื้น และเครื่องส่งสัญญาณเข้ากับ Arduino Nano เซ็นเซอร์อุณหภูมิ DS18D20 เชื่อมต่อกับ Arduino ดังนี้: 1) GND ไปที่ลบของไมโครคอนโทรลเลอร์ โมดูลเครื่องส่งสัญญาณ MX-FS - 03V ใช้พลังงาน 5 โวลต์ เอาต์พุตข้อมูล (ADATA) เชื่อมต่อกับพิน D13 เชื่อมต่อกับ Arduino Uno จอ LCDและบารอมิเตอร์ BMP085
ตัวรับสัญญาณเชื่อมต่อกับขา D10 โมดูล BMP085 - เซ็นเซอร์ความดันบรรยากาศแบบดิจิตอล เซ็นเซอร์ช่วยให้คุณวัดอุณหภูมิ ความดัน และความสูงเหนือระดับน้ำทะเลได้ อินเทอร์เฟซการเชื่อมต่อ: I2C แรงดันไฟจ่ายเซ็นเซอร์ 1.8-3.6 V โมดูลนี้เชื่อมต่อกับ Arduino ในลักษณะเดียวกับอุปกรณ์ I2C อื่นๆ:
DHT มี 4 พิน:
เชื่อมต่อกับ D8 ของ Arduino ส่วนซอฟต์แวร์ของสถานีตรวจอากาศภายในบ้าน โมดูลส่งสัญญาณจะวัดและส่งอุณหภูมิทุกๆ 10 นาที ด้านล่างนี้เป็นโปรแกรม: /* Sketch version 1.0 ส่งอุณหภูมิทุกๆ 10 นาที */ #include #include #include #define ONE_WIRE_BUS 2 // Pin สำหรับเชื่อมต่อเซ็นเซอร์ Dallas OneWire oneWire(ONE_WIRE_BUS); เซ็นเซอร์อุณหภูมิดัลลัส(&oneWire); ที่อยู่อุปกรณ์ภายในเทอร์โมมิเตอร์; การตั้งค่าเป็นโมฆะ (เป็นโมฆะ) ( //Serial.begin(9600); vw_set_ptt_inverted (จริง); // จำเป็นสำหรับ DR3100 vw_setup (2000); // ตั้งค่าอัตรารับส่งข้อมูล (บิต / s) เซ็นเซอร์เริ่มต้น (); ถ้า (! เซ็นเซอร์ .getAddress (ภายในเครื่องวัดอุณหภูมิ 0)); printAddress (ภายในเครื่องวัดอุณหภูมิ); : "); //Serial.println(tempC); // การก่อตัวของข้อมูลสำหรับการส่ง int number = tempC; char symbol = "c"; // สัญลักษณ์บริการสำหรับการพิจารณาว่านี่คือเซ็นเซอร์ String strMsg = "z"; strMsg +=; strMsg += " "; strMsg += " "; strMsg.toCharArray(msg, 255); / รอจนกระทั่งการถ่ายโอนเสร็จสิ้น (200); ; เจ<= 6; j++) { sensors.requestTemperatures(); printTemperature(insideThermometer); delay(600000); } } //Определение адреса void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16); //Serial.print("0"); //Serial.print(deviceAddress[i], HEX); } } อุปกรณ์รับสัญญาณจะรับข้อมูล วัดความดัน และอุณหภูมิในห้อง และส่งไปยังจอแสดงผล #include #include จอแอลซีดี LiquidCrystal(12, 10, 5, 4, 3, 2); #รวมเซ็นเซอร์dht11; #กำหนด DHT11PIN 8 #รวม #รวม BMP085 dps = BMP085(); ยาว อุณหภูมิ = 0, ความดัน = 0, ระดับความสูง = 0; การตั้งค่าเป็นโมฆะ() ( Serial.begin(9600); vw_set_ptt_inverted(true); // จำเป็นสำหรับ DR3100 vw_setup(2000); // ตั้งค่าความเร็วในการรับ vw_rx_start(); // เริ่มการตรวจสอบการออกอากาศ lcd.begin (16, 2) ; Wire.begin(); //lcd.setCursor(14,0); //lcd.write(0)); ลูป() ( uint8_t buf; // บัฟเฟอร์สำหรับข้อความ uint8_t buflen = VW_MAX_MESSAGE_LEN ; // ความยาวบัฟเฟอร์ if (vw_get_message(buf, &buflen)) // หากได้รับข้อความ ( // เริ่มการแยกวิเคราะห์ int i; // หากข้อความไม่ได้ส่งถึงเรา ให้ออกถ้า (buf != "z") ( return; ) คำสั่ง char = buf; // คำสั่งอยู่ที่ดัชนี 2 // พารามิเตอร์ตัวเลขเริ่มต้นที่ดัชนี 4 i = 4; // เนื่องจากการส่งข้อมูลเป็นแบบอักขระต่ออักขระ ดังนั้นคุณต้องแปลงชุด ของตัวอักษรเป็นตัวเลข while (buf[i] != " ") ( number *= 10; number += buf[i] - "0"; i++; ) dps.getPressure(&Pressure); (&Altitude); getTemperature(&อุณหภูมิ); //Serial.print(คำสั่ง); จอแอลซีดีพิมพ์("T ="); จอแอลซีดีพิมพ์(ความดัน/133.3); จอแอลซีดีพิมพ์("mmH");
|
อ่าน: |
---|
ใหม่
- แอปพลิเคชั่นมือถือ Aliexpress
- รูปแบบแป้นพิมพ์ QWERTY และ AZERTY แป้นพิมพ์ Dvorak เวอร์ชันพิเศษ
- เกาะเซาวิเซนเต เกาะเซาวิเซนเต
- กฎที่เราฝ่าฝืน สามารถวางข้อศอกบนโต๊ะได้หรือไม่?
- แฟลชไดรฟ์ USB ตัวใดที่น่าเชื่อถือและเร็วที่สุด?
- การเชื่อมต่อแล็ปท็อปเข้ากับทีวีผ่านสาย USB เพื่อเชื่อมต่อแล็ปท็อปเข้ากับทีวี VGA
- การเปลี่ยนอินเทอร์เฟซ Steam - จากรูปภาพธรรมดาไปจนถึงการนำเสนอทั้งหมดบนหน้าจอ การออกแบบไอน้ำใหม่
- วิธียกเลิกการสมัครสมาชิก Megogo บนทีวี: คำแนะนำโดยละเอียด วิธียกเลิกการสมัครสมาชิก Megogo
- วิธีแบ่งพาร์ติชันดิสก์โดยติดตั้ง Windows โดยไม่สูญเสียข้อมูล แบ่งพาร์ติชันดิสก์ 7
- เหตุใดผู้จัดพิมพ์จึงไม่สามารถแก้ไขทุกหน้าได้