Skip to content

My Thai book "การโปรแกรมไพทอนสำหรับงานควบคุมและฝังตัว"

License

Notifications You must be signed in to change notification settings

dewdotninja/py4conemb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 

Repository files navigation

การโปรแกรมไพทอนสำหรับงานควบคุมและฝังตัว

Python Programming for Control and Embedded Applications

py4conemb_cover



ผู้เขียน : ดร. วโรดม ตู้จินดา
ภาควิชาวิศวกรรมเครื่องกล คณะวิศวกรรมศาสตร์
มหาวิทยาลัยเกษตรศาสตร์

ISBN : 978-616-608-619-5
จำนวนหน้า : 460

1 สิงหาคม 2567 : หนังสือได้รับรางวัลตำราดีเด่นจากคณะวิศวกรรมศาสตร์ ม.เกษตรศาสตร์

หนังสือเล่มนี้ไม่มีจำหน่ายเป็นเล่มพิมพ์ แต่สามารถดาวน์โหลด PDF ได้ฟรีทั้่งเล่ม ไม่ต้องไปหาที่อื่นไกล คลิกลิงก์นี้เลย
py4conemb


ไพทอนเป็นภาษาคอมพิวเตอร์ที่มีเสน่ห์ในตัวเอง เช่นความเป็นเชิงวัตถุ มีความยืดหยุ่นสูง หาไลบรารี่สนับสนุนได้ง่าย และไวยากรณ์ภาษาที่ช่วยให้เขียนโค้ดได้กระชับ ส่วนทางด้านสมรรถนะการคำนวณเมื่อประมวลผลบนคอมพิวเตอร์สมรรถนะสูงเทียบเคียงได้กับผลิตภัณฑ์ซอฟต์แวร์อื่นที่ใช้งานด้านวิศวกรรม ส่วนข้อเสียเปรียบก็จะเหมือนกับภาษาระดับสูงทั่วไป คือขนาดของโค้ดและความเร็วในการประมวลผลโดยทั่วไปยังด้อยกว่าโค้ดที่เขียนภาษาระดับกลางและผ่านการคอมไพล์เช่นภาษา C++ อยู่บ้าง โดยเฉพาะในระบบฝังตัวที่มีข้อจำกัดด้านทรัพยากร แต่ในปัจจุบันเมื่อพิจารณาในภาพรวมกับสมรรถนะของคอมพิวเตอร์และไมโครคอนโทรลเลอร์ กล่าวได้ว่าเป็นแนวทางการพัฒนาที่น่าสนใจจนต้องรวบรวมเนื้อหาไว้ใช้ประโยชน์สำหรับผู้เริ่มต้นจนถึงขั้นสูง

หนังสือ “การโปรแกรมไพทอนสำหรับงานควบคุมและฝังตัว” เรียบเรียงขึ้นเพื่อใช้ประกอบการสอนในรายวิชาของสาขาวิศวกรรมไฟฟ้าเครื่องกลการผลิต ระดับปริญญาตรี และหลักสูตรวิศวกรรมศาสตรมหาบัณฑิต สาขาเทคโนโลยีการผลิตทางอุตสาหกรรม คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์ หรือใช้อ่านประกอบสำหรับผู้สนใจทั่วไป เนื้อหาหลักเน้นการประยุกต์ใช้งานด้านวิศวกรรมควบคุม การเขียนโปรแกรมโดยใช้แพ็กเกจสนับสนุน ตั้งแต่พื้นฐานจนถึงเนื้อหาขั้นสูงเช่นการโปรแกรมเชิงวัตถุ รวมถึงการพัฒนาสำหรับระบบฝังตัวโดยใช้ไมโครไพทอน (micropython) ซึ่งกล่าวได้ว่าเป็นเซตย่อยของภาษาไพทอนสำหรับไมโครคอนโทรลเลอร์ เนื้อหาในส่วนนี้ครอบคลุมถึงระบบฝังตัวที่ได้รับความนิยมในปัจจุบันเช่นไอโอทีและหุ่นยนต์


แก้ไข/เพิ่มเติม/อัพเดต

20 พย. 67

แก้ปัญหา Wifi บน Wokwi หลุด

30 สค. 67

อัพเดตการส่งข้อความให้กับ NETPIE dashboard โดยตรงในหัวข้อ 5.3.3 จากการทดสอบ NETPIE ปัจจุบันพบว่า ไม่จำเป็นต้องสร้าง device 2 ตัวและ group เข้าด้วยกัน แต่ใช้เพียง device ตัวเดียวที่เชื่อมต่อกับอุปกรณ์ฝังตัวก็สามารถทำงานได้ โดยได้อธิบายรายละเอียดใน วีดีโอนี้

14 พค. 67

เพิ่มโค้ดในส่วนของการใช้ virtual serial port สื่อสารระหว่าง Wokwi กับ tkinter บน Jupyter notebook โดยรวบรวมไว้ในโฟลเดอร์ vsp

30 เมย. 67

แก้ไขจุดผิดพลาดในโค้ด Wokwi สำหรับการควบคุมมอเตอร์ข้อต่อเดี่ยว ในส่วนของ dcm.chip.c และในไฟล์ main.py ที่ทำให้การควบคุมป้อนกลับสถานะทำงานไม่ถูกต้อง จุดที่ผิดคือการนิยามขาเอาต์พุตบนชิปเฉพาะของ Wokwi และต้องเพิม offset ให้กับการอ่านค่าความเร็วจากชิป หลังแก้ไขแล้วการออกแบบโดยวิธีวางโพลใช้งานได้ดี แต่การจำกัดค่าเอาต์พุตตัวควบคุมทำให้ไม่สามารถกำหนดค่าความถี่ $\omega_n$ ได้สูงมากเท่าการจำลองบน Jupyter notebook

20 กพ. 67

ไลบรารี paho-mqtt เวอร์ชันใหม่ที่ 2.0.0 ที่เริ่มใช้วันที่ 11 กพ. 67 มีการเปลี่ยนแปลงโค้ดสำหรับตั้งค่าเริ่มต้น client ทำให้โค้ดที่อยู่ใน notebook บทที่ 8 ตรงส่วนนี้

Client_ID = ""
User = ""
Password = ""
client = mqtt.Client(client_id=Client_ID,
                         transport='tcp',
                         protocol=mqtt.MQTTv311,
                         clean_session=True)
client.username_pw_set(User,Password)

ไม่สามารถทำงานได้ ต้องมีการแก้ไขเป็นดังนี้

Client_ID = ""
User = ""
Password = ""
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2,
                         client_id=Client_ID,
                         transport='tcp',
                         protocol=mqtt.MQTTv311,
                         clean_session=True)
client.username_pw_set(User,Password)

จะเห็นว่ามีการเพิ่มอาร์กิวเมนต์แรกคือ mqtt.CallbackAPIVersion.VERSION2 ซึ่งจำเป็นต้องมี จะเพิ่มโค้ดส่วนที่แก้ไขแล้วอยู๋ในไดเรคทอรีย่อย /v2/


โค้ดไพทอน

Disclaimer : โค้ดไพทอนที่รวบรวมไว้ใน github repo นี้ รวมถึงส่วนที่พัฒนาบนแพลตฟอร์ม Wokwi ตามลิงก์ด้านล่าง สามารถนำไปประยุกต์/ใช้ประโยชน์ได้อย่างเสรีโดยไม่มีลิขสิทธิ์ใดๆ แต่เนื่องจากวัตถุประสงค์หลักคือใช้ประกอบตัวอย่างในหนังสือ ผู้เขียนได้ตรวจสอบเพึยงใช้งานไ้ด้ถูกต้องตามวัตถุประสงค์สำหรับตัวอย่างนั้น แต่ไม่สามารถรับประกันว่าปลอดจากจุดบกพร่อง (bugs) โดยสมบูรณ์สำหรับการใช้ในงานจริง โดยเฉพาะในระบบฝังตัวที่จุดบกพร่องอาจขึ้นกับหลายปัจจัยรวมถึงฮาร์ดแวร์ โดยเหตุนี้ผู้เขียนต้องขอปฏิเสธความรับผิดชอบในทุกกรณีหากเกิดอันตราย/ ความเสียหายต่อชีวิตและทรัพย์สินจากการประยุกต์ใช้งานซอฟต์แวร์ประกอบหนังสือ

ลิงก์โพรเจกบน Wokwi

หมายเหตุ : บางโพรเจกมิได้ระบุในหนังสือโดยตรง แต่เกี่ยวข้องกับเนื้อหาในบทนั้น

  • บทที่ 4
  • บทที่ 5
    • ตัวอย่าง 5.5 : iot_controller4.py (อย่าลืมใส่ข้อมูลจาก NETPIE 2020 ก่อนรัน)
  • บทที่ 6 ์
    • ตัวอย่าง 6.5 : rgbfancy.py
    • rgbfancy_netpie.py แสดงการเสริมโปรแกรม rgbfancy.py ให้ใช้งานไอโอทีได้
  • บทที่ 8
    • ตัวอย่าง 8.1 : dcm1_controllers.py แสดงการควบคุมข้อต่อหุ่นยนต์ที่ขับเคลื่อนโดยดีซีมอเตอร์ ใช้สัญญาณ PWM/DIR เป็นเอาต์พุตตัวควบคุม
    • ตัวอย่าง 8.2 - 8.6 : การควบคุมแบบไม่เป็นเชิงเส้นสำหรับแขนกล 2 ก้านต่อ รวมอยู่ในโพรเจกนี้ robo2links_track.py
    • ตัวอย่าง 8.7 - 8.8 : robo2links_iot.py ใช้ร่วมกับ GUI ในไฟล์ chapter8.ipynb เพื่อศึกษาจลนศาสตร์ของแขนกล 2 ก้านต่อ
    • ตัวอย่าง 8.9 : ddrobot_controllers.pyตัวควบคุมหุ่นยนต์ส้ม เพื่อศึกษาการควบคุมขั้นพื้นฐาน โดยยังไม่มีการเชื่อมต่อไอโอที
    • ตัวอย่าง 8.10 : ddrobot_controllers_iot.py เสริมไอโอทีให้หุ่นยนต์ส้ม ใช้ร่วมกับ GUI ในไฟล์ ddtk1.ipynb ที่สามารถกำหนดตำแหน่งเป้าหมายโดยใช้เม้าส์ และให้หุ่นยนต์เคลื่อนที่สู่เป้าหมายนั้น
    • ตัวอย่าง 8.11 : การเคลื่อนที่ของหุ่นยนต์ส้มในกริดเวิลด์ ใช้ ddrobot_iot_gw.py ร่วมกับ GUI ในไฟล์ ddtk2.ipynb เพื่อกำหนดสภาพแวดล้อมของกริดเวิลด์ และหาคำตอบของการวนซ้ำมูลค่า เพื่อได้นโยบายเหมาะที่สุดสำหรับเส้นทางที่หุ่นยนต์จะเคลื่อนที่
  • เสริม : ใช้พอร์ตอนุกรมเสมือน (virtual serial port) แทน NETPIE IoT

วีดีโอ

คลิปวีดีโอคัดเลือกที่เกี่ยวข้องกับเนื้อหาในหนังสือ คลิปอื่นดูได้จากช่อง @varodomt

วีดีโอเสริม

หมายเหตุ : หน้าตาของเครื่องมือซอฟต์แวร์ที่ใช้อาจมีการเปลี่ยนแปลงบ้างเมื่อมีการอัพเดตเวอร์ชัน

About

My Thai book "การโปรแกรมไพทอนสำหรับงานควบคุมและฝังตัว"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published