0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用javascript函數(shù)通過adafruit Huzzah的ajax回調(diào)來控制arduino

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-12 08:47 ? 次閱讀

步驟1:您需要什么

我為要使用ESP8266上的html頁面控制arduino的用戶構(gòu)建了這個(gè)項(xiàng)目。該項(xiàng)目的目標(biāo)是創(chuàng)建一個(gè)簡單的方法,使用javascript函數(shù)設(shè)置arduino上的pin值。對(duì)于樣板onclick =“ SetPin(12,1,0)”會(huì)將您的arduino上的Pin 12設(shè)置為High。

對(duì)于本教程,您將需要以下各項(xiàng)才能準(zhǔn)確進(jìn)行。但是,我認(rèn)為它應(yīng)該適用于大多數(shù)arduino和ESP8266組合。但是,要完全按照我在這里的內(nèi)容進(jìn)行操作,您將需要以下組件。

Arduino Uno-應(yīng)與具有串行Rx Tx的任何arduino兼容產(chǎn)品一起使用

Adafruit Huzzah接線板

USB至串行電纜

4個(gè)低功耗LED

模擬濁度測試儀-任何提供模擬輸出的模擬傳感器都可以使用

Wire

Wifi路由器

帶有移動(dòng)瀏覽器的手機(jī)

Arduino庫。

第2步:準(zhǔn)備Arduino ID

該項(xiàng)目需要一個(gè)新的arduino庫和一些配置,以節(jié)省時(shí)間。我不會(huì)在每個(gè)屏幕上都放一個(gè)鏡頭,而只是要遍歷您需要配置并使其運(yùn)行的所有內(nèi)容。我試圖使它對(duì)用戶來說盡可能容易。

代碼使用許多庫來工作。首先,我們將專注于為ESP8266設(shè)置arduino,在本示例中,我將使用Adafruit Huzzah,因?yàn)槲野l(fā)現(xiàn)adafruit產(chǎn)品是最可靠的,并獲得最佳支持。只要您不嘗試從Adafruit Discord服務(wù)器獲得支持即可。在支持論壇上獲得幫助會(huì)更好。

無論如何,我在ESP8266上使用以下庫

ESP8266WiFi

WiFiClient

ESP8266WebServer

ArduinoJSON

這不是有關(guān)如何下載的教程然后安裝庫,這些是HUZZAH上使用的庫。因此,請(qǐng)找到并安裝它們。

您還需要安裝HUZZAH的板定義,因此,如果轉(zhuǎn)到FILE》首選項(xiàng)

在顯示“其他板管理器URL”的框中,請(qǐng)?zhí)砑右韵?/p>

http://arduino.esp8266。 com/stable/package_esp8266c 。..

如果您已經(jīng)在此字段中添加了某些內(nèi)容,則請(qǐng)確保在其中添加逗號(hào)以添加其他面板URL。單擊確定,然后單擊確定。

工具》開發(fā)板》開發(fā)板管理器

比通過ESP8266社區(qū)安裝ESP8266來搜索ESP8266。

現(xiàn)在很棒,請(qǐng)確保我們具有使arduino代碼正常工作所需的一切。一個(gè)arduino端arduino本身在本教程中僅使用2個(gè)庫。

SoftwareSerial

ArduinoJSON

您應(yīng)該已經(jīng)具備。

步驟3:準(zhǔn)備ESP8266

現(xiàn)在,我們將代碼放到ESP8266(Adafruit HUZZAH)上并進(jìn)行準(zhǔn)備它用于連接到Arduino。解壓縮HUZZAH的代碼,然后打開草圖。在第11和12行上,將ssid和密碼更改為本地網(wǎng)絡(luò)上的WIFI連接的密碼。您會(huì)注意到,草圖文件和index.h文件有2個(gè)文件。 index.h文件是html的存儲(chǔ)位置,它將在您的手機(jī)中顯示。

為wifi設(shè)置正確的SSID和密碼后,您可以編譯代碼并將其加載到ESP8266上。在HUZZAH上,您必須按住標(biāo)有GPIO0的按鈕,然后單擊“ rest”按鈕,然后放開GPIO0按鈕以使芯片進(jìn)入引導(dǎo)加載程序模式。如果芯片已成功進(jìn)入引導(dǎo)加載程序模式,則紅燈會(huì)亮起,指示芯片處于引導(dǎo)加載程序模式。

要連接到ESP8266,您需要使用串行電纜或USB到串行適配器,或者FDTI芯片。在這種情況下,我將按照說明中的說明使用adafruit的電纜。但是,您可以通過Tx和Rx引腳上的TTL通過幾種方式連接到芯片。我希望查看此內(nèi)容的人知道如何連接到芯片以將代碼加載到芯片上。無論如何,繼續(xù)執(zhí)行此步驟,并使用zip文件中的代碼刷新芯片。

步驟4:準(zhǔn)備Arduino

要將代碼加載到arduino,請(qǐng)將板定義更改為Arduino/Genuino Uno。比解壓縮附加到此步驟的文件。然后將其上傳到ardunio。確實(shí)很簡單,所有的辛苦工作已經(jīng)為您完成。我已經(jīng)經(jīng)歷了一個(gè)錯(cuò)誤處理的試驗(yàn),因此您所要做的就是上傳代碼。

步驟5:一起布線

好,所以對(duì)于布線,我上面有一張上面的圖片。

將Huzzah上的Tx連接到arduino的Pin2。

將Huzzah上的Rx連接到arduino的Pin 3。

我在arduino的引腳2和3上創(chuàng)建了另一個(gè)串行插座,以釋放默認(rèn)的串行控制臺(tái)。

將arduino的引腳V +和En連接到5v。 -adafruit Huzzah內(nèi)置有一個(gè)3.3v穩(wěn)壓器,因此像這樣插入這些引腳可能不適用于所有ESP8266模塊。您可能需要連接自己的穩(wěn)壓器。如果您只是想讓事情輕松進(jìn)行,我建議您使用Huzzah。

將GND連接到arduino的GND

在您的LED的arduino線上的引腳12,11,9,8上,我在這里使用了低功耗LED,因?yàn)樗鼈兿牡?a href="http://ttokpm.com/tags/電流/" target="_blank">電流可能過多為了使此實(shí)驗(yàn)簡單起見,會(huì)消耗太多功率。

比起arduino上的A0模擬引腳0,我已經(jīng)插入了Turpitity測試儀的輸出線。但是,您可以插入幾乎任何會(huì)提供模擬讀數(shù)的傳感器的輸出。

這就是您要做的所有事情。

第6步:訪問網(wǎng)頁

現(xiàn)在,您已經(jīng)連接了arduino,并將所有內(nèi)容加載到板上,您需要能夠查看手機(jī)上的html?,F(xiàn)在,我希望您連接到在Huzzah的代碼中設(shè)置了SSID和密碼的同一WiFi路由器。不需要確定路由器已分配給設(shè)備的IP地址。通常,如果您登錄路由器配置,則應(yīng)該有一個(gè)客戶端列表。這顯示了連接到Wifi連接的所有設(shè)備的IP地址。

但是,如果找不到此IP地址,則可以從arduino拔下插頭,然后再次使用串行電纜運(yùn)行它。如果您在設(shè)備上打開串行控制臺(tái),它將在串行控制臺(tái)中將IP地址打印到該設(shè)備,以防您無法找到其他方式。

無論如何,一旦您用手機(jī)連接到同一Wifi網(wǎng)絡(luò)。而不是將您的移動(dòng)Web瀏覽器指向Huzzah的IP地址??雌饋砜赡芘c此類似。 http://192.168.0.107或類似的東西。

我在其中放置了一個(gè)基本頁面,該頁面允許您打開和關(guān)閉4個(gè)LED以及讀取模擬傳感器的值。

步驟7:使用Javascipt

在ESP8266Code草圖中名為index.h的文件中,它應(yīng)作為arduino編輯器中的單獨(dú)選項(xiàng)卡出現(xiàn)。您可以在這里看到我做的基本示例?;旧纤墓ぷ鞣绞绞沁@樣的。

SetPin(12,1,0); SetPin({Pin Number},{Value 1 High 0 Low},{IsAnalog 1 Yes 0 No})

這會(huì)將數(shù)字引腳12的值設(shè)置為高

SetPin( 4,0,0);

這會(huì)將數(shù)字引腳4的值設(shè)置為低

SetPin(A2,439,1)

這會(huì)將模擬引腳2的值設(shè)置為439

同樣,函數(shù)GetJSON將從引腳返回請(qǐng)求的值,并將其放入以指定div ID表示的html中。

GetJSON(‘A0’,1,‘resp_i’)GetJSON({Pin Number},{IsAnalog 1是0否},{要返回結(jié)果的HTML元素的ID})

這將向arduino發(fā)送請(qǐng)求,要求其提供模擬引腳0的值,并將結(jié)果返回給ID為resp_i的Div

GetJSON(12,0,‘mydiv’);

這將詢問arduino獲取數(shù)字引腳0的值并將結(jié)果返回到具有mydiv和id的html元素

步驟8:支持

我希望我的腳本幫助想要使用它的人。我在這里使用了一個(gè)非?;镜膆tml示例,希望其他人可以探索它無法實(shí)現(xiàn)的所有功能。但是,這應(yīng)該演示如何在沒有html頁面加載和類似性質(zhì)的情況下使用ajax控制arduino。

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • javascript
    +關(guān)注

    關(guān)注

    0

    文章

    515

    瀏覽量

    53756
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6458

    瀏覽量

    186507
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Adafruit Huzzah無法從深度睡眠中醒來怎么辦?

    我有一個(gè)問題,Huzzah 沒有從深度睡眠中醒來。 GPIO16 跳線到 Reset 引腳,GPIO0 和 GPIO2 都有 10k 上拉電阻到 V3.3。 如果我使用重置按鈕重置它,我會(huì)
    發(fā)表于 07-19 15:04

    ESP8266 Huzzah不響應(yīng)AT命令的原因?

    我的 esp8266 Huzzah 分線板最近使用 esp 閃存工具,使用 NONOS SDK v2.0.0 重新刷新。我認(rèn)為這將允許 esp 在通過 arduino 串行監(jiān)視器發(fā)送 AT 命令
    發(fā)表于 07-11 08:21

    調(diào)函數(shù)(callback)是什么?調(diào)函數(shù)的實(shí)現(xiàn)方法

    調(diào)函數(shù)是一種特殊的函數(shù),它作為參數(shù)傳遞給另一個(gè)函數(shù),并在被調(diào)用函數(shù)執(zhí)行完畢后被調(diào)用。調(diào)
    發(fā)表于 03-12 11:46 ?2654次閱讀

    函數(shù)指針與調(diào)函數(shù)的應(yīng)用實(shí)例

    通常我們說的指針變量是指向一個(gè)整型、字符型或數(shù)組等變量,而函數(shù)指針是指向函數(shù)。 函數(shù)指針可以像一般函數(shù)一樣,用于調(diào)用函數(shù)、傳遞參數(shù)。
    的頭像 發(fā)表于 03-07 11:13 ?361次閱讀
    <b class='flag-5'>函數(shù)</b>指針與<b class='flag-5'>回</b>調(diào)<b class='flag-5'>函數(shù)</b>的應(yīng)用實(shí)例

    ??嵌入式中調(diào)函數(shù)的實(shí)現(xiàn)方法

    調(diào)函數(shù)的命名規(guī)范沒有固定的標(biāo)準(zhǔn),但是根據(jù)通用慣例和編碼規(guī)范,調(diào)函數(shù)的命名應(yīng)該能夠反映函數(shù)的作用和功能,讓其他開發(fā)者能夠快速理解并使用。
    發(fā)表于 03-04 14:49 ?642次閱讀

    如何讓Adafruit 320x240 IPS TFT顯示屏在PSoC上運(yùn)行?

    我有一臺(tái) Adafruit 320x240 IPS TFT 顯示屏,希望它能夠使用我的 PSoC 4200 主板繪制圖像。 來自 Adafruit 的代碼庫是為 Arduino 設(shè)計(jì)的,我不確定如何讓它在 PSoC 上運(yùn)行。
    發(fā)表于 01-22 06:33

    函數(shù)指針的五大作用

    1,調(diào)函數(shù)機(jī)制函數(shù)指針常用于實(shí)現(xiàn)調(diào)函數(shù)。通過函數(shù)
    的頭像 發(fā)表于 12-06 08:00 ?1815次閱讀
    <b class='flag-5'>函數(shù)</b>指針的五大作用

    javascript屬于前端嗎

    負(fù)責(zé)定義網(wǎng)頁的樣式,而JavaScript負(fù)責(zé)控制網(wǎng)頁的行為和交互。通過JavaScript,前端開發(fā)人員
    的頭像 發(fā)表于 12-03 11:43 ?1357次閱讀

    javascript語言的用途

    于開發(fā)復(fù)雜的Web應(yīng)用、移動(dòng)應(yīng)用、桌面應(yīng)用和服務(wù)器端應(yīng)用。 JavaScript在互聯(lián)網(wǎng)發(fā)展的早期起到了重要作用,它使得網(wǎng)頁不再是靜態(tài)的,而是能夠與用戶進(jìn)行實(shí)時(shí)的交互。通過JavaScript,我們可以對(duì)網(wǎng)頁的內(nèi)容、樣式和行為進(jìn)
    的頭像 發(fā)表于 12-03 11:30 ?659次閱讀

    JavaScript的用途和功能

    開發(fā)中發(fā)揮著非常重要的作用,并為用戶提供了更為豐富的使用體驗(yàn)。下面我們將詳細(xì)討論JavaScript的用途和功能。 首先,JavaScript用于網(wǎng)頁開發(fā)中的動(dòng)態(tài)內(nèi)容。通過使用JavaScri
    的頭像 發(fā)表于 12-03 11:12 ?824次閱讀

    javascript指什么

    JavaScript是一種高級(jí)編程語言,通常用于為網(wǎng)頁添加交互功能。它是一種面向?qū)ο蟮恼Z言,旨在通過編寫代碼來控制網(wǎng)頁的行為,使用戶能夠與網(wǎng)頁進(jìn)行動(dòng)態(tài)交互。JavaScript能夠與H
    的頭像 發(fā)表于 12-03 11:11 ?821次閱讀

    javascript:;怎么解決

    javascript:” 是一個(gè)JavaScript偽協(xié)議,它通常出現(xiàn)在URL地址欄或鏈接中,用于執(zhí)行JavaScript代碼。然而,有時(shí)它可能會(huì)導(dǎo)致一些問題,特別是在一些不支持
    的頭像 發(fā)表于 11-26 14:39 ?7084次閱讀

    javascript深入淺出

    、數(shù)據(jù)類型、運(yùn)算符、控制結(jié)構(gòu)、函數(shù)等。變量是用來存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)符,數(shù)據(jù)類型包括數(shù)字、字符串、布爾值、對(duì)象、數(shù)組等。運(yùn)算
    的頭像 發(fā)表于 11-16 10:34 ?2228次閱讀

    javascript基本類型有哪些

    (Null):表示空值。 未定義類型(Undefined):表示未定義的值。 對(duì)象類型(Object):表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),比如數(shù)組、函數(shù)等。 符號(hào)類型(Symbol):表示唯一的標(biāo)識(shí)符。 除了上述基本類型,JavaScript還支持多種其他類型,如數(shù)組類型、
    的頭像 發(fā)表于 11-16 10:32 ?468次閱讀

    javascript可以關(guān)閉嗎

    **JavaScript是一種編程語言,它不能被“關(guān)閉”。**JavaScript是一種客戶端腳本語言,它通常嵌入在HTML頁面中。當(dāng)用戶訪問一個(gè)包含JavaScript的網(wǎng)頁時(shí),瀏覽器會(huì)執(zhí)行這些
    的頭像 發(fā)表于 11-16 10:20 ?1392次閱讀