แสดงวันที่ เวลา และอุณหภูมิโดยใช้ XinaBox: 8 ขั้นตอน
แสดงวันที่ เวลา และอุณหภูมิโดยใช้ XinaBox: 8 ขั้นตอน
Anonim
แสดงวันที่ เวลา และอุณหภูมิโดยใช้ XinaBox
แสดงวันที่ เวลา และอุณหภูมิโดยใช้ XinaBox

จอแสดงผล OLED สุดเท่แสดงวันที่ เวลา และอุณหภูมิในหน่วยเซลเซียสและฟาเรนไฮต์โดยใช้ Xinabox xChips ที่อิงจาก ESP8266

ขั้นตอนที่ 1: สิ่งที่ใช้ในโครงการนี้

ส่วนประกอบฮาร์ดแวร์

  • XinaBox IP01 x 1 xChip โปรแกรมเมอร์ USB ที่ใช้ FT232R จาก FTDI Limited
  • XinaBox CW01 x 1 xChip Wi-Fi Core ที่ใช้โมดูล Wi-Fi ESP8266
  • XinaBox SW01 x 1 xChip เซ็นเซอร์อุณหภูมิ ความชื้น และความดันบรรยากาศตาม BME280 จาก Bosch
  • XinaBox OD01 x 1 xChip 128x64 พิกเซล OLED Display
  • XinaBox PU01 x 1 xChip USB (ประเภท A) พาวเวอร์ซัพพลาย
  • XinaBox XC10 x 1 xChip Bus Connectors
  • แหล่งจ่ายไฟ USB 5V x 1

แอพซอฟต์แวร์และบริการออนไลน์

Arduino IDE

ขั้นตอนที่ 2: เรื่องราว

บทนำ

ฉันสร้างโปรเจ็กต์นี้เพื่อแสดงวันที่ เวลา UCT และอุณหภูมิโดยใช้ XinaBox xChips ที่ใช้โปรโตคอลบัส I2C เวลาถูกดึงมาจากเซิร์ฟเวอร์ google NTP อุณหภูมิแวดล้อมวัดโดยใช้ SW01 xChip และแสดงบนจอแสดงผล OD01 xChip OLED ในเซลเซียสและฟาเรนไฮต์ ภาพด้านล่างแสดงหน้าจอ OLED

ภาพ
ภาพ

OLED แสดงวันที่ เวลา และอุณหภูมิ

ขั้นตอนที่ 3: ดาวน์โหลดไฟล์ที่จำเป็น

คุณจะต้องใช้ไลบรารีและซอฟต์แวร์ต่อไปนี้สำหรับโครงการนี้

  • Arduino IDE - ซอฟต์แวร์พัฒนาที่คุณจะเขียนโค้ด
  • xSW01 - ไลบรารีเซ็นเซอร์อุณหภูมิ
  • xCore - ไลบรารีหลักสำหรับ XinaBox xChips
  • xOD01 - ไลบรารีจอแสดงผล OLED
  • เขตเวลา - ห้องสมุดเพื่อเลือกเขตเวลาของคุณ
  • เวลา - การใช้ฟังก์ชันเวลา
  • NTPClient - ช่วยให้คุณได้รับเวลาจากเซิร์ฟเวอร์
  • คุณจะต้องดาวน์โหลดบอร์ด ESP8266 และทำตามคำแนะนำที่มาพร้อมกับบอร์ดเพื่อติดตั้งบอร์ด

เมื่อดาวน์โหลดแล้วคุณจะติดตั้ง IDE และไลบรารี มันค่อนข้างตรงไปตรงมาถ้าคุณทำตามคำแนะนำ

ขั้นตอนที่ 4: ประกอบ

xChip หลักของคุณที่จะรันและประมวลผลโปรแกรมคือ CW01 มันขึ้นอยู่กับโมดูล WiFi ESP8266 และใช้โปรโตคอลบัส I2C ในการตั้งโปรแกรมไปที่ CW01 คุณจะต้องเขียนโปรแกรม xChip IP01 ช่วยให้เราสามารถตั้งโปรแกรม CW01 ผ่านพอร์ต USB บนคอมพิวเตอร์ของเราได้ง่ายๆ โดยคลิก xChips สองตัวโดยใช้ขั้วต่อบัส XC10 แล้วเสียบเข้ากับพอร์ต USB ไม่ต้องเดินสายไฟและไม่ต้องบัดกรี สิ่งหนึ่งที่ควรทราบคือการวางแนวของชื่อรหัส xChip พวกเขาทั้งหมดควรมุ่งไปในทิศทางเดียวกัน ตอนนี้คุณควรมีการตั้งค่าต่อไปนี้

ภาพ
ภาพ

คลิกร่วมกัน CW01 และ IP01 แล้วเสียบเข้ากับพอร์ต USB บนคอมพิวเตอร์ของคุณ

หากคุณคุ้นเคยกับ xChips คุณอาจเชื่อมต่อ xChip ทุกตัวเข้าด้วยกันโดยใช้ตัวเชื่อมต่อบัส XC10 ที่คุณต้องการใช้สำหรับโปรเจ็กต์ของคุณ จากนั้นเสียบเข้ากับพอร์ต USB เราจะใช้เซ็นเซอร์อุณหภูมิ SW01 และจอแสดงผล OLED OD01

ภาพ
ภาพ

คุณสามารถเชื่อมต่อชิปทั้งหมดเข้าด้วยกันแล้วเสียบเข้ากับพอร์ต USB ของคุณ

ขั้นตอนที่ 5: โปรแกรม

ดาวน์โหลดหรือคัดลอกและวางโค้ดด้านล่างลงใน Arduino IDE ของคุณ หากคุณไม่ได้ทำการเปลี่ยนแปลงใดๆ กับโค้ด เพียงป้อนรายละเอียด WiFi ของคุณในฟิลด์ที่เกี่ยวข้องดังที่แสดงด้านล่าง ป้อนเซิร์ฟเวอร์เวลา NTP ที่เชื่อถือได้ด้วย ฉันใช้เซิร์ฟเวอร์เวลาของ Google สำหรับโครงการนี้

ภาพ
ภาพ

รายละเอียด WiFi และเซิร์ฟเวอร์เวลา NTP

ตอนนี้รวบรวมและอัปโหลด ตรวจสอบให้แน่ใจว่าคุณได้เลือกพอร์ต COM และบอร์ดที่ถูกต้องภายใต้เมนูเครื่องมือใน Arduino IDE เมื่ออัปโหลดแล้ว เวลา วันที่ และอุณหภูมิควรแสดงดังนี้

ภาพ
ภาพ

หลังจากอัปโหลดคุณจะเห็นสิ่งต่อไปนี้

ขั้นตอนที่ 6: ทำให้เป็นแบบพกพา

ตอนนี้คุณสามารถถอดตัวเครื่องออกจากพอร์ต USB และแยก xChip แต่ละตัวออกได้โดยการดึงออกจากกัน เนื่องจากการเขียนโปรแกรมเสร็จสมบูรณ์ จึงไม่จำเป็นต้องมี IP01 อีกต่อไป ขณะนี้ คุณสามารถเชื่อมต่อโครงการของคุณในลักษณะใดก็ได้ที่คุณต้องการ ตราบใดที่ชื่อประจำตัวทั้งหมดอยู่ในทิศทางเดียวกัน ในการขับเคลื่อนยูนิตของเรา เราจะใช้ PU01 ซึ่งช่วยให้เราสามารถจ่ายไฟจากพาวเวอร์แบงค์ปกติหรือพาวเวอร์ซัพพลาย USB 5V ใดๆ ก็ได้ ฉันได้เชื่อมต่อของฉันดังที่แสดงด้านล่าง

ภาพ
ภาพ

การประกอบขั้นสุดท้าย xChips สามารถเชื่อมต่อได้ทุกรูปแบบที่คุณต้องการ

ขั้นตอนที่ 7: บทสรุป

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

ขั้นตอนที่ 8: รหัส

Date_Time_Temp.ino Arduino เพียงป้อนรายละเอียด WiFi ของคุณในฟิลด์ที่เกี่ยวข้องและอัปโหลดไปยังบอร์ดของคุณ

#include // รวมไลบรารีหลักสำหรับ XinaBox xCHIPS

#include // รวมไลบรารีแสดงผล OLED #include // รวมไลบรารีเซ็นเซอร์อุณหภูมิ #include // รวมฟังก์ชัน ESP8266WiFi #include // รวมไลบรารีเวลา #include #include #include #include #include xSW01 SW01; // กำหนดคุณสมบัติ NTP #define ntpOffset 60 * 60 // เป็นวินาที #define ntpInterval 60 * 1000 // เป็นมิลลิวินาที // แทรกเซิร์ฟเวอร์เวลา ntp ที่เชื่อถือได้ระหว่างเครื่องหมายคำพูดคู่ // ที่นี่ฉันใช้เซิร์ฟเวอร์เวลา google ntp # กำหนด ntpAddress "time1.google.com" // ตั้งค่าไคลเอนต์ NTP UDP WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, ntpAddress, ntpOffset, ntpInterval); // อุณหภูมิตัวแปร float tempC; // เซลเซียสลอย tempF; // ฟาเรนไฮต์ // รายละเอียด wifi ของคุณ const char* wifi_ssid = "XinaBox"; // wifi ssid const char* wifi_pass = "RapidIoT"; // รหัสผ่าน wifi ของคุณ // วันที่และเวลาตัวแปรวันที่สตริง; สตริง clktime; // ตัวแปรที่มีวันและเดือน const char * days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; const char * months = {"ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธันวาคม"}; const char * ampm = {"AM", "PM"}; การตั้งค่าเป็นโมฆะ () { tempC = tempF = 0; // เริ่มต้นอุณหภูมิเป็นศูนย์ timeClient.begin(); // เริ่มไคลเอ็นต์ NTP UDP // เริ่มการสื่อสารแบบอนุกรม Serial.begin(115200); // เริ่มการสื่อสาร i2c และตั้งค่าพิน Wire.begin(2, 14); // เริ่มเซ็นเซอร์อุณหภูมิ SW01.begin(); // เริ่มแสดงผล OLED OLED.begin(); // ล้างจอแสดงผล OLED OD01.clear(); // สร้างการเชื่อมต่อ wifi wifi_connect(); ล่าช้า (1000); } void loop() {// รันถ้าการเชื่อมต่อ wifi ถูกสร้างขึ้นถ้า (WiFi.status() == WL_CONNECTED) { SW01.poll(); // อ่านอุณหภูมิ tempC = SW01.getTempC(); // เก็บอุณหภูมิใน celcius tempF = SW01.getTempF(); // เก็บอุณหภูมิในวันที่ฟาเรนไฮต์ = ""; // ล้างตัวแปรวันที่ clktime = ""; // ตัวแปรเวลาล้าง // อัปเดตไคลเอ็นต์ ntp และรับ unix utc timestamp timeClient.update(); epochTime แบบยาวที่ไม่ได้ลงนาม = timeClient.getEpochTime(); // แปลงการประทับเวลาที่ได้รับเป็นวัตถุ time_t time_t utc; utc = epochTime; // เวลา utc TimeChangeRule utcRule = {"UTC", Last, Sun, Mar, 1, 0}; เขตเวลา UTC(utcRule, utcRule); // รูปแบบ เวลา ตัวแปร วันที่ += วัน[วันทำงาน(utc) - 1]; วันที่ += ", "; วันที่ += เดือน[เดือน(utc) - 1]; วันที่ += " "; วันที่ += วัน (utc); วันที่ += ", "; วันที่ += ปี (utc); // จัดรูปแบบเวลาเป็นรูปแบบ 12 ชั่วโมงด้วย AM/PM และไม่มีวินาที clktime += hourFormat12(utc); clktime += ":"; ถ้า (นาที(utc)