2020年12月6日 星期日

Raspberry Pi UART 使用設定(這次測試的系統是raspbx)

 Raspberry Pi UART 使用設定(這次測試的系統是raspbx)

這邊記得至少要接三條線喔,TX 對 RX 然後 RX 對 TX 接下來就是 GND接地對接地



因為我的HDMI轉VGA的線不知道丟哪去了,樹莓派開完機又不自己連上網路,也不知道要遠端連線到哪去 @@,所以只好把UART打開了,因為之前玩Arduino或是Linux還滿常使用這種介面的,所以用起來感覺還行哈哈。

把記憶卡插入讀卡機,找到 BOOT 這個分割區裡面的config.txt 這個檔案(我用Notepad++編輯比較不會有問題),在最下面新增兩行就好

dtoverlay=pi3-miniuart-bt

enable_uart=1

改好存檔重開機之後就能登入啦 預設帳號:pi 密碼:raspberry

另外有人說要加上 core_freq=250 這行,我這次沒加是能動啦。


註解:

如果還要用藍芽就將 Raspberry Pi 3B 藍芽設定為 mini-UART (ttyS0) 

dtoverlay=pi3-miniuart-bt


如果不用藍芽就直接停用內建的 Bluetooth (都買了還要我關掉好像哪裡怪怪的)

dtoverlay=pi3-disable-bt 


cmdline.txt (這次沒修改內容就這些,參考用)

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait


參考資料連結:

https://blog.pytool.com/hardware/raspi/raspi-usart-bt/

https://www.instructables.com/Connect-the-Raspberry-Pi-to-network-using-UART/


Raspberry Pi 3b GPIO

ESP8266 ESP-07 學習紀錄

我之前買了片 ESP8266 ESP-07 然而之前的學習都忘光了,也沒有寫起來真的很糟,最近又拿出來玩了一下,這次要把學到的寫起來,免得都忘光,每次都要重新搜尋,雖然感覺很快就回來。

===============================================================

這次找了怎麼重寫韌體的資訊,之前好像有被我弄壞還怎樣,還是重寫一下好了

硬體資訊判斷資料(從 ESP8266 Download Tool V3.8.5)

flash vendor: C8h : GD

flash devID: 4014h QUAD; 8Mbit

crystal: 26 Mhz

以下是網路找到的比對資料

The 16h in DevID 4016h means 32Mbits.

If DevID was 4014h, then it would be a 8Mbits, and 4Mbits for the 4013h.

===============================================================

紀錄一下接腳怎麼接才能做燒錄! 很重要喔

HOW TO UPDATE FIRMWARE AND UPLOAD PROGRAM INTO ESP8266

ESP-12E & ESP-07 燒韌體接法

RX to TX

TX to RX

VCC to 3.3V

CHPD(EN) to 3.3V

GND to GND

GPIO-15 to GND (Read from RAM - floating is Read from SD-Card Mode) 這次這隻腳沒接地

GPIO-0 to GND (Program upload Mode) 這隻腳有接地,最重要的地方!

燒完斷電之後記得拔下 GPIO-0 to GND 不然他不會醒來工作喔!

記得如果按下燒錄他沒反應就重新送電一次

出處     https://www.esp8266.com/viewtopic.php?f=15&t=11471

===============================================================

這次下載韌體的網址

https://www.espressif.com/en/support/download/sdks-demos?keys=&field_type_tid%5B%5D=14

https://github.com/espressif/ESP8266_NONOS_SDK/releases

https://github.com/sleemanj/ESP8266_Simple/tree/master/firmware


參考資料:


Esp8266-01更新韌體與設定教學,這邊也教了不少東西,很棒

https://sites.google.com/mail3.hwsh.tc.edu.tw/earth/arduino/%E5%8F%83%E8%80%83%E8%B3%87%E6%96%99/%E5%85%B6%E4%BB%96esp8266-01%E6%9B%B4%E6%96%B0%E9%9F%8C%E9%AB%94%E8%88%87%E8%A8%AD%E5%AE%9A


https://docs.ai-thinker.com/esp8266


===============================================================

這裡教了超多AT指令的 出處在下方網址:

http://yhhuang1966.blogspot.com/2015/07/esp8266-wifi-at-command.html

先收下在這篇好了,免得他不見了


各種 AT 指令參考 :

# ESP8266 AT Command Set (PDF)

# ESP8266 Reference (PDF)

# espressif/esp8266_at

# atproto/commands.md


例如 :

AT+GMR : 取得韌體版本 :

AT+GMR                                                                         

0018000902-AI03                                                               

                                                                               

OK 

可見目前版本是 0902.

AT+RST : 重新起始 ESP8266

AT+RST                                                                         

                                                                               

OK                                                                             

7!aS?'??!G?R??                                                           

[Vendor:www.ai-thinker.com Version:0.9.2.4]                                    

                                                                               

ready  

AT+CIOBAUD?  : 查詢鮑率 (位元速率)

+CIOBAUD:9600


OK

AT+CIFSR : 查詢 IP 位址


AT+CIFSR                                                                       

192.168.4.1                                                                    

                                                                               

OK


注意, 作為 STA 時,  若尚未用 CWJAP 連線基地台, 則預設 IP 為 0.0.0.0, 連線後才會被指派一個 192.168.X.X 的 STA 區域 IP. 如果 ESP8266 是在 AP/BOTH 模式, 則下 CIFSR 會看到兩個 IP, 一個是 STA IP, 另為一個是基地台 SoftAP IP. 

AT+CWMODE? : 查詢目前工作模式

AT+CWMODE?                                                                     

+CWMODE:2                                                                      

                                                                               

OK     

可見目前是模式 2 (AP 基地台模式), 1=STA 網卡模式, 3=BOTH (AP+STA).

注意, 下完 CWMODE 最好再用 CWRST 重啟, 以確認設定有完成.  

AT+CWMODE=1 : 修改工作模式為 1 (STA) 網卡模式

AT+CWMODE=1                                                                    

                                                                               

OK                                                                             

AT+CWMODE?                                                                     

+CWMODE:1                                                                      

                                                                               

OK   

要修改為雙重模式就在等號後面指定為 3 即可. 注意, STA 與 AP 模式有各自的 IP, 在 STA 模式下未連線前 IP 為預設之 0.0.0.0, 連線後基地台會配發一個 192.168.X.X 的 IP; 改為 AP 或 BOTH 模式後, ESP8266 會自行配發 192.168.4.1 的 AP IP, 故 BOTH 模式下會有兩個 IP.


AT+CWMODE=3


OK

AT+CIFSR

192.168.4.1     (這是 ESP8266 當 AP 的 IP)

192.168.2.105 (這是 ESP8266 當 STA 的 IP)

AT+CWLAP : 列出附近偵測得到的基地台

注意, 此指令只能在 STA (=1) 與 BOTH (=3) 模式下才會回應, 在 AP 模式下會出現 ERROR.

AT+CWLAP                                                                       

+CWLAP:(2,"edimax.setup",-71,"74:da:38:15:16:00",1)                            

+CWLAP:(3,"bryan",-90,"78:54:2e:26:66:28",1)                                   

+CWLAP:(3,"TP-LINK_33C1",-86,"c4:e9:84:66:33:c1",4)                            

+CWLAP:(4,"ching",-84,"54:b8:0a:84:f4:70",5)                                   

+CWLAP:(4,"HOME",-70,"04:8d:38:52:ea:f7",6)                                    

+CWLAP:(4,"alex",-85,"fc:75:16:01:26:0c",6)                                    

+CWLAP:(4,"andy",-85,"fc:75:16:02:61:60",6)                                    

+CWLAP:(1,"JANE-WIRELESS",-94,"00:24:01:ad:a0:65",6)                           

+CWLAP:(4,"RFTQAD",-93,"c8:d3:a3:5f:d8:fd",9)                                  

+CWLAP:(3,"TP-LINK_601A04",-73,"e8:de:27:60:1a:04",10)                         

+CWLAP:(4,"EDIMAX-tony",-44,"90:1f:02:2d:5a:9f",11)  我的基地台                    

+CWLAP:(3,"CHT5668",-89,"d8:fe:e3:5c:c0:fb",11)                                

+CWLAP:(3,"MOTOROLA-5N6F",-89,"f8:35:dd:74:d2:b6",11)                          

+CWLAP:(3,"45-9",-91,"d8:fe:e3:e6:90:87",11)                                   

+CWLAP:(3,"family",-89,"6c:19:8f:b7:9a:79",1)                                  

                                                                               

OK

回應訊息的格式為 : +CWLAP:(ecn,ssid,rssi,mac,mode)

第一個參數是加密方式 ecn :

0 OPEN (不加密)

1 WEP

2 WPA_PSK

3 WPA2_PSK

4 WPA_WPA2_PSK

第二個參數是服務設定識別碼 SSID (即基地台代號), 第三個是接收的射頻信號強度 (dBm), 均為負值, 越負信號越弱, 最大值是 0. 第四參數是實體位址 MAC, 第五參數據 "More AT Command Information Found" 說是連接模式, 0 為手動 (manual), 1 為自動 (auto). 但上面測試卻有 0, 1 以外的值. 據 "ESP8266 WiFi module" 這篇則說是 channel, 似乎較合理, 因為 CWJAP 指令也無法設定手動或自動啊!

AT+CWJAP="SSID","PWD" : 連線指定之基地台 (Join AP)

AT+CWJAP="EDIMAX-tony","123456789111"                                         

                                                                               

OK 

連線成功後再下 AT+CIFSR 查詢新指派的 IP, 還沒下 CWJAP 連線前為 0.0.0.0  :                                                                           

AT+CIFSR                                                                       

192.168.2.105  

這時可在相同網域的電腦 ping 此 IP, 檢查連線是否可傳送資料 :


C:\Users\petertw89>ping 192.168.2.105

Ping 192.168.2.105 (使用 32 位元組的資料):

回覆自 192.168.2.105: 位元組=32 時間=110ms TTL=255

回覆自 192.168.2.105: 位元組=32 時間=18ms TTL=255

回覆自 192.168.2.105: 位元組=32 時間=35ms TTL=255

回覆自 192.168.2.105: 位元組=32 時間=55ms TTL=255


192.168.2.105 的 Ping 統計資料:

    封包: 已傳送 = 4,已收到 = 4, 已遺失 = 0 (0% 遺失),

大約的來回時間 (毫秒):

    最小值 = 18ms,最大值 = 110ms,平均 = 54ms   

AT+CWJAP? : 查詢目前連線到哪一個基地台

AT+CWJAP?

+CWJAP:"EDIMAX-tony"


OK

AT+CWQAP : 離開目前連線的基地台

AT+CWQAP


OK

這時再下 AT+CWJAP? 查詢連線之基地台時就會回應 ERROR :

AT+CWJAP?


ERROR

這時下 CWFSR 原來指配的 IP 192.168.2.105 會消失, 回到預設 0.0.0.0

AT+CIFSR

0.0.0.0


OK

AT+CIPSTART : 建立 TCP/UDP 連線

AT+CIPSTART="TCP","www.google.com",80


OK

Linked

這樣就與遠端主機建立 TCP 連線了.

AT+CIPSTART="UDP","192.43.244.18",123


OK

這樣就與遠端主機建立 UDP 連線了.

AT+CIPSTATUS : 查詢目前 IP 連線狀態

AT+CIPSTATUS

STATUS:3

+CIPSTATUS:0,"TCP","74.125.203.101",80,0


OK


回應訊息格式 : +CIPSTATUS:id,type,addr,port,tetype

id 為連線通道編號, 最後面的 tetype 為 ESP8266 角色, 0 為 client, 1 為 server.

表示目前與 IP 74.125.203.101 的 80 port 已建立了 TCP 連線 (2 表示已取得 IP 尚未連線, 3 表示 Connected, 4 表示 disconnected). 回應中的 0 為 id. 

AT+CIPCLOSE : 關閉 IP 連線

AT+CIPCLOSE


OK

Unlink

AT+CWSAP? : 查詢 SoftAP 的設定

此指令只有當 ESP8266 工作於 AP/BOTH 模式時才有用, 在 STA 模式下此指令會得到 ERROR 回應.


AT+CWMODE=3   先改為 BOTH 模式


OK

AT+CWSAP?

AT+CWSAP:"ESP_9CBD07","",6,0    預設 ssid, pwd, ch, ecn


OK


回應顯示預設未設密碼, 最後一個參數為加密方式, 預設 0=未加密, 見 CWLAP 指令. 而 ssid 是 ESP8266 作為 AP 的網路識別, 後面是其 MAC 號碼. ecn 是加密方式.

AT+CWSAP="ssid","pwd",ch,ecn : 更改 AP 的設定 (只在 AP/BOTH 模式有效)


AT+CWSAP="MYESP","1234567890",6,4


OK

AT+CWLIF : 查詢有哪些 Client 連線至此 AP (只在 AP/BOTH 模式有效)

AT+CWLIF

192.168.4.100,74:e1:b6:0e:f5:67


OK

AT+CIPMUX? : 詢問目前 TCP/UDP 連線模式

這是設定 ESP8266 與同一 WiFi 網路中其他裝置的連線模式, 預設為單一連線, 如果要讓 ESP8266 當伺服器用, 必須設為 1=多重連線.


AT+CIPMUX?

+CIPMUX:0       (多重連線關閉, 即單一連線模式)


OK

AT+CIPMUX=1 : 設定 TCP/UDP 連線模式為多重連線

如果要讓 ESP8266 當伺服器, 讓網域中的客戶端進行 TCP/UDP 連線, 必須開啟多重連線.


AT+CIPMUX=1


OK

如果要取消 ESP8266 的伺服功能, 恢復單一連線功能, 須將 CIPMUX 設為 0 :

AT+CIPMUX=1


OK

AT+CIPSERVER=mode[,port] : 設定是否開啟 ESP8266 為伺服器

用 CIPMUX=1 開啟多重連線後, 就可以用 CIPSERVER 設定 ESP8266 的伺服器功能. mode=1 為開啟伺服器, 必須指定 port; mode=0 為關閉伺服器, 不須指定 port. 在單一連線下開啟伺服器, 會得到 ERROR 回應.


AT+CIPSERVER=1,8087


OK


這樣 ESP8266 伺服器就會傾聽 8087 埠, 這時就可在同網域的電腦連線 ESP8266 伺服器了. 我下載克里斯寫的 Connector-Test.air 安裝後選擇當 Client, 連線 ESP8266 的 STA IP, 連線成功且能雙向傳遞訊息. 用書上的 Java Client 網路程式來測試也 OK.


重複開啟伺服器會回應 no change :


AT+CIPSERVER=1,8081

no change


關閉伺服器後必須重啟 ESP8266 (AT+RST), 其回應為 :


AT+CIPSERVER=0

we must restart

AT+CIPSTO? : 查詢伺服器逾時計時器設定值 (秒)


AT+CIPSTO?

+CIPSTO:180


OK


預設是 180 秒

AT+CIPSTO=timeout : 設定伺服器逾時計時器 (0~7200 秒)


AT+CIPSTO=200


OK


其實不管設定為多少秒, 它都回應 OK, 但實際最多只能計時到 7200 秒.

設定用的 AT 指令 (例如改變工作模式或連線某個 AP) 完成後會寫入 Flash 記憶體, 即使關機也不會消失, 重開機就會回魂了. 所以設定連線哪個 AP 就會一直鎖定該 AP, 無法像筆電那樣會記錄曾經連線過的 AP 資料, 自動找信好強的連線.

===============================================================