NodeMCU(ESP8266)開發筆記
1.NodeMCU簡介
NodeMCU 是一款開源的物聯網開發平臺,其韌體和開發板均開源,自帶 WIFI 模組。基於該平臺,用幾行簡單的 Lua 指令碼就能開發物聯網應用。
其主要特點如下:
像 Arduino 一樣操作硬體 IO 提供硬體的高階介面,可以將應用開發者從繁複的硬體配置、暫存器操作中解放出來。用互動式 Lua 指令碼,像 Arduino 一樣編寫硬體程式碼!
用 Nodejs 類似語法寫網路應用 事件驅動型 API 極大的方便了使用者進行網路應用開發,使用類似 Nodejs 的方式編寫網路程式碼,並運行於 5mm*5mm 大小的 MCU 之上,加快您的物聯網開發進度。
超低成本的 WIFI 模組 用於快速原型的開發板,集成了售價低於 10 人民幣 WIFI 晶片 ESP8266,為您提供價效比最高的物聯網應用開發平臺。
基於樂鑫 ESP8266 的 NodeMCU 開發板,具有 GPIO、PWM、I2C、1-Wire、ADC 等功能,結合 NodeMCU 韌體為您的原型開發提供最快速的途徑。
其硬體詳細配置如下:
- 核心模組為 ESP8266
- MCU 為 Xtensa L106
- RAM 50K
- Flash 512K
- D1~D10:10 GPIO, 每個都能配置為 PWM, I2C, 1-wire
有兩種串列埠配置
- CP2102 USB 串列埠,即插即用(官方驅動支援 Windows, OS X,Linux 以及 VMware)
- CH340 USB 串列埠,國內用的較多,需要安裝ch340驅動。
注:VMware中,安裝Ubuntu系統,只需在主機中安裝驅動即可。然後將裝置連線到VMware中。虛擬機器->可移動裝置,可以看到ch340裝置,點選連線即可。
CP2102版本
CH340版本
2.開發環境
NodeMCU 目前支援的開發主機系統型別涵蓋 Windows,Linux 和 Mac OS X,也支援通過 VMware 虛擬機器搭建的 Linux 環境。
需要提到的是,如果用虛擬機器的話,請優先用 VMware 而不是 VirtualBox。雖然用 VirtualBox 也能夠通過串列埠虛擬化 進行 Lua 開發,但是由於 VirtualBox 無法虛擬 uhci 的 cp210x,所以 VirtualBox 中的 Linux 上就無法直接燒錄韌體,會很不方便。
下面是我們推薦的優選開發環境:
純 Linux(首推 ubuntu)
在 Mac OS X 上安裝 VMware,在 VMware 中執行 Linux(首推 Lubuntu)
在 Windows 上安裝 VMware,在 VMware 中執行 Linux(首推 Lubuntu)
本文主要介紹上述三種,實際上核心還是 Linux 開發環境,後面兩個只要額外安裝 VMware 並在主機上也安裝上 USB 串列埠驅動即可。
如果大家手頭沒有 Linux 環境,那麼建議通過 VMware 來安裝 Linux,這樣更安全可靠,避免搞壞原來的系統。
VMware 可以從官方下載,安裝好以後再從 Ubuntu 官方下載 Lubuntu 14.04 ISO,之後啟動 VMware 來安裝 Lubuntu。安裝時先建立/Add 一個 Lubuntu(Create a custom virtual machine -> Linux -> Ubuntu 64bit),之後通過設定/Settings 選擇 Startup Disk 從 CD/DVD 啟動安裝,選擇剛下載的 ISO,安裝成功後,再通過 Startup Disk 選回從 Hard Disk(SCSI) 啟動即可。
至於純 Windows 或者純 Mac OS X 環境,都不推薦,因為在 Linux 下,一條命令就可以安裝所需的大部分工具,而在 Windows 和 Mac OS X 會浪費掉大量的時間去不同地方找不同工具,然後再花費更多倍的時間去解決各類軟體編譯和安裝問題,事倍功半。而且 OS X 對於基本的開發環境,往往還存在收費服務,實在是不友好,珍惜生命,遠離它們!
但是如果真地厚愛它們,大家還是可以通過參考後續資料,尤其是 Noduino/Noduino SDK 相關部分,很詳細地介紹到了 Windows 和 Mac OS X 的開發環境,另外,參考資料中的其他軟體或者工具基本都有提供 README.md 對各自的安裝做了說明,請予以參考。
3.操作步驟
以Windows 和 VMware下Ubuntu環境為例(CH340版本):
Windows環境下NodeMCU開發
需要用到的工具:
- CH340驅動
- ESP8266Flasher – 燒錄ESP韌體
- ESPlorer – 類似於串列埠除錯助手,用於和NodeMCU進行互動,也可以上傳lua指令碼
注:需要java環境,需要安裝JDK。
(1)安裝CH340驅動
下載CH340驅動,安裝之後。
右擊 我的電腦->管理->裝置管理器->埠(COM和LPT) 可以看到ch340驅動以及串列埠號。
(2)獲取韌體
有三種方式可以得到韌體:
NodeMCU提供了線上雲編譯,選擇好需要的模組,填寫郵箱地址,很快會發到郵箱中。參考:https://nodemcu-build.com/(推薦)
下載別人編譯好的韌體包。
自行編譯,得到韌體包。
(3)韌體燒錄
設定好串列埠號
點選Config->點選小齒輪按鈕,設定好得到的韌體路徑
點選Flash
(4)開始使用
開啟ESPlorer.jar,會看到如下介面:
注:ESPlorer需要安裝JDK環境點選重新整理按鈕,選擇串列埠號,點選open,會顯示正在連線。如果好長時間連線不上,可以按一下NodeMCU上的reset按鈕。會顯示出韌體資訊,點選Chip ID,會返回ID資訊,說明互動正常。
-
>print(“Hello,NodeMCU”) >Hello,NodeMCU
4. 左邊區域是lua指令碼編寫區域。
編寫好lua指令碼,點選Send to ESP,可以看到右邊區域開始上傳程式碼,結束之後。程式碼開始執行,右邊區域顯示互動資訊。
點選 Upload ,將程式碼上傳到NodeMCU, 命令列輸入dofile(“filename.lua”),開始執行filename.lua。
注:如果在Send 或者 Upload 失敗,可以按reset之後,多次嘗試。
注:Save to ESP、Send to ESP、Run、Upload四種有些區別,可以自己去發現,本人沒有深究。
Vmare下Ubuntu環境開發
注: 本人使用的版本
- VMware workstations 12 pro
- Ubuntu 14.0 Desktop
需要用到的工具:
- minicom – 串列埠除錯工具
- luatool – 上傳lua程式碼
- esptool – 燒錄esp韌體
(1)下載安裝ch340驅動
需要主機安裝驅動,然後VMware中點選 虛擬機器->可移動裝置 可以看到ch340裝置,點選連線。
dmesg 命令檢視已經安裝的ch340驅動
ls -l /dev/ttyUSB0 檢視驅動安裝的時間等
(2)安裝minicom
minicom為linux下串列埠通訊工具,用做NodeMcu除錯
$ sudo apt-get install minicom -- 下載安裝minicom
$ sudo minicom -D /dev/ttyUSB0 -- 使用-D可以指定串列埠裝置
進入minicom之後,可以通過crtl-A進入設定模式,然後按 A - Z 鍵進入不同的設定介面。
常用的按鍵:
Q :退出minicom
L :儲存串列埠日誌
Z :獲得幫助
P :設定串列埠
(3) 下載並燒錄esp韌體
$ wget -c https://github.com/nodemcu/nodemcu-firmware/``releases/download/0.9.6-dev_20150704/nodemcu_float_0.9.6-dev_20150704.bin
下載別人編譯好的韌體
接著咱們把燒錄工具 esptool.py 下載下來。同時安裝其他必要工具。
$ sudo apt-get install git python python-serial python-setuptools
$ git clone https://github.com/themadinventor/esptool.git
$ cd esptool
$ python setup.py install
接著通過 esptool.py 燒錄韌體:
$ sudo esptool.py --port /dev/ttyUSB0 write_flash -fm dio -fs 32m -ff 40m 0x00000 nodemcu_float_0.9.6-dev_20150704.bin
燒錄完以後按下 RST 重啟進入新韌體。
sptool.py 燒寫時預設的通訊波特率為 115200,為了加速燒寫速度,可以通過 –baud 921600 設定為 921600。
開機之後可以通過
file.format() 格式化檔案系統
(4) 下載並安裝luatool
測試過兩個工具都可以用來上傳 Lua 程式,分別是:
luatool.py:可用於命令列傳送 Lua 指令碼,無須複雜的圖形化工具支援,同時支援通過串列埠和 Telnet 上傳
nodemcu.py:除了不支援通過 Telnet 上傳外,基本功能同 luatool,只是操作方式稍有差異
下載上述工具:
$ git clone https://github.com/4refr0nt/luatool.git
$ git clone https://github.com/md5crypt/nodemcu.py.git
兩個都可以進行檔案傳輸,第二個還可以作為串列埠終端,兩個都依賴 pySerial,第二個還需要安裝 clipboard:
$ easy_install clipboard
(5)開始使用
$ minicom -D /dev/ttyUSB0 --進入串列埠助手
file.format() --格式化檔案系統
print(“Hello,NodeMCU”) --列印字串
gpio.mode(0, gpio.OUTPUT) --設定0腳為輸出模式
gpio.write(0, gpio.LOW) --0腳置低
gpio.write(0, gpio.HIGH) --0腳置高
node.restart() --重啟NodeMCU
以上是通過串列埠操作執行每條命令,可以通過luatool批量上傳,將指令碼提前寫好進行批量上傳。
在上傳前,寫好一個lua指令碼
$ vi test.lua
print('Hello, NodeMCU 1.0')
gpio.mode(4, gpio.OUTPUT)
gpio.write(4, gpio.LOW)
通過luatool上傳
$ cd /luatool
$ sudo ./luatool.py -p /dev/ttyUSB0 -b 9600 -f test.lua -r
上傳完成之後,
$sudo minicom -D /dev/ttyUSB0 --進入minicom
dofile("test.lua") --執行test指令碼
-p 指定上傳裝置
-b 設定波特率
-f 指定指令碼路徑
-r 上傳完重啟
-h 獲得幫助
相關推薦
NodeMCU(ESP8266)開發筆記
1.NodeMCU簡介 NodeMCU 是一款開源的物聯網開發平臺,其韌體和開發板均開源,自帶 WIFI 模組。基於該平臺,用幾行簡單的 Lua 指令碼就能開發物聯網應用。 其主要特點如下: 像 Arduino 一樣操作硬體 IO 提供硬體的
JavaEE互聯網輕量級框架整合開發(書籍)閱讀筆記(1):Mybatis和Hibernate概念理解
bat 特定 定義 理解 緩存 面向 ont span 等待 一、關鍵字說明: oop:面向對象 aop:面向切面 ioc:控制反轉 orm:對象關系映射 pojo:數據庫表映射的java實體類 二、常識說明:1.hibernate和mybatis都屬於持久層、orm
JavaEE互聯網輕量級框架整合開發(書籍)閱讀筆記(2):SSM+Redis概念理解
重復 技術 理解 size 從數據 一個 ron bat 互聯網 一、SSM+Redis的結構圖 在Java互聯網中,以Spring+SpringMVC+MyBatis(SSM)作為主流框架,SSM+Redis的結構圖如下: 二、下面介紹它們各自承擔的功能: 1.S
java學習筆記(一)開發環境配置
我現在使用的windows平臺,主要介紹win平臺的安裝。 點選之後,進入下載頁面, 首先接受這個協議,然後下載自己對應的包。這
Flask 入門筆記(1)開發環境
Flask入門筆記(1) 開發環境 採用虛擬機器和docker搭建開發環境,虛擬機器作業系統為debian 8,安裝docker和visual studio code,共需要3個docker容器:mysql、redis和python 3.6。 Docker映
A53開發板——WIFI(ESP8266)的應用例子
首先你得需要ESP8266得詳細資料,瞭解模式和AT指令 其餘程式碼中有詳細得註釋 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #incl
Django 開發學習筆記(7)- 開發特定主題顯示的頁面
這一節其實沒有什麼新的知識,我們只是把開發頁面的一般流程再和大家重複一下。 1、在 learning_logs 模組配置 urls 2、編寫 views 3、編寫模板 topic.html 下面是具體編寫步驟: 1、在 learning_logs 模組
樹莓派開發筆記(一) 開發環境搭建
開發環境搭建 開發環境搭建 硬體準備 系統燒錄 系統配置 基本配置 其他配置 安裝開發軟體 開發環境搭建 硬體準備 SD-Card 樹莓派
遊戲開發學習筆記(七)開發揹包系統
思路: Bag:管理揹包裡的格子 BagItemGrid:管理格子儲存物品的資訊(id及num) BagItem:管理物品拖拽功能及物品物品的更新顯示 Bag:管理揹包裡的格子 建立UI,Bag_item 和Bag_item_grid的Prefab, Bag新增Bag指令碼
angularjs2 學習筆記(一) 開發環境搭建 (vs2013)
開發環境,vs2013 update 5,win7 x64,目前最新angular2版本為beta 17 第一步:安裝node.js 安裝node.js(https://nodejs.org/en/),為的是能夠使用npm獲得angular2.0的開發包 驗證
Kafka學習筆記4--Kafka生產者的客戶端(PHP)開發
一、準備工作 雖然 Kafka 是用 Java/Scala 語言編寫的,但這不妨礙它對多語言的支援。可以在 Kafka 官網的 CLIENTS 檢視 Kafka 支援的語言,其中包括 C/C++、Python、Go 等語言。 PHP 操作 Kafka 需要安裝 librdkafka 庫和 kafka 的 PH
[iOS]關於 App 混合(Hybrid)開發的優化,包括H5、Weex等(本篇博客主要針對 iOS 應用講解,但該思想同樣適用於Android)
color 數據 後臺 lib 新版 生成 下載地址 代碼 版本 我們知道混合開發,可以節省很多成本(時間成本,經濟成本等等),所以有很多公司比較鐘愛這種開發形式,今天所講的優化方式,也是我在我們公司的應用中實際用了的,而且我寫的這個優化的 SDK 已經開源到 gith
(我是初學者)第一次項目開發(二)開發中遇到的問題和註意事項
持久層 數據庫 認識 碼代碼 操作 出錯 排序 文檔 項目 這周正式開始做項目練習,這才發現實際去做的時候會遇到和出現很多的問題 在這裏說一說我的體會,請指正 首先,實體類 1、實體類中有哪些屬性,類型是什麽,並根據屬性建立sql的相應表格, 2、哪些屬性需要在寫在實體
(一)Shiro筆記——簡介、 架構分析
isp 網絡爬蟲 png struts web subject nts 決定 img 1. Shiro是什麽 Apache Shiro是一個強大靈活的開源安全框架,可以完全處理身份驗證,授權,企業會話管理和加密。 Apache Shiro的首要目標是易於使用和理解。
HBase概念學習(八)開發一個類twitter系統之表設計
至少 創建用戶 列表 ase wke long 少包 mali 。。 這邊文章先將可能的需求分析一下,設計出HBase表,下一步再開始編寫client代碼。 TwiBase系統 1、背景 為了加深HBase基本概念的學習,參考HBase實戰這本書實際動手做了這個樣
從零開始學習音視頻編程技術(三) 開發環境搭建(Qt4.86手動設置環境,主要就是設置g++和qmake,比較透徹,附下載鏈接)
路徑 details 分享 baidu 末尾 是我 其中 找到 source 1.先下載安裝Qt 我們使用的版本是4.8。 可以自行百度下載也可以從下面的網盤地址下載: Qt庫和編譯器下載: 鏈接:http://pan.baidu.com/s/1hrUxLIG 密碼
C# 哈希表(Hashtable)用法筆記
timestamp remove 空間 方法 generic alt dsi 項目 bool 一、什麽是Hashtable? Hashtable 類代表了一系列基於鍵的哈希代碼組織起來的鍵/值對。它使用鍵來訪問集合中的元素。 當您使用鍵訪問元素時,則使用哈希表,而且
握手API網關(7)開發指南-API參考
custom psd title control test 機制 找不到 con 列表 一、簡介 用戶可以使用開發指南介紹的 API 對 API 網關服務進行相關操作。 術語表 術語全稱中文說明 Region 地域 用戶開放API,需選擇API在API網關的部署地
教務系統維護日誌(2)---學習筆記
ati basepath clas color nbsp logs gets 學習 pan 1. 1 <% 2 String path = request.getContextPath(); 3 String basePath = request.getSche