Smart Factory CNC 4.0 ด้วย Arduino ลงทุนหลักร้อย Benefit หลักล้าน!!

สวัสดีโซเชียลแคม วันนี้เราจะมาทำโปรเจกต์ Smart Factory CNC 4.0 ด้วย Arduino กัน โจทย์คือเครื่อง CNC ในโรงงานของเรา ณ ปัจจุบันนี้มันยังทำงานแบบออฟไลน์ การที่จะมอนิเตอร์ต้องใช้คนหลายคน หรือไม่ก็ต้องรอให้หน้างานเดินมาแจ้งปัญหากับทีมช่าง กว่าช่างจะเดินไปถึง กว่าจะวิเคราะห์ปัญหา กว่าจะซ่อม ต้องเสียเเวลาไป

สายงานผลิตก็ต้องหยุดชะงัก เสียหายหลายแสนต่อธุจกิจอยู่เหมือนกัน เราก็เลยมีไอเดียเอาคอนเซปต์ Smart Factory มาใช้ ด้วยการใช้ Arduino มาทำ Iot ทำเครื่อง CNC ธรรมดาๆ ให้มัน Smart สามารถเชื่อมต่อกับชาวโลกได้

Project Timeline

Smart Factory CNC 4.0 Plan
Smart Factory CNC 4.0 Plan
  • เฟสแรกของโปรเจกต์ที่วางเอาไว้คือ ทำง่ายๆ ให้มันเชื่อมต่อ และแสดงสถานะของมันแบบเรียลไทม์ไปยังศูนย์กลางให้ได้ก่อน ข้อมูลที่จะคุยกันมีแค่ “ทำงาน” กับ “หยุดทำงาน” เมื่อไหร่ที่หยุดทำงานให้แจ้งเตือนทางหน้าเว็บที่ทีมช่างมอนิเตอร์อยู่ ผลที่ได้คือช่างสามารถเข้ามาแก้ปัญหาได้ทันทีที่มองเห็นปัญหา ไลน์การผลิตก็ไหลราบลื่น โบนัสสิ้นปีก็คงจะได้เยอะ (หวังว่า อะนะ)
Smart Factory CNC 4.0 ph#1
Smart Factory CNC 4.0 ph#1
  • เฟสสองวางแผนไว้ว่าจะเก็บข้อมูลอย่างอื่นและมีการเก็บรีพอร์ทที่ละเอียดมากยิ่งขึ้น วิเคราะห์จากสถิติ ป้องกันปัญหาที่จะเกิดขึ้นได้ในอนาคต ยกตัวอย่างเช่น เครื่องมีการทำงานช้ากว่าปกติ หรือเริ่มเสียบ่อย เราสามารถเดาได้ว่าเครื่องกำลังจะป่วยจึงสามารถเข้าไปให้ยากับมันได้ทัน
  • Smart Factory CNC 4.0 ph#2
    Smart Factory CNC 4.0 ph#2
  • เฟสที่สาม Smart Report นอกจากแจ้งเตือนทางหน้าเว็บไซต์อย่างเดียวแล้ว เฟสที่สามวางแผนไว้ว่าจะให้ระบบแจ้งเตือนทางอีเมลและทางสมาร์ทโฟน เช่น ทางไลน์ เผื่อกรณีที่ไม่ได้เปิดหน้าเว็บ ก็จะยังคงเฝ้าดูเครื่องจักรได้แบบสบายใจ และดูได้จากทุกที่ของโลกใบนี้
  • Smart Factory CNC 4.0 ph#3
    Smart Factory CNC 4.0 ph#3

    เครื่องมือและอุปกรณ์สำหรับทำโปรเจกต์ 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

    เรามาเริ่มลงมือทำกันเลยจร้า

    1. ดาวน์โหลด และ ติดตั้ง XAMP  ขั้นตอนนี้คงไม่ต้องอธิบายละเอียดมาก ดาวน์โหลดมาแล้วก็ติดตั้งโลด
      – หลังจากที่เราติดตั้ง XAMP  เสร็จมันจะมาพร้อมกับ MySQL และ phpmyadmin เป็นตัวช่วยในการจัดการฐานข้อมูล ให้เราทำการรันโปรแกรม XAMP เพื่อให้เซิร์ฟเวอร์จำลองของเรามันทำงาน

      – เปิดเว็บบราวเซอร์ขึ้นมาเพื่อลองเช็คดูว่า phpmyadmin และฐานข้อมูลของเราใช้งานได้หรือยัง โดยไปที่ http://localhost/phpnyadmin
      ถ้าใช้งานได้ก็จะมีหน้าตาประมาณนี้ครับ
    2. ต่อไปเราจะใช้ 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 ตัวเดียวก็พร้อมเขียนโปรเจกต์นี้ได้ละ
    3. เช็คอีกรอบ ว่าเราเตรียมอุปกรณ์ เครื่องไม้เครื่องมือสำหรับการทำโปรเจกต์ครบหรือยัง
      – XAMP server
      – Codeigniter
      – MySQL database
      – phpMyAdmin
      – Arduino IDE
      – บอร์ด Arduino R3 และ Ethernet shield
    4. ต่อไปจะเป็นการเริ่มออกแบบว่าเราจะรับส่งข้อมูลยังไง พอร์ตไหนใช้งานได้บ้าง จะส่งในรูปแบบไหน ไปเบิ่งกันเลย

      เนื่องจากเราจะต่อ Arduino R3 ของเราเข้ากับ Ethernet Shield เพราะฉะนั้นจะเหลือ Pin ให้เราใช้คือ Pin 4 – Pin 9 แต่ละ input ทำหน้าที่ต่อเข้ากับเครื่องจักรของเราและคอยรายงานสถานะของเครื่องว่าทำงานอยู่หรือไม่ เพราะฉะนั้นในฐานข้อมูลตารางแรกของเราจึงออกแบบให้เก็บ IP Address ของ บอรืดที่เราจะต่อ คอลัมน์ต่อมาระบุชื่อพอร์ต และ หมายเลขเครื่อง เวลาที่เราทำการต่อบอร์ดไหน , Input ขาไหน เข้ากับเครื่องจักรเครื่องไหน ก็แค่ทำการเพิ่มข้อมูลเข้าไปในตารางข้อมูลนี้
      การส่งข้อมูลของเราเลือกให้พอร์ตส่งข้อมูลสถานะของแต่ละอินพุตไปที่เซิร์ฟเวอร์ด้วย JSON format เพราะว่ามันเล็กประหยัดแบนวิธดี วิธีนี้ก็น่าจะทำให้ส่งข้อมูลได้ไว ก็เลยออกแบบว่าจะให้บอร์ดรีพอร์ทข้อมูลเป็นฟอร์แมตดังต่อไปนี้ ประกอบไปด้วย IP Address และสถานะของแต่ละพอร์ต
    5. ออกแบบฐานข้อมูล  จากข้อที่เราก็ได้ออกแบบหน้าตาของฐานข้อมูลไปเเล้ว 1 ตารางสำหรับเอาไว้คอนฟิกว่าบอร์ดไหนไอพีไหน ต่อเข้ากับเครื่องไหน เหลืออีกหนึ่งตารางที่จะเอามาเก็บข้อมูล หน้าตาของตารางข้อมูลผมคิดได้แบบนี้นะ ไปเบิ่งๆ

      หน้าที่ของตารางนี้ก็จะเอาไว้เก็บสถานะ พร้อมเวลาด้วย เราสามารถดูประวัติย้อนหลังได้ด้วยว่าช่วงไหน สถานะที่ได้รับมาจากบอร์ดเป็นยังไง เพราะฉะนั้นรวมกันแล้วเรามีตารางข้อมูลสองตาราง ผมตั้งชื่อตารางแรกว่า board_config และตารางที่สองชื่อ machine_status

      –> โค้ด SQL สำหรับสร้างฐานข้อมูล


    หรืออยากจะโหลดก็เชิญ https://gist.github.com/pongpat/04d562da4a1b7c5f2e82ada810779613

    พักก่อนเดี๋ยวมาต่อ บทความนี้น่าจะเป็นบทความที่ยาวที่สุดที่ผมเคยเขียนมา . . . . . .