Hello Pi - Board raspberry Pi คอมพิวเตอร์จิ๋ว แต่ความสามารถไม่จิ๋ว - EP2 - Pi to internet
1. โปรแกรมควบคุม Raspberry Pi แบบ webserver
ต่อจาก EP ที่แล้วนะครับ สวัสดีครับ ในบทความนี้ผมจะมาแนะนำถึงการติดตั้ง Web IO Pi ซึ่งเป็นเว็บแอพลิเคชั่นที่ถูกพัฒนามาจาก ภาษา Python ทำงานร่วมกันกับ REST Frame work ครับ เจ้าตัวนี้มีความสามารถคือ ใช้ในการควบคุม GPIO ของบอร์ด Raspberry pi นั่นเองครับ และซึ่งเราจะใช้ในทดสอบการเขียนโปรแกรมที่มีการกระทำ กับ GPIO คือ ให้เจ้า Web io pi นี้เป็นตัวแสดงผลนั่นเองครับ เรามาเริ่มการติดตั้งกันเลย
2. แนะนำเครื่องมือช่วยพัฒนาระบบ – MQTTLens Addon
ปัจจุบันเทคโนโลยีที่กำลังมาแรงสำหรับนักพัฒนาด้าน Embedded (ไม่ได้แค่เฉพาะ
Embedded อย่างเดียวครับ) เป็นเทคโนโลยีที่กล่าวกันมากคงจะหนีไม่พ้น IoT ซึ่งเป็นเทคโนโลยี
ใหม่ในยุคนี้เลยก็ว่าได้ แรงขนาดที่ว่า Microsoft เอง ก็ยังพอร์ต Windows 10 มาวิ่งเล่นบน
Raspberry Pi แถมยังใจดีติด IoT มาให้ด้วย ซึ่งผมยังไม่ได้ตามลงไปดูว่าใช้ Broker ตัวไหน และ
มี Library ให้ใช้งานมาด้วยหรือไม่? หรือไม่ผมก็เข้าใจผิดเกี่ยวกับมันครับถ้าผิดพลาดก็ขออภัย
มานะที่นี้ด้วยครับ.
IoT มันคืออะไร พอค้นดูมีหลายลิงค์อธิบายไว้มากมาย เช่น Internet of Things เมื่อ
คอมพิวเตอร์เริ่มคุยกันเองได้ , โลกแห่ง IoT มาถึงแล้ว , IoT เทคโนโลยีที่ธุรกิจต้องรู้. ลองนึก
ภาพดูครับว่าถ้าหากอุปกรณ์สามารถสั่งงานไปมาหากันได้ผ่าน www ไม่ว่าจะเป็น PC, Smart
Phone หรือแม้แต่อุปกรณ์ขนาดเล็กพวก Micro-Controller, PLC, HUB, Switch หรืออะไรก็
แล้วแต่ที่มันสามารถต่อระบบ Network ไม่ว่ามันจะอยู่ที่บ้าน ที่โรงงาน ไร่ นา ฟาร์มโรงเรือน
โรงงานอุตสาหกรรมหรือที่อื่นๆที่มีระบบเน็ตเวอร์ที่เข้าถึง www ได้เราจะสามารถควบคุมมันได้
ทั้งหมดที่ไหนก็ได้ในโลกใบนี้
IoT ทำมีวิธีการทำงานอย่างไร องค์ประกอบหลักของ IoT จะมี 3 ส่วนคือ
Broker, Publisher และ Subscriber. ซึ่งการรับและส่งข้อมูลนั้นมันจะส่งข้อมูลไปมาหากันนั้น
จะส่งผ่านตัวกลางนั้นก็คือ Broker Server โดยตัวส่งนี้จะเรียกว่า Publisher ส่งข้อมูลขึ้นไปยัง
Broker พร้อมระบุหัวข้อ (Topic) ที่ต้องการส่งข้อออกไป จากนั้นตัวรับซึ่งเรียกว่า Subscriber
ถ้าหากตัวรับต้องการรับข้อมูลจากตัวส่งจะต้องทำการ Subscribe หัวข้อ Topic ของ
Publisher นั้นๆ ผ่าน Broker เช่นกัน
การติดตั้ง MQTT broker & command .ใน Raspberry Pi
- แล้วก็รันคำสั่งตามนี้เลยครับ ทีละบรรทัด นะ ใจเย็นๆ ดู Error ด้วย ถ้ามันมี
curl -O http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
rm mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo curl -O http://repo.mosquitto.org/debian/mosquitto-wheezy.list
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
การใช้งานควบคุม IO ผ่าน Blynk Application
หลังจากเราลง Library Blynk เรียบร้อยแล้วจะมี Example ที่ติดมาด้วยจำนวนมาก ซึ่ง
ในบทความนี้จะขอแนะนำตัวอย่างง่ายๆ เริ่มต้นไปกับ File Example Blynk
Board_Wifi ESP32_Wifi
ในโค๊ดนี้เราจะสังเกตเห็นว่ารูปแบบการสั่งงานสั้นมากๆใน void loop() มีเพียง
Blynk.run(); เพื่อสั่งงานจากภายนอก ให้ใส่โค๊ดตามนี้นะครับ
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "YourAuthToken";
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
void setup()
{ Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
}
void loop()
{ Blynk.run();
}
และในบรรทัด char auth[] = “YourAuthToken”; ให้ไป copy key ของ Auth Token
จากใน Email ที่เราได้รับมาใส่
บรรทัด Blynk.begin(auth,”ssid”,”pass”); ให้ใส่ชื่อ Wifi ที่เราใช้เชื่อมต่อกับ app ใน
ssid และ password wifi ใน pass
ต่อไปเป็นการสร้างโปรเจคของเราบน Blynk
ต่อมาเราจะเริ่มสร้างโปรเจคของเราบน Blynk โดยการกดที่พื้นที่ว่างเปล่าตรงไหนก็ได้ใน
หน้า New project จะปรากฏหน้าต่างของ Widget ให้เราเลือกขึ้นมา
ในบทความรอบนี้เราจะลองให้ดูอะไรที่ง่ายๆ ก่อน ให้ลองเลือก Button widget มาลงบน
พื้นที่ว่างเปล่ามา 1 อัน
จากนั้นเราจะมาตั้งค่าการใช้งานปุ่ม Button กันโดยกดไปที่รูป Button ที่เราเลือกจะ
ปรากฏหน้าต่างแบบนี้ ซึ่งในหน้านี้เราสามารถเปลี่ยนชื่อปุ่มได้ และเลือกโหมด output pin ที่ต่อ
กับอุปกรณ์จาก board ของเราได้
Raspberry Pi - Data Logging
เป็นการทำให้ raspberry Pi อ่านข้อมูลมาเก็บเป็น Data logger เพื่อใช้ในการทำ data analysist โดยมีโค๊ดดังนี้
import os
import time
from time import sleep
from datetime import datetime
file = open("/home/pi/data_log.csv", "a")
i=0
if os.stat("/home/pi/data_log.csv").st_size == 0:
file.write("Time,Sensor1,Sensor2,Sensor3,Sensor4,Sensor5\n")
while True:
i=i+1
now = datetime.now()
file.write(str(now)+","+str(i)+","+str(-i)+","+str(i-10)+","+str(i+5)+","+str(i*i)+"\n")
file.flush()
time.sleep(5)<br>file.close()
สามารถเก็บไฟล์ต่างๆ มาเป็น Data logger ได้
ต่อจาก EP ที่แล้วนะครับ สวัสดีครับ ในบทความนี้ผมจะมาแนะนำถึงการติดตั้ง Web IO Pi ซึ่งเป็นเว็บแอพลิเคชั่นที่ถูกพัฒนามาจาก ภาษา Python ทำงานร่วมกันกับ REST Frame work ครับ เจ้าตัวนี้มีความสามารถคือ ใช้ในการควบคุม GPIO ของบอร์ด Raspberry pi นั่นเองครับ และซึ่งเราจะใช้ในทดสอบการเขียนโปรแกรมที่มีการกระทำ กับ GPIO คือ ให้เจ้า Web io pi นี้เป็นตัวแสดงผลนั่นเองครับ เรามาเริ่มการติดตั้งกันเลย
1. ทำการ Updata และ Upgrade ให้เรียบร้อยนะครับ จากนั้น ให้ใช้คำสั่ง sudo wget http://webiopi.googlecode.com/files/WebIOPi-0.5.3.tar.gz เพื่อทำการ ดาวน์โหลดไฟล์ ของ Web IOPi ลงมาพร้อมที่จะทำการติดตั้งนะครับ
2. ดูว่าไฟล์ ได้ถูกโหลดมาจริงหรือไม่ ด้วยคำสั่ง ls จากนั้นเมื่อดูแล้วเราจะต้องเจอไฟล์ที่ชื่อว่า WebIOPi-0.5.3.tar.gz นะครับจากนั้นให้ท่าน ใช้คำสั่ง sudo xvzf WebIOPi-0.5.3.tar.gz เพื่อทำการแตกไฟล์ ออกมาครับ
3. หลังจากที่เราได้ทำการแตกไฟล์ ออกมาแล้วนะครับ ให้ใช้คำสั่ง ls ดูว่ามีการแตก โฟล์เดอร์ออกมาหรือไม่ เราสังเกตได้จากถ้ามีการแตกไฟล์ WebIOPi-0.5.3 จะเป็นตัวหนังสีสีน้ำเงินดังภาพ จากนั้นให้ใช้คำสั่ง cd WebIOPi-0.5.3/ เพื่อทำการเข้าไปในโฟลเดอร์พร้อมที่จะติดตั้ง
4. หลังจากที่เราเข้ามาใน โฟลเดอร์ WebIOPi-0.5.3 แล้วก็ให้ใช้คำสั่ง ls เพื่อดูไฟล์ เราจะเห็นไฟล์ที่มีชื่อว่า setup.sh ให้เราใช้คำสั่ง sudo ./setup.sh ครับ เพื่อทำการติดตั้ง จากนั้นเราก็รอครับ ในขั้นตอนนี้จะนานนิดหนึ่งนะครับ
5. เมื่อทำการติดตั้งเสร็จเรียบร้อยแล้วนะครับ ให้ใช้คำสั่ง sudo /etc/init.d/webiopi start เพื่อทำการสั่งให้มันเริ่มทำงานนจะครับ หรือ อยากจะสั่งให้มันหยุดทำงาน ก็ใช้คำสั่งเดิมครับเพียงเปลี่ยนจาก start เป็น stop เท่านั้นเองครับ sudo /etc/init.d/webiopi stop
6. เมื่อเราทำการสั่ง start แล้วต่อไปก็เป็นขั้นตอนที่รอคอยเลยครับ นั่นคือการทดสอบนั่นเอง ครับ ให้ท่านทำการเปิด Web browser ขึ้นมาแล้ว ใส่ IP ของ บอร์ด เราเข้าไปที่ช่อง URL นะครับจากนั้นก็ต่อท้ายด้วย :8000/webiopi/ นะครับ ยกตัวอย่างของ ผมเป็น 192.168.1.9:8000/webiopi/ นะครับ ส่วนท่านไหน IP ของท่านคืออะไรก็ใส่ของท่านไปนะครับ ถ้าการติดตั้ง ถูกต้องสมบูรณ์ มันจะเด้ง หน้าต่างขึ้นมาให้เรา ป้อน user และ password นะครับ user : webiopi และ password : raspberry นั่นเองครับ
. หลังจากที่ป้อนเสร็จ แล้วเมื่อเราเข้าสู่ระบบ ก็จะพบกับหน้าจอของ Web IOPi ดังนี้ครับ ก็เป็นอันว่าจบ ขั้นตอนการติดตั้ง
7. เราจะ ตั้งค่าให้มัน รันทันทีที่มีการ boot ระบบ ขึ้นมาด้วยคำสั่ง sudo update-rc.d webiopi defaults ทีนี้ เมื่อมีการ boot ระบบขึ้นมาเราจะสามารถใช้งาน Webiopi ได้ทันที ครับ
2. แนะนำเครื่องมือช่วยพัฒนาระบบ – MQTTLens Addon
ปัจจุบันเทคโนโลยีที่กำลังมาแรงสำหรับนักพัฒนาด้าน Embedded (ไม่ได้แค่เฉพาะ
Embedded อย่างเดียวครับ) เป็นเทคโนโลยีที่กล่าวกันมากคงจะหนีไม่พ้น IoT ซึ่งเป็นเทคโนโลยี
ใหม่ในยุคนี้เลยก็ว่าได้ แรงขนาดที่ว่า Microsoft เอง ก็ยังพอร์ต Windows 10 มาวิ่งเล่นบน
Raspberry Pi แถมยังใจดีติด IoT มาให้ด้วย ซึ่งผมยังไม่ได้ตามลงไปดูว่าใช้ Broker ตัวไหน และ
มี Library ให้ใช้งานมาด้วยหรือไม่? หรือไม่ผมก็เข้าใจผิดเกี่ยวกับมันครับถ้าผิดพลาดก็ขออภัย
มานะที่นี้ด้วยครับ.
IoT มันคืออะไร พอค้นดูมีหลายลิงค์อธิบายไว้มากมาย เช่น Internet of Things เมื่อ
คอมพิวเตอร์เริ่มคุยกันเองได้ , โลกแห่ง IoT มาถึงแล้ว , IoT เทคโนโลยีที่ธุรกิจต้องรู้. ลองนึก
ภาพดูครับว่าถ้าหากอุปกรณ์สามารถสั่งงานไปมาหากันได้ผ่าน www ไม่ว่าจะเป็น PC, Smart
Phone หรือแม้แต่อุปกรณ์ขนาดเล็กพวก Micro-Controller, PLC, HUB, Switch หรืออะไรก็
แล้วแต่ที่มันสามารถต่อระบบ Network ไม่ว่ามันจะอยู่ที่บ้าน ที่โรงงาน ไร่ นา ฟาร์มโรงเรือน
โรงงานอุตสาหกรรมหรือที่อื่นๆที่มีระบบเน็ตเวอร์ที่เข้าถึง www ได้เราจะสามารถควบคุมมันได้
ทั้งหมดที่ไหนก็ได้ในโลกใบนี้
IoT ทำมีวิธีการทำงานอย่างไร องค์ประกอบหลักของ IoT จะมี 3 ส่วนคือ
Broker, Publisher และ Subscriber. ซึ่งการรับและส่งข้อมูลนั้นมันจะส่งข้อมูลไปมาหากันนั้น
จะส่งผ่านตัวกลางนั้นก็คือ Broker Server โดยตัวส่งนี้จะเรียกว่า Publisher ส่งข้อมูลขึ้นไปยัง
Broker พร้อมระบุหัวข้อ (Topic) ที่ต้องการส่งข้อออกไป จากนั้นตัวรับซึ่งเรียกว่า Subscriber
ถ้าหากตัวรับต้องการรับข้อมูลจากตัวส่งจะต้องทำการ Subscribe หัวข้อ Topic ของ
Publisher นั้นๆ ผ่าน Broker เช่นกัน
การติดตั้ง MQTT broker & command .ใน Raspberry Pi
เกริ่นนำสักนิดหนึ่ง ตั้งแต่ การเข้ามาของ IOT หรือ Internet of Things ที่กำลังอินเทรนกันอยู่ตอนนนี้ ก็ได้มีความพยายามที่จะหา Protocol ที่เหมาะสำหรับการสื่อสารผ่าน network กับอุปกรณ์พวกไมโครคอนโทรลเลอร์ ก็เลยมีการพัฒนาโปรโตคอลขึ้นมา เพื่อให้เหมาะกับอุปกรณ์เล็กๆ ที่ไม่ต้องการ Header ที่มากไปในการสื่อสารทางเนตเวิร์ก เจ้าโปรโตคอลที่ว่าก็คือ MQTT หรือ MQ Telemetry Transport ไม่รู้ว่าแปลว่าไรเหมือนกัน เอาเป็นว่า ผมอธิบายแบบบ้านๆ เลยหล่ะกัน
ในการสื่อสารแบบ MQTT นี้ จะต้องมี MQTT Broker ที่ทำหน้าที่รับข้อความโดยมีหัวข้อ Topic จากผู้ส่ง/จำหน่าย จ่ายแจก หรือ publisher แล้วกระจายส่ิงที่ได้รับมานั้นไปให้ subscriber ที่ได้ทำการลงทะเบียนหัวข้อ Topic นั้นแหละ บอกกับ Broker ไว้แล้ว ว่า ถ้า publisher คน/ตัว ใด ส่ง topic นี้มา ให้เอามาให้ฉัน (subscriber)
อ่านเพิ่มเติม เรื่อง MQTT Protocol ที่รวบรวมไว้ครับ
ตรงส่วน Broker นี้แหละ ที่เราจะเอา Raspberry pi มาทำเป็น MQTT Broker ในที่นี้ ผมใช้ RPi2 ที่ติดตั้ง Raspbian Wheezy
การติดตั้ง MQTT Broker บน RPi
- ทำการ อัพเกรดต่างๆ ก่อน นานหน่อยสำหรับคนที่ไม่ค่อยได้อัพเกรดบ่อย
- ทำการ อัพเกรดต่างๆ ก่อน นานหน่อยสำหรับคนที่ไม่ค่อยได้อัพเกรดบ่อย
sudo apt-get upgrade
- แล้วก็รันคำสั่งตามนี้เลยครับ ทีละบรรทัด นะ ใจเย็นๆ ดู Error ด้วย ถ้ามันมี
curl -O http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
rm mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo curl -O http://repo.mosquitto.org/debian/mosquitto-wheezy.list
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
บน Rpi เราจะมีทั้ง Mosquitto ที่เอาไว้จัดการ MQTT protocol โดยจะทำให้ Rpi เรากลายเป็น MQTT broker และนอกจากนั้น เราได้ติดตั้ง mosquitto-clients ซึ่งจะทำให้เราสามารถสั่งให้ Rpi เราเป็นได้ทั้ง subscriber และ publisher ได้อีกด้วย
อันนี้ เป็นคลิปวีดีโอทดสอบของผม ผมลองกับเจ้า ESP8266 และโปรแกรมต่างๆ บน PC โดยทำการ subscribe หัวข้อ topic ที่ชื่อ hello/world ที่ถูกส่ง publish มาจาก ESP8266 โดยที่ RPi ทำหน้า MQTT Broker จัดการรับส่งข้อความทาง MQTT Protocol นั่นเอง
การใช้งานควบคุม IO ผ่าน Blynk Application
App สำเร็จรูป Blynk Nodemcu esp8266 (ตอนที่ 1 Blynk คืออะไร)
หลังจากเราลง Library Blynk เรียบร้อยแล้วจะมี Example ที่ติดมาด้วยจำนวนมาก ซึ่ง
ในบทความนี้จะขอแนะนำตัวอย่างง่ายๆ เริ่มต้นไปกับ File Example Blynk
Board_Wifi ESP32_Wifi
ในโค๊ดนี้เราจะสังเกตเห็นว่ารูปแบบการสั่งงานสั้นมากๆใน void loop() มีเพียง
Blynk.run(); เพื่อสั่งงานจากภายนอก ให้ใส่โค๊ดตามนี้นะครับ
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "YourAuthToken";
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
void setup()
{ Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
}
void loop()
{ Blynk.run();
}
และในบรรทัด char auth[] = “YourAuthToken”; ให้ไป copy key ของ Auth Token
จากใน Email ที่เราได้รับมาใส่
บรรทัด Blynk.begin(auth,”ssid”,”pass”); ให้ใส่ชื่อ Wifi ที่เราใช้เชื่อมต่อกับ app ใน
ssid และ password wifi ใน pass
ต่อไปเป็นการสร้างโปรเจคของเราบน Blynk
ต่อมาเราจะเริ่มสร้างโปรเจคของเราบน Blynk โดยการกดที่พื้นที่ว่างเปล่าตรงไหนก็ได้ใน
หน้า New project จะปรากฏหน้าต่างของ Widget ให้เราเลือกขึ้นมา
ในบทความรอบนี้เราจะลองให้ดูอะไรที่ง่ายๆ ก่อน ให้ลองเลือก Button widget มาลงบน
พื้นที่ว่างเปล่ามา 1 อัน
จากนั้นเราจะมาตั้งค่าการใช้งานปุ่ม Button กันโดยกดไปที่รูป Button ที่เราเลือกจะ
ปรากฏหน้าต่างแบบนี้ ซึ่งในหน้านี้เราสามารถเปลี่ยนชื่อปุ่มได้ และเลือกโหมด output pin ที่ต่อ
กับอุปกรณ์จาก board ของเราได้
Raspberry Pi - Data Logging
เป็นการทำให้ raspberry Pi อ่านข้อมูลมาเก็บเป็น Data logger เพื่อใช้ในการทำ data analysist โดยมีโค๊ดดังนี้
import os
import time
from time import sleep
from datetime import datetime
file = open("/home/pi/data_log.csv", "a")
i=0
if os.stat("/home/pi/data_log.csv").st_size == 0:
file.write("Time,Sensor1,Sensor2,Sensor3,Sensor4,Sensor5\n")
while True:
i=i+1
now = datetime.now()
file.write(str(now)+","+str(i)+","+str(-i)+","+str(i-10)+","+str(i+5)+","+str(i*i)+"\n")
file.flush()
time.sleep(5)<br>file.close()
สามารถเก็บไฟล์ต่างๆ มาเป็น Data logger ได้
ความคิดเห็น
แสดงความคิดเห็น