物聯網開發硬體應用

提升國內高職學生物聯網開發硬體應用入門技術 待進入科技大學再升級為物聯網開發硬體設計人員


您沒有登錄。 請登錄註冊

在ESP8266上開始使用MicroPython

向下  內容 [第1頁(共1頁)]

1 在ESP8266上開始使用MicroPython 于 周一 10月 01, 2018 11:34 am

Admin


Admin
1.在ESP8266上開始使用MicroPython
使用MicroPython是充分利用ESP8266電路板的好方法。反之亦然,ESP8266芯片是使用MicroPython的絕佳平台。本教程將指導您設置MicroPython,獲取提示,使用WebREPL,連接到網絡以及與Internet通信,使用硬件外圍設備以及控制某些外部組件。

讓我們開始吧!

1.1。要求
您需要的第一件事是帶有ESP8266芯片的電路板。MicroPython軟件本身支持ESP8266芯片,任何電路板都可以工作。電路板的主要特點是它具有多少閃存,GPIO引腳如何連接到外部世界,以及它是否包含內置USB串行轉換器以使UART可用於您的PC。

閃存大小的最低要求是1Mbyte。還有一個特殊的版本用於512KB的電路板,但與普通版本相比它是非常有限的:不支持文件系統,因此依賴它的功能將無法工作(WebREPL,upip等)。因此,對於根據特定應用程序的源和微調參數構建的用戶來說,512KB構建將更有趣。

本教程將使用芯片名稱(例如GPIO0)給出引腳名稱,並且應該可以直接找到與您的特定電路板相對應的引腳。

1.2。為電路板供電
如果您的主板上有USB連接器,則很可能在連接到PC時通過此連接器供電。否則你需要直接給它供電。有關詳細信息,請參閱電路板的文檔。

1.3。獲取固件
您需要做的第一件事是下載最新的MicroPython固件.bin文件以加載到您的ESP8266設備上。您可以從MicroPython下載頁面下載它 。從這裡,您有3個主要選擇

為1024kb及以上模塊構建穩定的固件。
每日固件版本為1024kb及以上模塊。
每日固件構建512kb模塊。
如果您剛開始使用MicroPython,最好的辦法是選擇Stable固件版本。如果您是一位經驗豐富,經驗豐富的MicroPython ESP8266用戶,他希望密切關注開發並幫助測試新功能,那麼每日構建(注意:您實際上可能需要一些開發經驗,例如準備好關注git歷史記錄以了解新功能引入了變化和功能)。

在功能預覽的基礎上提供對512kb模塊的支持。對於最終用戶,建議使用閃存為1024kb或更高的模塊。因此,僅提供512kb模塊的每日構建。

1.4。部署固件
獲得MicroPython固件(編譯代碼)後,需要將其加載到ESP8266設備上。執行此操作有兩個主要步驟:首先需要將設備置於引導加載程序模式,然後需要在固件中進行複制。這些步驟的確切步驟在很大程度上取決於特定的電路板,您需要參考其文檔以獲取詳細信息。

如果您的主板具有USB連接器,USB串行轉換器,並且以特殊方式連接DTR和RTS引腳,那麼部署固件應該很容易,因為所有步驟都可以自動完成。具有此類功能的板包括Adafruit Feather HUZZAH和NodeMCU板。

為獲得最佳效果,建議在使用新的MicroPython固件之前先擦除設備的整個閃存。

目前我們只支持esptool.py來複製固件。你可以在這裡找到這個工具:https://github.com/espressif/esptool/,或者使用pip安裝它:

pip 安裝 esptool
以1.3開頭的版本支持Python 2.7和Python 3.4(或更新版本)。舊版本(至少需要1.2.1)工作正常,但需要Python 2.7。

任何其他閃爍程序都應該可以使用,所以請隨意嘗試或參考您的電路板的文檔以查看其建議。

使用esptool.py,您可以使用以下命令擦除閃存:

esptool 。py - port / dev / ttyUSB0 erase_flash
然後使用以下方式部署新固件:

esptool 。py - port / dev / ttyUSB0 - 波特 460800 write_flash - flash_size = 檢測 0 esp8266 - 20170108 - v1 。8.7 。箱子
您可能需要將“端口”設置更改為與PC相關的其他設置。如果在閃爍時出現錯誤(例如,低至115200),您可能還需要降低波特率。固件的文件名也應該與您擁有的文件相匹配。

對於某些具有特定FlashROM配置的電路板(例如NodeMCU板的某些變體),您可能需要使用以下命令來部署固件(請注意該選項):-fm dio

esptool 。py - port / dev / ttyUSB0 - 波特 460800 write_flash - flash_size = detect - fm dio 0 esp8266 - 20170108 - v1 。8.7 。箱子
如果上述命令運行沒有錯誤,那麼應該在你的主板上安裝MicroPython!

1.5。串口提示
在設備上安裝固件後,您可以通過UART0(GPIO1 = TX,GPIO3 = RX)訪問REPL(Python提示符),這可能連接到USB串行轉換器,具體取決於您的主板。波特率為115200.本教程的下一部分將更詳細地討論提示。

1.6。無線上網
全新安裝和啟動後,設備將自身配置為可以連接的WiFi接入點(AP)。ESSID的形式為MicroPython-xxxxxx,其中x被設備的部分MAC地址替換(因此每次都是相同的,並且很可能與所有ESP8266芯片不同)。WiFi的密碼是micropythoN(注意大寫的N)。一旦連接到其網絡,其IP地址將為192.168.4.1。WiFi配置將在本教程後面詳細討論。

1.7。解決安裝問題
如果您在閃存期間遇到問題或者在緊接其後運行固件時遇到問題,則以下是故障排除建議:

請注意並嘗試排除硬件問題。有兩個常見問題:電源質量差和FlashROM磨損/有缺陷。說到電源,不僅僅是原始安培數很重要,而且一般來說還有低紋波和噪聲/ EMI。如果您遇到自製或壁式電源問題,請嘗試從計算機上取下USB電源。眾所周知,出土電源會引起問題,因為它們會增加EMI(電磁干擾) - 至少會導致電氣設備故障。因此,建議您在使用ESP8266和其他電路板時避免使用未接地的電源連接。關於FlashROM硬件問題,有獨立的(以任何方式與MicroPython無關)報告 (例如) 在某些ESP8266模塊上,在發生編程錯誤之前,FlashROM可以編程少至20次。對於ESP8266與信譽良好的供應商一起使用的類型的FlashROM芯片而言,這遠遠少於100,000個編程週期,這些芯片指向生產廢品,或者在某些(顯然便宜的)模塊/板上使用的二手磨損閃存芯片。您可能希望對所購買的模塊/電路板的來源,價格,文檔,保修,售後支持使用最佳判斷。

上面的閃爍指令使用460800波特的閃爍速度,這是速度和穩定性之間的良好折衷。但是,根據您的模塊/板,USB-UART轉換器,電纜,主機操作系統等,上述波特率可能過高而導致錯誤。在這種情況下,嘗試更常見的115200波特率。

如果較低的波特率沒有幫助,您可能需要嘗試使用舊版本的esptool.py,它具有不同的編程算法:

pip install esptool == 1.0 。1
此版本不支持--flash_size=detect選項,因此您需要明確指定FlashROM大小(以兆位為單位)。它還需要Python 2.7,因此您可能需要使用pip2而不是pip在上面的命令中。

--flash_size上述命令中的選項是必需的。省略它會導致固件損壞。

要捕獲不正確的閃存內容(例如,從芯片上的缺陷扇區),請將--verify開關添加到上面的命令。

此外,您可以從MicroPython REPL提示符檢查固件完整性(假設您能夠閃存它並且--verify選項不報告錯誤):

導入 esp
esp 。check_fw ()
如果最後一個輸出值為True,則固件正常。否則,它已損壞,需要正確重新刷新。

如果您遇到與其他閃存應用程序(不是esptool.py)的任​​何問題,請嘗試使用esptool.py,它是ESP8266社區中普遍接受的閃存應用程序。

如果您仍然遇到閃存固件的問題,請參閱esptool.py項目頁面,https://github.com/espressif/esptool 以獲取可以報告問題的其他文檔和錯誤跟踪器。

如果您能夠閃存固件,但是即使多次重試也可以--verify選擇或 esp.check_fw()返回錯誤,您可能有一個有缺陷的FlashROM芯片,如上所述。

檢視會員個人資料 http://iotboard.666forum.com

2 獲取MicroPython REPL提示 于 周一 10月 01, 2018 11:36 am

Admin


Admin
2.獲取MicroPython REPL提示
REPL代表Read Evaluate Print Loop,是您可以在ESP8266上訪問的交互式MicroPython提示的名稱。到目前為止,使用REPL是測試代碼和運行命令的最簡單方法。

有兩種方法可以訪問REPL:通過UART串行端口的有線連接,或通過WiFi。

2.1。REPL通過串口
REPL始終在UART0串行外設上可用,該外設連接到TX的GPIO1和RX的GPIO3。REPL的波特率為115200.如果您的主板上有USB串行轉換器,那麼您應該可以直接從PC訪問REPL。否則,您需要有一種與UART通信的方式。

要通過USB-serial訪問提示,您需要使用終端仿真程序。在Windows上TeraTerm是一個不錯的選擇,在Mac上你可以使用內置的屏幕程序,Linux有picocom和minicom。當然,還有很多其他終端程序可以使用,所以選擇你最喜歡的!

例如,在Linux上,您可以嘗試運行:

picocom / dev / ttyUSB0 - b115200
通過串行端口建立連接後,您可以通過按幾次輸入來測試它是否正常工作。您應該看到Python REPL提示符,表示為>>>。

2.2。WebREPL - 通過WiFi提示
WebREPL允許您通過WiFi使用Python提示,通過瀏覽器連接。支持最新版本的Firefox和Chrome。

為方便起見,WebREPL客戶端位於 http://micropython.org/webrepl。或者,您可以從GitHub存儲庫本地安裝它 https://github.com/micropython/webrepl。

在連接到WebREPL之前,您應該設置密碼並通過正常的串行連接啟用它。用於ESP8266的MicroPython的初始版本在啟動時自動啟用了WebREPL,並且能夠在第一次連接時通過WiFi設置密碼,但隨著WebREPL變得越來越廣為人知和流行,初始設置已切換到有線連接提高安全性:

import webrepl_setup
按照屏幕上的說明和提示進行操作。要激活任何更改,您需要重啟設備。

要使用WebREPL,請將計算機連接到ESP8266的訪問點(MicroPython-xxxxxx,請參閱上一節有關此內容)。如果您已經重新配置ESP8266以連接到路由器,那麼您可以跳過此部分。

與ESP8266在同一網絡上後,單擊“連接”按鈕(如果通過路由器連接,則可能需要更改IP地址,默認情況下連接到ESP8266的接入點時IP地址是正確的) 。如果連接成功,那麼您應該看到密碼提示。

鍵入在上面的設置步驟中配置的密碼後,再次按Enter鍵,您將看到一個類似的提示>>>。您現在可以開始輸入Python命令了!

2.3。使用REPL
一旦有提示,您就可以開始嘗試了!按Enter鍵後,將在提示符處鍵入任何內容。MicroPython將運行您輸入的代碼並打印結果(如果有的話)。如果輸入的文本出錯,則會打印出錯誤消息。

嘗試在提示符下鍵入以下內容:

>>> print ('hello esp8266!' )
你好esp8266!
請注意,您不應鍵入>>>箭頭,它們表示您應在提示符後鍵入文本。接下來的行是設備應該響應的內容。最後,輸入文本 並按Enter鍵後,屏幕上的輸出應與上面的輸出完全相同。print("hello esp8266!")

如果您已經了解了一些python,現在可以在這裡嘗試一些基本命令。例如:

>>> 1 + 2
3
>>> 1 / 2
0.5
>>> 12 ** 34
4922235242952026704037113243122008064
如果您的主板上有一個連接到GPIO2的LED(ESP-12模塊),那麼您可以使用以下代碼打開和關閉它:

>>> 進口 機器
>>> 銷 = 機器。引腳(2 , 機器,引腳,OUT )
>>> 引腳。on ()
>>> pin 。關()
請注意,onPin的方法可能會關閉LED並off可能將其打開(反之亦然),具體取決於LED在電路板上的接線方式。要解決此問題,請提供machine.Signal類。

2.3.1。線路編輯
您可以使用向左和向右箭頭鍵來編輯當前輸入的行以移動光標,以及刪除和退格鍵。此外,按Home或ctrl-A將光標移動到行的開頭,按End或ctrl-E移動到行的末尾。

2.3.2。輸入歷史記錄
REPL會記住您輸入的一定數量的前一行文本(ESP8266上最多8行)。要調用上一行,請使用向上和向下箭頭鍵。

2.3.3。標籤完成
按Tab鍵將自動完成您輸入的當前單詞。這對於找出模塊或對象具有的函數和方法非常有用。通過鍵入“ma”然後按Tab鍵試試。它應該完成“機器”(假設你在上面的例子中導入了機器)。然後鍵入“。”並再次按Tab鍵以查看機器模塊具有的所有功能的列表。

2.3.4。行繼續和自動縮進
您鍵入的某些內容將需要“繼續”,也就是說,需要更多行文本才能生成正確的Python語句。在這種情況下,提示符將更改為,...並且光標將自動縮進正確的數量,以便您可以立即開始鍵入下一行。通過定義以下函數來嘗試此操作:

>>> def toggle (p ):
... p 。值(不是 p 。值())
...
...
...
>>>
在上面,您需要連續按三次Enter鍵才能完成複合語句(即三條線上只有點)。完成複合語句的另一種方法是按退格鍵到達行的開頭,然後按Enter鍵。(如果你做錯了什麼並且想要逃避繼續模式,那麼按ctrl-C;所有行都將被忽略。)

您剛剛定義的功能允許您切換引腳。您之前創建的pin對象應該仍然存在(如果沒有,則重新創建它),您可以使用以下命令切換LED:

>>> 切換(針)
現在讓我們在一個循環中切換LED(如果你沒有LED,那麼你可以打印一些文本而不是調用切換,看看效果):

>>> 進口 時間
>>> 而 真實:
... 切換(銷)
... 的時間。sleep_ms (500 )
...
...
...
>>>
這將以1Hz(半秒開,半秒關)切換LED。要停止切換按ctrl-C,這將引發KeyboardInterrupt異常並退出循環。

時間模塊提供一些有用的功能,用於延遲和進行定時。使用標籤完成來找出它們是什麼並與它們一起玩!

2.3.5。粘貼模式
按ctrl-E將進入特殊粘貼模式。這允許您將一大塊文本複制並粘貼到REPL中。如果按ctrl-E,您將看到粘貼模式提示:

粘貼 模式; 按Ctrl - Ç 到 取消, 按Ctrl - d ,以 完成
===
然後,您可以粘貼(或鍵入)您的文本。請注意,沒有任何特殊鍵或命令在粘貼模式下工作(例如Tab或退格),它們只是按原樣接受。按ctrl-D完成輸入文本並執行。

2.3.6。其他控制命令
還有其他四個控制命令:

空白行上的Ctrl-A將進入原始REPL模式。這類似於永久粘貼模式,除了不回顯字符。
空白處的Ctrl-B轉到正常的REPL模式。
Ctrl-C取消任何輸入,或中斷當前運行的代碼。
空白行上的Ctrl-D將執行軟重置。
請注意,ctrl-A和ctrl-D不適用於WebREPL。

檢視會員個人資料 http://iotboard.666forum.com

回頂端  內容 [第1頁(共1頁)]

這個論壇的權限:
無法 在這個版面回復文章