สารบัญ:

ขากรรไกร: สถานีตรวจอากาศอีกแห่ง: 6 ขั้นตอน
ขากรรไกร: สถานีตรวจอากาศอีกแห่ง: 6 ขั้นตอน

วีดีโอ: ขากรรไกร: สถานีตรวจอากาศอีกแห่ง: 6 ขั้นตอน

วีดีโอ: ขากรรไกร: สถานีตรวจอากาศอีกแห่ง: 6 ขั้นตอน
วีดีโอ: "หยินหยาง" ภาวะเย็นและภาวะร้อนในร่างกาย | CHECK-UP สุขภาพ | คนสู้โรค 2024, กันยายน
Anonim
JAWS: เตรียมของให้พร้อม
JAWS: เตรียมของให้พร้อม
JAWS: เตรียมของให้พร้อม
JAWS: เตรียมของให้พร้อม
JAWS: เตรียมของให้พร้อม
JAWS: เตรียมของให้พร้อม

มันค่อนข้างง่ายที่จะสร้างขากรรไกรดังกล่าว

คุณได้รับเซ็นเซอร์ของคุณ คุณรวมเข้าด้วยกันบนกระดาน และคุณเริ่มใช้ไลบรารีที่มาพร้อมกับเซ็นเซอร์

มาเริ่มกันที่การตั้งค่าโปรแกรมกันก่อน

เนื่องจากฉันพูดภาษาดัตช์ (เจ้าของภาษา) ข้อมูลทั้งหมดและตัวแปรส่วนใหญ่ที่ฉันใช้จึงเป็นภาษาดัตช์ ตอนนี้คุณมีโอกาสที่จะเรียนรู้ภาษาอื่น…

เราต้องการอะไรจาก JAWS?

ง่าย ๆ: เราต้องการดูหน้าจอที่แสดงเวลาจริง วันที่ เอเฟเมอไรด์ (พระอาทิตย์ขึ้น ดวงอาทิตย์ตก ความยาวของวัน และเที่ยงวันทางดาราศาสตร์) ตามจริง

นอกจากนั้น คงจะดีถ้าได้เห็นอุณหภูมิภายในและภายนอก ความชื้นสัมพัทธ์และจุดน้ำค้าง และความกดอากาศ

เพื่อให้ง่ายขึ้น ฉันใช้เซนติเกรดสำหรับอุณหภูมิและ hPa (=mBar) สำหรับความดัน ดังนั้นไม่มีใครต้องคำนวณกลับจากฟาเรนไฮต์หรือปอนด์ต่อตารางเฟอร์ลอง…

ขณะนี้ มีเพียงข้อมูลเหล่านี้เท่านั้น…

ในอนาคตฉันจะเพิ่มความเร็วลม ทิศทางลม และปริมาณน้ำฝน

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

ขั้นตอนที่ 3: JAWS: ซอฟต์แวร์

ขากรรไกร: ซอฟต์แวร์
ขากรรไกร: ซอฟต์แวร์

เพื่อเข้าถึงซอฟต์แวร์ของเรา ส่วนใหญ่สามารถพบได้ในไลบรารีที่มีอยู่

ใน JAWS ฉันใช้สิ่งต่อไปนี้:

  1. SPI.h: ไลบรารีดั้งเดิมจาก Arduino สำหรับโปรโตคอล 4 สาย มันถูกใช้สำหรับ TFT-shield
  2. Adafruit_GFX.h และ MCUfriend_kbv.h: ทั้งคู่ใช้สำหรับกราฟิกและหน้าจอ สิ่งเหล่านี้ทำให้ง่ายต่อการเขียนข้อความ ลากเส้น และกล่องต่างๆ บนหน้าจอ TFT
  3. dht.h: สำหรับ DHT ของเรา: ไลบรารีนี้สามารถใช้สำหรับ DHT11 (อันสีน้ำเงิน) และ DHT22
  4. Wire.h: ไลบรารี Arduino เพื่อให้การสื่อสารแบบอนุกรมเป็นเรื่องง่าย ใช้สำหรับนาฬิกาและการ์ด SD
  5. SD.h: Arduino ดั้งเดิมอีกครั้งในการเขียนและอ่านจากการ์ด SD
  6. TimeLord.h: อันนี้ฉันใช้รักษาเวลา คำนวณพระอาทิตย์ตกหรือพระอาทิตย์ขึ้นจากตำแหน่งทางภูมิศาสตร์ใดๆ นอกจากนี้ยังตั้งนาฬิกาสำหรับ DST (ฤดูร้อนหรือฤดูหนาว)

เริ่มจากนาฬิกากันก่อน

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

const int DS1307 = 0x68;const char* days = {"Zo.", "Ma.", "Di.", "Wo.", "Do", "Vr.", "Za"};

const ถ่าน* เดือน = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 "," 12"};

NS

ด้วย TimeLord เราได้รับสิ่งนี้เป็นข้อมูลสำหรับสถานที่ของฉัน: (Lokeren, เบลเยียม)

ไทม์ลอร์ดโลเคเรน; ตั้งค่า Lokeren. Position (51.096, 3.99); ลองจิจูดและละติจูด

Lokeren. TimeZone(+1*60); GMT +1 = +1 x 60 นาที

Lokeren. DstRules(3, 4, 10, 4, 60); DST ตั้งแต่เดือนที่ 3 สัปดาห์ที่ 4 ถึงเดือนที่ 10 สัปดาห์ที่ 4 +60 นาที

int jaar= ปี +2000;

ไบต์พระอาทิตย์ขึ้น= {0, 0, 12, เดือน, เดือน, ปี}; เริ่มคำนวณทุกวันตั้งแต่ 00 น.

ไบต์ sunSet={0, 0, 12, monthday, month, year}; เหมือนข้างบน

byte maan={0, 0, 12, monthday, month, year}; เหมือนข้างบน

เฟสลอย

จากที่นี่จะทำการคำนวณ

เฟส = Lokeren. MoonPhase(มาน);

Lokeren. SunRise(พระอาทิตย์ขึ้น);

Lokeren. SunSet(พระอาทิตย์ตก);

Lokeren. DST(พระอาทิตย์ขึ้น);

Lokeren. DST(อาทิตย์ตก);

int ZonOpUur=พระอาทิตย์ขึ้น[tl_hour];

int ZonOpMin = พระอาทิตย์ขึ้น[tl_minute];

int ZonOnUur = พระอาทิตย์ตก [tl_hour];

int ZonOnMin = ซันเซ็ท[tl_minute];

นี่คือตัวอย่างวิธีคำนวณสิ่งต่างๆ ใน TimeLord ด้วยห้องสมุดนี้ คุณจะได้เวลาพระอาทิตย์ตกและพระอาทิตย์ขึ้นที่แม่นยำ (ค่อนข้างมาก)

ในตอนท้าย ฉันจะใส่โปรแกรมทั้งหมดด้วยคำแนะนำนี้ มันค่อนข้างตรงไปตรงมา

ขั้นตอนที่ 4: ซอฟต์แวร์เพิ่มเติม…

ซอฟต์แวร์เพิ่มเติม…
ซอฟต์แวร์เพิ่มเติม…
ซอฟต์แวร์เพิ่มเติม…
ซอฟต์แวร์เพิ่มเติม…

ข้อมูลเพิ่มเติมเกี่ยวกับซอฟต์แวร์…

เรามีสามส่วนใหญ่ในซอฟต์แวร์

1) เราได้รับข้อมูลดิบจากเซ็นเซอร์ต่างๆ ของเรา: จากนาฬิกา DHT และ BMP180 นั่นคือข้อมูลของเรา

2) เราจำเป็นต้องแปลข้อมูลเป็น (1 และ 0) เป็นสิ่งที่สมเหตุสมผล สำหรับสิ่งนี้ เราใช้ไลบรารีและตัวแปรของเรา

3) เราต้องการอ่านและจัดเก็บข้อมูลของเรา นั่นคือผลลัพธ์ของเรา สำหรับการใช้งานทันที เรามี LCD-TFT สำหรับใช้ในภายหลัง เรามีข้อมูลที่บันทึกไว้ในการ์ด SD ของเรา

ในลูปของเรา () เราได้รับ "GOTO" มากมาย: เราข้ามไปยังไลบรารีต่างๆ เราได้รับข้อมูลของเราจากเซ็นเซอร์ตัวใดตัวหนึ่ง รับข้อมูลและเก็บไว้ใน (ส่วนใหญ่) ตัวแปรข้อมูลแบบลอยตัว เราเลือกชื่อตัวแปรของเราอย่างชาญฉลาด ไม่ใช่ด้วย x หรือ y แต่ใช้ชื่ออย่าง "tempOutside" หรือ "pressure" หรืออะไรทำนองนั้น เพื่อให้อ่านง่ายขึ้น ตกลง สิ่งนี้ทำให้การใช้ตัวแปรหนักขึ้นเล็กน้อยและใช้หน่วยความจำมากขึ้น

เคล็ดลับคือ: เมื่อทำให้ตัวแปรของเราปรากฏบนหน้าจอ ตัวแปรจะถูกวางไว้ในตำแหน่งที่ถูกต้อง

ไลบรารีสองแห่งที่ใช้ที่นี่ Adafruit_GFX.h และ MCUfriend_kbv.h มีชุดงานที่ดีในการใช้สี แบบอักษร และความสามารถในการวาดเส้น ในตัวอย่างแรก ฉันใช้หน้าจอ 12864- กับไลบรารีเหล่านี้ ต่อมาฉันเปลี่ยนสิ่งนั้นในหน้าจอ tft ทั้งหมดที่ฉันต้องทำคือวางกล่อง สี่เหลี่ยมและเส้น และตรวจสอบให้แน่ใจว่าข้อมูลออกมาถูกที่แล้ว คุณสามารถใช้ setCursor และ tft. Write เป็นคำสั่งได้ ง่ายทำมัน สามารถกำหนดสีเป็นตัวแปรได้เช่นกัน มีตัวอย่างมากมายในไลบรารีเหล่านั้นว่าจะเลือกอย่างไร

สำหรับการเขียนบนการ์ด SD เราต้องการลูกเล่นง่ายๆ ด้วยเช่นกัน

ตัวอย่างเช่น เราอ่านข้อมูลจากนาฬิกาโดยแยกเป็นชั่วโมง นาที และวินาที อุณหภูมิคือ DHT.temperature และ DHTT.temperature เพื่อแยกความแตกต่างระหว่างในร่มหรือกลางแจ้ง

เมื่อเราต้องการใส่มันลงในการ์ด SD เราใช้สตริง: เราเริ่มทุกลูปเป็นสตริงว่าง:

ตัวแปรสตริง=""; จากนั้นเราสามารถกรอกข้อมูลทั้งหมดของเรา:

variablestring = variablestring + hours+":" + minutes +":" + seconds ซึ่งจะทำให้สตริงเช่น 12:00:00

เนื่องจากเราเขียนเป็นไฟล์ TXT (ดู SD.h บน Arduino.cc) สำหรับตัวแปรถัดไป เราจึงเพิ่มแท็บ ดังนั้นจึงง่ายต่อการนำเข้าใน Excel

ดังนั้นเราจึงมาที่: variablestring = variablestring +" \t " + DHT.temperature + " \t" + DHTT. Temperature

และอื่นๆ.

ขั้นตอนที่ 5: ภาพหน้าจอบางส่วน…

ภาพหน้าจอบางส่วน…
ภาพหน้าจอบางส่วน…
ภาพหน้าจอบางส่วน…
ภาพหน้าจอบางส่วน…
ภาพหน้าจอบางส่วน…
ภาพหน้าจอบางส่วน…

เพื่อให้แน่ใจว่าเราจะไม่ "โอเวอร์โหลด" ชุดข้อมูลของเรา ฉันเขียนข้อมูลเพียงครั้งเดียวทุกๆ 10 นาที ให้เรา 144 รายการต่อวัน ฉันคิดว่าไม่เลว

และแน่นอน คุณสามารถดำเนินการกับข้อมูลนั้นต่อไปได้: คุณสามารถสร้างค่าเฉลี่ย คุณสามารถมองหาค่าสูงสุดและค่าต่ำสุด คุณสามารถเปรียบเทียบกับปีที่ผ่านมา…

สำนักงาน Met มักจะทำการเฉลี่ยทั้งกลางวันและกลางคืน สำหรับอุณหภูมิ: กลางวันเริ่มเวลา 8.00 น. และทำงานถึง 20.00 น.

สำหรับลม ความกดอากาศ และปริมาณฝน จะใช้ค่าเฉลี่ยตั้งแต่เที่ยงคืนถึงเที่ยงคืน

ขั้นตอนที่ 6: เสร็จแล้ว?

ที่เสร็จเรียบร้อย?
ที่เสร็จเรียบร้อย?
ที่เสร็จเรียบร้อย?
ที่เสร็จเรียบร้อย?

ไม่ได้จริงๆ… อย่างที่ฉันบอกไป ในที่สุดฉันก็อยากได้เซ็นเซอร์วัดความเร็วลมและทิศทางลมที่ทำงานร่วมกับขากรรไกรที่เหลือ

สิ่งก่อสร้างเล็กๆ ที่ฉันสร้างนั้นสูงประมาณ 4 เมตร นักอุตุนิยมวิทยาได้รับความเร็วลมจากที่สูง 10 เมตร สูงเกินไปสำหรับฉัน…

ฉันหวังว่าคุณจะสนุกกับการอ่านสิ่งนี้!

อธิบาย Adafruit-GFX ที่นี่:

พบ MCUFRIEND_kbv.h ที่นี่:

ข้อมูลเพิ่มเติมเกี่ยวกับ BMP 120 (เหมือนกับ BMP085):

เกี่ยวกับ DHT22:

แนะนำ: