เริ่มต้นใช้งาน Mongoose OS กับ AWS IoT

Mr.P L
mmp-li
Published in
5 min readNov 20, 2017

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 จากลิ้ง

https://mongoose-os.com/software.html

หน้าเว็บสำหรับดาวน์โหลดไฟล์

สำหรับ Window ให้ดาวน์โหลดไฟล์ไว้ที่

C:\Users\User_name\

เพื่อที่เวลารัน CMD จะได้สะดวกในการเรียกใช้งาน (และเป็นที่เก็บไฟล์โปรเจ็คต่างๆของ Mongoose OS)

จากนั้นเมื่อดาวน์โหลดเสร็จ ให้ทำการรันผ่าน CMD โดยพิมพ์

mos

หลังจากเปิด CMD ให้พิมพ์ mos ได้เลย

หน้าเว็บจะเด้งขึ้นมาดังนี้

หน้าต่างสำหรับเซ็ตอุปกรณ์ให้พร้อมใช้งาน

•Step 1: เลือก Serial Port ที่เราต่ออุปกรณ์ ESP32 ไว้ จากนั้นกด Select ด้านขวา

•Step 2: เลือกชนิดของอุปกรณ์ที่เราใช้งาน จากนั้นกด Flash ด้านขวามือ

•Step 3: ใส่ชื่อ Wi-Fi ที่เราจะ Connect และ รหัสผ่าน (STM32ไม่จำเป็นต้องใส่) จากนั้นกด Save

จากนั้นรอให้ Device Status ขึ้นคำว่า “online”

หากขึ้น 3 เช็คถูกก็ถือว่าผ่าน พร้อมใช้งานแล้ว

จากนั้นกด </> Start coding

คลิกที่ไฟล์ init.js (ไฟล์หลักของเรา) จะเจอโค้ดตัวอย่าง

หน้าหลักสำหรับการเขียนโค้ด

ไปที่หน้าเมนู Project ด้านซ้ายมือ แล้วดูที่ส่วนของ My Apps กด Import ได้เลย

เลือก Projects ด้านซ้ายมือ แล้วกด Import

จากนั้นค้นหา app ที่ชื่อว่า

•aws-iot-button(หรือดาวโหลดจาก github https://github.com/mongoose-os-apps/aws-iot-button)

กด Import มาได้เลย

เลือก aws-iot-button แล้วกด import

จากนั้นกดออกมา แล้วมาดูตรง App ที่เราพึ่ง Import เข้ามา แล้วกดรูปไขควงด้านขวาบนได้เลย(ระบบจะ Build app ให้เราเอง)

กดรูปไขควงด้านบนขวาได้เลย

รอจนกว่ามันจะหมุนจนเสร็จ จากนั้นกดรูปสายฟ้าต่อได้เลย (นำ App ที่เราพึ่ง Build ไป Flash ลงในอุปกรณ์ของเรา)

กดรูปสายฟ้า(ข้างๆไขควง)ต่อได้เลย

กลับมาที่หน้าหลักของเรา จะเห็นได้ว่าโค้ดเริ่มต้นได้เปลี่ยนไปแล้ว !

กลับมาที่หน้าแรกอีกครั้งเพื่อดูโค้ด

โค้ดของเราพร้อมแล้ว ขั้นตอนไป เริ่มใช้งาน AWS IoT กัน !

เริ่มต้นใช้งาน AWS IoT

กด Login เข้าสู่ระบบของ AWS

https://aws.amazon.com/console/

เลือก My Account > AWS Management Console

เมื่อ Login เข้าไปจะเจอเซอร์วิสของ Amazon เต็มไปหมดเลย แต่เราจะใช้แค่ 2 ตัว \ •AWS IoT

•IAM

ให้เราเลือกที่อยู่ของตัวเองเป็น Singapore (บนขวา) คลิกที่เซอร์วิส IAM ได้เลย

NOTE

บางเซอร์วิสของ Amazon จะมีการคิดค่าใช้จ่ายที่แพงมาก โปรดระวังในการใช้งานเซอร์วิสที่ท่านไม่รู้จักหรือคุ้นเคยดีพอ

แก้ที่อยู่เป็น Singapore และเลือก IAM

IAM

เป็นเซอร์วิสที่จะช่วยยืนยันตัวตนของเราในการใช้งานอุปกรณ์เพื่อเชื่อมต่อกับ AWS IoT

เมื่อเข้ามาแล้ว ให้กดไปที่ Users แล้วกด Add User

เลือกเมนู Users แล้วกด Add User

กรอกชื่อ User ที่เราจะใช้งาน แล้วติ้กถูกตรง Programmatic Access เพื่อที่จะสามารถรับ Access Key ได้

ใส่ชื่อกลุ่มแล้ว ติ้กถูกที่ Programmatic Access ด้วย

กด Create Group เพื่อให้อุปกรณ์ของเราอยู่ในกลุ่ม

กด Create Group ได้เลย

ใส่ชื่อ Group ของเรา แล้วกด Crate policy (กฎหรือข้อจำกัดของGroup)

1 policy สามารถใช้ได้หลาย Group เราจึงสามารถสร้างแค่ 1 policy แต่ใช้กับอุปกรณ์ได้มากกว่า 1 ตัว

กด Create policy ได้เลย

เว็บจะเด้งขึ้นมาหน้าใหม่ ให้เลือก Policy Generator

เลือกอันกลาง (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

เลือก Service กับ Actions ให้เหมาะสมกับโปรแกรมที่ใช้งาน

ผลลัพธ์ที่ได้จะต้องออกมาคล้ายๆแบบนี้ ถึงจะใช้งานใน Mongoose OS ได้ หากว่าได้แบบนี้แล้ว ให้กด Create Policy ได้เลย

เช็ค Policy Document ให้ดีๆก่อนกด Create

ให้กลับมาที่หน้า Group กด Create Group ได้เลย แล้วกด Next: Review ได้เลย

ถ้าใส่ชื่อ Group ถูกแล้วให้กด Create ได้เลย

ตรวจให้มั่นใจว่าชื่อ Group กับ User ตรงตามที่เราตั้งไว้หรือไม่ หากถูกแล้ว ให้กด Create User ได้เลย

กด Create User ได้เลย

ตรงนี้สำคัญที่สุด

ให้เราเซฟ Access Key ID กับ Secret Access Key ไว้ในที่ๆปลอดภัย และ ห้ามลืมเพราะจะต้องใช้งานเวลาที่จะเชื่อมอุปกรณ์กับ AWS IoT

จดรหัส Access key ID กับ Secret access key ให้ดีๆ

กลับมาที่หน้า User อีกครั้ง คลิกที่ User ที่เราพึ่งสร้างขึ้นมา

กดเมนู Users แล้วเลืก Users ที่พึ่งสร้างขึ้นมา

ดูที่หน้า Group ให้คลิกเข้าไปที่ Group ที่เราอยู่

หน้าแรกของ Group ของเรา

ที่หน้า Permissions ให้เลือก Attach Policy

กดปุ่มสีฟ้า (Attach Policy)

คลิกที่หัวข้อ Creation Time จะเจอกับ Policy ที่เราพึ่งสร้าง ให้คลิกเลือกแล้วกด Attach Policy

กด Creation Time จะเจอกับ Policy อันที่เราพึ่งสร้างขึ้นมา

จะเห็นว่า Policy ที่เราแอดเข้ามา จะเพิ่มขึ้นใน Group แล้ว

ถ้าหากเห็น Policy ถือว่าทำขั้นตอนถูกแล้ว

ลองกด 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

--

--

Mr.P L
mmp-li
Editor for

Lifestyle of Programmer & IoT (Node-RED|Blynk) & Data Science (ML,DL,NLP) and Whatever I want to do | cat can coding too | Ph.D. -> VISTEC -> IST