วันเสาร์ที่ 4 กรกฎาคม พ.ศ. 2558

สรุปการทำงานโดยรวมของ UltraSonic Theremin (re)

Block Diagrame

ขั้นตอนการดำเนินงาน 
  1. อ่านค่าจาก HC-SR04 UltraSonic  
  2. สร้างสัญญาณเสียงโดยโดยใช้หลักการ PWM 
  3. ใช้ TPA2016D2 ในการควบคุมความดังหรือเบาของเสียง โดยใช้การติดต่อสื่อสารด้วยระบบ I2C
  4. ความคุมพฤติกรรมบางอย่างของระบบผ่าน Ethernet โดยใช้ 
ความสามารถของระบบ
  1. สามารถสร้างสัญญาณเสียงระดับโน๊ต C4, D4, E4, F4, G4, A4, B4, C5 แปรผันตามระยะทางได้ 
  2. สามารถความคุม Volume ความดังเบา หรือ ระดับเสียง ผ่านหน้า Browser ได้
เอกสารแนบ
  1. CODE_1 : ทำตัวเป็น Webserver และส่งค่ามาสร้างเป็นเสียง และกด SW2 และ 3 เพื่อ/ลด Volume
  2. CODE_2 : ทำตัวเป็น Webserver และส่งค่ามาเพิ่ม/ลด Volume และใช้ Ultarsonic วัดระยะทางเพื่อสร้างเสียง


VDO แสดงการทำงานของระบบ Code_1



VDO แสดงการทำงานของระบบ Code_2

ทดลองการสร้างเสียงตัวโน๊ต ด้วยสัญญาณ PWM



แนวคิด : เนื่องจากเสียงก็เป็น คลื่นสัยญาณชนิดหนึ่งฉนั้นแล้ว สัญญาณสี่เหลี่ยม( SquareWave )ที่เราคุ้นเคยกันดี นั้นก็อาจจะมีเสียงหนึ่งๆ ตามความถี่ที่เปลี่ยนไปของสัญญาณ เราจึงใช้สํญญาณ PWM ที่ขา OC5 (RD4) ของ PIC32MX460F512L ออกมาเป็นสัญญาณ Square Wave ที่มี Duty Cycle = 50% 

รูปที่ แสดงค่าความถี่ของตัว Note ต่างๆ

อุปกรณ์ที่ใช้ในการทดลอง
  1. Broad DEV-PIC32-001-V3
  2. PIC KIT 2 
  3. UltraSonic HC-SR04
  4. Mono Audio Jack (Female)
การต่อวงจร : ต่อขาสัญญาณของ Mono Audio Jack เขากับขา OC1หรือRD5 ของบอร์ด PIC32
รูปที่ 2 แสดงการเชื่อมต่อ Jack Mono กับ บอร์ด PIC32

ผลการสร้างสัญญาณ

สัญญาณตัวโน๊ต C4 ความถี่ 261 Hz         สัญญาณตัวโน๊ต D4 ความถี่ 294  Hz

สัญญาณตัวโน๊ต E4 ความถี่ 331 Hz          สัญญาณตัวโน๊ต F4 ความถี่ 349  Hz

         สัญญาณตัวโน๊ต G4 ความถี่ 393 Hz         สัญญาณตัวโน๊ต A4 ความถี่ 442  Hz         

 
 สัญญาณตัวโน๊ต B4 ความถี่ 495 Hz           สัญญาณตัวโน๊ต C5 ความถี่ 523  Hz

- VDO ทดลองไล่ความถี่ตั้แต่ 50 Hz - 800 Hz




เอกสารแนบ
  1. Code ที่ใช้ในการทดลอง
  2. PIC32MX : PWM , LINK_1, LINK_2


การต่อใช้งาน Adafruit Stereo 2.8W Class D Audio Amplifier - I2C Control AGC - TPA2016

Adafruit Stereo 2.8W Class D Audio Amplifier - I2C Control AGC - TPA2016


ที่มาจาก : http://www.adafruit.com/

เป็นอุปกรณ์ Audio Amplifier ขยายสัญญาณเสียง แม้จะตัวเล็กแต่สามารถขับเสียงโดยต่อลำโพงขนาด 8 โอห์ม ออกมาได้ดังกว่าขนาดตัวหลายเท่า โดยสามารถควบคุมการทำงานได้โดยสั่งผ่าน การติดต่อสื่อสารแบบ I2C โดยสามารถปรับได้หลากหลาย เช่น
  • Gain(อัตราการขยาย) ได้ตั้งแต่ -28 dB ถึง 30 dB , 
  • Limiter Level
  • Compression Ratio
  • Noise Gate Threshold
  • Attack Time
  • Release Time
  • Hold Time


Vdo แนะนำการทำงานของอุปกรณ์ (นาที ที่ 6.10 )


การทดลองปรับอัตตราการขยาย
รูปที่ 2.1 การต่อวงจร TPA2016D2 กับ PIC32MX460F512L

Single-Byte Write
รูปที่ 2.2 การส่งข้อมูลแบบ Single-Byte Write ไปยัง TPA2016D2 Stereo Amplifier
  • TPA2016D2 I2C Device Address สำหรับเขียนคือ 0xB0 (binary 10110000)


รูปที่ 2.3 AGC FIXED GAIN CONTROL(Address: 5)

เราใช้ TPA2016D2 เพื่อใช้ปรับความดังเบาของเสียง โดยการใช้งานจะเป็นการสื่อสารแบบ I2C โดย Adrees ของอุปกรณ์คือ 0x58 และจะส่งข้อมูล ตั้งแต่ -28 ถึง +30 ไปยัง Register : AGC FIXED GAIN CONTROL( Address 0x05 ) ทดสอบโดยส่งคำสั่งไปยัง Register AGC FIXED GAIN CONTROL โดยที่ส่ง Gain เป็นบวก( + ) แบบปกติ แต่ส่ง Gain เป็นลบ( – )เป็นแบบ 2’ Complement

รูปที่ 2.4 แสดงการส่งคำสั่ง SET Gain 0 DB (“10110000 - 0000 0101 – 0000 0000”)

รูปที่ 2.5 แสดงการส่งคำสั่งSET Gain 1 DB (“10110000 - 0000 0101 – 0000 0001”)


รูปที่ 2.6 แสดงการส่งคำสั่งSET Gain -2 DB (“10110000 - 0000 0101 – 11111110”) # 2’Complement


เอกสารแนบ
  1. Code สำหรับการทดลอง (กด Switch2 และ Switch3 เพื่อเพิ่มลด Volume)
  2. Datasheet : TPA2016D2

การใช้งาน Ethernet ของบอร์ด DEV-PIC32-001-V3

รูปที่ 1 บอร์ด DEV-PIC32-001-V3

บอร์ด DEV-PIC32-001-V3 นี้นั้นทางผู้พัฒนาได้ออกแบบบอร์ดให้รองรับการใช้งาน Ethernet มาแล้ว โดยใช้ ENC28J60 เชื่อมต่อกับ  PIC32MX460F512L ที่ชุด SPI2 และสามารถเชื่อมต่อผ่านสาย LAN ที่ Port RJ-45 แสดงดังรูปที่ 2 ( สามารถกดขยายดูวงจรได้ )


รูปที่ 2 แสดงการเชื่อมต่อระหว่าง ENC28J60 กับ PIC32MX460F512L
(หรือสามารถดูวงจรทั้งหมดได้จาก คู่มือการใช้งาน  DEV-PIC32-001-V3)

ปัญหาที่พบ?
- Code TCP/IP Stack ที่ให้มากับบอร์ดนั้น ไม่สามารถสั่งการ/ใช้งาน ENC28J60 ได้ ? และไฟแสดงสถานะที่ Port RJ-45 นั้นไม่ติด?

= สาเหตุนั้นเกิดจาก บอร์ด DEV-PIC32-001-V3 นั้นได้มีการต่อ MOSFET ชนิด PNP ไว้ ถ้าเราต้องการใช้งาน ENC28J60 นั้น เราจำเป็นต้องสั่งงานขา ETN_ON( คือขา RA9 ) ให้เป็น Logic LOW ก่อน ENC28J60 ถึงจะสามารถให้งานได้
หมายเหตุ : แนะนำให้ดู Schematic ของบอร์ดจาก คู่มือการใช้งาน  DEV-PIC32-001-V3

- Code TCP/IP Stack นัั้นได้ใช้ Timer1 ในการกำหนดจังหวะการทำงานทั้งหมด 
= ฉะนั้นถ้าเราจะใช้ TCP/IP Stack เราไม่ควรใช้ Timer1 ให้เปลี่ยนไปใช้ Timer ตัวอื่นแทน 




วันพฤหัสบดีที่ 4 มิถุนายน พ.ศ. 2558

ทดลองอ่านค่า UltarSonic( HC-SR04 )

1. การอ่านค่าจาก HC-SR04 UltraSonic



รูปที่ 1.1 การต่อวงจร HC-SR04 กับ PIC32MX460F512L

ทดสอบการอ่านค่าระยะทางจาก HC-SR04 โดย เราต้องส่งสัญญาณ Pluse ผ่านขา Trig เพื่อให้ Moduel ส่งสัญญาณออกไป จากนั้นก็อ่านค่าสัญญาณช่วง HIGH จากขา Echo ของ Modual ก็จะได้เป็นระยะห่างระห่างอุปกรณ์กับวัตถุ

รูปที่ 1.2 แสดงการใช้งานอุปกรณ์ HC-SR04
ที่มา : Datasheet HC-SR04

อุปกรณ์ที่ใช้ในการทดลอง
  1. Broad DEV-PIC32-001-V3
  2. PIC KIT 2 
  3. UltraSonic HC-SR04
  4. USB to Serial Converter
ผลการทดลอง
 
รูปที่ 1.3 แสดงสัญญาณขา Trig (สีเหลืองและ Echo (สีฟ้า)

จากรูปที่ 1.3 จะเห็นว่า Pluse สัญญาณขา Echo นั้นจะเปลี่ยนแปลงไปตามระยะห่าง ระหว่างอุปกรณ์กับวัตถุ โดยช่วง High จะแปลผันตามระยะห่างของอุปกรณ์

รูปที่ 1.4 การต่อวงจรจริงของอุปกรณ์ HC-SR04 กับ PIC32MX460F512L

รูปที่ 1.5 แสดงผลการอ่านค่า HC-SR04 ผ่าน Uart_2


เอกสารแบบ 
  1. Code สำหรับใช้ในการทดลอง
  2. DataSheet Ultarsonic HC-SR04

หมายเหตุ : ในการทดลองครั้งนี้ทางกลุ่มได้ใช้ วิธีตรวจสอบ สัญญาณ Echo ที่เข้ามา ด้วยเทคนิคแบบ Polling ซึ่งจะเกิดความไม่ต่อเนื่องของผลการทดลอง และการทำ Code ไปใช้งานต่ออาจเกิดปัญหาได้ จึงแนะนำให้ถ้าจะใช้งานจริงๆนั้น ควรปรับปรุง Code โดยใช้ Extarnal Interrupt แทนซึ่งจะได้ผลดีกว่า

อ้างอิง : การอินเทอร์รัพ (รศ. ณรงค์ บวบทอง )http://home.kku.ac.th/regis/student/snakiiz/New%20Folder/15.html



Mini Project :: UltraSonic Theremin


Mini Project ::
Embedded System Design Lab 2015

รูปที่ 1  Léon Theremin และ Theremin ของเขา

Theremin คือ ?

                Theremin เป็นเครื่องดนตรีอิเล็กโทรนิคโบราณ  ที่เล่นได้โดยไม่ต้องใช้การสัมผัส  เกิดขึ้นเมื่อประมาณ ค..192x โดยนักประดิษฐ์ชาวรัสเซีย ชื่อ Leon Theremin เป็นเครื่องดนตรีที่อาศัยความรู้ด้านอิเล็กทรอนิคยุคแรกๆที่เกิดขึ้น โดยจะมีเสาอยู่ 2 เสา ดังรูปที่ 2 ระยะห่างระหว่างมือของมือของผู้เล่นกับเสานั้น  จะมีผลต่อการเปลี่ยนแปลงระดับเสียง(Pitch) และความดัง(Volume)
รูปที่ 2 Theremin สมัยใหม่จากผู้ผลิต moog
ที่มา : link

แนวคิด
                จากข้อมูลข้างต้นที่บอกว่า Theremin นั้นสามารถสร้างเสียงได้ โดยไม่ต้องใช้การสัมผัสใดๆกับอุปกรณ์นั้น  เราจึงมีความคิดที่จะใช้ Sensor Ultra Sonic ที่ใช้วัดระยะห่าง 2 ตัว เพื่อสร้างพฤติกรรมเลียนแบบ Theremin นั้นเอง โดยที่ Ultra Sonic ตัวแรกระยะห่างจะมีความสัมพันธ์กับ การเปลี่ยนแปลงระดับเสียง (Pitch) และ ตัวที่สองระยะห่างจะมีผลต่อความดัง (Volume) โดยใช้ MCU : PIC32 ที่ทางกลุ่มเลือกมาได้ ในการควบคุมการทำงาน และเป็นตัวคอยสร้างระดับเสียง (Pitch) ให้เกิดขึ้น ส่วนการควบคุม Volume นั้นก็จะสั่งเพิ่มลด gain ของ Amplifier Module (I2C) นั้นเอง


Block Diagrame


รูปที่ 3 Block Diagrame
รายการอุปกรณ์ที่ใช้
  • 1.       DEV-PIC32-001-V3 BROAD                     x 1
  • 2.       Ultra Sonic                                                  x 2
  • 3.       Stereo 2.8W Class D Audio Amplifier       x 1
  • 4.       สายไฟต่อทดลอง
s



วันพฤหัสบดีที่ 2 เมษายน พ.ศ. 2558

# 1 Another MCU & Blink LED

# Micro Controller

DEV-PIC32-001-V3


ที่มา : Datasheet DEV-PIC32-001-V3 

เป็นบอร์ด MCU ที่ใช้ PIC32 เบอร์ PIC32MX460F512L เป็นตัวประมวลผลการทำงานหลัก อีกทั้งยังมีส่วนต่อขยายเพิ่มเติมหลายส่วน เช่น

ส่วนต่อขยาย


  1. Connector สำหรับต่อกับจอ TFT รุ่น LQ043T3DX0C-M-V1
  2. USB Device Connector สำหรับเชื่อมต่อกับคอมพิวเตอร์ ผ่าน Port USB
  3. USB Host Connector สำหรับเชื่อมต่อกับอุปกรณ์ USB Device
  4. LAN Port สำหรับเชื่อมต่อกับระบบ LAN
  5. SD Card Socket สำหรับเชื่อมต่อกับหน่อยความจำ
  6. I/O Port สำหรับใช้งานทั่วไป
  7. Touch Screen Connect สำหรับเชื่อมต่อกับ Touch Screen แบบ Resistive 4-wire
  8. ICD2 Connector สำหรับ Debug/Program

ข้อมูลเบื้องต้นของบอร์ด PIC32MX460F512L

  1. แรงดันไฟเลี้ยงที่สามารถใช้ได้
    - J1 connector 7-9 Vdc
    - CN10 connector 5 V
  2. toolchain + IDE ที่สามารถใช้ได้
    - MPLABX IDE
    - PICkit2
  3. ขา I/O สามารถจ่ายกระแสได้สูงสุด 18 mA
  4. มีขา SPI จำนวน 2 ชุด
  5. มีขา I2C จำนวน 2 ชุด
  6. มี UART จำนวน 2 ชุด
  7. มีขา ADC ที่เป็น input จำนวน 16 ขา (AN0 - AN15) และมีขนาด resolution 16-bit
  8. ความถี่ภายใน 8 MHz และ 32 KHz
  9. ความถี่ภายนอก crystal oscillator 3 MHz - 25 MHz
  10. ความถี่สูงสุด CPU core 80 MHz

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

  1. คอมพิวเตอร์สำหรับใช้งานซอฟต์แวร์
  2. Microcontroller PIC32MX460F512L
  3. PX200 OEM-PICkit2 programmer

ซอฟต์แวร์ที่ใช้ในการทดลอง

  1. MPLAB X IDE
  2. PICkit2

ขั้นตอนการทดลอง

  1. ติดตั้งซอฟต์แวร์ที่ต้องการใช้
  2. ต่ออุปกรณ์ PICkit2 กับคอมพิวเตอร์ผ่านพอร์ต USB (ใช้ไฟเลี้ยงจากพอร์ต USB) และต่ออุปกรณ์ PIC32 กับ PICkit2 เข้าด้วยกันผ่าน ICD2 Connector ดังรูป
  3. การใช้งานโปรแกรม MPLAB X IDE และ PICkit2

    เมื่อเปิดโปรแกรมจะแสดงหน้าต่างดังรูป


    สร้างโปรเจคใหม่เลือก File -> New Project -> Microchip Embedded -> Standalone Project -> Next


    เลือก Select Device -> Family: 32-bit MCUs (PIC32) -> Device: PIC32MX460F512L -> Next


    เลือก Tools ให้ตรงกับที่ใช้


    Select Compiler
    Select Project Name and Floder


    เมื่อสร้าง project เสร็จจะได้ไฟล์ต่างๆ ดังภาพ


    ส้รางไฟล์สำหรับเขียนโค้ด ในที่นี้ใช้ภาษาซี
    Source Files -> New -> C Main File...


    ตั้งชื่อไฟล์ที่จะใช้เขียนโค้ด blink (ภาษาซี)


    เขียนโค้ดให้ LED กระพริบ จากนั้นทำการ Build file ให้เป็น .hex เพื่อนำไปใช้ในการโปรแกรม


    นำไฟล์ .hex ที่ได้มาโปรแกรมด้วย PICkit2
    File -> Import Hex -> "ไฟล์.hex ที่ต้องการโปรแกรม"

ผลการทดลอง

  • รูปแสดงความถี่ของสัญญาณการติดดับของ LED
ความถี่ = 2 MHz, Vmax = 3.40 V

ความถี่ = 3.65 Hz, Vmax = 3.32 V