Arduino ESP8266 文檔 - 硬件資料

Digital IO(數(shù)字輸入輸出接口)

Arduino中的管腳編號(hào)和ESP8266 GPIO管腳編號(hào)相對(duì)應(yīng)∽得校可以直接使用pinMode,digitalRead,digitalWrite,例如讀GPIO2贪嫂,使用digitalRead(2)蛆橡。
引腳 0-15 可以使用INPUT, OUTPUT, INPUT_PULLUP邪意。 引腳 16 可以使用INPUT, OUTPUT, INPUT_PULLDOWN_16。 啟動(dòng)時(shí)引腳被設(shè)置成INPUT丽蝎。
引腳也可以用于其他功能猎拨,像 Serial, I2C, SPI。這些功能有對(duì)應(yīng)的庫(kù)屠阻。常見(jiàn)的ESP-12模塊引腳對(duì)應(yīng)關(guān)系如下圖红省。

image

引腳功能

圖中沒(méi)有顯示 6-11引腳,正常情況它們用來(lái)連接模塊上的閃存芯片国觉。把這些引腳作為IO引腳使用可能導(dǎo)致程序崩潰吧恃。
有些開(kāi)發(fā)板和模塊(ESP-12ED, NodeMCU 1.0)會(huì)把引腳9和11分離出來(lái)。如果flash芯片工作在DIO模式下(而不是默認(rèn)的QIO模式)麻诀,就可以作為IO使用痕寓。
可以通過(guò)attachInterrupt,detachInterrupt提供引腳中斷功能。除GPIO16外蝇闭,中斷可以附加到任何GPIO引腳上呻率。支持標(biāo)準(zhǔn)Arduino中斷類(lèi)型:CHANGE, RISING, FALLING

Analog input(模擬輸入)

ESP8266提供一個(gè)ADC通道丁眼。它既可用于讀取ADC引腳的電壓筷凤,也可用于讀取模塊供電電壓(VCC)。
若要讀取附加在ADC上的外部電壓,可以使用analogRead(A0)藐守。ESP8266輸入電壓范圍是0-1.0V挪丢,有些開(kāi)發(fā)板可能會(huì)使用分壓。安全起見(jiàn)最好<1.0V卢厂。例如0.5V在512附近取值乾蓬,則最大電壓為1.0V,但是在150附近取值,則最大電壓是3.3V慎恒, 3.3V可能會(huì)損壞ESP8266任内。
使用ESP.getVcc()讀取VCC電壓,ADC引腳必須斷開(kāi)并在程序中添加如下代碼:

ADC_MODE(ADC_VCC);

這行必須在所有函數(shù)體外融柬,比如放在#include行后面死嗦。

Analog output(模擬輸出)

analogWrite(pin, value) 在指定的引腳上啟用PWM功能。PWM可以在0-16引腳上使用粒氧。使用analogWrite(pin, 0)來(lái)禁用引腳的PWM功能越除。value取值范圍在0 - PWMRANGE,默認(rèn)是1023,PWM取值范圍可以使用analogWriteRange(new_range)來(lái)設(shè)定外盯。
PWM默認(rèn)頻率為1kHz摘盆。可以用analogWriteFreq(new_frequency)來(lái)改變頻率饱苟。

Timing and delays(定時(shí)和延遲)

millis()micros()分別返回重置后經(jīng)過(guò)的毫秒數(shù)和微妙數(shù)孩擂。
delay(ms)程序暫停(毫秒)并允許運(yùn)行WiFi和TCP/IP任務(wù)。delayMicroseconds(us)程序暫停(微妙)箱熬。
當(dāng)連接WiFi時(shí),除了主程序外還需要在芯片上運(yùn)行很多代碼类垦。每次loop()函數(shù)完成或者調(diào)用延時(shí)函數(shù),WiFi 和 TCP/IP庫(kù)都有機(jī)會(huì)處理掛起的任務(wù)坦弟。如果你的程序某處有一個(gè)循環(huán)需要花費(fèi)很多時(shí)間(>50ms)而沒(méi)有調(diào)用延時(shí)函數(shù)护锤,你可以考慮添加一個(gè)延時(shí)函數(shù)調(diào)用來(lái)保存WiFi堆棧穩(wěn)定運(yùn)行。
還有一個(gè)yield()函數(shù)酿傍,它相當(dāng)于delay(0)烙懦。另一個(gè)要注意的是delayMicroseconds函數(shù)排斥其他任務(wù),因此不推薦使用延遲超過(guò)20ms赤炒。

Serial(串行)

Serial對(duì)象的工作方式與常規(guī)Arduino的工作方式大致相同氯析。 除硬件FIFO(TX和RX為128字節(jié))外,Serial還有256字節(jié)的TX和RX緩沖區(qū)莺褒。 發(fā)送和接收都是中斷驅(qū)動(dòng)的掩缓。 當(dāng)相應(yīng)的FIFO緩沖區(qū)滿(mǎn)/空時(shí),寫(xiě)和讀功能僅打斷主程序的運(yùn)行遵岩。 請(qǐng)注意你辣,可以自定義額外的256位緩沖區(qū)的長(zhǎng)度巡通。
Serial使用UART0,映射到引腳GPIO1(TX)和GPIO3(RX)舍哄。 通過(guò)在Serial.begin之后調(diào)用Serial.swap()宴凉,可以將串行重新映射到GPIO15(TX)和GPIO13(RX)。 再次調(diào)用Serial.swap()將UART0映射回GPIO1和GPIO3表悬。
Serial1使用UART1,TX引腳是GPIO2.UART1不能用于接收數(shù)據(jù)弥锄,因?yàn)橥ǔK挥脕?lái)連接閃存芯片。要使用Serial1可以調(diào)用Serial1.begin(baudrate)蟆沫。
如果未使用Serial1且未交換Serial籽暇,則可以通過(guò)在Serial.begin之后調(diào)用Serial.set_tx(2)或直接使用Serial.begin(baud,config饭庞,mode戒悠,2)將UART0的TX映射到GPIO2。
默認(rèn)情況下舟山,調(diào)用Serial.begin時(shí)救崔,將禁用WiFi庫(kù)的診斷輸出。 要再次啟用調(diào)試輸出捏顺,請(qǐng)調(diào)用 Serial.setDebugOutput(true)。 要將調(diào)試輸出重定向到Serial1纬黎,請(qǐng)調(diào)用Serial1.setDebugOutput(true)幅骄。
你也需要使用Serial.setDebugOutput(true)來(lái)啟用printf()函數(shù)的輸出功能。
Serial.setRxBufferSize(size_t size)方法允許定義接收緩沖區(qū)深度本今。 默認(rèn)值為256拆座。
SerialSerial1對(duì)象都支持5,6,7,8位數(shù)據(jù),奇(O),偶(E),無(wú)奇偶(N)校驗(yàn),以及1或2個(gè)停止位冠息。 要設(shè)置所需模式挪凑,請(qǐng)調(diào)用Serial.baudRate(),Serial1.baudRate().返回一個(gè)表示當(dāng)前波特率的int值。例如

Serial.begin(57600); //將波特率設(shè)置為57600
int br = Serial.baudRate(); //獲取當(dāng)前波特率
Serial.printf("串口速率是 %d bps", br); //輸出 "串口速率是 57600 bps"

SerialSerial1對(duì)象都是HardwareSerial類(lèi)的實(shí)例逛艰。
原作者做過(guò)ESP8266官方的Software Serial庫(kù)躏碳,具體請(qǐng)查看pull request.
請(qǐng)注意,此實(shí)現(xiàn)僅適用于基于ESP8266的模塊散怖,不適用于其他Arduino模塊菇绵。
要檢測(cè)串行口上未知波特率數(shù)據(jù),請(qǐng)使用Serial.detectBaudrate(time_t timeoutMillis)镇眷。 此方法嘗試檢測(cè)波特率最大超時(shí)毫秒數(shù)咬最。 如果未檢測(cè)到波特率,則返回零欠动,否則返回檢測(cè)到的波特率永乌。 可以在調(diào)用Serial.begin()之前調(diào)用detectBaudrate()函數(shù),因?yàn)樗恍枰邮站彌_區(qū)和串行配置參數(shù)。
UART無(wú)法檢測(cè)其他參數(shù)翅雏,如啟動(dòng)或停止位數(shù)圈驼,數(shù)據(jù)位數(shù)或奇偶校驗(yàn)。
檢測(cè)本身不會(huì)改變波特率枚荣,檢測(cè)后應(yīng)使用Serial.begin(detectedBaudrate)設(shè)置碗脊。
檢測(cè)速度非常快橄妆,只需幾個(gè)輸入字節(jié)衙伶。
SerialDetectBaudrate.ino是一個(gè)完整的用法示例。

Progmem(程序)

程序存儲(chǔ)器功能與常規(guī)Arduino的工作方式大致相同; 將只讀數(shù)據(jù)和字符串放在只讀存儲(chǔ)器中并為應(yīng)用程序釋放堆棧害碾。 重要的區(qū)別在于矢劲,在ESP8266上,文字字符串不是合并的慌随。 這意味著在F(“”)和/或PSTR(“”)內(nèi)定義的相同文字字符串將占用代碼中每個(gè)實(shí)例的空間芬沉。 因此,你需要自己管理重復(fù)的字符串阁猜。
有一個(gè)輔助宏FPSTR()可以很方便的將const PROGMEM字符串傳遞給__FlashStringHelper丸逸。

String response1;
response1 += F("http:");
...
String response2;
response2 += F("http:");

使用FPSTR...

const char HTTP[] PROGMEM = "http:";
...
{
String response1;
response1 += FPSTR(HTTP);
...
String response2;
response2 += FPSTR(HTTP);
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市剃袍,隨后出現(xiàn)的幾起案子黄刚,更是在濱河造成了極大的恐慌,老刑警劉巖民效,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憔维,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡畏邢,警方通過(guò)查閱死者的電腦和手機(jī)业扒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舒萎,“玉大人程储,你說(shuō)我怎么就攤上這事”矍蓿” “怎么了虱肄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)交煞。 經(jīng)常有香客問(wèn)我咏窿,道長(zhǎng),這世上最難降的妖魔是什么素征? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任集嵌,我火速辦了婚禮萝挤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘根欧。我一直安慰自己怜珍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布凤粗。 她就那樣靜靜地躺著酥泛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫌拣。 梳的紋絲不亂的頭發(fā)上柔袁,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音异逐,去河邊找鬼捶索。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灰瞻,可吹牛的內(nèi)容都是我干的腥例。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酝润,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼燎竖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起要销,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤底瓣,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蕉陋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拨扶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年凳鬓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片患民。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缩举,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匹颤,到底是詐尸還是另有隱情仅孩,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布印蓖,位于F島的核電站辽慕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赦肃。R本人自食惡果不足惜溅蛉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一公浪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧船侧,春花似錦欠气、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至袁梗,卻和暖如春宜鸯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背围段。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工顾翼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奈泪。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓适贸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親涝桅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拜姿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 本文翻譯自 Arduino 串行通訊的官方文檔。 本文的最新版本位于:https://github.com/iwh...
    import_hello閱讀 3,706評(píng)論 0 7
  • Arduino Due有14個(gè)數(shù)字I/O冯遂,6個(gè)模擬I/O蕊肥,一個(gè)復(fù)位開(kāi)關(guān),一個(gè)ICSP下載口蛤肌,7-12v電源供電壁却。 ...
    麥牛2013閱讀 3,322評(píng)論 0 8
  • due有14個(gè)數(shù)字i/o,6個(gè)模擬i/o裸准,一個(gè)復(fù)位開(kāi)關(guān)展东,一個(gè)icsp下載口,7-12v電源供電 14個(gè)數(shù)字i/o炒俱,...
    麥牛2013閱讀 620評(píng)論 1 1
  • 醫(yī)院這種地方权悟,每天進(jìn)進(jìn)出出的砸王,不是為自己生命擔(dān)憂(yōu),身體出現(xiàn)毛病的人峦阁、就是醫(yī)生谦铃、護(hù)士和其他的工作人員,或病人家屬榔昔。 ...
    原心_愿閱讀 1,491評(píng)論 5 6
  • 輕輕的荷辕,在茫茫人海中凿跳,微微的,擁抱自己的憤怒疮方,耳語(yǔ)盈隱:我需要你控嗜! 我已經(jīng)長(zhǎng)大了,我需要自己解決問(wèn)題而不是依賴(lài)他人...
    _辰媽閱讀 136評(píng)論 0 0