สวัสดีโซเชียลแคม วันนี้เราจะมาทำโปรเจกต์ Smart Factory CNC 4.0 ด้วย Arduino กัน โจทย์คือเครื่อง CNC ในโรงงานของเรา ณ ปัจจุบันนี้มันยังทำงานแบบออฟไลน์ การที่จะมอนิเตอร์ต้องใช้คนหลายคน หรือไม่ก็ต้องรอให้หน้างานเดินมาแจ้งปัญหากับทีมช่าง กว่าช่างจะเดินไปถึง กว่าจะวิเคราะห์ปัญหา กว่าจะซ่อม ต้องเสียเเวลาไป
สายงานผลิตก็ต้องหยุดชะงัก เสียหายหลายแสนต่อธุจกิจอยู่เหมือนกัน เราก็เลยมีไอเดียเอาคอนเซปต์ Smart Factory มาใช้ ด้วยการใช้ Arduino มาทำ Iot ทำเครื่อง CNC ธรรมดาๆ ให้มัน Smart สามารถเชื่อมต่อกับชาวโลกได้
Project Timeline
- เฟสแรกของโปรเจกต์ที่วางเอาไว้คือ ทำง่ายๆ ให้มันเชื่อมต่อ และแสดงสถานะของมันแบบเรียลไทม์ไปยังศูนย์กลางให้ได้ก่อน ข้อมูลที่จะคุยกันมีแค่ “ทำงาน” กับ “หยุดทำงาน” เมื่อไหร่ที่หยุดทำงานให้แจ้งเตือนทางหน้าเว็บที่ทีมช่างมอนิเตอร์อยู่ ผลที่ได้คือช่างสามารถเข้ามาแก้ปัญหาได้ทันทีที่มองเห็นปัญหา ไลน์การผลิตก็ไหลราบลื่น โบนัสสิ้นปีก็คงจะได้เยอะ (หวังว่า อะนะ)
เครื่องมือและอุปกรณ์สำหรับทำโปรเจกต์ Smart Factory CNC 4.0
ความรู้ที่เราต้องมีและจะได้จากการทำโปรเจกต์ครั้งนี้
- Codeigniter PHP framwork https://codeigniter.com/
- PHP skill
- SQL skill
- HTML + CSS
- ภาษาซี for Arduino
- Network protocol
- Line API
- CNC
- Sensor with Arduino
เรามาเริ่มลงมือทำกันเลยจร้า
- ดาวน์โหลด และ ติดตั้ง XAMP ขั้นตอนนี้คงไม่ต้องอธิบายละเอียดมาก ดาวน์โหลดมาแล้วก็ติดตั้งโลด
– หลังจากที่เราติดตั้ง XAMP เสร็จมันจะมาพร้อมกับ MySQL และ phpmyadmin เป็นตัวช่วยในการจัดการฐานข้อมูล ให้เราทำการรันโปรแกรม XAMP เพื่อให้เซิร์ฟเวอร์จำลองของเรามันทำงาน
– เปิดเว็บบราวเซอร์ขึ้นมาเพื่อลองเช็คดูว่า phpmyadmin และฐานข้อมูลของเราใช้งานได้หรือยัง โดยไปที่ http://localhost/phpnyadmin
ถ้าใช้งานได้ก็จะมีหน้าตาประมาณนี้ครับ - ต่อไปเราจะใช้ codeigniter framwork ในการพัฒนาโปรแกรมฝั่งเซิร์ฟเวอร์ ทำการโหลด codeigniter มาไว้ที่เครื่องเราก่อนเลย วิธีการใช้งาน codeigniter framwork นั้นง่ายมากๆ ให้เราทำการแตกไฟล์ แล้วเอาไปวางใน C:\xampp\htdocs สร้างโฟลเดอร์ขึ้นมาใหม่เป็นชื่อโปรเจกต์ของเรา เช่นในที่นี้ผมจะตั้งชื่อโฟลเดอร์เป็น \machine ผมก็ทำการสร้างโฟลเดอร์ใหม่ขึ้นมาแล้วเอาไฟล์ codeigniter ที่โหลดมาเมื่อตะกี้เอาไปวางไว้ข้างใน
หลังจากที่วางไฟล์ codeigniter framwork ทั้งหมด เราก็มาลองเช็คกันดูว่าทำถูกต้องไหม โดยเปิด URL http://localhost/machine/ ถ้าทุกอย่างไม่ผิดเราก็จะเห็นหน้าแรกของ codeigniter โชว์
โอเค ตอนนี้ที่เซิร์ฟเวอร์ของเราก็ทำการเตรียม Environment พร้อมสำหรับการพัฒนาแล้ว เพราะว่ามีครบทั้ง XAMP , codeigniter , mysql และ phpmyadmin เป็นเครื่องมือแถมมาช่วยให้เราจัดการฐานข้อมูล
ส่วนฝั่งบอร์ด arduino ก็ต้องเตรียมอุปกรณ์ให้พร้อม และลงโปรแกรม IDE สำหรับเขียนโปรแกรมและเบิร์นโปรแกรมลงบอร์ด อันนี้คงไม่ต้องอธิบายเพิ่มเนาะว่าต้องลงโปรแกรมอะไรบ้าง เพราะลงแค่ Arduino IDE ตัวเดียวก็พร้อมเขียนโปรเจกต์นี้ได้ละ - เช็คอีกรอบ ว่าเราเตรียมอุปกรณ์ เครื่องไม้เครื่องมือสำหรับการทำโปรเจกต์ครบหรือยัง
– XAMP server
– Codeigniter
– MySQL database
– phpMyAdmin
– Arduino IDE
– บอร์ด Arduino R3 และ Ethernet shield - ต่อไปจะเป็นการเริ่มออกแบบว่าเราจะรับส่งข้อมูลยังไง พอร์ตไหนใช้งานได้บ้าง จะส่งในรูปแบบไหน ไปเบิ่งกันเลย
เนื่องจากเราจะต่อ Arduino R3 ของเราเข้ากับ Ethernet Shield เพราะฉะนั้นจะเหลือ Pin ให้เราใช้คือ Pin 4 – Pin 9 แต่ละ input ทำหน้าที่ต่อเข้ากับเครื่องจักรของเราและคอยรายงานสถานะของเครื่องว่าทำงานอยู่หรือไม่ เพราะฉะนั้นในฐานข้อมูลตารางแรกของเราจึงออกแบบให้เก็บ IP Address ของ บอรืดที่เราจะต่อ คอลัมน์ต่อมาระบุชื่อพอร์ต และ หมายเลขเครื่อง เวลาที่เราทำการต่อบอร์ดไหน , Input ขาไหน เข้ากับเครื่องจักรเครื่องไหน ก็แค่ทำการเพิ่มข้อมูลเข้าไปในตารางข้อมูลนี้
การส่งข้อมูลของเราเลือกให้พอร์ตส่งข้อมูลสถานะของแต่ละอินพุตไปที่เซิร์ฟเวอร์ด้วย JSON format เพราะว่ามันเล็กประหยัดแบนวิธดี วิธีนี้ก็น่าจะทำให้ส่งข้อมูลได้ไว ก็เลยออกแบบว่าจะให้บอร์ดรีพอร์ทข้อมูลเป็นฟอร์แมตดังต่อไปนี้ ประกอบไปด้วย IP Address และสถานะของแต่ละพอร์ต - ออกแบบฐานข้อมูล จากข้อที่เราก็ได้ออกแบบหน้าตาของฐานข้อมูลไปเเล้ว 1 ตารางสำหรับเอาไว้คอนฟิกว่าบอร์ดไหนไอพีไหน ต่อเข้ากับเครื่องไหน เหลืออีกหนึ่งตารางที่จะเอามาเก็บข้อมูล หน้าตาของตารางข้อมูลผมคิดได้แบบนี้นะ ไปเบิ่งๆ
หน้าที่ของตารางนี้ก็จะเอาไว้เก็บสถานะ พร้อมเวลาด้วย เราสามารถดูประวัติย้อนหลังได้ด้วยว่าช่วงไหน สถานะที่ได้รับมาจากบอร์ดเป็นยังไง เพราะฉะนั้นรวมกันแล้วเรามีตารางข้อมูลสองตาราง ผมตั้งชื่อตารางแรกว่า board_config และตารางที่สองชื่อ machine_status
–> โค้ด SQL สำหรับสร้างฐานข้อมูล
หรืออยากจะโหลดก็เชิญ https://gist.github.com/pongpat/04d562da4a1b7c5f2e82ada810779613
พักก่อนเดี๋ยวมาต่อ บทความนี้น่าจะเป็นบทความที่ยาวที่สุดที่ผมเคยเขียนมา . . . . . .