<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    通過串口連接REPL

    概要

    MicroPython固件燒錄完畢之后,我們需要使用工具通過串口來連接至MicroPython的REPL。

    本文便為大家介紹在Windows,linux,和mac上有哪些好用的工具,以及如何使用這些工具。

    keywords ESP32 MicroPython REPL picocom putty

    連接到電腦

    你只需要用USB數據線將你的ESP32和你的電腦連接在一起,理論上就可以通過你的電腦訪問REPL。但是在我們的電腦上需要終端仿真程序,才能夠使用REPL。

    在Windows,Linux和Mac這三個不同的平臺上,有著很多的終端仿真程序,接下來分別介紹在三個平臺下使用工具連接到REPL的方法。

    Windows10下連接REPL

    在windows下筆者推薦使用Putty來進行連接。

    點擊下載鏈接后,找到如圖所示的下載項:

    下載后的可執行文件雙擊即可執行。

    將上圖中的設置保存為 micropython 方便下次進行連接。

    點擊上圖中的Open按鈕,則將彈出命令行窗口,如下圖所示:

    如若出現上面圖片中的輸出,則連接成功。

    Linux和Mac下連接REPL

    Linux和Mac下,我推薦使用picocom進行連接。picocom是基于命令行的串口(終端)調試工具, 十分簡單易用。

    Linux下安裝picocom

    按照Linux發行版自行對號入座:

    • Arch Linux

      sudo pacman -S picocom
      

    • Ubuntu

      sudo apt-get install picocom
      

      其余發行版的安裝在此便不在贅述,如有需要自行百度。

    Mac下安裝picocom

    使用Homebrew來安裝,如果你是Mac小白,可能你需要了解并安裝Homebrew

    Homebrew官網: https://brew.sh/

    Homebrew的安裝很簡單,將下面這句腳本粘貼到你的命令行終端中執行即可:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    之后,使用brew指令安裝picocom

    brew install picocom
    

    通過picocom連接ESP32終端

    連接的命令如下:

    sudo picocom -b 115200 /dev/ttyUSB0
    

    -b 是制定波特率boundrate 為115200

    在linux下的端口號是:

    /dev/ttyUSB+數字的格式,如筆者的是/dev/ttyUSB0

    在Mac下,筆者的端口號是:

    /dev/cu.SLAB_USBtoUART

    根據你具體的情況,輸入正確的端口號, 即可連接。

    連接上窗口的時候,會打印一些ESP32開發板的信息,以linux下的輸出為例:

    [email protected] ~/P/MicroPython> sudo picocom -b 115200 /dev/ttyUSB0
    [sudo] password for scorpion: 
    picocom v2.2
    
    port is        : /dev/ttyUSB0
    flowcontrol    : none
    baudrate is    : 115200
    parity is      : none
    databits are   : 8
    stopbits are   : 1
    escape is      : C-a
    local echo is  : no
    noinit is      : no
    noreset is     : no
    nolock is      : no
    send_cmd is    : sz -vv
    receive_cmd is : rz -vv -E
    imap is        : 
    omap is        : 
    emap is        : crcrlf,delbs,
    
    Type [C-a] [C-h] to see available commands
    
    Terminal ready
    

    如果沒出出現如下的命令行提示符標識,請按下回車,如果還未出現命令行提示符,說明正在執行其他程序, 你需要先將程序中斷。

    >>> 
    

    CTRL+C 中斷程序,接下來你就可以在終端里面敲入Python的指令。

    picocom的連接至此就介紹完畢。

    嘗試在REPL中編寫代碼

    現在你已經從上文的教程中知道了什么是REPL,以及如何在Windows,Linux和Mac中通過串口連接REPL了,接下來我們一起嘗試嘗試在REPL中編寫幾句代碼。

    Hello World

    讓我們從Hello World開始吧!

    >>> print('Hello World')
    Hello World
    

    最簡單的print函數,快試試吧~

    嘗試點亮一個LED燈吧

    首先導入machine 模塊,machine模塊幾乎包含了整個ESP32的硬件資源的接口.

    >>> import machine
    

    然后寫入machine. 按下Tab按鍵

    >>> machine.
    

    必修技能 TAB

    TAB 可以補全代碼,在一個模塊后輸入.然后使用TAB鍵可以提示出該模塊中的所以內容

    然后我們就可以看到machine下都有哪些子模塊。

    隨著MicroPython版本的迭代,可能你看到的選項和筆者有所出入。

    >>> machine.
    __name__        mem8            mem16           mem32
    freq            reset           unique_id       idle
    disable_irq     enable_irq      time_pulse_us   Timer
    WDT             Pin             Signal          TouchPad
    ADC             DAC             I2C             PWM
    SPI             UART
    

    NodeMCU32-S開發板上有一個藍色的LED, 由P2引腳的輸出來控制,高電平亮,低電平滅,因此我們可以控制P2引腳的輸出來點亮該LED:

    聲明一個管腳,GPIO編號為2,在板子的引腳上標記為P2, 模式為輸出模式,即設置為machin.Pin.OUT

    >>> pin2 = machine.Pin(2, machine.Pin.OUT)
    

    管腳寫入高電平

    >>> pin2.value(1)
    

    這時你應該可以看到該led燈被點亮,散發出寶石般的藍色光芒。

    REPL快捷鍵

    在MicroPython的REPL里面有一些控制指令的快捷鍵。

    • CTRL + C 中斷程序

    • CTRL + D 軟重啟

    • CTRL + E 進入代碼片段粘貼模式

      CTRL-A        -- on a blank line, enter raw REPL mode
      CTRL-B        -- on a blank line, enter normal REPL mode
      CTRL-C        -- interrupt a running program
      CTRL-D        -- on a blank line, do a soft reset of the board
      CTRL-E        -- on a blank line, enter paste mode
    

    粘貼整段代碼

    如果你覺得一行一行的代碼敲起來比較麻煩,你可以整段整段copy。

    MicroPython有一個粘貼模式。

    你可以先copy下面的代碼片段:

    '''
    功能介紹: LED閃爍例程
    '''
    import utime
    import machine
    
    # 聲明一個引腳 例如 D13 作為LED的引腳
    led_pin = machine.Pin(13, machine.Pin.OUT)
    
    while True:
        # 點亮LED -> 高電平
        led_pin.value(1)
        # 延時 500ms
        utime.sleep_ms(500)
        # 關閉LED -> 低電平
        led_pin.value(0)
        # 延時500ms
        utime.sleep_ms(500)
    

    *Windows下,直接鼠標右鍵putty的命令行窗口,即可粘貼 *

    Linux或Mac下,點擊右鍵菜單的粘貼選項粘貼

    警告

    無論在Windows下和Linux或Mac下,都不要嘗試再命令行中直接使用CTRL+V來進行粘貼,這絲毫不起作用,而且會輸入特殊的字符

    注意:粘貼好代碼后,不要嘗試修改粘貼好的代碼,或者追加

    >>> 
    paste mode; Ctrl-C to cancel, Ctrl-D to finish
    === 
    

    然后中端會提示你Ctrl + C 撤銷剛才粘貼的代碼, 就當什么也沒發生過。

    你可以按Ctrl+D 執行你剛才粘貼的代碼。

    注意: 如果代碼片段長了之后,可能會出現粘貼不全的問題, 這類情況,建議直接上傳文件。

    忠告

    代碼長了,還是老老實實保存到腳本文件中去執行吧,粘貼模式會存在很多的問題,不建議使用。

    斷開REPL的連接

    Windows下,你可以直接關閉putty的窗口。

    Linux或Mac下,當然你也可以直接關閉你的終端窗口。但是只需要退出picocom, 即可斷開與ESP32開發板的連接,你需要依次使用到如下的快捷鍵:

    • 先按 Ctrl + A

    • 再按Ctrl + Q

    參考文章

    Getting Started with MicroPython on ESP32 – Hello World, GPIO, and WiFi

    https://www.cnx-software.com/2017/10/16/esp32-micropython-tutorials/

    TODO

    • led配圖,實物接線圖,效果圖

    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人