วันอาทิตย์ที่ 23 พฤศจิกายน พ.ศ. 2557

Ultrasonic Distance Sensor, Timer1, External Interrupt

การทดลองใช้งานโมดูล Ultrasonic Distance Sensor อย่างเช่น HC-SR04 

  • โมดูลนี้ใช้สำหรับวัดระยะห่างจากวัตถุหรือสิ่งกีดขวาง โดยส่งสัญญาณเสียงความถี่สูง
  • ใช้แรงดันไฟเลี้ยง +5V 
  • ในการสื่อสารกับไมโครคอนโทรลเลอร์ จะมีขา TRIG และ ECHO รับสัญญาณ Pulse ที่ขา TRIG และส่งสัญญาณเอาต์พุตออกที่ขา ECHO 
  • ระยะห่างจากวัตถุให้คำนวณจากความกว้างช่วง HIGH ของสัญญาณ ECHO
  • สำหรับ Arduino จะใช้คำสั่ง PulseIn() เพื่อวัดความกว้างในหน่วยเป็นไมโครวินาที (microseconds)


โจทย์ 1.1
  • ทดลองใช้งานโมดูล HC-SR04
  • เขียนโค้ด Arduino โดยไม่ใช่คำสั่ง PulseIn() ของ Arduino แต่ให้ใช้ Timer1 เพื่อวัดความกว้างของช่วงเวลา (ใช้ Timer1 สร้างฐานเวลาในการนับ)
  • ใช้ External Interrupt 0 หรือ 1 และใช้ ISR ที่เกี่ยวข้องอ่านค่าเวลา 2 ครั้ง (ขอบขาขึ้นและขอบขาลงของสัญญาณ ECHO) แล้วนำมาคำนวณช่วงกว้างของ HIGH แล้วนำค่าที่ได้ไปคำนวณระยะห่างจากสิ่งกีดขวาง
  • ใช้ออสซิลโลสโคปดูสัญญาณ ทั้ง TRIG และ ECHO
  • ต่อวงจรใช้งานโมดูล 16x2 LCD เพื่อแสดงผล
Timer1
  • เป็นตัวนับขนาด 16 บิต นับได้ตั้งแต่ 0 ถึง 65535
  • การใช้งานกับ Arduino Uno ใช้ในการสร้างสัญญาณ PWM (Servo) และทำงานในโหมด Phase Correct PWM 
Phase Correct PWM (Count 0>>255, 255>>0)ใช้วิธีนับขึ้น (BOTTOM to TOP) แล้วตามด้วยการนับลง (TOP to BOTTOM) ต่อหนึ่งคาบ
  • เริ่มนับจาก BOTTOM ไปยัง TOP จากนั้นจะนับถอยหลังไปยัง BOTTOM
  • Timer/Counter Overflow Flag (TOV0) ถูกเซตให้เป็น 1 เมื่อนับถึง BOTTOM และใช้สร้างอินเทอร์รัพท์ได้



โจทย์ 1.2
  • เหมือน 1.1 แต่เปลี่ยนไปใช้ Pin Change Interrupt แทน External Interrupt

วันจันทร์ที่ 10 พฤศจิกายน พ.ศ. 2557

IoT Cloud service (Mini-Project)

IoT Cloud service

รายงานความก้าวหน้าครั้งที่ 1
รายชื่อสมาชิกกลุ่ม
  1. นาย พรพรหม เกิดมูล  รหัสนักศึกษา 5401012620031
  2. นางสาว ปาริชาติ หล้าวงษา  รหัสนักศึกษา 5401012630142
การแบ่งงานในกลุ่ม
  • ศึกษาหาข้อมูลเพิ่มเติมเพื่อใช้ในการดำเนินงาน (พรพรหม , ปาริชาติ)
  • ใช้บอร์ด Arduino อ่านข้อมูลจากเซนเซอร์ (พรหรม)
  • ส่งข้อมูลไปเก็บที่ IoT Cloud Service (พรพรหม)
  • จัดทำหน้าเว็บ ทำเป็น User Interface โดยเขียนโค้ด HTML5, Javascript เพื่อดึงข้อมูลจาก IoT cloud มาแสดงผล ในรูปของกราฟ (ปาริชาติ)
  • จัดทำรายงาน (ปาริชาติ)

การกำหนดโจทย์และขอบเขตการทำงาน
ข้อกำหนดในการสร้างระบบ
- ใช้บอร์ด Arduino เป็นอุปกรณ์อ่านข้อมูลจากเซนเซอร์ อย่างน้อย 1 บอร์ด
- ใช้เซนเซอร์ดังต่อไปนี้ หรือมากกว่า
- ใช้ LDR + ตัวต้านทาน เป็นเซนเซอร์วัดแสง อย่างน้อย 1 ชุด
- ใช้ LM35DZ เป็นตัววัดอุณหภูมิห้อง อย่างน้อย 1 ชุด (สามารถเลือกใช้โมดูลอื่นแทนได้ เช่น DHT11, DHT22, DS18B20 เป็นต้น)
- มีจอแสดงผล 16x2 LCD เพื่อดูสถานะการทำงาน
- มี LED กระพริบ แสดงสถานะ ในขณะที่อ่านและส่งข้อมูลผ่าน Serial ไปยังคอมพิวเตอร์
- ทั้งระบบใช้แรงดันไฟเลี้ยงจากพอร์ต USB (+5V) เท่านั้น
- ส่งข้อมูลไปเก็บที่ IoT Cloud Service อย่างน้อย 2 ชุด (ต่างบริษัท) พร้อมๆกัน
(ตัวเลือกเช่น บริการของบริษัท Xively.com และ plot.ly)
- การส่งข้อมูลมีสองวิธี
- Host-attached: อ่านและส่งข้อมูลเป็นชุด ด้วยคอมพิวเตอร์ (Linux) โดยใช้ภาษา Python, Node หรืออื่นๆ
แล้วนำข้อมูลที่ได้จาก Arduino (ผ่าน USB-Serial) รวมทั้งวันเวลาในขณะนั้นไปเก็บไว้บน Cloud อย่างน้อย 15 วินาที แต่ไม่เกิน 60 วินาที ต่อหนึ่งครั้ง และต้องส่งข้อมูลเป็นเก็บที่ IoT cloud ทั้งสองที่
- Standalone: ใช้ Arduino เชื่อมต่อกับโมดูล Ethernet (เช่น ชิป ENC28J60 หรืออื่นๆ) เพื่อส่งข้อมูลไปยัง IoT Cloud โดยไม่ต้องใช้คอมพิวเตอร์
- ทำการทดลองต่อเนื่อง อย่างน้อย 8 ชั่วโมง
- จัดทำหน้าเว็บ ทำเป็น User Interface โดยเขียนโค้ด HTML5, Javascript เพื่อดึงข้อมูลจาก IoT cloud มาแสดงผล ในรูปของกราฟ 

การวางแผนการทำงาน


แผนการดำเนินงาน
  • ศึกษาหาข้อมูลเพิ่มเติม 
  • ใช้บอร์ด Arduino อ่านข้อมูลจากเซนเซอร์ 
  • ส่งข้อมูลไปเก็บที่ IoT Cloud Service
  • จัดทำหน้าเว็บ ทำเป็น User Interface โดยเขียนโค้ด HTML5, Javascript เพื่อดึงข้อมูลจาก IoT cloud มาแสดงผล ในรูปของกราฟ 

อุปกรณ์ที่ใช้ในการทดลอง

ARDUINO UNO
บอร์ด ARDUINO UNO  ใช้ในการอ่านข้อมูลจากเซนเซอร์
Technical Specifications



ETHERNET SHIELD 
บอร์ด ETHERNET SHIELD ใช้เป็นตัวเชื่อมต่อกับอินเทอร์เน็ต

  • ใช้ Wiznet W5100 ethernet chip
Block Diagram

Pin Assignment


DHT11 Sensor
DHT11 Sensor ใช้เป็นตัววัดอุณหภูมิห้อง

Technical Specifications
Typical Application


Note: 3Pin – Null; MCU = Micro-computer Unite or single chip Computer

Overall Communication Process
  • MCU Sends out Start Signal to DHT

  • DHT Responses to MCU

 Data "0" Indication

Data "1" Indication

Electrical Characteristics


การดำเนินการที่ผ่านมา
  1. ศึกษาหาข้อมูลเพิ่มเติมเพื่อใช้ในการดำเนินงาน 
  2. สมัครสมาชิกเพื่อใช้งาน Cloud ของ IBM Bluemix และ Plotly (xively, )
  3. สามารถอ่านข้อมูลจากเซนเซอร์วัดแสงได้ 
  4. สามารถอ่านข้อมูลจากเซนเซอร์วัดอุณหภูมิห้องได้ 
รูปการต่อวงจร DHT11 Sensor ที่ใช้เป็นตัววัดอุณหภูมิห้อง


รูปการต่อบอร์ด arduino และ enthernet shield