物聯網技術分享 使用esp8266
TRANSCRIPT
1
物聯網技術分享 2016/10/06使用 ESP8266報告人:吳宗錫
2
物聯網 Internet of Things ,簡稱 IoT 。 讓所有能行使獨立功能的普通物體,實現互聯互通的網絡。 物聯網的網路通常是指無線網路,可以透過藍芽、 Bee 、 Wi-Fi 、 LoRa 等方式進行資料交換。
3
物聯網 領域主要包括: 運輸和物流領域 健康醫療 智慧環境(家庭、辦公、工廠) 個人和社會
4
物聯網裝置 Machine to machine (M2M) 架構。 具備微處理機、網路通訊模組的微控制器。 視需求決定是否需要作業系統。 常見的物聯網微控制器: Arduino 、 ESP8266 、 MSP430 、 Raspberry PI……
常見的作業系統: Raspberry OS 、 Windows IoT 、 Linux 、 CoOS……
5
無線網路簡介 藍芽、 ZigBee 、 Wi-Fi 、 LoRa
6
Bluetooth 短距離、省電、快速開發
7
藍牙 在短距離間交換資料,以形成個人區域網絡( PAN )。 其使用短波特高頻( UHF )無線電波,經由 2.4 至 2.485 GHz 的 ISM 頻段來進行通信。 IEEE 曾經將藍芽技術標準化為 IEEE 802.15.1 ,但是這個標準已經不再繼續使用。
8
藍牙歷史 藍牙技術最初由愛立信創製。技術始於愛立信公司的 1994 方案,它是研究在移動電話和其他配件間進行低功耗、低成本無線通信連接的方法。發明者希望為設備間的通訊創造一組統一規則(標準化協議),以解決用戶間互不兼容的移動電子設備。 1997 年前愛立信公司以此概念接觸了移動設備製造商,討論其項目合作發展,結果獲得支持。
9
藍牙重要版本 5.0 版 (2016 年 6 月公布 ) 在有效距離上是 4.2LE 版的 4 倍(理論上可達 300 公尺),速度是 4.2LE 的兩倍 支持室內定位、導航功能,如果結合 Wi-Fi 可以實現精度小於 1 公尺的室內定位 針對物聯網進行了許多底層優化
4.0 ~ 4.2 版 省電 智能連接 支援多設備連接
3.0+HS 版 速度提升至 2.0 版的 8 倍速
10
常見藍芽模組 HC-05 藍牙 4.0 工作電壓: 3.6 ~ 6V 有效距離約 10 公尺 傳輸方式: Serial (UART) 可分為 slave 或 master 模式
HC-06 與 HC-05 硬體皆相同 唯一的不同就是無法更改 slave 或 master 模式,出廠時就決定了,通常為 slave 模式售價約 85 至 150台幣
11
ZigBee 工業界的權威
12
ZigBee 是一種低速短距離傳輸的無線網路協定,底層是採用 IEEE 802.15.4 標準規範的媒體存取層與實體層。 主要特色有低速、低耗電、低成本 ??? 、支援大量網路節點、支援多種網路拓撲、低複雜度、快速、可靠、安全。 868/915MHz 和 2.4GHz 。 2.4GHz 的物理層支持空氣中 250kb/s 的速率,而 868/915MHz 的物理層支持空氣中 20kb/s 和 40kb/s 的傳輸速率。 有 ZigBee專用程式可以進行設定。
13
ZigBee 網路架構
14
常見 ZigBee 模組 Xbee 工作電壓: 2.8 ~ 3.4V 有效距離約 100 公尺 工作頻率: 2.4GHz 傳輸速率: 250kbps 可以用 Serial 傳輸 本身也是 MCU售價約 650 至 900元台幣
15
Wi-Fi 無所不在的無線網路
16
Wi-Fi 簡介 Wi-Fi 是 Wi-Fi 聯盟製造商的商標做為產品的品牌認證,建立於 IEEE 802.11標準的無線局域網技術。 「Wi-Fi」常被寫成「WiFi」或「Wifi」,但是它們並沒有被Wi-Fi 聯盟認可。 「Wi-Fi」一詞本身並沒有任何意義。 2.4GHz 或 5GHz
17
Wi-Fi世代 Wi-Fi 可分為五代。 [6] 由於 ISM 頻段中的 2.4GHz 頻段被廣泛使用,例如微波爐、藍牙,它們會干擾WiFi ,令速度減慢, 5GHz干擾則較小。雙頻路由器可同時使用 2.4GHz 和 5GHz ,裝置則只能使用某一個頻段。 第一代 802.11 , 1997 年制定,只使用 2.4GHz ,最快 2Mbit/s 第二代 802.11b ,只使用 2.4GHz ,最快 11Mbit/s ,正逐漸淘汰 第三代 802.11g/a ,分別使用 2.4GHz 和 5GHz ,最快 54Mbit/s 第四代 802.11n ,可使用 2.4GHz 或 5GHz , 20 和 40MHz 頻寬下最快 72和 150Mbit/s 第五代 802.11ac ,只使用 5GHz
18
Wi-Fi 運作模式 可分為 Station (STA) 、 Access Point (AP) 、混合式……。 具備一組 SSID 與密碼,也可為公開網路 ( 連線時無須密碼 ) ,或是連線時不需要密碼,透過 AP 內建的程式進行用戶篩選(例如:校園Wi-Fi 等等)。 加密模式分為 WEP 、 WPA 、 WPA2-TKIP 、 WPA2-AES…… 。 遵循 OSI 模型,可以使用 TCP 、 UDP 等方式進行資料傳輸。
19
常用 Wi-Fi 模組 RM04 工作電壓: 5V 傳輸方式: Serial (UART) 具備操作介面售價約 500元台幣
ESP8266 工作電壓: 3.3V 傳輸方式: Serial (UART) 、 I2C 、 SPI 不具備操作介面,僅有 AT Command 本身是 MCU ,有 GPIO售價約 55 至 80台幣
20
LoRa 大範圍網路、智慧都市
21
LoRa 一個長距離 (long range) 的通訊協定。 LoRa 的特點就是長距離、高穿透、抗干擾、低功耗。 經過 IBM 的測試,曼哈頓下城區約 30 平方公里的區域,只需要 7 個閘道器即可做到密集覆蓋。
22
ESP8266 是 Wi-Fi 模組,也是 MCU
23
ESP8266 由中國深圳樂鑫資訊所研發的超低價格具備 Wi-Fi 的微控制器,約為其他 Wi-Fi 控制器的 10 分之 1價錢。
深圳安信可科技 (AI-Thinker) 用這顆晶片開發出 12種小型電路板,分別為ESP-01到 ESP-14 。
不只安信可科技一家公司用 ESP8266晶片做Wi-Fi 小卡,也有其他板卡商拿這顆晶片去做小卡,例如北京多奧雲智科技做成 DWA8 ,或位在紐約市的創客知名公司 Adafruit也有做。
24
ESP8266 本身為微控制器,預先燒好的系統提供 AT Command ,可以與主系統做連結。 連結方式可以是 Serial (UART) 、 I2C 、 SPI 。 也可以自行撰寫韌體 (firmware) ,達到自己想達到的功能。 工作電壓 3.3V ,支援 GPIO 。
25
ESP 系列簡介 有無金屬屏蔽罩: 有: ESP-06 、 ESP-07 、 ESP-12 、 ESP-13 、ESP-14 。
天線: PCB天線: ESP-01 、 ESP-12 、 ESP-13 、 ESP-14 。
陶瓷天線: ESP-03 、 ESP-07 、 ESP-11 。 可外加天線: ESP-02 、 ESP-05 、 ESP-07 。 無天線: ESP-04 、 ESP-08 、 ESP-09 、 ESP-10 。
GPIO腳位特性
26
架構RAM : 32KBROM : 沒有,只能用外接 SPI flash memoryFlash memory : 512 KB
Pin Name Type Function1 VDDA P Analog Power 3.0 ~3.6V
2
LNA
I/O
RF Antenna Interface. Chip Output Impedance=50ΩNo matching required but we recommend that the π-type matching network is retained.
3 VDD3P3 P Amplifier Power 3.0~3.6V4 VDD3P3 P Amplifier Power 3.0~3.6V5 VDD_RTC P NC (1.1V)6 TOUT I ADC Pin (note: an internal pin of the chip) can be used to check the power voltage of VDD3P3 (Pin 3 and Pin4) or the
input voltage of TOUT (Pin 6). These two functions cannot be used simultaneously.
7
CHIP_EN
IChip Enable.High: On, chip works properly; Low: Off, small current
8 XPD_DCDC I/O Deep-Sleep Wakeup; GPIO169 MTMS I/O GPIO14; HSPI_CLK
10 MTDI I/O GPIO12; HSPI_MISO11 VDDPST P Digital/IO Power Supply (1.8V~3.3V)12 MTCK I/O GPIO13; HSPI_MOSI; UART0_CTS13 MTDO I/O GPIO15; HSPI_CS; UART0_RTS14 GPIO2 I/O UART Tx during flash programming; GPIO215 GPIO0 I/O GPIO0; SPI_CS216 GPIO4 I/O GPIO417 VDDPST P Digital/IO Power Supply (1.8V~3.3V)18 SDIO_DATA_2 I/O Connect to SD_D2 (Series R: 200Ω); SPIHD; HSPIHD; GPIO919 SDIO_DATA_3 I/O Connect to SD_D3 (Series R: 200Ω); SPIWP; HSPIWP; GPIO1020 SDIO_CMD I/O Connect to SD_CMD (Series R: 200Ω); SPI_CS0; GPIO1121 SDIO_CLK I/O Connect to SD_CLK (Series R: 200Ω); SPI_CLK; GPIO622 SDIO_DATA_0 I/O Connect to SD_D0 (Series R: 200Ω); SPI_MSIO; GPIO723 SDIO_DATA_1 I/O Connect to SD_D1 (Series R: 200Ω); SPI_MOSI; GPIO824 GPIO5 I/O GPIO525 U0RXD I/O UART Rx during flash programming; GPIO326 U0TXD I/O UART Tx during flash progamming; GPIO1; SPI_CS1
27
XTAL_OUT
I/O
Connect to crystal oscillator output, can be used to provide BT clock input
28 XTAL_IN I/O Connect to crystal oscillator input29 VDDD P Analog Power 3.0V~3.6V30 VDDA P Analog Power 3.0V~3.6V31 RES12K I Serial connection with a 12 kΩ resistor and connect to the ground32 EXT_RSTB I External reset signal (Low voltage level: Active)
28
電源供應問題 由於 ESP8266只吃穩定的 3.3V 電壓,工作時最大電流達 220mA ,單用Arduino 或其他微控制器的 3.3V孔是不夠的,必須外接穩壓器。
3.3V 穩壓器104號 電容10F 16v 電容
29
連接方式 ( 以 UART 為例 ) TX :主控制器 RX 。 RX :主控制器 TX 。 VCC :穩壓過後的 3.3V 。 GND :接地。 CH_PD :外接電組與 VCC 連接。 (Enable) GPIO15 :接地。 (UART Mode) RST :接重置的按鈕,也可以主控制器的 Reset 互接。
30
Flash firmware 連結方式 TX : TTL RX 。 RX : TTL TX 。 VCC :穩壓過後的 3.3V 。 GND :接地。 CH_PD :外接電組與 VCC 連接。 GPIO2 : VCC (flash mode) GPIO0 、 GPIO15 : Ground
Flash tool : http://www.xess.com/blog/esp8266-reflash/
31
Firmware SDK NodeMCU: a Lua-based firmware.
Arduino: a C++ based firmware. This core enables the ESP8266 CPU and its Wi-Fi components to be programmed like any other Arduino device. The ESP8266 Arduino Core is available through GitHub.
MicroPython: a port of the MicroPython to the ESP8266 platform.
ESP8266 BASIC: An open source basic interpreter specifically tailored for the internet of things. Self hosting browser based development environment.
32
AT Command AT代表 Attention 的意思,提醒裝置使用者即將下達指令。 裝置的 Baud rate必須與 ESP8266 的 Baud rate 相同。
ESP8266 初始 baud rate 為 115200 。
33
Baud rate修改 由於 115200 的 Baud rate 相對於 Arduino 來說是比較難負荷的Baudrate 。
所以必須先修改 ESP8266 的 Baud rate 至 9600 。 利用 Arduino 或其他 TTL 裝置以 115200 連結 ESP8266 。 下達指令「 AT+UART_DEF=9600,8,1,0,0」,等待裝置重新開啟後,即完成修改。 再次連線時,記得改為 9600 連線。
34
常用 AT Command - General AT Command Table : https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/
AT : 詢問裝置是否待命。 AT+RST : 重置 ESP8266 。 AT+GMR : 取得韌體版本。 AT+CIFSR : 查詢 IP 位置。 AT+CWMODE? : 查詢目前工作模式 (1=STA 、 2=AP 、 3=BOTH) 。 AT+CWMODE=1 : 設定工作模式為 1 。
35
常用 AT Command – STA Mode AT+CWLAP : 列出附近偵測得到的基地台。 AT+CWJAP=“SSID”,”Password” : 連線至指定的 AP 。 AT+CWJAP? : 查詢目前連線到哪一個基地台。 AT+CWQAP : 離開目前的基地台。
36
常用 AT Command – AP Mode AT+CWSAP? : 查詢 SoftAP 的設定,只有為 AP Mode時才能使用。
AT+CWSAP? AT+CWSAP:“ESP_9CBD07”,“”,6,0 // ssid, pwd, ch, ecn , ch 為頻道, ech 為加密模式 OK
AT+CWSAP=“SSID”,”password”,ch,ech : 更改 AP 設定。 AT+CWLIF : 查詢有哪些使用者連線到此 AP 。 AT+CIPSERVER=0 : 關閉伺服器。
37
常用 AT Command – TCP/UDP AT+CIPSTART : 建立 TCP/UDP 連線。 AT+CIPCLOSE : 關閉 TCP/UDP 連線。 AT+CIPSTATUS : 查詢目前的 IP狀態。 AT+CIPSEND=pid,data : 傳送 Socket封包。
38
ESP8266 實際控制 使用 Socket Program 控制
39
Socket Program Socket 內會包含要傳送的地址 (IP)埠號 (Port) 資料 (data)
Wi-Fi 與有線網路的程式設計方式一模一樣。電腦、手機 APP 、網站……皆可以使用Socket Program 開發。
Socket
IP Port
data
40
Socket Program ESP8266預設的 IP 為 192.168.4.1 ,可以透共 AT Command修改 IP 。 在 AP Mode時,必須開啟伺服器( AT+CIPSERVER=1,port ),設定指定的Port給使用者。
設定完畢後即可開始。
41
Client端 電腦:利用 JAVA ,撰寫 Socket程式。利用 C# , using IO.Socket ,撰寫 Socket程式。
手機: 透過原生 APP撰寫 Socket程式。 透過 PhoneGap/Cordova撰寫跨平台 APP ,使用 socket.io plugin撰寫 Socket程式。
42
參考資料 物聯網 – Wiki (https://zh.wikipedia.org/wiki/%E7%89%A9%E8%81%94%E7%BD%91) 藍芽 – Wiki (https://zh.wikipedia.org/wiki/%E8%97%8D%E7%89%99) What is Bluetooth (http://mytop10bestsellers.blogspot.tw/p/what-is-bluetooth-technology-in-plain.html)
超圖解物聯網 IOT 實作入門 – 旗標出版社 Wi-Fi – Wiki (https://zh.wikipedia.org/wiki/Wi-Fi) LoRa Alliance (https://www.lora-alliance.org/) MakerPro (http://makerpro.cc/) ESP8266 – Wiki (https://en.wikipedia.org/wiki/ESP8266)
43
參考資料 玩具自己做 (http://lets-make-games.blogspot.tw/) 阿喵就像家 (https://mlwmlw.org/) ESP8266 datasheet (https://cdn-shop.adafruit.com/product-files/2471/0A-ESP8266__Datasheet__EN_v4.3.pdf)
ESP8266 firmware update (http://www.instructables.com/id/Intro-Esp-8266-firmware-update/)
ESP8266 - AT Command Reference (https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/)
Thanks for your attention !