Mongoose OS คืออะไร?
“Mongoose OS: An open source Operating System for the Internet of Things
Supported microcontrollers: ESP32, ESP8266, STM32, TI CC3200”
ซอฟต์แวร์ OS ที่ใช้พัฒนา ESP32,ESP8266,STM32 สำหรับ IoT
AWS IoT คืออะไร?
เป็นเซอร์วิสตัวหนึ่งของ Amazon ที่พื้นฐานมาจาก MQTT โดยจะคล้ายๆกับ Netpie โดยให้เราเชื่อมอุปกรณ์ของเรากับเซิฟเวอร์ MQTT ที่ทาง Amazon จัดไว้ให้ (ความเป็นส่วนตัวสูง) ซึ่งเจ้าของเซิฟคือ Amazon ทำให้เราสบายใจได้ว่า ข้อมูลที่เราส่งไปส่งมาจะปลอดภัย
เริ่มต้นใช้งาน Mongoose OS
ดาวน์โหลด Mongoose OS จากลิ้ง
สำหรับ Window ให้ดาวน์โหลดไฟล์ไว้ที่
C:\Users\User_name\
เพื่อที่เวลารัน CMD จะได้สะดวกในการเรียกใช้งาน (และเป็นที่เก็บไฟล์โปรเจ็คต่างๆของ Mongoose OS)
จากนั้นเมื่อดาวน์โหลดเสร็จ ให้ทำการรันผ่าน CMD โดยพิมพ์
mos
หน้าเว็บจะเด้งขึ้นมาดังนี้
•Step 1: เลือก Serial Port ที่เราต่ออุปกรณ์ ESP32 ไว้ จากนั้นกด Select ด้านขวา
•Step 2: เลือกชนิดของอุปกรณ์ที่เราใช้งาน จากนั้นกด Flash ด้านขวามือ
•Step 3: ใส่ชื่อ Wi-Fi ที่เราจะ Connect และ รหัสผ่าน (STM32ไม่จำเป็นต้องใส่) จากนั้นกด Save
จากนั้นรอให้ Device Status ขึ้นคำว่า “online”
จากนั้นกด </> Start coding
คลิกที่ไฟล์ init.js (ไฟล์หลักของเรา) จะเจอโค้ดตัวอย่าง
ไปที่หน้าเมนู Project ด้านซ้ายมือ แล้วดูที่ส่วนของ My Apps กด Import ได้เลย
จากนั้นค้นหา app ที่ชื่อว่า
•aws-iot-button(หรือดาวโหลดจาก github https://github.com/mongoose-os-apps/aws-iot-button)
กด Import มาได้เลย
จากนั้นกดออกมา แล้วมาดูตรง App ที่เราพึ่ง Import เข้ามา แล้วกดรูปไขควงด้านขวาบนได้เลย(ระบบจะ Build app ให้เราเอง)
รอจนกว่ามันจะหมุนจนเสร็จ จากนั้นกดรูปสายฟ้าต่อได้เลย (นำ App ที่เราพึ่ง Build ไป Flash ลงในอุปกรณ์ของเรา)
กลับมาที่หน้าหลักของเรา จะเห็นได้ว่าโค้ดเริ่มต้นได้เปลี่ยนไปแล้ว !
โค้ดของเราพร้อมแล้ว ขั้นตอนไป เริ่มใช้งาน AWS IoT กัน !
เริ่มต้นใช้งาน AWS IoT
กด Login เข้าสู่ระบบของ AWS
https://aws.amazon.com/console/
เมื่อ Login เข้าไปจะเจอเซอร์วิสของ Amazon เต็มไปหมดเลย แต่เราจะใช้แค่ 2 ตัว \ •AWS IoT
•IAM
ให้เราเลือกที่อยู่ของตัวเองเป็น Singapore (บนขวา) คลิกที่เซอร์วิส IAM ได้เลย
NOTE
บางเซอร์วิสของ Amazon จะมีการคิดค่าใช้จ่ายที่แพงมาก โปรดระวังในการใช้งานเซอร์วิสที่ท่านไม่รู้จักหรือคุ้นเคยดีพอ
IAM
เป็นเซอร์วิสที่จะช่วยยืนยันตัวตนของเราในการใช้งานอุปกรณ์เพื่อเชื่อมต่อกับ AWS IoT
เมื่อเข้ามาแล้ว ให้กดไปที่ Users แล้วกด Add User
กรอกชื่อ User ที่เราจะใช้งาน แล้วติ้กถูกตรง Programmatic Access เพื่อที่จะสามารถรับ Access Key ได้
กด Create Group เพื่อให้อุปกรณ์ของเราอยู่ในกลุ่ม
ใส่ชื่อ Group ของเรา แล้วกด Crate policy (กฎหรือข้อจำกัดของGroup)
1 policy สามารถใช้ได้หลาย Group เราจึงสามารถสร้างแค่ 1 policy แต่ใช้กับอุปกรณ์ได้มากกว่า 1 ตัว
เว็บจะเด้งขึ้นมาหน้าใหม่ ให้เลือก Policy Generator
หัวข้อสำคัญอันดับ 2 สำหรับการทำ AWS IoT
•Effect: Allow
•AWS Service: AWS IoT
•Action: All Actions
หากทำใน Arduino ide เลือกแค่อัน Update ก็พอ
•Amazon Resource Name: *
หากทำใน Arduino ide ต้องนำชื่ออุปกรณ์ARNมาใส่
กด Add Statement แล้วกด Next Step
ผลลัพธ์ที่ได้จะต้องออกมาคล้ายๆแบบนี้ ถึงจะใช้งานใน Mongoose OS ได้ หากว่าได้แบบนี้แล้ว ให้กด Create Policy ได้เลย
ให้กลับมาที่หน้า Group กด Create Group ได้เลย แล้วกด Next: Review ได้เลย
ตรวจให้มั่นใจว่าชื่อ Group กับ User ตรงตามที่เราตั้งไว้หรือไม่ หากถูกแล้ว ให้กด Create User ได้เลย
ตรงนี้สำคัญที่สุด
ให้เราเซฟ Access Key ID กับ Secret Access Key ไว้ในที่ๆปลอดภัย และ ห้ามลืมเพราะจะต้องใช้งานเวลาที่จะเชื่อมอุปกรณ์กับ AWS IoT
กลับมาที่หน้า User อีกครั้ง คลิกที่ User ที่เราพึ่งสร้างขึ้นมา
ดูที่หน้า Group ให้คลิกเข้าไปที่ Group ที่เราอยู่
ที่หน้า Permissions ให้เลือก Attach Policy
คลิกที่หัวข้อ Creation Time จะเจอกับ Policy ที่เราพึ่งสร้าง ให้คลิกเลือกแล้วกด Attach Policy
จะเห็นว่า Policy ที่เราแอดเข้ามา จะเพิ่มขึ้นใน Group แล้ว
ลองกด Show เพื่อเช็คข้อจำกัดของ Policy อันนี้
การใช้งาน AWS IoT บน Mongoose OS
กรอก Access Key ID กับ Secret Access Key ที่เราได้มาให้เรียบร้อย
หากไม่ขึ้นช่องในกรอกเหมือนในรูปให้ไปที่โฟล์เดอร์ C:\Users\User_name\.aws เปิดไฟล์ด้วย notepad ใส่ Access Key ID กับ Secret Access Key
จากนั้นเลือก
- AWS region: ap-southeast-1
หากขึ้น Error ให้เปลี่ยนที่อยู่ของตัวเองใน AWS เป็น Singapore ก่อนถึงจะใช้ได้
- AWS policy: mos-default
ในส่วน policy เราจะต้องพิมพ์เอง จะไม่มีตัวเลือกให้เรา
จากนั้นกด Provision with AWS IoT หากสำเร็จ MQTT Server จะถูกเปลี่ยนเป็นของ AWS IoT ให้โดยอัตโนมัติ
กลับมาที่โค้ดหลักของเรา ให้เพิ่ม3บรรทัดนี้เข้าไป ข้างล่าง load(‘…..’)เพื่อทำสร้าง call back function และ subscribe ของ MQTT
let topic = “/request”;
MQTT.sub(topic, function(conn, topic, msg) {
print(‘Topic: ‘, topic, ‘message:’, msg);
}, null);
จากนั้นกด Save+Reboot แล้วดูที่หน้าจอ Device Logs หากสำเร็จให้เราลองกด GPIO button ในตัวของอุปกรณ์ 1 ครั้ง ระบบจะแจ้งเตือนบอกว่า
“Published: yes topic: esp32_003580/button_pressed message: {"free_ram":114760,"total_ram":194864}”
ต่อไป เราจะต้องมาดูข้อมูลที่ส่งมา ให้เลือก Service AWS IoT
จากนั้นให้เลือกเมนู Test ที่อยู่ด้านซ้ายมือ
Subscribe: esp32_003580/button_pressed กด Subscribe to topic
เลื่อนลงมา Publish: /request
ทดลองกด GPIO Button ในตัวของอุปกรณ์ จะพบว่ามีค่าที่ส่งมาจากอุปกรณ์ของเรา (ที่สำคัญ แทบจะไม่มีดีเลย์เลย)
ทดลองส่งข้อมูลจาก AWS IoT มาที่อุปกรณ์ของเราบ้าง กด Publish to topic