Saturday, July 4, 2015

MiniProject: LED อัตโนมัติ

        สำหรับมินิโปรเจคที่กลุ่มของข้าพเจ้าได้ทำคือ LED อัตโนมัติ ซึ่งเป็นการใช้งานบอร์ด STM32F4 Discovery ในการควบคุมการทำงานของ led ให้ติดหรือดับตามเวลาที่ต้องการ โดยได้ใช้ RTC Module ET-MINI DS1307 เป็นตัวในการตั้งเวลา สำหรับครั้งแรกของการใช้งานจะต้องตั้งเวลาให้กับ RTC Module ก่อน จากนั้นจึงตั้งให้เวลาให้กับ led

สำหรับรายละเอียดของมินิโปรเจคนี้ เช่น วัตถุประสงค์ ขอบเขตของการทำงาน สามารถดูได้จากลิงค์นี้   http://embededlab.blogspot.com/2015/05/mini-project.html

สำหรับการทำงานทั้งหมดของโปรเจคแบ่งได้เป็น 6 ส่วนดังนี้


ส่วนที่ 1: การใช้งาน 16X2 LCD Display กับบอร์ด STM32F4-Discovery


ภาพ Wiring Diagram


ภาพการต่อวงจรจริง

        สำหรับในส่วนนี้จะเป็นการเชื่อมต่อ 16X2 LCD Display เข้ากับ STM32F4 Discovery ซึ่งจะมีการระบุพินนี้คืออะไร ต่อเข้ากับพินไหนบนบอร์ด นอกจากนี้ยังมีโค้ดตัวอย่างสำหรับในการทดลองซึ่งมีทั้งแบบ Standard Library และแบบ HAL Library โดยสามารถดูรายละเอียดได้จากลิงค์ต่อไปนี้ http://embededlab.blogspot.com/2015/06/16x2-lcd-display-stm32f4-discovery.html

ส่วนที่ 2: การใช้ ET-MINI DS1307 (RTC Module) กับบอร์ด STM32F4-discovery


ภาพ Wiring Diagram


ภาพการต่อวงจรจริง

        สำหรับในส่วนนี้จะเป็นการใช้งาน RTC Module กับบอร์ด STM32F4 Discovery ซึ่งจะมีรายละเอียดเกี่ยวกับพินต่างๆของโมดูลว่าคือพินอะไร ไว้ใช้ทำอะไร และพินที่ต่อเข้ากับ STM32F4 Discovery ในการรับส่งข้อมูลระหว่าง RTC Module กับบอร์ด STM32F4 Discovery จะใช้การส่งแบบ I2C โดยที่บอร์ด STM32F4 จะเป็น Master ทั้งในการรับและการส่งข้อมูล ส่วน RTC Module จะทำหน้าที่เป็น Slave รายละเอียดเพิ่มเติมสามารถดูได้จากลิงค์นี้ http://embededlab.blogspot.com/2015/06/ds1307-rtc-stm32f4-discovery.html

ส่วนที่ 3: โค้ดที่ใช้ในการทดลอง RTC Module
        สำหรับโค้ดที่ใช้ในการทดลอง RTC Module นั้นแบ่งเป็น 2 ส่วนด้วยกันคือ
  • ส่วนแรก จะเป็นการเขียนโค้ดโดยใช้ Standard Library ซึ่งเป็นไลบรารี่ที่ใช้งานกันทั่วไปจึงทำให้มีตัวอย่างการใช้งานค่อนข้างหลากหลาย โดยสามารถดูรายละเอียดฟังก์ชันในการทำงานเพิ่มเติมได้ที่ลิงค์นี้  http://embededlab.blogspot.com/2015/06/ds1307-rtc.html
  • ส่วนที่ 2 จะเป็นการเขียนโค้ดโดยใช้ HAL Library ซึ่งเป็นไลบรารี่ที่มาใหม่ โดยทำให้ง่ายต่อการเชื่อมต่อฮาร์ดแวร์ได้มากขึ้น ยังไม่ค่อยมีคนใช้ จึงหาตัวอย่างการใช้งานได้ค่อยข้างยาก โดยโค้ดที่ใช้ในการทดลองแบบ HAL Library สามารถดูได้จากลิงค์นี้ http://embededlab.blogspot.com/2015/06/miniproject-5-ds1307-hal.html

ส่วนที่ 4: ส่วนของการตั้งเวลา LED ติด/ดับ อัตโนมัติ
        สำหรับในส่วนนี้จะเป็นการตั้งเวลาเปิดปิด led อัตโนมัติโดยใช้ ET-Mini DS1307 RTC Module เป็นตัวในการตั้งเวลา โดยในการตั้งเวลาที่ทดลองจะให้ไฟ led toggle ทุกๆ 5 วินาที สำหรับรายละเอียดต่างๆสามารถดูได้จากลิงค์นี้ http://embededlab.blogspot.com/2015/06/miniproject-4-led.html

ส่วนที่ 5: การทดลองการใช้งาน SPI
        สำหรับในส่วนนี้จะเป็นการทดสอบการใช้งาน SPI บนบอร์ด STM32F4 Discover ได้ทำการทดสอบโดยใช้ Oscilloscope วัดค่าสัญญาณที่ออกมาจากพิน SCK (ในที่นี้ใช้พิน PB13) กับพิน CS (ในที่นี้ใช้พิน PC5) โดยทำการส่งค่าออกไปที่ขา SPI ซึ่งรายละเอียดต่างๆสามารถดูได้จากลิงค์นี้ http://embededlab.blogspot.com/2015/07/miniproject-6-spi.html

ส่วนที่ 6: การใช้งาน ENC28J60 Ethernet Module กับบอร์ด STM32F4 Discovery
        สำหรับในส่วนนี้จะเป็นการทดสอบการใช้งาน ENC28J60 Ethernet Module กับบอร์ด STM32F4 Discovery

Thursday, July 2, 2015

[Miniproject #6] การทดสอบการใช้ SPI

ทดสอบการใช้ SPI

ภาพรวมของ SPI 
          SPI หรือ Serial Peripheral Interface เป็นวิธีการสื่อสารรูปแบบหนึ่ง ที่ใช้ในการติดต่อสื่อสารกับอุปกรณ์ ตัวอย่างเช่น พริ้นเตอร์ กล้องถ่ายรูป เครื่องสแกนเนอร์ และอื่นๆ อีกมามาย ถึงแม้ว่าการสื่อสารของ USB ที่มีฟังก์ชั่นการทำงานที่กว้างกว่า แต่การสื่อสารในรูปแบบ SPI ก็ยังถูกใช้งานกันอยู่ในบาง Application

          SPI ทำงานในรูปแบบที่ให้อุปกรณ์ตัวหนึ่งทำหน้าที่เป็น  MASTER ในขณะที่อีกตัวหนึ่งทำหน้าที่เป็น SLAVE และส่งข้อมูลในโหมด Full-duplex นั่นหมายความว่า สัญญาณสามารถส่งหากันได้ระหว่าง MASTER และ SLAVE ได้อย่างต่อเนื่อง ในการสื่อสารแบบ SPI นี้ ไม่ได้มาตรฐานกำหนดตายตัว ว่าข้อมูลที่ส่งหากันต้องอยู่ในรูปแบบหรือ format แบบไหน เป็นการคิด protocol การสื่อสารกันเอาเอง


โค้ดที่ใช้ในการทดสอบ SPI

  • ส่วนของการกำหนด SPI
  • โค้ดที่ใช้ในการทดสอบ SPI

  • ผลของการทดสอบ โดยวัดจากขา SCK (PIN PB13) และ CS (PIN PC5)