ต่อจากบทความแรก
www.arduinona.com/article/7/เปลี่ยนอุปกรณ์-iot-ให้เป็นสถานีกรมอุตุนิยมวิทยา-ตอน-1อุปกรณ์ที่ใช้ในตอนนี้1.
NodeMCU (ESP8266, ESP-12E) หรือ ESP8266 อื่นๆเมื่อเราสามารถเข้าถึงข้อมูลสภาพอากาศในรูปแบบ JSON ได้แล้ว ต่อไปก็จะเริ่มการเขียนซอร์ฟแวร์ส่วน ESP8266 โดยแบ่งขั้นตอนออกเป็นส่วนๆคือ
1. ดึงไลบรารี่ที่จำเป็นเช่น
- ArduinoJson ใช้เพื่ออ่านหรือเขียนข้อความ String ที่อยู่ในรูป JSON แล้วแปลงเป็น format ต่างๆ
- ESP8266WiFi, ESP8266HTTPClient, ESP8266WebServer ใช้เพื่อสร้างการเชื่อมต่อระหว่างอุปกรณ์ ESP8266 และเราท์เตอร์ที่เราใช้เชื่อมต่อออกส่งโลกภายนอก
2. กำหนดค่า WiFi และ token key ที่ได้จาก
ตอนที่ 1 3. สร้าง Server และเงื่อนไขในการเรียกเพื่อเรียกฟังก์ชันรับค่าสภาพอากาศ4. สร้างฟังก์ชันสำหรับการรับค่าสภาพอากาศ ด้วย JSON จาก openweathermap แล้วเรียกตัวแปรต่างๆ เรียงเก็บไว้ใน String เพื่อใช้ในการแสดงผลทาง browser ต่อไป
ซึ่งขั้นตอนแรก ให้เราติดตั้ง Library ที่จำเป็นก่อนครับ สำหรับคนที่ยังไม่เคยใช้ ESP8266 มาก่อน อาจต้องติดตั้ง board ESP8266 ลงใน Arduino IDE เพื่อให้สามารถเลือก board ได้ในแถบ tools ซึ่งสามารถทำได้โดย
1. เข้าไปที่ Tools-> board -> Board manager
2. พิมพ์ esp8266 แล้ว install เวอร์ชั่นล่าสุด หรือเวอร์ชั่นเดียวกับผมก็ได้ครับ (2.5.1)

3. เมื่อติดตั้งเสร็จ ให้ลองเช็คว่า board esp8266 แสดงในหน้า tools-> board แล้วหรือยัง ถ้ายังให้ลอง restart Arduino IDE ใหม่ดู

ซึ่ง library ที่เราจะได้มาในขั้นตอนนี้คือ ESP8266WiFi, ESP8266HTTPClient, ESP8266WebServer เหลือเพียง ArduinoJSON ซึ่งสามารถหาได้จาก Tools->Manage Libraries แล้วพิมพ์หา arduinojson ให้เราเลือก version ที่ต่ำกว่า 6 เช่น 5.13.5 สำหรับติดตั้งตามรูปครับ

จากนั้นให้เรา copy code ด้านล่างนี้
เปลี่ยน WiFi username กับ password และ API key ที่ได้จากตอนที่ 1 ตามตำแหน่งในรูปครับ

แล้วลอง upload โดยเลือก board ให้ตรงกับรุ่นที่ใช้อยู่ครับ ซึ่งในที่นี้ใช้ witty clound เป็น ESP-12E ก็เลือกเป็น NodeMCU 1.0 (ESP-12E) ครับ
จากนั้นให้ลองเปิด serial monitor เพื่อเช็คเลข ip address ตามรูปครับ ให้เราลองเอาไปใส่ใน browser ก็จะได้ค่าสถานะ (condition) ของสภาพอากาศนั้นๆออกมาตามโปรแกรมที่เขียนไว้


รายละเอียดของส่วนต่างๆใน code ถูกอธิบายไว้ในตัวมันเองแล้ว แต่เชื่อว่าอาจมี detail เล็กๆน้อยๆที่บางคิดอาจไม่เข้าใจ อย่าเขินอายที่จะถามเข้ามากันได้นะครับ หวังว่าจะสามารถนำไปใช้ประโยชน์ได้ไม่มากก็น้อย
