ทดลองใช้งาน LoPy

สืบเนื่องจากอยากลอง LoRa มาก จึงได้สั่งบอร์ด LoPy มาชุดหนึ่ง

บอร์ด LoPy ซึ่งมีทั้ง BLE. LoRa และ WiFi ในตัว

ประกอบด้วย 
- บอร์ด LoPy จำนวน 2 บอร์ด 
- เสาอากาศ 2 เสา
- PyCom Extension 2 บอร์ด
- เคส 2 กล่อง
- สาย Micro USB

LoPy คืออะไร

LoPy คือ บอร์ดไมโครคอนโทรลเลอร์ตัวหนึ่ง ซึ่งโพรเซสเซอร์ข้างในก็คือ ESP32 อันโด่งดังนั่นเอง ความพิเศษของ LoPy คือ เป็นบอร์ดเดียวในตอนนี้ (เท่าที่ผมทราบ) ที่รวมเอาการสื่อสารไร้สาย 3 ประเภทเอาไว้ในบอร์ดเดียวกัน คือ Bluetooth Low Energy (BLE), WiFi และ LoRaWAN ความพิเศษอีกประการคือ บอร์ดนี้ใช้ภาษา MicroPython ซึ่งเป็นภาษา Python สำหรับใช้บนไมโครคอนโทรลเลอร์โดยเฉพาะ ใครสนใจเรื่อง MicroPython ให้ลองเข้า ที่นี่

คุณสมบัติเป็นอย่างไรบ้าง

มาดูคุณสมบัติของเจ้าบอร์ดนี้กัน

  • ใช้ชิป ESP32 ของ Espressif ซึ่งข้างในมีโพรเซสเซอร์ Tensilica LX จำนวน 2 คอร์ โดยทำงานที่ความเร็ว 240 MHz มีหน่วยความจำ RAM 512 กิโลไบต์ และมีหน่วยความจำ Flash 4 เมกะไบต์
  • ทางด้าน I/O มีพอร์ต GPIO จำนวน 24 พอร์ต UART จำนวน 2 พอร์ต SPI จำนวน 2 พอร์ต I2C จำนวน 1 พอร์ต I2S จำนวน 1 พอร์ต โดยสามารถเชื่อมต่อกับ micro SD card ได้ด้วย
  • มี ADC ความละเอียด 12 บิต จำนวน 8 ช่อง มี Timer ขนาด 16 บิต จำนวน 4 ตัว
  • ในด้านระบบเครือข่าย สามารถใช้ WiFi 802.11b/g/n โดยทำความเร็วสูงสุด 16 Mbps ทางด้าน Bluetooth สามารถใช้ได้ทั้งแบบ Classic และแบบ Low Energy นอกจากนั้นยังใช้ LoRa ได้อีกด้วย โดย LoRa ใช้ชิป Semtech LoRa transceiver SX1272 ใช้งานที่คลื่น 868 MHz และ 915 MHz โดยทางเว็บอ้างว่าสามารถส่งได้ถึง 40 กิโลเมตร แต่ถ้าทำตัวเป็น nano Gateway จะได้ระยะทางเหลือ 22 กิโลเมตร โดยสามารถเชื่อมกับ Node ได้ถึง 100 Node เลยทีเดียวเชียว

แกะกล่องใช้งาน

เพื่อให้ใช้งานได้ง่ายทางผู้ผลิต ได้สร้าง Expansion Board มาให้ด้วย หน้าตาก็ตามรูปนี่แหละครับ

ความสามารถที่เพิ่มเติมหากใช้ Expansion Board คือ

  • สามารถต่อแบตเตอรีแบบ LiPo ได้ พร้อมความสามารถในการชาร์จแบตเตอรี พร้อม Reverse Voltage Protection
  • มีพอร์ต USB to Serial
  • ต่อ Micro SD Card ได้
  • มี User LED และ User button เพิ่มอย่างละ 1 (ในบอร์ดมีไฟ Power และไฟแสดงสถานะการชาร์จอย่างละ 1 ดวงด้วย)
  • ที่น่าสนใจคือ ต่อ ADC จำนวน 1 ขาเพื่อวัด V ของแบตเตอรีด้วย เพื่อจะได้อ่านค่ามาได้ว่าแบตเตอรีใกล้หมดหรือยัง

เริ่มต้นก็เอาบอร์ด LoPy เสียบกับ Expansion Board จากนั้นก็ใส่เสาอากาศ โดยบนบอร์ดจะมีจุดเชื่อมเสาอากาศอยู่ 2 ที่ โดยจุดแรกจะอยู่ใกล้ๆ เสาอากาศภายใน เป็นเสาอากาศแบบ U.FL ซึ่งจะใช้สำหรับต่อกับเสาอากาศ WiFi แบบภายนอก และอีกจุดจะเป็นเสาอากาศ LoRa โดยจะอยู่ใกล้ๆ LED ซึ่งจุดต่อเสาอากาศทั้ง 2 ตัวนี้จะมีขนาดไม่เท่ากัน ดังนั้นไม่ต้องกลัวว่าจะต่อผิดช่อง เพราะจะเสียบไม่เข้า (55) หลังจากเชื่อมต่อแล้ว ก็ประกอบใส่กล่อง หลังจากเข้าไปอยู่ในกล่อง หน้าตาก็ดูหล่อเหลาไม่น้อยตามรูปเลยครับ

หน้าตาหลังจากประกอบเข้าไปในกล่องเรียบร้อย

หลังจากประกอบแล้ว ก็ต้องเอามาโดนไฟกันหน่อย โดยเสียบสาย USB เข้ากับบอร์ด ซึ่งหากไม่มีอะไรผิดพลาด ไฟ LED บนบอร์ดจะกระพริบเป็นสีฟ้า 4 วินาทีต่อครั้ง

ในขั้นตอนต่อไปตามที่ผู้ผลิตแนะนำ ก็ต้อง Upgrade Firmware กันก่อน โดยจะต้องโหลดโปรแกรม Pycom Firmware Update จากนั้นก็ทำตามขั้นตอน จน Upgrade เสร็จเรียบร้อย ก็ Reboot (ปล. ในการ Upgrade ต้องมีการต่อขา G23 กับกราวด์ด้วย)

ทดสอบใช้งาน

เมื่อถึงจุดนี้บอร์ด LoPy ของเราก็พร้อมแล้วที่จะเข้าใช้งาน โดยเริ่มต้น WiFi ของบอร์ดจะทำงานในโหมด AP โดยหากเราสแกนเครือข่ายจะพบว่ามี AP ประมาณ lopy-wlan-xxxx อยู่ ซึ่งหากเรา Connect เข้าไป โดยใส่รหัสผ่าน www.pycom.io หลังจากเชื่อมต่อสำเร็จ เราสามารถใช้ Browser เชื่อมต่อเข้าไปได้ (ตอนใช้ FTP เชื่อมต่อ จะใช้ user/password เป็น micro/python)

คราวนี้เราจะลองใช้ IDE ของ pycom โดยจะใช้โปรแกรมชื่อ Pymakr หลังจากดาวน์โหลดและติดตั้งโปรแกรมเรียบร้อยแล้ว ก็เรียกขึ้นมาทำงาน โดยหน้าตาของโปรแกรมก็ตามรูป

Pymakr

เราจะเริ่มโดยการทำไฟกระพริบเทพ แต่เนื่องจากบนบอร์ดมี LED RGB อยู่ เราจะทำไฟกระพริบเทพ 3 สีกัน โดยเริ่มจากเปิด IDE ขึ้นมาแล้วไปที่ Settings->Preferences จากนั้นเลือก Pycom Device แล้วป้อนตามรูป

ในช่อง Device ให้ป้อน IP Address และ username/password (default) แล้วกด OK จากนั้นมาที่หน้า IDE หลัก New Project ขึ้นมา (Project->New Project) ตั้งชื่อว่าอะไรก็ได้ เสร็จแล้วให้สร้างไฟล์ใน Project ขึ้นมา 2 ไฟล์ (File->New) โดยตั้งชื่อว่า boot.py และ main.py

ไฟล์ boot.py จะเป็นไฟล์แรกที่จะถูกรันหลังจากที่ Power On หรือ Reset จากนั้นจึงจะเรียกไฟล์ main.py ขึ้นมาทำงานต่อ ในไฟล์ boot.py ให้ใส่ code ต่อไปนี้ไว้ที่ส่วนหัว เพื่อที่จะรันโปรแกรม python ผ่าน Telnet หรือ Serial ได้

from machine import UART
import os
uart = UART(0, 115200)
os.dupterm(uart)

เสร็จแล้วเราก็จะมาเขียนโปรแกรมใน main.py โดยโปรแกรมไฟกระพริบเทพของเราก็จะเป็นดังนี้

import pycom
import time
pycom.heartbeat(False)
for cycles in range(10): # stop after 10 cycles
pycom.rgbled(0x007f00) # green
time.sleep(5)
pycom.rgbled(0x7f7f00) # yellow
time.sleep(1.5)
pycom.rgbled(0x7f0000) # red
time.sleep(4)

ในบรรทัดแรกจะเป็นการเรียก Library pycom เพื่อจะเรียกใช้ส่วนของ RGB LED 
ในบรรทัดที่ 2 เรียกใช้ Library time เพื่อจะได้ใช้ sleep 
ในบรรทัดทีี่ 3 pycom.heartbeat(False) เป็นการยกเลิกการกระพริบของ RGB LED 
บรรทัดต่อจากนั้นก็จะเป็นการวนลูป 10 ครั้ง ให้แสดงสีเขียว เหลือง แดง สลับกันไป เสร็จแล้วก็ให้เลิกทำงาน

เขียนเสร็จแล้วให้กดปุ่ม Sync (ปุ่มที่เป็นเครื่องหมายลูกศรไปกลับ) เพื่อ Upload โปรแกรมเข้าไปในบอร์ด แต่โปรแกรมจะยังไม่ทำงาน จะต้องรีเซ็ทบอร์ดก่อน เหมือนกับบอร์ดไมโครคอนโทรลเลอร์อื่นๆ การรีเซ็ทที่สะดวกคือคลิกที่ Python Console แล้วกด Ctrl-D หรือกดปุ่ม Reset

หลังจาก Reset แล้วบอร์ดก็จะแสดงไฟกระพริบเทพ ประมาณนี้ครับ

ก็ขอจบบทความทดลอง LoPy ตอนแรกแต่เพียงนี้ ในครั้งหน้าค่อยมาเจาะลึกส่วนอื่นๆ ต่อไปครับ

Like what you read? Give Thana Hongsuwan a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.