步驟1:您需要做什么
對于此項目,只需最少兩件事即可使其工作。其他所有內容都是您可以包括的附加功能。
所需的部件是:
Arduino以太網(wǎng)屏蔽-注意:如果您使用的是較舊的屏蔽,則將無法使用。 SD卡。如果您沒有防護罩,請獲取最新版本?。?!
可選部件:
放入其中的盒子-推薦
伺服
液晶屏
第二個Arduino
所需的任何聲納和控制器
長電纜或無線收發(fā)器(像Xbee)
步驟2:Web入門
您要做的第一件事需要做的是在arduino上放置以太網(wǎng)屏蔽。如果需要幫助,請將屏蔽罩上的引腳名稱與Arduino的引腳名稱對齊。然后將其插入計算機,然后將以太網(wǎng)電纜從路由器連接到Arduino。打開Arduino IDE,并在arduino-00xx-》 library-》 Ethernet下運行WebServer示例。
打開您喜歡的Web瀏覽器,然后輸入http://192.168.1.177。您應該看到類似下圖的內容。如果它不起作用,請勿恐慌!您可能有一個Internet服務提供商,其阻止了端口80(標準的http端口)。
要對此進行測試,我們將嘗試以下方法之一轉到端口8080或8081。轉到WebServer草圖,找到顯示以下內容的行:Server server(80);它是草圖的開始。將80更改為8080或8081?,F(xiàn)在上傳。要進入您的網(wǎng)站,您需要輸入:http://192.168.1.177:8080或http://192.168.1.177:8081。如果有效,那就太好了,您可以繼續(xù)下一步?。?! portforward.com是尋求轉發(fā)幫助的好地方。
在您興奮并打電話給您的朋友上車之前,我們遇到了問題。您站點的IP地址只能由連接到路由器的計算機訪問。沒有其他人可以訪問它。我們如何解決這個問題???我們使用端口轉發(fā)。這可能很容易,也可能很難,具體取決于您和路由器的制作方式。您將需要訪問路由器的設置頁面并進行搜索,直到看到鏈接或選項卡或任何名為“端口轉發(fā)”或“端口轉發(fā)/端口觸發(fā)”或類似名稱的內容。轉到該頁面,然后選擇一個新的 http 服務。輸入Web服務器的IP,并將起始端口和結束端口設置為8080或8081。保存更改,現(xiàn)在人們可以從路由器外部訪問您的網(wǎng)站。但是您將需要一個新的IP。路由器的IP。請訪問www.whatismyip.com。請勿訪問http://this.is.my.ip:8080或http://this.is.my.ip:8081的IP。使用這個和是以及我和 ip 分別代表您的地址。
現(xiàn)在致電您的最親密的朋友,讓他們看看。可是等等?。?!仍然存在一個問題,記住所有這些數(shù)字可能會很痛苦!我們并不擅長記住數(shù)字字符串,但是我們擅長記住單詞和名稱。
要解決此問題,您可能希望獲得一個實際的域名,例如example.com。最簡單的方法是訪問dyndns.com并注冊一個免費帳戶,然后選擇一個免費域名。其中包括您的名字 .dyndns- 某物 .com或您的名字 .dyndns。 some2or3letterending ?,F(xiàn)在將此域設置為路由器的IP。要訪問您的站點,您將鍵入http://yourname.dyndns.whatever:8080或8081,具體取決于您的服務器端口。在Internet Explorer中,需要http://,但對于80以外的其他端口,則不需要Firefox。
您可以采取的最后一步(可選)是制作網(wǎng)絡跳,而不必在:808x上鍵入結束。我已將http://teslalingeweb.dyndns-web.com指向路由器的ip,并將http://teslaling.dyndns-web.com設置為http://teslalingeweb.dyndns-web.com:8081的網(wǎng)絡跳。對于端口80上的網(wǎng)站,不需要http://。
現(xiàn)在您已經在網(wǎng)站上擁有了網(wǎng)站,您可以構建服務器并設計網(wǎng)站!
步驟3:構建Web服務器
雖然我將向您展示我的Web服務器設計,但完全由您決定如何布局和設計,但是這里有一些指導原則。
我建議將arduino放在一個角落,以便可以訪問電源,USB和以太網(wǎng)端口以及SD卡插槽。
我也建議使用堅固的盒子,我使用的盒子不是很堅固,現(xiàn)在伺服器的重量
如果打算安裝LCD屏幕,請先將其焊接在其上,然后將其連接至以太網(wǎng)屏蔽,然后再放入盒中,盒內有8根電線可供連接! !
第4步:連接設備
與該項目的其他所有內容一樣,您可以選擇要添加到ServDuino中的其他內容。我有一些建議和規(guī)則,您可以遵循這些建議和規(guī)則以使其成功構建。
伺服。
Theservo易于連接,將紅色線連接到+5,黑色線連接到gnd,黃色(或第三根導線)連接到pwm引腳。在主板上,pwm引腳包括3、5、6、9、10、11。但是,不能使用引腳10和11,因為它們用于與以太網(wǎng)屏蔽和SD卡的SPI通信。如果您使用delay或millis(),我建議不要使用5或6針,因為如果ServDuino在計算機旁邊,會有一個令人討厭的抖動!
LCD屏幕。
一個字符LCD屏幕最多可連接6個數(shù)據(jù)引腳。很好,因為僅剩6個數(shù)字引腳?,F(xiàn)在,在您發(fā)表評論并告訴我實際上有9個圖釘之前,讓我解釋一下。我們使用了別針13,12,11,10和我們選擇的9,6,5或3。這留下了9個別針。但是,我們需要一個用于與SD卡進行SPI通信的引腳,即引腳4。接下來,我們必須記住,Arduino使用UART來上傳其草圖,因此我們不想使用引腳0或1,如果。現(xiàn)在我們該如何僅用6個引腳連接LCD屏幕,如下所示:
Vss接地,
Vcc接地+5伏特。
Vo可以接地,也可以連接電位計。RS與數(shù)據(jù)引腳相連。記住什么針!??!或者更好的方法是將其寫下來!
R/W接地。
E接地到數(shù)據(jù)引腳。記下來!
DB0-DB3未連接。
DB4-DB7與數(shù)據(jù)引腳相連。寫下來吧!
背光引腳可以連接到各自的電壓源。
模擬傳感器:
模擬傳感器非常簡單,但是在較新的以太網(wǎng)屏蔽上,也許在較舊的以太網(wǎng)屏蔽上也是如此是在模擬引腳0和1上與+ 5v相連的10K電阻器。當心!
Xbee和串行通信:
嗯,我在這里沒有太多產品,我沒有任何Xbees 。..但。..但我想提一些建議。任何時候需要上傳草圖時,您都需要關掉xbee跳線或斷開串行線(如果不進行無線連接),因此您可能希望嘗試在服務器盒上放置一個跳線選擇。如果您不這樣做,則必須將其撕碎以上傳草圖。
第5步:設計網(wǎng)站
在這里,您必須在這里開始思考什么您希望您的網(wǎng)站看起來像和做的一樣,以便您可以選擇存儲網(wǎng)站信息的方式。
如果您想擁有一個非?;镜木W(wǎng)站,可能只有一頁,或者希望能夠控制一些led或電燈開關或您的心臟想要的任何東西,您應該使用保存在Arduino內存中的站點。
如果您想要具有類似的功能,但想要超過一頁,則需要考慮使用
如果您想要一個包含圖片,視頻和許多頁面的常規(guī)站點,或者其他任何內容,則需要使用SD卡。
限制和功能:
使用ram選項,該站點只能是1500個字符(包含html代碼,而不是實際文本),這非常有限,但是對于簡單的led(led可能實際上是任何東西)控制器來說非常有用。
使用PROGMEM選項,您少得多。使用atmega328,您最多可以存儲12,000-13,000個html字符?。?!它適用于家庭自動化或不帶SD卡的多頁站點,但是您無法在其中存儲圖片或文件,并且您仍然只能使用12k字符。
SD卡是大型站點的最佳選擇,其中包含許多腳本,圖片,頁面等。但是到目前為止,它不能用于控制Web上的LED,但是我正在研究它!我也在研究目錄,并使用SD庫而不是sdfatlib(但不要期待一會兒,因為我的主要精力是在led控制器和目錄上,除非‘ibles社區(qū)想提供幫助?。?/p>
第6步:存儲選項
這是我在上一章中介紹的存儲選項的更深入的介紹步驟。
Ram:
第一個選項是將站點存儲在Arduino的ram中。這是最簡單的方法,因為您只需調用client.print()函數(shù)并在其中寫入html代碼。限制為大約1500個字符,因為Arduino僅具有2048字節(jié)的ram。*
Ex:client.print(“
。..”);
程序存儲器:
如果您可以將代碼存儲在程序存儲器而不是ram中,那不是很好。好吧,實際上,上述選項可以做到這一點,但是編譯器隨后會在啟動時讓微型計算機將所有內容都讀入內存。我們該如何解決?我們使用PROGMEM庫pgmspace.h。這告訴編譯器我們想將數(shù)據(jù)保留在程序存儲器中?,F(xiàn)在我們已經可以有12k個字符。*唯一的問題是,micro傾向于容易凍結,但是在下一步中,我有解決方法。
SD卡:
當涉及到SD卡無疑是最佳選擇。您最多可以擁有64GB的內存!最大的問題是,不建議使用ATMEGA168或更舊版本的Duemilanove,因為它的最小編譯大小約為16000字節(jié)。與PROGMEM代碼不同,我很少遇到SD卡死機的問題,而且我非常接近獲得有效的led控制器代碼。
第7步:編程!
從這里開始樂趣-或沮喪-開始!現(xiàn)在,您可以上傳您選擇的草圖并測試您的Web服務器了!
我這里有很多草圖可供下載。我將在以下類別中列出它們:RAM,PROGMEM,SD。我將簡要介紹每個草圖及其功能。我將為每個新功能提供一個草圖。完全可以根據(jù)需要將它們組合在一起。
RAM:
RAMWebServer_Basic-基本的Ram WebServer草圖。
RAMWebServer_Control-包含控制代碼和LED指示燈。
*更多內容即將推出!
PROGMEM:
*更多即將推出!
SD:
重要提示:如果您沒有SDFatLib和/或您具有SD.h庫,則SDFat文件將無法編譯。 (包含在Arduino-0022中)
SDFatWebServer_Normal-基本SD卡WebServer草圖
SDFatWebServer_Fast-包含SD卡讀取和客戶端寫入功能之間的緩沖區(qū),從而使上傳速度更快
SDFatWebServer_Normal_404-具有用于自定義的404文件未找到頁面,稱為404error.htm
SDFatWebServer_Fast_404-具有404頁面和緩沖區(qū)的代碼
SDFatWebServer_Normal_LCD-具有LCD屏幕點擊計數(shù)器的代碼
SDFatWebServer_Fast_LCD-具有LCD的代碼和緩沖區(qū)
SDFatWebServer_Normal_Servo-支持Web流量伺服儀表。
SDFatWebServer_Fast_Servo-Servos a nd緩沖區(qū),還有什么更好的方法?
*很快就會有更多的東西?。?!
步驟8:更進一步
好,您現(xiàn)在擁有自己的工作ServDuino Web服務器!!現(xiàn)在您可以嘗試使用不同的代碼,甚至可以編寫自己的代碼,如果很好,請將其發(fā)送給我,我會將其發(fā)布在可指導的位置,并為您效勞?。?!
PROGMEM修復:
服務器喜歡在使用PROGMEM存儲運行時凍結很多。一個簡單的解決方法是使用看門狗定時器,但是問題在于當它復位時,Arduino進入了一個無限循環(huán),因為引導加載程序中有些混亂。最簡單的方法就是使用555定時器作為外部看門狗,但是如果要使其保持基于軟件,則需要ladyada bootloader。這使您可以使用看門狗計時器重置凍結的Arduino?,F(xiàn)在,盡管您在使用軟件時遇到了另一個問題。您仍然需要重置以太網(wǎng)屏蔽。怎么樣?從屏蔽層上剪下復位針,然后將一根導線連接到您選擇的針上?,F(xiàn)在,您只需在setup()中將引腳設置為高電平,然后將其拉低幾微秒,然后再在setup()中初始化以太網(wǎng)芯片即可??撮T狗在RAM和SD選項中也很有用。
SD卡favicon.ico:
當我測試SD卡代碼時,我將USB電纜插入了計算機,并有一個終端監(jiān)視輸入的串行。當有人到達站點時,Arduino會發(fā)送他們剛剛請求的頁面。我注意到,每當有人訪問主頁時,也會有一個favicon.ico的請求。 favicon.ico是地址欄中,該選項卡上以及該站點旁邊的“收藏夾”文件夾中的小圖標。要獲得自己的favicon.ico,您將需要找到一個在線的圖標生成器(使用Google制作),然后將其下載并放在根目錄(而不是任何文件夾)的SD卡中。如果您將網(wǎng)站另存為收藏夾,請刪除收藏夾,然后轉到您的站點。您應該看到它出現(xiàn)。注意:如果您進行繪畫并制作一個并將其另存為.ico,Internet Explorer將拒絕您的收藏夾圖標。它可以在Firefox和Chrome中使用,但不能在ie中使用。如果需要,還可以通過將瀏覽器放入首頁html文件(index.htm)來使瀏覽器請求收藏夾圖標:
-
Web服務器
+關注
關注
0文章
138瀏覽量
24435 -
Arduino
+關注
關注
188文章
6471瀏覽量
187306
發(fā)布評論請先 登錄
相關推薦
評論