You are on page 1of 169

หนังสือประกอบการอบรมเชิงปฏิบัติการ

หัวขอการประยุกตใช IOT ขั้นสูง

โครงการ RSU START UP

จัดทําโดย
หลักสูตรเทคโนโลยีสื่อสังคม
วิทยาลัยเทคโนโลยีสารสนเทศและการสื่อสาร

มหาวิทยาลัยรังสิต

1
สารบัญ
บทที่ 1 แนะนํา ESP32..........................................................................................................4
ESP32...........................................................................................................................................6
ซอฟตแวรที่ใชพัฒนา.....................................................................................................................8
ESP32 โมดูล.................................................................................................................................9
บอรดพัฒนา ESP32....................................................................................................................12
เปรียบเทียบระหวาง ESP8266 และ ESP32..............................................................................16
การติดตั้ง ESP32 ใน Arduino IDE............................................................................................20
บอรดพัฒนา ESP32....................................................................................................................22
การเซ็ตคาบอรด ESP32 ใน Arduino ide.................................................................................33
ทดสอบการอัพโหลด sketch......................................................................................................34
บทที่ 2 การทํางานแบบมัลติทาสกิ้ง....................................................................................38
EX2_MultiTasking_Milli_LED..................................................................................................41
EX3_MultiTasking_FreeRTOS_DHT22..................................................................................43
EX4_MultiTasking_FreeRTOS_OLED_DHT22......................................................................46
เซ็นเซอรสัมผัส.............................................................................................................................48
EX5_TouchSensor_Read........................................................................................................50
โหมดประหยัดพลังงาน................................................................................................................52
EX6_DeepSleep_Touchpad_Wakeup_DHT22_OLED.......................................................57
EX7_DeepSleep_Touchpad_Wakeup_DHT22_OLED.......................................................60
EX8_DeepSleep_Ext0_Wakeup_DHT22_OLED_Line.......................................................63
หนวยความจําและพื้นที่เก็บขอมูล...............................................................................................66
EX9_FlashMemory_NVS_BootCount...................................................................................69
EX10_FlashMemory_EEPROM..............................................................................................72
EX11_FlashMemory_SPIFFS..................................................................................................74
EX12_FlashMemory_SPIFFS_Line........................................................................................79
บทที่ 3 ESP32 Framework...............................................................................................82
การรับพิกัดตําแหนง GPS...........................................................................................................83
EX13_BlynkGPS........................................................................................................................84
AREST Framework...................................................................................................................87
EX14_aREST_Serial.................................................................................................................94
EX15_aREST_WiFi_API..........................................................................................................103
EX16_aREST_WiFi_UI_API....................................................................................................108
EX17_aREST_WiFi_UI_WEB_API..........................................................................................110

2
สารบัญ
บทที่ 4 Blynk Cloud Server.........................................................................................112
การสราง Blynk Cloud บน DigitalOcean.............................................................................113
การติดตั้ง Blynk.......................................................................................................................131
บทที่ 5 LoRa....................................................................................................................144
EX18_LoRaReceiver..............................................................................................................160
EX19_LoRaSender................................................................................................................162
EX20_LoRaReceiverInterrupt..............................................................................................164
EXT21_LoRaMultiCommunication_OLED_Client...........................................................166
EXT22_LoRaMultiCommunication_OLED_Base.............................................................168

3
บทที่ 1 แนะนํา ESP32
รูจัก ESP32 และเปรียบเทียบกับ ESP8266

4
หัวขอ
ESP32
• แนะนํา ESP32
• ซอฟตแวรที่ใชพัฒนา
• ESP32 โมดูล
• บอรดพัฒนา ESP32
• เปรียบเทียบระหวาง ESP8266 และ ESP32
• การติดตั้ง ESP32 ใน Arduino IDE
• การเซ็ตคาบอรด ESP32 ใน Arduino ide
• ตัวอยางการเขียนโคด
• ทดสอบการอัพโหลด sketch

5
แนะนํา ESP32

ESP32
2.4 GHz Wi­Fi and Bluetooth combo
chip
TSMC low power 40nm technology
Best power performance and RF
performance
ESP32 คือ
ESP32 เปนชื่อของไอซีไมโครคอนโทรลเลอรที่รองรับการเชื่อมตอ WiFi มีความสามารถการเชื่อม
ตอ Bluetooth Low-Energy (BLE, BT4.0, Bluetooth Smart) ผลิตโดยบริษัท Espressif จาก
ประเทศจีน
ESP32 ไดแกไขจุดดอยตางๆของ esp8266 ไปจนหมด ไมวาจะเปนเรื่องของ I/O และ Analog
input ที่มีไมเพียงพอกับการใชงาน และ ปรับสเปคของ hardware ใหสูงขึ้น มีความเสถียรภาพ
สูง

การพัฒนา ESP32
หลังจากที่บริษัท Espressif ไดออกไอซี  ESP8266 และไดรับความนิยมสูงสุด ก็ไดออกไอซีรุนใหม
ชื่อวา ESP31B มีการพัฒนาชุดซอฟแวร  ESP32_RTOS_SDK ไปพรอมกัน แตหลังจากนั้นไมนาน
บริษัท  Espressif  ไดยกเลิกการใชชุดซอฟแวรพัฒนาดังกลาว  แลวไปสรางชุดพัฒนาใหมชื่อ  ESP-
IDF แลวไดออกไอซี ESP32 เปนครั้งแรก

บริษัท  Espressif  ไดผลิตโมดูล ESP-WROOM-32 ออกมา จากนั้น บริษัท  AiThinker


และ Seeedstudio ก็ไดผลิตโมดูล ESP3212 ขึ้นมา แตดวยปญหาดานการออกแบบจึงไดยกเลิก
การผลิตแลวหันไปผลิต ESP32S แทน โดยมีลายวงจรเหมือนกับ
ESP-WROOM-32 ทุกอยาง

6
ESP32 คือ
บริษัท  Espressif ไดทีมผูพัฒนา  Arduino core for ESP8266  WiFi chip  และทีมผูพัฒนา
Arduino core for ESP31B WiFi chip มารวมงานชวยพัฒนาชุดไลบารี่และคอมไพลเลอร
สําหรับ Arduino ทําใหการพัฒนาเปนไปอยางรวดเร็ว

ESP-IDF  ไมมีโปรแกรม  Editor แตปนแกนพัฒนาหลัก เมื่อมีการเพิ่มฟเจอรใหมๆ ถึงจะเพิ่ม


ใน Arduino core for ESP32 WiFi chip ปจจุบันเราสามารใช Arduino IDE พัฒนา ESP32 ได

Key Features
• 240 MHz dual core Tensilica LX6 microcontroller with 600 DMIPS
• Integrated 520 KB SRAM
• Integrated 802.11 b/g/n HT40 Wi-Fi transceiver, baseband, stack and LwIP
• Integrated dual mode Bluetooth (classic and BLE)
• 16 MB flash, memory-mapped to the CPU code space
• 2.3V to 3.6V operating voltage
• -40°C to +125°C operating temperature
• On-board PCB antenna / IPEX connector for external antenna

Security Related
WEP, WPA/WPA2 PSK/Enterprise
Hardware-accelerated encryption: AES/SHA2/Elliptical
Curve Cryptography/RSA-4096

Performance
Max data rate of 150 Mbps@11n HT40, 72 Mbps@11n HT20, 54
Maximum transmit power of 19.5 dBm@11b, 16.5 dBm@11g, 15.5 dBm@11n
Minimum receiver sensitivity of -97 dBm
5 μA power consumption in Deep-sleep

7
ซอฟตแวรที่ใชพัฒนา

Software Development

MicroPython-ESP32 รองรับการใชงานพื้นฐานภาษา  Python  สวนใหญได รองรับการ


จัดการ WiFi การเชื่อมตอตางๆ ของ ESP32 สวน Espruino on ESP32 ใชภาษา JavaScript ในการสั่ง
งานและรองรับการเขียนโปรแกรมแบบ Text และภาษาบล็อก (Block) และ LuaNod ก็รองรับคําสั่งที่
ใชบน Lua จริง ๆ แทบทุกคําสั่ง และรองรับการควบคุม WiFi ไดเต็มรูปแบบ
8
ESP32 โมดูล
ESP32 Module – WROOM­32

ผลิตโดยบริษัท Espressif (บริษัทผูผลิตชิปไอซี ESP32) มีอยูดวยกัน 2 เวอรชั่น เวอรชั่นแรกจะแสดงเฉพาะ


โลโกของบริษัท Espressif และมีคําวา ESP-WROOM-32 สวนเวอรชั่นที่สอง เกิดจากการที่ชิปไดผานการ
ทดสอบไดใบรับรองจากมาตราฐานตาง จึงไดออกรุนที่แสดงหมายเลขใบรับรองบนชิปออกมา และไดใชจน
มาถึงรุนปจจุบัน ตัวโมดูลมาพรอมกับเสาอากาศแบบ PCB บนตัว มีกรอบคุมอุปกรณทั้งหมดบนโมดูลเพื่อ
ลดสัญญาณรบกวนลง ซึ่งจะทําใหการทํางานโดยรวมมีเสถียรภาพมากยิ่งขึ้น ชิป ESP-WROOM-32 นี้ไดรับ
ความนิยมเปนอยางมากในการใชงานในดานตางๆ เนื่องจากสามารถผลิตไดทันความตองการและมีราคาถูก
กวาโมดูลที่ผลิตโดยผูผลิตอื่น ๆ มาก นอกจากนี้ ตําแหนงขาตางๆ ของ ESP-WROOM-32 ยังถือเปน
มาตรฐานที่โมดูลจากผูผลิตอื่นตองทําตามอีกดวย

9
ESP32 Module – ESP­32S

ESP-32S คือบอรดโมดูล (ESP32 chip + PCB board + cover box) ของบริษัท Ai-Thinker โดยมีขนาด
ขาใชงานและขนาดของตัวถัง ลายวงจรตางๆ เหมือนกับ ESP-WROOM-32 ของ Espressive และสามารถ
ใชทดแทนกันได แตทั้งนี้ราคาของ ESP32S แพงกวาโมดูล ESP-WROOM-32 และ ESP32-Bit ทําใหไมคอย
ไดรับความนิยมในการนําไปใชงานเทาไหร 

EESP32 Module – ESP32­Bit

บริษัทผลิตบอรดไมโครคอมพิวเตอรในจีน eBox และ Widora ไดพัฒนาโมดูล


ESP32-Bit ขอดีคือมีขนาดเล็กกวา ESP-WROOM-32 ทําใหชวยลดขนาดของบอรด
พัฒนาลง สามารถเลือกใชเสาอากาสภายนอกโดยใชคอนเนคเตอรแบบ IPEX หรือเลือก
ใชเสาอากาศแบบเซรามิคบนตัวโมดูล สวนขอเสียคือมีการตัดขาใชงานบางสวนออกไป
ทําใหมีขาใชงานนอยลง
10
ESP32 Module – IntoRobot­W32/W33

IntoRobot-W32/W33 ผลิตโดยบริษัท IntoRobot มีอยูดวยกัน 2 รุน คือรุน W32 ที่ใชเสาอากาศแบบ PCB


ที่อยูบนบอรด และรุน W33 ที่มีเสาแบบเซรามิคเปนเสาหลักในการรับสัญญาณและสามารถเปลี่ยนไปใชคอนเนค
เตอรแบบ IPEX สําหรับตอเสาอากาศภายนอกได ตําแหนงขาและขนาดของโมดูลจะมีขาตอใชงานทั้งหมด 31
ขา นอยกวา ESP-WROOM-32 / ESP32S แตมีขามากกวาโมดูล ESP32-Bit มีขนาดเล็กกวา ESP-WROOM-
32/ESP32S แตมีขนาดใหญกวาโมดูล ESP32-Bit

11
บอรดพัฒนา ESP32

Ayarafun/LamLoei Node32S

"ภูมิใจไทยออกแบบ ภูมิใจไทยผลิต สนับสนุนผลงานไทย ซื้อไดอยางภาคภูมิใจ"

WeMos® WiFi + Bluetooth Battery ESP32 Development Tool


12
บอรดพัฒนา ESP32

13
บอรดพัฒนา ESP32

WiFi LoRa 32

14
บอรดพัฒนา ESP32

15
เปรียบเทียบระหวาง
ESP8266 และ ESP32

16
ESP8266 Block Diagram

แบงไดเปน 2 สวน คือฝงดานซาย Radio frequency (RF) part มีหนาที่เขื่อมตอและจัดการกับ WiFi


และฝงดานขวาคือ Logical RF ที่ประกอบดวย MCU, SRAM, Interface เขื่อมตอแบบตางๆ
สถาปตยกรรมนี้มีขาใชงานจํานวน 32 ขา

ขอจํากัด ESP8266

- MCU รักษาการเชื่อมตอ WiFI และรันคําสั่งใน Sketch ในเวลาเดียวกัน


• wdt reset / “yield” command
- เหลือขาใหใชงานไมมาก
• มีหลายขาที่มีการเรียกใชตอนบูต (GPIO0, GPIO2, GPIO16)
• ปญหาระหวางการบูต / มีขาใชงานไมเพียงพอ
- โหมดประหยัดพลังงาน
• รีเซ็ท signal เพื่อ wake-up
• สูญเสียการเชื่อมตอ WiFi ใน
• ตองเชื่อมตอ WiFi ใหมหลังจาก deep-sleep

วิธีรีเซ็ท signal เพื่อ wake-up ทําไดสองอยางคือ สราง RTC ให ESP ขา GPIO16 หรือปลุกจาก
signal ภายนอก

17
ESP32 Block Diagram

สถาปตยกรรมนี้มี 48 pin ใชงาน. ULP = ultra low power processor สามารถ deep sleep 2 core
processor แตยังคงเชื่อมตอ wifi ไดและปลุกตื่นได ใชกระแส 150 micro ampre. รองรับ Bluetooth
4.2 BLE Standard. ราคาไมแพงมากอนาคตจะถูกลง
Advanced Peripheral Interfaces
• 12-bit SAR ADC up to 18 channels
• 2 × 8-bit D/A converters / 10 × touch sensors / Temperature sensor
• 4 × SPI / 2 × I2S / 2 × I2C / 3×UART
• 1 host (SD/eMMC/SDIO) / 1 slave (SDIO/SPI)
• Ethernet MAC interface with dedicated DMA and IEEE 1588 support
• CAN 2.0
• IR (TX/RX)
• Motor PWM
• LED PWM up to 16 channels
• Hall sensor
• Ultra low power analog pre-amplifier 18
การติดตั้ง ESP8266 ใน Arduino IDE

รูปแสดงการเพิ่มบอรด ESP8266 ใน Arduino IDE


การติดตั้ง ESP8266 ใน Arduino IDE ทําไดอยางงายดาย โดยเพิ่มการจัดการบอรดจาก URL ไดเลย แต
สําหรับ ESP32 ยังไมสามารถทําไดเพราะยังอยูในชวงพัฒนาอยู การติดตั้ง ESP32 จึงมีขั้นตอนที่มากกวาและ
ตองทําติดตั้งเอง

19
การติดตั้ง ESP32
ใน Arduino IDE
ขั้นตอนในการติดตั้ง ESP32

1. ติดตั้ง Arduino IDE เวอรชั่นลาสุด


2. ติดตั้ง python 2.7x
3. ติดตั้ง git
4. โคลน existing repository
5. รัน git.exe
6. ติดตั้ง USB driver (ถาติดตั้งแลวใหขามไป)

20
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 1. ดาวนโหลด python บน windows


https://www.python.org/downloads/

21
การติดตั้ง ESP32 ใน Arduino IDE
ขั้นตอนที่ 2. ติดตั้ง python บน windows

22
การติดตั้ง ESP32 ใน Arduino IDE
ขั้นตอนที่ 2. ติดตั้ง python บน windows

23
การติดตั้ง ESP32 ใน Arduino IDE
ขั้นตอนที่ 2. ติดตั้ง python บน windows

24
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 3. ดาวนโหลด git บน windows


https://git­scm.com/download

25
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 4. ติดตั้ง git บน windows

26
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 4. ติดตั้ง git บน windows

27
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 4. ติดตั้ง git บน windows

28
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 4. ติดตั้ง git บน windows

29
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 5. เพิ่มบอรด ESP32 ดวย Git GUI

Source Location:
https://github.com/espressif/arduino­esp32.git
Target Directory:
C:/Users/YOUR_USER_NAME/Documents/Arduino/hardware/espressif/esp32
30
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 5. เพิ่มบอรด ESP32 ดวย Git GUI

รอสักครู Git กําลังดาวนโหลดไฟล

โหลดเสร็จแลวใหปดหนาตางนี้
31
การติดตั้ง ESP32 ใน Arduino IDE

ขั้นตอนที่ 5. เพิ่มบอรด ESP32 ดวย Git GUI


(1) เขาไปที่
C:/Users/YOUR_USER_NAME/Documents/Arduino/hardware/espressif/esp32/tools
(2) แลว double-click get.exe จะแสดงหนาตางออกมา ถาเสร็จแลวหนาตางจะปดเอง

หลั่งจากหนาตางปดแลวจะมีโฟลเดอร xtensa-esp32-elf เพิ่มเขามา

32
การเซ็ตคาบอรด ESP32
ใน Arduino ide

ทดสอบการเชื่อมตอกับบอรด Heltec WiFi LoRa 32

33
ทดสอบการอัพโหลด
sketch
EX1_WiFi_Scan_ทดสอบการอัพโหลด sketch

ทดสอบการอัพโหลด Sketch

34
ทดสอบการอัพโหลด sketch

EX1_WiFi_Scan_ทดสอบการอัพโหลด sketch

แสดงการอัพโหลดเสร็จสมบูรณ

35
ทดสอบการอัพโหลด sketch

EX1_WiFi_Scan_ทดสอบการอัพโหลด sketch

แสดงผลลัพธในคอนโซล

36
37
บทที่ 2 การทํางานแบบมัลติทาสกิ้ง
Multitasking on ESP32

38
หัวขอ

การทํางานของ ESP32
• การทํางานแบบมัลติทาสกิ้ง
• โหมดประหยัดพลังงาน
• หนวยความจําและพื้นที่เก็บขอมูล

39
การทํางานแบบมัลติทาสกิ้ง

มัลติทาสกิ้ง (multitasking) ใน ESP32 คือ

การทํางานหลายสวนขนานกันไปอาทิเชนการตรวจสอบสถานะของแสงเพื่อเปดปดไฟในขณะ
ที่ตองตรวจสอบสถานะการกดปุมสวิตชไปดวยในเวลาเดียวกัน หรือการทําไฟกระพริบเปนจังหวะเพื่อ
แสดงให เ ห็ น ว า อุ ป กรณ กํา ลั ง ทํา งานในขณะที่ ตอ งคอยวนตรวจสอบข อ มู ล ที่ ม าจากเซนเซอร วัด
อุณหภูมิความชื้น เปนตน

40
การทํางานแบบมัลติทาสกิ้ง

EX2_MultiTasking_Milli_LED
ตัวอยาง แสดงการควบคุมหลอดไฟ LED กระพริบคนละจังหวะ หลอดไฟ LED หลอดแรกจะกระพริบ
ทุก 0.7 วินาทีหลอดที่สองจะกระพริบทุก 0.3 วินาที และหลอดที่สามจะพริบทุก 0.1 วินาที

ฟงกชัน milli() สงคากลับมาเปน เวลาเปนมิลลิวินาทีนับตั้งแตบอรด Arduino เริ่มใชงานโปรแกรม


ปจจุบัน ตัวเลขที่สงกลับมาจะเกิดการ overflow (กลับคาไปเปน 0) หลังจากเริ่มนับประมาณ 50
วัน

41
การทํางานแบบมัลติทาสกิ้ง

MultiTasking FreeRTOS

เปนการทํางานแบบหลายกระบวนการในเวลาเดียวกัน และยังสามารถกําหนดระดับความสําคัญ
(Priority) ได ความสามารถนี้ ESP32 จะใชระบบ FreeRTOS เขามาชวยจัดการ โดยทําการการแบง
แยกคอรของ MCU ควบคุมการทํางานของแตละ task เรียกวาการทํางานในลักษณะนี้วามัลติทา
สกิ้ง โดยแตละ Task จะแยกการทํางานออกจากกันอยางอิสระ

ฟงกชั่น xTaskCreate() สําหรับการสราง task

/* Create the task, storing the handle. */


xReturned = xTaskCreate(
vTaskCode, /* Function that implements the task. */
"NAME", /* Text name for the task. */
STACK_SIZE, /* Stack size in words, not bytes. */
( void * ) 1, /* Parameter passed into the task. */
tskIDLE_PRIORITY, /* Priority at which the task is created. */
&xHandle ); /* Used to pass out the created task's handle. */

42
การทํางานแบบมัลติทาสกิ้ง

EX3_MultiTasking_FreeRTOS_DHT22
การทํางานแบบหลายกระบวนการในเวลาเดียวกัน

Task1 จะควบคุมหลอดไฟใหกระพริบทุก 0.7 วินาที


Task2 จะควบคุมหลอดไฟใหกระพริบทุก 0.3 วินาที
Task3 จะควบคุมหลอดไฟใหพริบทุก 0.1 วินาที
Task4 จะอานคาอุณหภูมิและความชื้นจากเซนเซอร DHT22 มาแสดงผลในคอนโซล

43
การทํางานแบบมัลติทาสกิ้ง
EX3_MultiTasking_FreeRTOS_DHT22

44
การทํางานแบบมัลติทาสกิ้ง
EX3_MultiTasking_FreeRTOS_DHT22

45
การทํางานแบบมัลติทาสกิ้ง

EX4_MultiTasking_FreeRTOS_OLED_DHT22
การทํางานแบบหลายกระบวนการในเวลาเดียวกัน

Task1 จะควบคุมหลอดไฟใหกระพริบทุก 0.7 วินาที


Task2 จะควบคุมหลอดไฟใหกระพริบทุก 0.3 วินาที
Task3 จะควบคุมหลอดไฟใหพริบทุก 0.1 วินาที
Task4 จะอานคาอุณหภูมิและความชื้นจากเซนเซอร DHT22 มาแสดงผลในคอนโซล

46
การทํางานแบบมัลติทาสกิ้ง
EX4_MultiTasking_FreeRTOS_OLED_

47
เซ็นเซอรสัมผัส
Touch Sensor on ESP32

48
Touch sensor
A touch sensor system is built on a substrate which carries electrodes and relevant
connections with a flat protective surface. When a user touches the surface, the
capacitance variation is triggered, and a binary signal is generated to indicate whether the
touch is valid.

49
เซ็นเซอรสัมผัส

EX5_TouchSensor_Read

ทดสอบการอานคาเซ็นเซอรสัมผัสที่มากับ ESP32 และแสดงผลในคอนโซล ขาที่ตอทดสอบ คือ

TOUCH4 (GPIO13)
TOUCH5 (GPIO12)
TOUCH2 (GPIO2)

ฟงกชันใชงานที่เกี่ยวของ

// ถา T4 มีคาเกิน 40 ใหไปที่ฟงกชัน gotTouch1() ที่สรางไว


touchAttachInterrupt(T4, gotTouch1, 40);
esp_deep_sleep_enable_touchpad_wakeup(); // กําหนดการตื่นดวยเซ็นเซอรสัมผัส
esp_deep_sleep_start(); // เขาสูโหมด Deep Sleep
Serial.println(touchRead(T4)); //อานคา sensor T4 แลวแสดงผลใน

50
เซ็นเซอรสัมผัส
EX5_TouchSensor_Read

51
โหมดประหยัดพลังงาน
Deep Sleep on ESP32

52
โหมดประหยัดพลังงาน
Table: Functionalities Depending on the Power Modes

Sleep Pattern
• Associationsleeppattern:The power mode switches between the active mode and
Modem-sleep/Light- sleep mode during this sleep pattern. The CPU, Wi-Fi, Bluetooth, and
radio are woken up at predetermined intervals to keep Wi-Fi/BT connections alive.
• ULP sensor-monitored pattern: The main CPU is in the Deep-sleep mode. The ULP co-
processor does sensor measurements and wakes up the main system, based on the
measured data from sensors.

Power mode
• Active mode: The chip radio is powered on. The chip can receive, transmit, or listen.
• Modem-sleep mode: The CPU is operational and the clock is configurable. The Wi-Fi/
Bluetooth base- band and radio are disabled.
• Light-sleep mode: The CPU is paused. The RTC and ULP-coprocessor are running. Any
wake-up events (MAC, host, RTC timer, or external interrupts) will wake up the chip.
• Deep-sleep mode: Only RTC is powered on. Wi-Fi and Bluetooth connection data are
stored in RTC memory. The ULP-coprocessor can work.
• Hibernation mode: The internal 8MHz oscillator and ULP-coprocessor are disabled. The
RTC recovery memory are power-down. Only one RTC timer on the slow clock and some
RTC GPIOs are active. The RTC timer or the RTC GPIOs can wake up the chip from the
Hibernation mode.

53
โหมดประหยัดพลังงาน
Table: Power Consumption by Power Modes

Table: RF Power Consumption Specifications

The current consumption measurements are conducted with 3.0 V supply and 25°C
ambient, at antenna port. All the transmitters’ measurements are based on 90% duty
cycle and continuous transmit mode.

54
โหมดประหยัดพลังงาน
ความหมายของหนวยทางไฟฟา

mV มิลลิโวลต  คือหนวยที่ใชเรียกขนาดของแรงดันไฟฟาหนึ่งในพันของโวลต เชน 1mV หมายถึงขนาดของ


แรงดันไฟฟา 1 มิลลิโวลต เทากับ 0.001 โวลต ขนาดของแรงดันไฟฟา 1000mV มีคาเทากับ 1 โวลต

V (Volt) โวลต  คือหนวยที่ใชเรียกขนาดของแรงดันไฟฟา เชน 220V หมายถึงขนาดของแรงดันไฟฟา 220


โวลต

mA มิลลิแอมป คือหนวยที่ใชเรียกปริมาณของกระแสไฟฟาที่ไหลผานหนึ่งในพันของแอมป เชน 1mA หมาย


ถึงปริมาณของกระแสไฟฟาที่ไหลผานมีขนาด 1 มิลลิแอมป เทากับ 0.001 แอมป ปริมาณของกระแสไฟฟา
ที่ไหลผาน 1000mA มีคาเทากับ 1 แอมป

A (Ampere) แอมป หรือ แอมแปร คือหนวยที่ใชเรียกปริมาณของกระแสไฟฟาที่ไหลผาน เชน 10A หมายถึง


ปริมาณกระแสไฟฟาที่ไหลผาน 10 แอมป

W วัตต คือหนวยที่ใชเรียกขนาดของกําลังไฟฟา เชน 1W หมายถึงใชกําลังไฟฟา 1 วัตต

ตารางแปลง มิลลิวินาที เปน วินาที

55
โหมดประหยัดพลังงาน

การออกจากโหมด deep sleep ของ ESP8266 และ ESP32

ESP8266 Wake­Up Source:


- Reset the chip from an external source.
- Connect GPIO16 to the reset pin for a timed wake-up.
- With the timer, we were only able to sleep for about one hour.

The ESP32 has four different wake­up sources:


- The touch pads.
- The timer.
- Two possibilities of external Wake-up.
- ULP coprocessor wake-up.

56
โหมดประหยัดพลังงาน

EX6_DeepSleep_Touchpad_Wakeup_DHT22_OLED

กําหนดให ESP32 อยูในโหมด deep sleep เพื่อประหยัดพลังงานและออกจากโหมด deep sleep ดวย


เซ็นเซอรสัมผัส

ถามีการสัมผัสเซ็นเซอร T4 หรือ T5 บอรด ESP32 จะออกจากโหมด deep sleep แลวกลับมาทํางานใหม


จะไปอานคาขอมูลอุณหภูมิความชื้น DHT22 มาแสดงผลในจอ OLED และ Console เปนเวลา 15 วินาที
จากนั้นก็จะเขาสูโหมด deep sleep เพื่อประหยัดพลังงานตอไป มีการเก็บขอมูลจํานวนที่บูตไวในหนวย
ความจําของ RTC ดวย

ฟงกชันใชงานที่เกี่ยวของ

touchAttachInterrupt(T4, gotTouch1, 40);


// ถา T4 มีคาเกิน 40 ใหไปที่ฟงกชัน gotTouch1() ที่สรางไว

esp_deep_sleep_enable_touchpad_wakeup(); // กําหนดการตื่นดวยเซ็นเซอร
esp_deep_sleep_start(); // เขาสูโหมด Deep Sleep
Serial.println(touchRead(T4)); //อานคา sensor T4 แลวแสดงผลใน console
RTC_DATA_ATTR int bootCount = 0; //เก็บจํานวนการบูตแตละครั้ง

57
โหมดประหยัดพลังงาน
EX6_DeepSleep_Touchpad_Wakeup_DHT22_OLED

58
โหมดประหยัดพลังงาน
EX6_DeepSleep_Touchpad_Wakeup_DHT22_OLED

59
โหมดประหยัดพลังงาน

EX7_DeepSleep_Touchpad_Wakeup_DHT22_OLED
กําหนดให ESP32 อยูในโหมด deep sleep เพื่อประหยัดพลังงาน แลวกําหนดขา GPIO2 เปนตัวกระตุนให
ออกจากโหมด deep sleep ถามีการเปลี่ยนสถานะเปน HIGH

การทดสอบนี้จะใชไฟ 3.3v จายเขาไปโดยใช switch ขั้นไว ถามีการกด switch จะมีการจายไฟเขาไปที่ขา


GPIO2 ซึ่งจะทําใหสถานะเปลี่ยนเปน HIGH และออกจากโหมด deep sleep

ESP32 จะไปอานคาขอมูลอุณหภูมิความชื้น DHT22 มาแสดงผลในจอ OLED และ Console เปนเวลา 5


วินาที จากนั้นก็จะเขาสูโหมด deep sleep เพื่อประหยัดพลังงานตอไป มีการเก็บขอมูลจํานวนที่บูตไวใน
หนวยความจําของ RTC ดวย

ฟงกชันใชงานที่เกี่ยวของ

esp_deep_sleep_enable_ext0_wakeup((gpio_num_t)2, HIGH);
// กําหนดขา GPIO2 เปนตัวกระตุนใหออกจากโหมด deep sleep ถามีการเปลี่ยนสถานะเปน HIGH การ
ทดสอบนี้จะใชไฟ 3.3v จายเขาไปโดยใช switch ขั้นไว

esp_deep_sleep_enable_touchpad_wakeup(); // กําหนดการตื่นดวยเซ็นเซอร
esp_deep_sleep_start(); // เขาสูโหมด Deep Sleep
Serial.println(touchRead(T4)); // อานคา sensor T4 แลวแสดงผลใน console
RTC_DATA_ATTR int bootCount = 0; // เก็บจํานวนการบูตแตละครั้ง

60
โหมดประหยัดพลังงาน
EX7_DeepSleep_Touchpad_Wakeup_DHT22_OLED

61
โหมดประหยัดพลังงาน
EX7_DeepSleep_Touchpad_Wakeup_DHT22_OLED

62
โหมดประหยัดพลังงาน

EX8_DeepSleep_Timer_Wakeup_DHT22_OLED_Line

กําหนดให ESP32 อยูในโหมด deep sleep เพื่อประหยัดพลังงานเปนเวลา 1 นาที ออกจากโหมด


deep sleep

พอถึงเวลาที่กําหนด หรือมีการกดสวิตชที่ตอไว ESP32 จะออกจากโหมด deep sleep จากนั้นจะทําการ


เชื่อมตอ WiFi และอานคาขอมูลอุณหภูมิและความชื้น (DHT22) ไปแสดงผลในจอ OLED, Console
และสงแจงเตือนใน Line Notify หลังจากเวลา 30 วินาทีที่ตั้งไว ก็จะเขาสูโหมด deep sleep เพื่อ
ประหยัดพลังงานตอไป มีการเก็บขอมูลจํานวนที่บูตไวในหนวยความจําของ RTC ดวย

63
โหมดประหยัดพลังงาน
EX8_DeepSleep_Timer_Wakeup_DHT22_OLED_Line

ฟงกชันใชงานที่เกี่ยวของ

// กําหนดขา GPIO2 เปนตัวกระตุนใหออกจากโหมด deep sleep ถามีการเปลี่ยนสถานะเปน HIGH การ


ทดสอบนี้จะใชไฟ 3.3v จายเขาไปโดยใช switch ขั้นไว
esp_deep_sleep_enable_ext0_wakeup((gpio_num_t)2, HIGH);

//กําหนดใหตื่นเมื่อครบ 1 นาทีขางหนา
esp_deep_sleep_enable_timer_wakeup(1 * 60 * 1000 * 1000);

esp_deep_sleep_enable_touchpad_wakeup(); // กําหนดการตื่นดวยเซ็นเซอร
esp_deep_sleep_start(); // เขาสูโหมด Deep Sleep
Serial.println(touchRead(T4)); //อานคา sensor T4 แลวแสดงผลใน console
RTC_DATA_ATTR int bootCount = 0; // เก็บจํานวนการบูตแตละครั้ง

64
โหมดประหยัดพลังงาน
EX8_DeepSleep_Timer_Wakeup_DHT22_OLED_Lin

65
หนวยความจําและพื้นที่เก็บขอมูล
ESP32's Flash memory

66
หนวยความจําและพื้นที่เก็บขอมูล
ชิป ESP32 จะใช Flash memory ภายนนอกในการเก็บโปรแกรม ขอมูล คอนฟก และคาใชงานตางๆ การ
ทํางานจะผาน SPI bus มีขนาดสูงสุด 16Mb สําหรับโมดูล ESP-WROOM-32 ให flash memory มา
4Mb

67
หนวยความจําและพื้นที่เก็บขอมูล
Table: Flash memory Partition Table

พาทิชันที่สามารถเขียนโปรแกรมเก็บแบบถาวร ไดแก NVS มีขนาด 20KB EEPROM มีขนาด 4KB


และ SPIFFS มีขนาด 1.3 MB สวนนอกนั้นเปนพื้นที่ของระบบที่ตองใช

NVS (Nonvolatile Storage)


เปน SPI flash memory ของโมดูล ESP32 มีขนาด 20 Kbytes เอาไวเก็บขอมูลระบบเชน ชื่อ
SSID MC Address และอื่นๆ ขอมูลที่เก็บจะเปนแบบถาวรไมสูญหายแมเขียน sketch ทับลงไป
การใชงานใหนึกเสมอวาไฟลจะอยูรวมกับไฟลระบบอื่นๆ ระมัดระวังการใชงาน แนะนําใหเก็บ
ขอมูลที่ไมซับซอนเชน รหัสผาน ตัวเลขนับจํานวนการบูต หรือขอความสั้นๆ

68
หนวยความจําและพื้นที่เก็บขอมูล
EX9_FlashMemory_NVS_BootCount

นับจํานวน ESP รีบูตแลวเขียนเก็บไวใน SPI flash memory - NVS (Nonvolatile Storage) ของโมดูล
ESP32 ขอมูลที่เก็บจะเปนแบบถาวร ไมสูญหายแมมีการเขียน Sketch ทับลงไป

69
หนวยความจําและพื้นที่เก็บขอมูล
EX9_FlashMemory_NVS_BootCount

70
หนวยความจําและพื้นที่เก็บขอมูล
EX9_FlashMemory_NVS_BootCount

71
หนวยความจําและพื้นที่เก็บขอมูล
EX10_FlashMemory_EEPROM

EEPROM เปนหนวยความจําแบบถาวร ขอมูลไมสูญหายแมวาไมมีไฟเลี้ยง การอานเขียนขอมูลทําไดครั้ง


ละ byte เทานั้น เขียนขอมูลไดสูงสุดประมาณ 100,000 ครั้ง

ทดสอบเขียนขอมูลลงบน SPI flash memory ของโมดูล ESP32 ใน EEPROM ที่มีขนาด 4KB เปนการเก็บ
ขอมูลแบบถาวร อานคาจาก EEPROM แปลง char array เปน String มาแสดงผลใน Console

72
หนวยความจําและพื้นที่เก็บขอมูล
EX10_FlashMemory_EEPROM

73
หนวยความจําและพื้นที่เก็บขอมูล
EX11_FlashMemory_SPIFFS

SPIFFS (SPI Flash File System) จะอยูใน flash memory of ESP-WROOM-32 (ESP32) เปนพื้นที่เก็บ
ขอมูลที่เราจะสามารถอัพโหลดไฟลไปเก็บไวได เชนเก็บบันทึกขอมูลอุณหภูมิและความชื้นของเซ็นเซอร
DHT22 คาคอนฟก เปนตน มีพื้นที่เก็บขอมูลขนาด 1.5M

การอัพโหลดไฟลไปเก็บไวใน SPIFFS

กอนอื่นตองทําการติดตั้ง tool ชื่อ “ESP32FS” ไวในโฟลเดอร

MAC:
/Users/visit01/Documents/Arduino/tools

Windows:
C:/Documents/Arduino/tools

74
หนวยความจําและพื้นที่เก็บขอมูล
EX11_FlashMemory_SPIFFS

การอัพโหลดไฟลไปเก็บไวใน SPIFFS

ใหเก็บไฟลที่ตองการอัพโหลดเก็บไวในโฟลเดอร (ไมเกิน 1.1MB)

MAC
/Users/visit01/Documents/Arduino/TRAIN-IOT-ADVANCE/EX11_FlashMemory_SPIFFS/data

Windows
C:/Documents/Arduino/TRAIN-IOT-ADVANCE/EX11_FlashMemory_SPIFFS/data

75
หนวยความจําและพื้นที่เก็บขอมูล
EX11_FlashMemory_SPIFFS

76
หนวยความจําและพื้นที่เก็บขอมูล

การขยายพารทิชัน SPIFFS

เราสามารถขยายพื้นที่ของ SPIFFS เพื่อเก็บขอมูลไดมากขึ้น Arduino IDE จะเก็บขอมูลการแบง


พารทิชันไวที่ไฟลชื่อ “default.csv” ใหทําดวยความระมัดระวัง !

MAC
/Users/visit01/Documents/Arduino/hardware/espressif/esp32/tools/partitions

Windows
C:/Documents/Arduino/hardware/espressif/esp32/tools/partitions

------ พารทิชัน default ESP32 --------


# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x140000,
app1,     app,  ota_1,   0x150000,0x140000,
eeprom,   data, 0x99,    0x290000,0x1000,
spiffs,   data, spiffs,  0x291000,0x16F000,

------ พารทิชันหลังจากปรับแตงแกไข --------


# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0xF0000,
app1,     app,  ota_1,   0x100000,0xF0000,
eeprom,   data, 0x99,    0x1F0000,0x1000,
spiffs,   data, spiffs,  0x1F1000,0x20F000,
77
หนวยความจําและพื้นที่เก็บขอมูล

78
หนวยความจําและพื้นที่เก็บขอมูล
EX12_FlashMemory_SPIFFS_Line

ออกจากโหมด deep sleep แบบอัตโมมัติตาม


เวลาที่กําหนดหรือกดปุมสวิตซ แลว เชื่อมตอ
WiFi และดึงคาเวลาจาก NTP server ผาน
อินเตอรเน็ต อานคาอุณหภูมิและความชื้นจาก
เซนเซอร DHT22 มาแสดงผลในคอนโซล และเก็บ
บันทึกขอมูลไวใน SPIFFS พรอมกับเวลาปจจุบัน
จากนั้นรายงานคาอุณหภูมิและความชื้นเขา Line
Notify แสดงขั้นตอนทํางานบนจอ OLED เปน
ระยะ รวมถึงเก็บจํานวนการบูตไวใน RTC กอนเขา
สู deep sleep ที่ตั้งเวลาได

ตัวอยางฟงกชันที่สรางขึ้นใชงาน
listDir(SPIFFS, "/", 0); //แสดงโฟลเดอรทั้งหมด
writeFile(SPIFFS, "/hello.txt", "Hello "); //เขียนทับไฟล
appendFile(SPIFFS, "/hello.txt", "World!\n"); //เขียนตอไฟล
readFile(SPIFFS, "/hello.txt");  //อานไฟล
deleteFile(SPIFFS, "/foo.txt"); //ลบไฟล
renameFile(SPIFFS, "/hello.txt", "/foo.txt");  //เปลี่ยนชื่อไฟล
testFileIO(SPIFFS, "/test.txt"); //ทดสอบไฟล
Showdisplay(“Wake UP:); //แสดงขอความบนจอ OLED
Gettemp(); อานคาอุณหภูมิและความชื้น
linenotify(); สง Line notify 79
หนวยความจําและพื้นที่เก็บขอมูล
EX12_FlashMemory_SPIFFS_Line

80
หนวยความจําและพื้นที่เก็บขอมูล
EX12_FlashMemory_SPIFFS_Line

81
บทที่ 3 ESP32 Framework
• การรับพิกัดตําแหนง GPS
• RESTful Framework

82
การรับพิกัดตําแหนง GPS
GPS on ESP32

u-center Windows
GNSS evaluation software for Windows
https://www.u-blox.com/en/product/u-center-windows

83
การรับพิกัดตําแหนง GPS
EX13_BlynkGPS

รับคา GPS และวัดอุณหภูมิและความชื้นจาก DHT22 จากนั้นนําไปแสดงตําแหนงบนแผนที่และคาพิกัดใน


LCD บน Blynk Application

กําหนดการเชื่อมตอ
1. Sensor DHT22 วัดอุณหภูมิและความชื้น ตอขา 21
2. Sensor Analog ตอขา A6, A7 //ขา GPIO34, 35
3. GPS ตอขา RXPin = 38, TXPin = 39 , VCC เขา 5V และ GND เขา GND
4. Analog ขา A6(GPIO 34), A7 (GPIO35) ถามี

84
การรับพิกัดตําแหนง GPS
EX13_BlynkGPS

85
การรับพิกัดตําแหนง GPS
EX13_BlynkGPS

86
AREST
Framework on ESP32
แนะนํา aREST Framework
aREST เปน framework ที่สามารถควบคุมการทํางานของ ESP32, ESP8266, Arduino, Raspberry
หรืออื่นๆ ไดโดยตรงผานทาง Serial console ใน Arduino IDE หรือผานเครือขาย IP

การทํางานจะใช API - JSON ในการแลกเปลี่ยนขอมูล รองรับการทํางานแบบ Server และ Client ถาอยู


ในวงแลนเดียวกัน ผูใชสามารถใช web browser เขาถึงบอรดและสั่งการผาน API ไดโดยตรง

RESTful (Representational State Transfer)

คือ Web Service ที่ใช HTTP Method (GET, POST, PUT, DELETE) แลกเปลี่ยนขอมูลในรูปแบบของ
JSON หรือ XML

87
AREST Framework

RESTful (Representational State Transfer)


https://maps.googleapis.com/maps/api/geocode/json?address=rangsit

88
AREST Framework

JSON (JavaScript Object Notation)

เจสันจัดเก็บในรูปแบบที่สามารถอานและเขาใจไดงาย เปรียบเสมือนรูปแบบของ อาเรย (Array) ชนิดหนึ่งที่


ใชรับสงแลกเปลี่ยนขอมูลขามแพตฟอรม

{
               "firstName": "รัชชานนท",
               "lastName": "เวียงนาค",
               "address":
                         {
                          ”City": "กรุงเทพฯ",
                          ”Country": "ประเทศไทย",
                         },
               "phoneNumbers":
                              [
                                "099-9999999",
                                "02-6690001"
                              ]
 }

89
AREST Framework

JSON Text to a JavaScript Object

ผลลัพธที่ได >>

90
AREST Framework

JSON Text to a JavaScript Object

ผลลัพธที่ได >>

91
AREST Framework

ติดตั้ง aREST Library

92
AREST Framework

ติดตั้ง aREST Library

93
AREST Framework
EX14_aREST_Serial
ควบคุมบอรดผานทาง Serial โดยใช aREST Framework API เปนตัวจัดการ

คําสั่งที่เกี่ยวของ

/* กําหนดใหขา 25 เปน OUTPUT */


/mode/25/o

/* กําหนดสถานะใหขา 25 เปน HIGH */


/digital/25/1

/* กําหนดสถานะใหขา 25 เปน LOW */


/digital/25/0

/* เช็คสถานะใหขา 25 */
/digital/25

94
AREST Framework
EX14_aREST_Serial

95
AREST Framework
EX14_aREST_Serial

96
AREST Framework
EX14_aREST_Serial

97
AREST Framework
EX14_aREST_Serial

98
AREST Framework
EX14_aREST_Serial

99
API documentation
The API currently supports five type of commands: digital, analog, and mode, variables, and
user-defined functions.

Digital

Digital is to write or read on digital pins on the Arduino. For example:

/* sets pin number 25 to a low state */


/digital/25/0

/* sets pin number 25 to a high state */


/digital/25/1

/* reads value from pin number 25 in JSON format (note that for compatibility reasons, /
digital/25/r produces the same result) */
/digital/25

100
API documentation
The API currently supports five type of commands: digital, analog, and mode, variables, and
user-defined functions.

Analog

Analog is to write or read on analog pins on the Arduino. Note that you can only write on
PWM pins for the Arduino Uno, and only read analog values from analog pins 0 to 5. For
example:

/* sets pin number 6 to 123 using PWM */


/* ESP32 ยังไมรองรับคําสั่ง AnalogWrite */
/analog/6/123

/* returns analog value from pin number A0 in JSON format (note that for compatibility
reasons, /analog/0/r produces the same result) */
/analog/0

The API currently supports five type of commands: digital, analog, and mode, variables, and
user-defined functions.

Mode

Mode is to change the mode on a pin. For example:

/* sets pin number 32 as an output */


/mode/32/o

/* sets pin number 32 as an input */


/mode/32/i
101
API documentation
The API currently supports five type of commands: digital, analog, and mode, variables, and
user-defined functions.

Variables

You can also directly call variables that are defined in your sketch. Integer variables are
supported by the library.

To access a variable in your sketch, you have to declare it first, and then call it from with a
REST call. For example, if your aREST instance is called "rest" and the variable
"temperature":

/* declares the temperature in the Arduino sketch */


rest.variable("temperature", &temperature);

/* returns the value of the variable in JSON format */


/temperature

The API currently supports five type of commands: digital, analog, and mode, variables, and
user-defined functions.

Get data about the board


You can also access a description of all the variables that were declared on the board with
a single command. This is useful to automatically build graphical interfaces based on the
variables exposed to the API. This can be done via the following calls:

/ or /id

The names & types of the variables will then be stored in the variables field of the
returned JSON object
102
AREST Framework
EX15_aREST_WiFi_API
ควบคุมบอรดผานทาง IP โดยเชื่อมตอวายฟายและใช aREST Framework API เปนตัวจัดการ

ตัวอยางคําสั่ง

http://192.168.1.108/digital/25/1
http://192.168.1.108/digital/32/1
http://192.168.1.108/digital/33/1
http://192.168.1.108
http://192.168.1.108/temperature
http://192.168.1.108/humidity
http://192.168.1.108/red?params=5
http://192.168.1.108/blue?params=5
http://192.168.1.108/green?params=5

103
AREST Framework
EX15_aREST_WiFi_API

104
AREST Framework
EX15_aREST_WiFi_API

105
AREST Framework
EX15_aREST_WiFi_API

106
AREST Framework
EX15_aREST_WiFi_API

107
AREST Framework
EX16_aREST_WiFi_UI_API
ควบคุมบอรดผานทาง IP โดยเชื่อมตอวายฟายและใช aREST Framework API เปนตัวจัดการ แสดงผล user
interface บน web browser

108
AREST Framework
EX16_aREST_WiFi_API

109
AREST Framework
EX17_aREST_WiFi_UI_WEB_API
ควบคุมบอรดผานทาง IP โดยเชื่อมตอวายฟายและใช aREST Framework API เปนตัวจัดการ แสดงผล user
interface บน web browser

110
AREST Framework
EX17_aREST_WiFi_UI_WEB_API

111
บทที่ 4 Blynk Cloud Server
• ติดตั้ง Blynk Cloud Server บน digitalocean
• สราง firewall ให Blynk Server

112
Blynk Cloud Server
ติดตั้ง บน digitalocean

ขั้นตอนการสราง Blynk Cloud บน DigitalOcean

1.ติดตั้ง Linux Server บน DigitalOcean


2. ติดตั้ง JAVA บน UBUNTU server
3.ติดตั้ง Blynk Server
4.ตั้งคาคอนฟก Blynk Server
5.ทดสอบเชื่อมตอ Blynk Server
6.ทดสอบเขาสูหนาจัดการ Administrator
7.สราง firewall ให Blynk Server

113
Blynk could server
1.ติดตั้ง Linux Server บน DigitalOcean

114
Blynk could server
ติดตั้ง Linux Ubuntu Server บน DigitalOcean

115
Blynk could server
ติดตั้ง Linux Ubuntu Server บน DigitalOcean

116
Blynk could server
ติดตั้ง Linux Ubuntu Server บน DigitalOcean

117
Blynk could server
ติดตั้ง Linux Ubuntu Server บน DigitalOcean

Upgrade OS: sudo apt­get update

118
Blynk could server
ติดตั้ง Linux Ubuntu Server บน DigitalOcean
Upgrade OS: sudo apt­get upgrade

119
Blynk could server
2.ติดตั้ง JAVA บน UBUNTU Server
Installing the Oracle JDK 9 :
sudo add-apt-repository ppa:webupd8team/java

Installing the Oracle JDK 9 :


sudo apt-get update

120
Blynk could server
ติดตั้ง JAVA บน UBUNTU Server
Installing the Oracle JDK 9 :
sudo apt-get install oracle-java9-installer

121
Blynk could server
ติดตั้ง JAVA บน UBUNTU Server
Installing the Oracle JDK 9 :
sudo apt-get install oracle-java9-installer

Installing the Oracle JDK 9 :


Verify installation: java -version

122
Blynk could server
3.ติดตั้ง Blynk Server

สราง folder ชื่อ BlynkServer


mkdir /BlynkServer

เขาไปใน folder BlynkServer


cd /BlynkServer

ดาวนโหลดไฟลติดตั้ง Server
wget https://github.com/blynkkk/blynk-server/releases/download/v0.28.5/server-0.28.5-
java8.jar

ทดสอบรัน server
java -jar /BlynkServer/server-0.28.5-java8.jar -dataFolder /BlynkServer/blynk &

123
Blynk could server
ติดตั้ง Blynk Server

ตั้งคาให server รันอัตโนมัติหลังการบูต

แกไขไฟล /etc/rc.local เพิ่มบรรทัดดานลางเขาไป

java -jar /BlynkServer/server-0.28.5-java8.jar -dataFolder /BlynkServer/blynk &

124
Blynk could server
4.ตั้งคาคอนฟก Blynk Server

ตั้งคาคอนฟก server

ใหดาวนโหลดไฟลชื่อ “server.properties” ที่เตรียมไวให

cd /BlynkServer
wget https://www.dropbox.com/s/0r3dgsh0ix8yrdm/server.properties

ดาวนโหลดไฟลชื่อ “server.properties”

แกไขไฟลชื่อ “server.properties” ดวย text editor nano หรือ vi

125
Blynk could server
ตั้งคาคอนฟก Blynk Server

ตั้งคาคอนฟก server
แกไขไฟลชื่อ “server.properties”

126
Blynk could server
ตั้งคาคอนฟก Blynk Server

ตั้งคาคอนฟก server
แกไขไฟลชื่อ “server.properties”

127
Blynk could server
ตั้งคาคอนฟก Blynk Server

ตั้งคาคอนฟก server
แกไขไฟลชื่อ “server.properties”

ตั้งคาคอนฟกอีเมลแจงขาวสาร

ใหดาวนโหลดไฟลชื่อ “mail.properties” ที่เตรียมไวให

cd /BlynkServer
wget https://www.dropbox.com/s/1hlrm6q078qo5sj/mail.properties

128
Blynk could server
ตั้งคาคอนฟก Blynk Server

ตั้งคาคอนฟก server
ดาวนโหลดไฟลชื่อ “mail.properties”

แกไขไฟลชื่อ “mail.properties” ดวย text editor nano หรือ vi

แกไขไฟลชื่อ “mail.properties”
ในที่นี้จะใช gmail เปน mail server สงขอความ ใหใส username และ password เพื่อ login ใหถูกตอง
แนะนําใหสราง account ใหม

129
Blynk could server
ตั้งคาคอนฟก Blynk Server

ทดสอบการรัน server
เช็คกอนวามีการรัน server ไวหรือไม ถามีให kill process กอน

เช็ค server วาสามารถทํางานไดหรือไม

ตั้งคาคอนฟกขอความในอีเมลแจงขาวสาร
ใหดาวนโหลดไฟลชื่อ “single_token_mail_body.txt” ที่เตรียมไวให
cd /BlynkServer
wget https://www.dropbox.com/s/bwzp7kw4svrz150/single_token_mail_body.txt

130
การติดตั้ง Blynk
รูจัก blynk app และการใชงาน
5.ทดสอบเชื่อมตอ Blynk Server
ดาวนโหลด Blynk บน smart phone

131
ลงทะเบียนเขาใชงานบน blynk server

132
เลือก Cloud SERVER ที่สรางขึ้น

133
เขาสูหนาแรก ทดลองสรางโปรเจค

134
ลงทะเบียนเขาใชงานบน blynk server

135
รหัสนลงทะเบียนเขาใชงานบน blynk server

136
6.ทดสอบเขาสูหนาจัดการ Administrator
Blynk administrator
https://128.199.117.92:9443/admin

137
Blynk administrator

138
Blynk administrator

139
7.สราง firewall ให Blynk Server
Blynk Cloud Server firewall
สราง firewall

ตั้งชื่อ firewall

140
Blynk Cloud Server firewall
กําหนดพอรตใชงานขาเขา

กําหนดพอรตใชงานขาออก

141
Blynk Cloud Server firewall
ตั้งคา firewall

142
Blynk Cloud Server firewall
กําหนด firewall ใชงานใน server

rsuBlynkServer ใชงาน firewall เรียบรอย

143
บทที่ 5 LoRa
แนะนํา LoRa
รับสงขอมูลผาน LoRa บนคลื่นความถี่ 433MHz

144
LoRa
Long range, low power
wireless platform

What is LoRa?
LoRa: Long range, low power wireless platform is the prevailing technology choice for
building IoT networks worldwide.

LoRa: Long range, low power wireless platform is the prevailing technology choice for
building IoT networks worldwide.
Smart IoT applications have improved the way we interact and are addressing some of the
biggest challenges facing cities and communities: climate change, pollution control, early
warning of natural disasters, and saving lives. Businesses are benefiting too, through
improvements in operations and efficiencies as well as reduction in costs.
This wireless RF technology is being integrated into cars, street lights, manufacturing
equipment, home appliances, wearable devices – anything, really. LoRa Technology is
making our world a Smart Planet.
ที่มา: http://www.semtech.com/wireless-rf/internet-of-things/what-is-lora/ 145
LoRa Technology
LoRa Technology offers a very compelling mix of long range, low power consumption and
secure data transmission

A Semtech innovation, LoRa Technology offers a very compelling mix of long range, low
power consumption and secure data transmission. Public and private networks using this
technology can provide coverage that is greater in range compared to that of existing
cellular networks. It is easy to plug into the existing infrastructure and offers a solution to
serve battery-operated IoT applications. Semtech builds LoRa Technology into its chipsets.
These chipsets are then built into the products offered by our vast network of IoT partners
and integrated into LPWANs from mobile network operators worldwide.

146 ที่มา: http://www.semtech.com/wireless-rf/internet-of-things/what-is-lora/


LoRaWAN Protocol
Wide area communication between remote sensors and gateways connected to the

LoRaWAN is a protocol specification built on top of the LoRa technology developed by


the LoRa Alliance. It uses unlicensed radio spectrum in the Industrial, Scientific and
Medical (ISM) bands to enable low power, wide area communication between remote
sensors and gateways connected to the network. This standards-based approach to
building a LPWAN allows for quick set up of public or private IoT networks anywhere
using hardware and software that is bi-directionally secure, interoperable and mobile,
provides accurate localization, and works the way you expect. The specification is
available for free to download from the LoRa Alliance website today.

147
Network Diagram

148
LoRa Applications
Smart Home Asset Tracking

DESCRIPTION
LoRa® devices and wireless RF technology (LoRa Technology) is making it
easy and economical for consumers to dive into the Internet of Tings (IoT).
With afordable sensors, gateways and tracking devices, families can also
experience the same IoT benefts, including asset tracking and real-time
monitoring, as enterprises and global organizations. LoRa Technology enables
smart home devices to be interoperable and coordinate across an expansive
distance, enabling better asset monitoring and smarter grid behaviors. Using
typical wireless technologies for this type of application would increase
bandwidth and power costs, but with LoRa-based devices, low amounts of
power and wireless bandwidth are utilized.

149
LoRa Applications
Smart Parking

DESCRIPTION
LoRa® devices and wireless RF technology (LoRa Technology) is making it
easy and economical for smart cities to improve public services. From better
usage of city street lights to smarter parking meters, LoRa Technology enables
the most advanced and afordable solutions for urban planning and
management. While traditional urban monitoring systems have been
prohibitively expensive for medium and small sized municipalities, LoRa
Technology provides an afordable solution that can increase municipal
revenues and improve city services. City governments are always in search of
better ways to optimize spending and increase revenue. With LoRa
Technology, municipalities are able to both lower the overall cost of
infrastructure while advancing long-term technological goals.

150
LoRa Applications
Waste Management

DESCRIPTION
Traditionally, waste collection has been performed on a fxed schedule. However,
regularly scheduled waste collection is not optimal as it does not account for
diferent individuals or businesses flling up their waste bins at diferent rates. Tis
means collection trucks must stop at each point on their route to empty each
waste bin regardless of whether they are full or not. It also leads to situations
where some waste bins overfow before the next collection schedule. By
implementing sensors embedded with LoRa Technology into waste bins and
using an intelligent low-power wide area network based on the LoRaWAN™
protocol, cities can signifcantly reduce their operational costs by streamlining
their waste collection routes and deploying trash bins only where they are
necessary

151
LoRa Applications
Fall Detection

DESCRIPTION
For the elderly, falling and not being able to get up or summon help is a very
scary prospect and happens frequently enough that it is a public safety concern
in certain communities. Fear of falling can keep elderly from participating in
activities, accelerate depression and decrease social activities all of which leads
to a reduced quality of life. IoT-based fall detection systems alleviate the fear
of not being discovered afer a fall which can help elderly to live an active,
normal life. By implementing a IoT-based fall detection solution comprised of
sensors and gateways embedded with LoRa Technology and an intelligent low
power wide area network based on the LoRaWAN™ protocol, elderly people can
live more full lives.

152
LoRa Applications

http://www.semtech.com/wireless-rf/internet-of-things/lora-applications/briefs#all 153
Gateway Hardware

Node Hardware

154
The Things Network

The Things Network is building a network for the Internet of Things by creating abundant
data connectivity, so applications and businesses can flourish.The technology we use is
called LoRaWAN and it allows for things to talk to the internet without 3G or WiFi. So no
WiFi codes and no mobile subscriptions.It features low battery usage, long range and low
bandwidth. Perfect for the internet of things.

155
myDevices Cayenne

Cayenne is the world’s first drag and drop IoT project builder that empowers developers,
designers and engineers to quickly prototype and share their connected device projects.
Cayenne was designed to help users create Internet of Things prototypes and then bring
them to production.

There are several major components in the platform:


Cayenne Mobile Apps  – Remotely monitor and control your IoT projects from the
Android or iOS Apps.
Cayenne Online Dashboard – Use customizable widgets to visualize data, set up rules,
schedule events and more.

156
LoRA
Point to point link on 433MHz

157
158 ที่มา https://en.wikipedia.org/wiki/LPD433
Pinout

WIFI_LoRa_32 ports

GPIO5 -- SX1278's SCK


GPIO19 -- SX1278's MISO
GPIO27 -- SX1278's MOSI
GPIO18 -- SX1278's CS
GPIO14 -- SX1278's RESET
GPIO26 -- SX1278's IRQ(Interrupt Request)

159
EX18_LoRaReceiver
ทดสอบรับขอมูลผานเครือขาย LoRa บนคลื่นความถี่ 433MHz แบบ point to point พรอมแสดงผลคา
RSSI บน serial console

ถาสง package สําเร็จหลอดไฟ LED บนบอรดที่ตอกับขา GPIO25 จะกระพริบ

160
EX18_LoRaReceiver

161
EX19_LoRaSender
ทดสอบสงขอมูลผานเครือขาย LoRa บนคลื่นความถี่ 433MHz แบบ point to point พรอมแสดงผลคา
RSSI บน serial console

ถาสง package สําเร็จหลอดไฟ LED บนบอรดที่ตอกับขา GPIO25 จะกระพริบ

162
EX19_LoRaSender

163
EX20_LoRaReceiverInterrupt

ทดสอบสงขอมูลผานเครือขาย LoRa บนคลื่นความถี่ 433MHz แบบ point to point พรอมแสดงผลคา


RSSI บน serial console

ถาสง package สําเร็จหลอดไฟ LED บนบอรดที่ตอกับขา GPIO25 จะกระพริบ หลังจากที่ไดรับ package

164
EX20_LoRaReceiverInterrupt

165
EXT21_LoRaMultiCommunication_OLED_Client

การรับและสงขอมูลผานเครือขาย LoRa แบบ Point to MultiPoint ที่สามารถระบุตนทางได อุปกรณทุก


ตัวตองใชความถี่เดียวกัน

166
EXT21_LoRaMultiCommunication_OLED_Client

167
EXT22_LoRaMultiCommunication_OLED_Base

การรับและสงขอมูลผานเครือขาย LoRa แบบ Point to MultiPoint ที่สามารถระบุตนทางและปลายทาง


สามารถสงแบบ broadcast ไปยัง device ทุกตัวไดโดยระบุปลายทางเปน 0xFF อุปกรณทุกตัวตองใช
ความถี่เดียวกัน

168
EXT22_LoRaMultiCommunication_OLED_Base

169

You might also like