สารบัญ:

Raspberry Pi Internet Weather Station: 5 ขั้นตอน (พร้อมรูปภาพ)
Raspberry Pi Internet Weather Station: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Raspberry Pi Internet Weather Station: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Raspberry Pi Internet Weather Station: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Raspberry Pi Anemometer: Measuring Wind Speed! 2024, พฤศจิกายน
Anonim
Raspberry Pi Internet Weather Station
Raspberry Pi Internet Weather Station
Raspberry Pi Internet Weather Station
Raspberry Pi Internet Weather Station

*** อัปเดต ***

คำแนะนำนี้ล้าสมัย บริการสภาพอากาศสำหรับข้อมูลสภาพอากาศที่ใช้ในคำแนะนำนี้ใช้งานไม่ได้อีกต่อไป อย่างไรก็ตาม มีโครงการทางเลือกที่ทำสิ่งเดียวกันโดยพื้นฐาน (ดีกว่าเท่านั้น - คำแนะนำนี้เป็นเพียงการแฮ็คเสมอ) นี่คือลิงค์ที่คุณต้องการติดตาม:

https://piweatherrock.technicalissues.us/

ขอบคุณมากไปที่ Gene Liverman ที่ PiWeatherRock เพื่อรับเสื้อคลุมในโครงการนี้

คำแนะนำนี้จะแสดงวิธีสร้างสถานีตรวจอากาศบนอินเทอร์เน็ต Raspberry Pi ที่ยอดเยี่ยมจริงๆ อันที่จริงการเรียกอาคารนี้ว่า "สถานีตรวจอากาศ" นั้นค่อนข้างจะอยู่ภายใต้คำสั่ง โครงสร้างนี้สามารถขยายได้อย่างง่ายดายเพื่อให้มากกว่าแค่สภาพอากาศ อย่างไรก็ตาม มันเป็นการเริ่มต้นที่ดีและดูดีจริงๆ บนโต๊ะทำงานของฉัน

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

ขั้นตอนที่ 1: Gen 1 - สถานีตรวจอากาศ Pi กล่องอาหารกลางวัน

Gen 1 - สถานีตรวจอากาศ Pi กล่องอาหารกลางวัน
Gen 1 - สถานีตรวจอากาศ Pi กล่องอาหารกลางวัน
Gen 1 - สถานีตรวจอากาศ Pi กล่องอาหารกลางวัน
Gen 1 - สถานีตรวจอากาศ Pi กล่องอาหารกลางวัน

ความคิดแรกของฉันคือการใช้จอแสดงผลวิดีโอคอมโพสิตเล็กน้อย ฉันเลือกอันในภาพบนอีเบย์ในราคา $22 bucks - เพียงแค่ค้นหา "4.3 Inch TFT LCD Car Rear View Monitor Car Monitor" จอแสดงผลมีความละเอียด 656 x 416 พิกเซลที่รายงานซึ่งทำให้การแสดงข้อมูลที่เป็นประโยชน์มากมายเป็นสิ่งที่ท้าทาย! จอแสดงผลต้องการ 12Vdc เป็นแรงดันไฟฟ้า แน่นอนว่า Raspberry Pi ต้องการ 5Vdc เป็นแรงดันไฟฟ้า เพื่อแก้ปัญหานี้ ฉันซื้อที่ชาร์จในรถแบบ USB ราคาถูกจาก Amazon ประมาณ $ 6 bucks ฉันพบตัวเปลี่ยนรถ 5Vdc by 2 Amp ดังนั้นกล่องอาหารกลางวันจึงมีแหล่งจ่ายไฟหูดที่ผนัง 12Vdc ภายนอก 12Vdc จ่ายไฟให้กับจอแสดงผลโดยตรง 12Vdc ยังไปที่เครื่องชาร์จในรถยนต์ USB ซึ่งลดแรงดันไฟฟ้าลงเป็น 5Vdc ที่ได้รับการควบคุม ในการแฮ็กครั้งสุดท้าย ฉันบัดกรีสายไฟหนึ่งคู่ระหว่างที่ชาร์จในรถกับ Raspberry Pi โดยตรง ไม่ใช่ความคิดที่ดีที่สุดของฉัน

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

ขั้นตอนที่ 2: Gen 2 - จอภาพ HDMI + Laser Cut Plexiglass Arcade Case

Gen 2 - จอภาพ HDMI + เคสอาเขต Plexiglass เลเซอร์คัท
Gen 2 - จอภาพ HDMI + เคสอาเขต Plexiglass เลเซอร์คัท
Gen 2 - จอภาพ HDMI + เคสอาเขต Plexiglass เลเซอร์คัท
Gen 2 - จอภาพ HDMI + เคสอาเขต Plexiglass เลเซอร์คัท
Gen 2 - จอภาพ HDMI + เคสอาเขต Plexiglass เลเซอร์คัท
Gen 2 - จอภาพ HDMI + เคสอาเขต Plexiglass เลเซอร์คัท

กลับมาที่ eBay ฉันพบจอภาพแบบเปิดเฟรม HDMI ราคา $54 ดอลลาร์ที่ดูดีพร้อมความละเอียด 800x600 ตามคำนิยาม กรอบเปิดทุกอย่างจำเป็นต้องมีกรอบในการติดตั้ง เนื่องจากความน่ารักของกล่องอาหารกลางวันได้หมดลงแล้ว จึงถึงเวลาที่อะคริลิกคัทด้วยเลเซอร์ พื้นที่แฮ็กเกอร์ในพื้นที่ของฉัน i3Detroit มีเครื่องตัด 150 วัตต์ที่ดีจริงๆ ที่สามารถทำเนื้อสับของอะคริลิก 4.5 มม.

ฉันใช้ตู้อาร์เคดของฉันอย่างหลวม ๆ บนกล่องอาร์เคดของ iPad ถ้าฉันเคยทำการออกแบบ Gen 3 มันจะรวมถาดที่ถอดออกได้ / เลื่อนออกสำหรับ Pi อย่างท้าทาย ปรากฎว่ามันเป็นความเจ็บปวดครั้งใหญ่ที่คอในการพยายามเสียบของเข้าและออกจาก Pi เนื่องจากไม่มีที่ว่างระหว่าง Pi กับผนังด้านข้างมากนัก

จอภาพ HDMI ยังต้องการฟีด 12Vdc ดังนั้นฉันจึงใช้เคล็ดลับเดียวกันกับการใช้ที่ชาร์จในรถยนต์แบบ USB อีกครั้ง อย่างไรก็ตาม คราวนี้ฉันตัดสาย USB เก่าออก ดังนั้นจึงไม่จำเป็นต้องใช้สายบัดกรีบน Pi

หากใครสนใจเคสเกมอาร์เคด คอมเม้นไว้ด้านล่างได้เลยครับ ผมจะได้อัพโหลดไฟล์ DXF ให้ หรือไฟล์อยู่บนเว็บไซต์ของฉันที่ ph-elec.com

ขั้นตอนที่ 3: การตั้งค่า Pi

Pi Setup
Pi Setup

การตั้งค่า Raspberry Pi ใหม่ด้วยซอฟต์แวร์ที่จำเป็นนั้นไม่ยาก ซอฟต์แวร์ทั้งหมดเขียนด้วยภาษา Python โดยเพิ่มโมดูล Python เพียงโมดูลเดียว โมดูล Python พิเศษเรียกว่า "pywapi" นี่คือลิงค์ที่คุณสามารถดาวน์โหลดโมดูลได้ โมดูลนี้ทำให้ง่ายต่อการรับสภาพอากาศแบบเรียลไทม์จาก Yahoo, Weather.com หรือ NOAA

อย่างแรกเลย นี่คือรายการตรวจสอบเพื่อตั้งค่า Raspberry Pi ดิบ:

  1. ดาวน์โหลด Raspbian ล่าสุด (Debian Wheezy) เปิดเครื่องรูดเพื่อรับไฟล์.img
  2. เขียนลงในการ์ด SD ด้วย "dd bs=4M if=2014-09-09-wheezy-raspbian.img of=/dev/sdb"
  3. คำสั่ง dd ใช้เวลาประมาณห้านาที เมื่อเสร็จแล้ว ให้เรียกใช้ "ซิงค์" เพื่อล้างท่อ
  4. ติดตั้งการ์ด SD ใน Pi และรีบูต ตรวจสอบให้แน่ใจว่ามีการเชื่อมต่ออีเทอร์เน็ตกับ Pi
  5. ใช้หน้า "อุปกรณ์ที่แนบมา" บนเราเตอร์ ค้นหาที่อยู่ IP ของ Pi ใหม่
  6. เข้าสู่ระบบ Pi โดยใช้ "ssh [email protected].???" ที่ไหน ??? คือหมายเลข IP จากด้านบน รหัสผ่านจะเป็น "ราสเบอร์รี่"
  7. บน Pi ใช้คำสั่ง "raspi-config" เพื่อตั้งค่าเริ่มต้น

    1. เปิดการบูตอัตโนมัติใน GUI
    2. ตั้งชื่อโฮสต์เป็นบางอย่างเช่น "MyPi"
  8. ติดตั้ง VNC บน Pi ด้วย "sudo apt-get install tightvncserver"

    เรียกใช้ "tightvncserver" ซึ่งตั้งรหัสผ่าน

  9. กลับไปที่กล่อง Linux ขนาดใหญ่ ใช้ "เดสก์ท็อประยะไกล" เพื่อดูเดสก์ท็อป Pi GUI

    1. ตั้งค่าโปรโตคอลเป็น "VNC" และหมายเลข IP เป็น "192.168.1.???:1" หมายเหตุ ":1" ที่ส่วนท้ายของหมายเลข IP
    2. กดปุ่มเชื่อมต่อและป้อนรหัสผ่าน VNC
    3. บิงโกเดสก์ท็อป GUI Pi ระยะไกล!

      ซึ่งจะช่วยประหยัดการลากจอภาพ คีย์บอร์ด และเมาส์เพื่อเชื่อมต่อกับ Pi ใหม่

    4. บนเดสก์ท็อป ให้เรียกใช้ไอคอนการตั้งค่า WiFi ตั้งค่า Pi / USB WiFi ใหม่เพื่อเชื่อมต่อกับเครือข่าย
    5. ปิดการเชื่อมต่อ VNC - ตอนนี้เราทำเดสก์ท็อประยะไกลเสร็จแล้ว
  10. กลับไปที่หน้าต่าง ssh รีบูต Pi ด้วย "sudo reboot" ถอดสายอีเทอร์เน็ตออกเนื่องจาก WiFi ได้รับการตั้งค่าแล้ว
  11. กลับไปที่เราเตอร์ที่บ้าน ค้นหาหมายเลข IP ใหม่ที่ Pi ใช้กับ WiFi
  12. ใช้ ssh กลับเข้าสู่ระบบโดยใช้หมายเลข IP ใหม่ คราวนี้การเชื่อมต่อจะผ่าน WiFi
  13. ใช้ตัวจัดการไฟล์บน Linux เชื่อมต่อกับ Pi โดยใช้คำสั่ง "เชื่อมต่อกับเซิร์ฟเวอร์"

    ที่อยู่เซิร์ฟเวอร์คือ "sftp://192.168.1.???/home/pi"

  14. การตั้งค่าพื้นฐานเสร็จสมบูรณ์

ถัดไป จะต้องดาวน์โหลดและติดตั้ง pywapi อีกครั้ง ไม่ยากเกินไปด้วยขั้นตอนต่อไปนี้:

  1. ดาวน์โหลดล่าสุดได้จากที่นี่ แตกไฟล์เก็บถาวรลงในไดเร็กทอรีใหม่
  2. ใช้ File Manger คัดลอกไดเร็กทอรีไปยังโฮมไดเร็กทอรี Pi
  3. ใช้ ssh ทำสิ่งต่อไปนี้บน Pi:

    1. cd pywapi-0.3.8
    2. sudo python setup.py build
    3. sudo python setup.py ติดตั้ง
  4. เสร็จแล้ว.

อัปเดต ฉันลืมไปสองอย่าง พูดถึงอีกสองสิ่ง:

  1. บน Pi ให้รันคำสั่งต่อไปนี้:

    1. sudo apt-get ติดตั้ง avahi-daemon

      ซึ่งช่วยให้สามารถเชื่อมต่อกับ Pi โดยใช้ชื่อ ดังนั้น ในคอมพิวเตอร์หลักของคุณ คุณสามารถเชื่อมต่อเป็น "ssh [email protected]" แทนการใช้หมายเลข IP ด้วย Pi หลายตัวในเครือข่าย มันง่ายที่จะทำให้พวกเขาสับสน เว้นแต่จะเรียกชื่อออกมา

    2. sudo raspi-config

      1. ค้นหาและเรียกใช้ตัวเลือกที่ 4 ที่เรียกว่า "Internationalisation Options" และตั้งค่าเขตเวลาของคุณ
      2. ด้วยการตั้งค่าเขตเวลาและ ntpd (ภูตโปรโตคอลเวลาเครือข่าย) การเรียกใช้ Pi จะแสดงเวลาที่ถูกต้องเสมอภายในสองสามมิลลิวินาที! ต้องรักมัน
  2. ตกลง ตอนนี้เราทำเสร็จแล้วอีกครั้ง

ขั้นตอนที่ 4: รหัสที่มา

รหัสแหล่งที่มา
รหัสแหล่งที่มา

ซอร์สโค้ดทั้งหมดสำหรับการแสดงสภาพอากาศเล็กน้อยนี้ใช้ Python, PyGame และ Pywapi ซอฟต์แวร์โอเพ่นซอร์ส / ฟรีทั้งหมด

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

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

  1. cd Weather
  2. sudo python weather.py

จำเป็นต้องใช้คำสั่ง sudo เพื่อให้ Python สามารถควบคุม / อ่านพิน GPIO อาจมีวิธีแก้ไขข้อ จำกัด นี้ แต่ก็หลีกเลี่ยงฉัน

เมื่อทุกอย่างทำงานโดยใช้ ssh ก็ถึงเวลาที่สภาพอากาศจะเริ่มโดยอัตโนมัติเมื่อรีบูต นี้เป็นเรื่องง่ายมากที่จะทำ

  1. ใช้ ssh เรียกใช้ "sudo vi /etc/rc.local"
  2. ก่อนบรรทัดสุดท้ายซึ่งระบุว่า "exit 0" ให้เพิ่มสิ่งต่อไปนี้ในบรรทัด

    1. cd /home/pi/สภาพอากาศ
    2. sudo python weather.py &> err.log

สิ่งนี้จะเริ่มต้นแอปพลิเคชันสภาพอากาศบน Pi โดยอัตโนมัติหลังจากรีบูต หากต้องการปิดในภายหลัง ให้ใช้ ssh เพื่อแก้ไขไฟล์และเพิ่มอักขระความคิดเห็น "#" หน้าทั้งสองบรรทัดแล้วรีบูต

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

อีกสองสามสิ่งที่ควรทราบเกี่ยวกับรหัสของฉัน ฝังอยู่ในนั้น คุณจะสังเกตเห็นรหัสบางอย่างเพื่อพูดคุยกับอุปกรณ์ X10 นี่เป็นความพยายามของฉันที่จะควบคุมไฟเสาภายนอกที่อยู่ A3 ฉันแค่ต้องการให้โคมไฟเปิดตอนค่ำและปิดตอนรุ่งสาง ดูเหมือนง่ายพอและฉันคิดว่าฉันได้มันทำงาน การใช้ดองเกิล USB-to-RS232 บน Pi ฉันได้เชื่อมต่อโมดูล CM11A X10 CM11A เป็นโมดูลมาโคร X10 แบบเก่า CM11A ยังมีพอร์ต RS232 ที่ช่วยให้สามารถควบคุมบัส X10 ได้ ดูเหมือนว่ายังมีข้อบกพร่องอยู่บ้างเพราะไฟที่เสาไฟไม่ได้รับข้อความ!

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

สำหรับข้อมูลอัปเดตล่าสุดและดีที่สุด โปรดเยี่ยมชมเว็บไซต์ของฉันที่ ph-elec.com

แจ้งให้เราทราบในส่วนความคิดเห็นด้านล่างคำถามที่คุณอาจมี

ขอบคุณจิม

โอ้และอย่าลืมลงคะแนนให้ฉัน! ขอบคุณอีกครั้ง.

BTW: มีข้อมูลเพิ่มเติมในเว็บไซต์ของฉันเสมอ: www.ph-elec.com

ขั้นตอนที่ 5: อัปเดตเมตริก

สิ่งที่แนบมาเป็นเวอร์ชันใหม่ที่อนุญาตให้แสดงเมตริกหรืออิมพีเรียล

หวังว่านี่จะช่วยได้

จิม

แนะนำ: