MiniProject 010123120 Embedded System Design Lab นาฬิกาปลุก
หัวข้อ : นาฬิกาปลุก
เพื่อใช้สำหรับการส่งข้อมูลต่างๆ ไปยังเว็บ Plot.py
สามารถดาวน์โหลดไฟล์โค้ดการทำงานได้ที่
https://www.dropbox.com/s/d2a1qsptbahy6o8/Project_mini.rar?dl=0
จะได้กราฟใน Plotly เป็นดังนี้
วัตถุประสงค์
1. เพื่อการศึกษาการทำงานของบอร์ด ET-STM32F103
2. เพื่อศึกษาการใช้งานของ Ethernet module สำหรับการเชื่อมต่อระหว่างหน้าเว็บที่ไว้สำหรับกำหนดเวลาในการปลุกกับบอร์ดทดลอง
3. เพื่อศึกษาการใช้งานของ module real time clock ซึ่งเป็นอุปกรณ์ที่ให้ค่าเวลาตามจริง
4. เพื่อศึกษาการทำงาน Piezo ซึ่งไว้ทำให้เกิดเสียงเมื่อจะทำการปลุก
5. เพื่อศึกษาการทำงานของปุ่มกด ซึ่งไว้ทำการกดปิดเสียง Piezo
6. เพื่อศึกษาการทำงานของโมดูล MAX7219 ซึ่งแสดงผลด้วย LED แบบDotmatrix ขนาด 8x8
ซึ่งไว้แสดงนาฬิกาแบบดิจิตอล
ขอบเขตของงาน
1. ใช้บอร์ด ET-STM32F103 ในการควบคุมระบบ
2. ต้องมีการนำข้อมูลหรือสถานะของระบบหรือควบคุมสั่งงานในรูปแบบใดแบบหนึ่งผ่าน web
3. ต้องมีการใช้งานบัส I2C หรือ SPI อย่างน้อย 1 อุปกรณ์ เช่น RTC module
4. ต้องมีการบันทึกข้อมูลลง SD card / microSD หรือ ส่งข้อมูลแบบไร้สายไปยังคอมพิวเตอร์(ห้ามใช้อุปกรณ์ประเภท WiFi-to-Serial) หรือ ส่งข้อมูลผ่านEthernet ไปยังคอมพิวเตอร์
5. ให้ใช้ STM32CubeMx (STM32CubeF0 / STM32CubeF3 / STM32CubeF4) และ HAL library แบบใหม่ และไม่ใช้ Standard peripherals library (SPL ) ซึ่งเป็นของเดิม
ประโยชน์ที่คาดว่าจะได้รับ
1. ทำให้ได้รับความรู้เกี่ยวกับบอร์ดทดลองที่ได้รับเพิ่มมากขึ้น
2. ทำให้ได้รับความรู้จากการใช้โมดูลไวไฟ , module real time clock , Piezoและ LED8x8
3. ทำให้ได้รับความรู้จากการใช้งานสำหรับการติดต่อระหว่างบราวเซอร์ของ Chormeกับบอร์ดทดลอง
แนวคิดและหลักการออกแบบของระบบ
การออกแบบระบบย่่อย
1. การใช้งานโมดูลแสดงผลด้วย LED แบบ Dotmatrix ขนาด 8x8 โดย MAX 7219 (RED) สามารถศึกษาได้จาก http://embeddedsystemdesign010123119.blogspot.com/2015/06/miniproject-010123120-embedded-system_4.html
2. การใช้งาน RTC (Real Time Clock) บนบอร์ด STM32F103 สามารถศึกษาได้จาก http://embeddedsystemdesign010123119.blogspot.com/2015/06/rtc-real-time-clock-stm32f103.html
3. การใช้งาน Module Ethernet mini ENC28J60 สามารถศึกษาได้จาก http://embeddedsystemdesign010123119.blogspot.com/2015/07/module-ethernet-mini-enc28j60.html
4. การใช้บัซเซอร์เพื่อส่งเสียงปลุก
5. การใช้ปุ่มกด เพื่อหยุดเสียงปลุก
โปรแกรมที่ใช้สำหรับการพัฒนา
1. STM32CubeMx
2. CubeMx2EmBlock
3. EmBlocks
4. Demonstrator GUI
1. STM32CubeMx
2. CubeMx2EmBlock
3. EmBlocks
4. Demonstrator GUI
วัสดุและอุปกรณ์
1. บอร์ด ET-STM32F103
2. โมดูล MAX7219 LED 8x8
3. โมดูล Ethernet mini ENC28J60
4. สายไฟ
5. ตัวต้านทาน 1kOhms
6. LM35
Temparature sersor
7. Buzzer
8. ปุ่มกด
ขั้นตอนการทดลอง
1.
สร้างโปรเจค
สำหรับ Mini Project นี้ ซึ่งเป็นชิป STM32F103RBTX โดยใช้โปรแกรม STM32CubeMX
2.
เลือกขา
ที่ต้องใช้ทั้งหมด ซึ่งได้แก่
1)
ADC1 ซึ่งไว้สำหรับอ่านค่า
Temperature
2)
RTC ไว้สำหรับอ่านค่า วันที่และเวลา
3)
SPI1 แบบ Full-Duplex
Master ซึ่งไว้สำหรับส่งข้อมูลไปยัง 8*8 LED Matrix และเลือกขา PA1(GPIO_OUTPUT) ไว้สำหรับเป็น CS
SPI2 แบบ Full-Duplex Master ซึ่งไว้สำหรับส่งข้อมูลไปยัง
8*8 LED Matrix และเลือกขา PB12(GPIO_OUTPUT) ไว้สำหรับเป็น CS
4)
UART2 เลือกแบบ Mode
Asychronousไว้สำหรับ แสดงข้อความที่ต้องการดู
5)
ปุ่มกด : PB9(GPIO_INPUT)
บัซเซอร์ : PB8(GPIO_OUTPUT)
6)
ทำการ ตั้งค่าโปรเจคและ
Generate Code
7)
แล้วจึงทำการ convert โปรเจคจาก โปรแกรม STM32CubeMX ไปยัง Emblocks โดยใช้โปรแกรม CubeMx2EmBlock
8)
แล้วจึงเปิดโปรเจคโดยไปที่
File -> Open -> แล้วเลือกโปรเจคที่จะทำการเปิด
9)
เนื่องจาก Library ที่นำมาใช้ เป็น C++ จึงต้องทำการเปลี่ยนไฟล์
main.c เป็น main.cpp ดังนั้นจึงต้องทำการแก้ในส่วนของ
Build Option ดังนี้ Project -> Build Option ->
Compiler settings -> Compiler Flags แล้วเปลี่ยนส่วน
Categories เป็น C++ Options แล้วทำการติ๊กตามรูปข้างล่างนี้
10)
และแก้ส่วนของ Linker settings -> Linker Flags แล้วเปลี่ยนส่วน Categories เป็น Library
selection แล้วทำการติ๊กตามรูปข้างล่างนี้
11)
แล้วจึงทำการแก้ในส่วนของ
Pre/post build steps เพื่อให้รันออกมาเป็น file
นามสกุล .bin
12)
จากนั้นจึงทำการเปลี่ยนไฟล์
main.c เป็น main.cpp
ทำการรวมโค้ดในแต่ละส่วนของการทดลอง
เพื่อให้ทำงานเป็นระบบหนึ่งเดียว ซึ่งมีโค้ดตามข้างล่างนี้
จากโค้ดที่จะใช้ ADC1channel 15จานวน 12 บิตสาหรับอ่านแรงดันเอาต์พุตจากLM35DZ
และใช้ SPI1สำหรับส่งข้อมูลไปยังโมดูล MAX7219
LED8x8และใช้ SPI2สาหรับเชื่อมต่อบัส SPI กับโมดูล Ethernet
ENC28J60
4.2. ทำการต่อวงจรสำหรับการทดลองดังต่อไปนี้
***สำหรับวงจรที่นำมาใช้สำหรับการทดลอง จะใช้ตัวต้านทาน 1kΩ***
4.3. ทำการรันโค้ด Python ในไฟล์ eudp.py ในคอมพิวเตอร์เพื่อรับข้อมูลที่ได้จากบอร์ด STM32F103
ซึ่งโค้ด eudp.py จะมีการเรียกใช้งานคลาสที่อยู่ภายในไฟล์ sent2plotly.py
สามารถดาวน์โหลดไฟล์โค้ดการทำงานได้ที่
https://www.dropbox.com/s/d2a1qsptbahy6o8/Project_mini.rar?dl=0
จะได้กราฟใน Plotly เป็นดังนี้
แกน x : เวลาที่รับมา
แกน y : ค่าอุณหภูมิ (เซลเซียส)
ภาพการต่อวงจรจริง
สามารถดาวน์โหลดไฟล์เอกสารเป็นไฟล์ pdf ได้ที่ https://www.dropbox.com/s/umnf3cooaftyo9r/5501012630010_5501012630176.pdf?dl=0