天天看點

WIZwiki-W7500開發闆--環境配置與初級使用

    十分有幸在MakerFair上買到一塊WIZnet公司的wiki-W7500開發闆,如果你用過W5100和W5500的話,沒錯,他們都是南韓的WIZnet公司産品,wiznet的核心技術就是全硬體TCP/IP協定。

按照官方的步驟配置開發環境,你可以使用SDK和gcc,他們的SDK是基于Keil5。下面是官方tutorial網站,還是很有幫助的。

http://wizwiki.net/wiki/doku.php?id=products:wizwiki_w7500:start

拿到開發闆,我按照官網一步一步配置了keil環境,并試了一下編譯,沒問題後。這裡你有兩種辦法将程式燒寫到開發闆上

1. 最簡單的拖拽方式(官方稱之為drop n place)

開發闆連接配接到電腦上後會出現一個名為MBED的盤符(大小為144kb),到時候你就可以将生成的bin檔案直接拖放過去,就完成了程式的燒寫,十分友善。

WIZwiki-W7500開發闆--環境配置與初級使用
WIZwiki-W7500開發闆--環境配置與初級使用

2.  在配置好keil環境的前提下,你也可以點選

工具欄

WIZwiki-W7500開發闆--環境配置與初級使用

将程式下載下傳到開發闆上。

這裡我試了一下官方的例子,一個RGB燈顔色變換并交替閃爍的例子,另一個是httpserver。

程式可以在https://github.com/Wiznet/W7500下載下傳得到,然後根據自己的情況編譯,将最後得到的bin檔案拷貝就行了。

這裡我走了一點彎路,特别是後面那個例子。複位要多按下圖中的Reset_Switch幾秒(千萬記住,在下圖左下角),不然沒反應的。

另外,官網上也沒有提及硬體的連接配接方式,我這裡是筆記本無線連接配接路由器,開發闆網線連接配接路由器。

WIZwiki-W7500開發闆--環境配置與初級使用

下面是運作中的一些截圖。因為官方給的例子較多,有些有解釋有些沒有,是以一開始如果有個程式運作的截圖的話,大家就知道,運作完成後大概是什麼樣子,有個大體的把握。程式中的server預設位址是設定的192.168.1.98,mac位址為0x00, 0x08, 0xDC, 0x71, 0x72, 0x76(main.c的69行),我這裡改為了192.168.38和0x00, 0x08, 0xDC, 0x71, 0x72, 0x77

WIZwiki-W7500開發闆--環境配置與初級使用
WIZwiki-W7500開發闆--環境配置與初級使用

這裡的幾個按鈕就是來控制RGB燈的亮和滅。

序列槽的列印資料如下,還是比較詳細的,但是要注意波特率為115200,   調試軟體會在最後給出,可以作為序列槽調試也可以用來做TCP調試,推薦給大家使用。

WIZwiki-W7500開發闆--環境配置與初級使用

你也可以加入一些新的功能比如,下面這樣,加入pwm控制電機轉速

WIZwiki-W7500開發闆--環境配置與初級使用

參考網站:

  • 序列槽與TCP調試軟體位址
http://www.hw-group.com/products/hercules/index_en.html
  • w7500控制風扇

http://www.instructables.com/id/Motor-Control-with-arduino-motor-shield-via-Web/ (源代碼在作者的github上)

新浪部落格

http://blog.sina.com.cn/goodwiznet

官方中文部落格

http://www.iwiznet.cn/blog/

##################################################################################

16.08.30 更新,網頁上顯示圖檔 http://v.youku.com/v_show/id_XMTQxMjQwODEyMA==.html?beta&

##################################################################################

#ifndef _WEBPAGE_H_
#define _WEBPAGE_H_

/*************************************************************************************
 * JavaScript Functions
 *************************************************************************************/

#define WIZwiki_W7500_web_ajax_js 	"function AJAX(a,e){var c=d();c.onreadystatechange=b;function d(){if(window.XMLHttpRequest){return new XMLHttpRequest()}else{if(window.ActiveXObject){return new ActiveXObject(\"Microsoft.XMLHTTP\")}}}function b(){if(c.readyState==4){if(c.status==200){if(e){e(c.responseText)}}}}this.doGet=function(){c.open(\"GET\",a,true);c.send(null)};this.doPost=function(f){c.open(\"POST\",a,true);c.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\");c.setRequestHeader(\"ISAJAX\",\"yes\");c.send(f)}}function $(a){return document.getElementById(a)}function $$(a){return document.getElementsByName(a)}function $$_ie(a,c){if(!a){a=\"*\"}var b=document.getElementsByTagName(a);var e=[];for(var d=0;d<b.length;d++){att=b[d].getAttribute(\"name\");if(att==c){e.push(b[d])}}return e}"

/* Get: Network Information: function NetinfoCallback(o), getNetinfo() */
#define WIZwiki_W7500_web_netinfo_js	"function NetinfoCallback(o){"\
									 "$('txtmac').value=o.mac;"\
									 "$('txtip').value=o.ip;"\
									 "$('txtgw').value=o.gw;"\
									 "$('txtsn').value=o.sn;"\
									 "$('txtdns').value=o.dns;"\
									 "if(typeof(window.external)!='undefined'){"\
										"obj=$$_ie('input','dhcp');"\
									 "}else{"\
										"obj=$$('dhcp');"\
									 "}"\
								"}"\
								" "\
								"function getNetinfo(){"\
									 "var oUpdate;"\
									 "setTimeout(function(){"\
									 	"oUpdate=new AJAX('get_netinfo.cgi',function(t){"\
									 		"try{eval(t);}catch(e){alert(e);}"\
									 "});"\
									 "oUpdate.doGet();},300);"\
								 "}"


/* Get: Digital I/O state/dir:  function DioCallback(o), getDio(o) */
/* Set: Digital I/O state: 		function setDiostate(o) */
/* Set: Digital I/O direction: 	function setDiodir(o) */
#define WIZwiki_W7500_web_dio_js	"function DioCallback(o){"\
								"var pin = o.dio_p;"\
								"$('txtdio_s'+pin).value=o.dio_s;"\
								"$('txtdio_d'+pin).value=o.dio_d;"\
							"}"\
							"function getDio(o) {"\
								"var p=o.attributes['pin'].value;"\
								"var oUpdate;"\
								"oUpdate=new AJAX('get_dio'+p+'.cgi',function(t){try{eval(t);}catch(e){alert(e);}});"\
								"oUpdate.doGet();"\
							"}"\
							" "\
							"function setDiostate(o){"\
								"var p=o.attributes['pin'].value;"\
								"/*var v=$('txtdio_s'+p).value;*/"\
								"var v=o.attributes['s'].value;"\
								"dout=new AJAX('set_LED.cgi', function(t){try{eval(t);}catch(e){alert(e);}});"\
								"dout.doPost('pin='+p+'&val='+v);"\
							"}"\
							" "\
							"function setDiodir(o){"\
								"var p=o.attributes['pin'].value;"\
								"/*var v=$('txtdio_d'+p).value;*/"\
								"var v=o.attributes['d'].value;"\
								"dout=new AJAX('set_diodir.cgi', function(t){try{eval(t);}catch(e){alert(e);}});"\
								"dout.doPost('pin='+p+'&val='+v);"\
							"}"



/* Get: Analog Input: 	function AinCallback(o), getAin(o) */
/* Additional function: function AinDrawgraph(o), getAin6_update() */
//#define WIZwiki_W7500_web_ain_js	"function AinCallback(o){"\
								"var pin = o.ain_p;"\
								"$('txtain_v'+pin).value=o.ain_v;"\
								"AinDrawgraph(o);"\
							"}"\
							"function getAin(o) {"\
								"var p=o.attributes['pin'].value;"\
								"var oUpdate;"\
								"setTimeout(function(){"\
									"oUpdate=new AJAX('get_ain'+p+'.cgi',function(t){try{eval(t);}catch(e){alert(e);}});"\
								"oUpdate.doGet();},300);"\
							"}"\
							"function AinDrawgraph(o){"\
								"var pin=o.ain_p;"\
								"var val=o.ain_v;"\
								"$('ain_v'+pin).style.width=val*500/1023+'px';"\
							"}"\
							"function getAin6_update() {"\
								"var oUpdate;"\
								"setTimeout(function(){"\
									"oUpdate=new AJAX('get_ain6.cgi',function(t){try{eval(t);}catch(e){alert(e);}});"\
								"oUpdate.doGet();},300);"\
								"setTimeout('getAin6_update()',500);"\
							"}"


/* Get: Analog Input: 	function AinCallback(o), getAin(o) */
/* Additional function: function AinDrawGoogleGauge(o), getAin6_update() */
//#define ain_gauge_js		"google.load('visualization', '1', {packages:['gauge']});"\
							"google.setOnLoadCallback(AinDrawGoogleGauge);"\
							"function AinCallback(o){"\
								"var pin = o.ain_p;"\
								"$('txtain_v'+pin).value=o.ain_v;"\
								"AinDrawGoogleGauge(o);"\
							"}"\
							"function getAin(o) {"\
								"var p=o.attributes['pin'].value;"\
								"var oUpdate;"\
								"setTimeout(function(){"\
									"oUpdate=new AJAX('get_ain'+p+'.cgi',function(t){try{eval(t);}catch(e){alert(e);}});"\
								"oUpdate.doGet();},300);"\
							"}"\
							"function AinDrawGoogleGauge(o){"\
								"var val=o.ain_v;"\
								"var temp_val=Number(((((val*3300)/1023)-500)/10).toFixed(2));"\
								"var data = google.visualization.arrayToDataTable(["\
									"['Label', 'Value'],"\
									"['Temp.', 80]"\
								"]);"\
								"var options = {"\
									"width:400, height:120,"\
									"max:100, min:-40,"\
									"greenFrom:-40, greenTo:0,"\
									"redFrom:90, redTo:100,"\
									"yellowFrom:75, yellowTo:90,"\
									"minorTicks: 5"\
								"};"\
								"var chart = new google.visualization.Gauge(document.getElementById('chart_div'));"\
								"data.setValue(0, 1, temp_val);"\
								"chart.draw(data, options);"\
							"}"\
							"function getAin6_update() {"\
								"var oUpdate;"\
								"setTimeout(function(){"\
									"oUpdate=new AJAX('get_ain6.cgi',function(t){try{eval(t);}catch(e){alert(e);}});"\
								"oUpdate.doGet();},300);"\
								"setTimeout('getAin6_update()',500);"\
							"}"


/*************************************************************************************
 * HTML Pages (web pages)
 *************************************************************************************/

#define index_page			"<html>"\
								"<head>"\
								"<title>Web Server</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"\
								"</head>"\
								"<body>"\
									"<div>"\
									"Web Server Page"\
									"</div>"\
									"<br>"\
									"<a href='netinfo.html'>Network Information</a>"\
									"<br>"\
									"<a href='dio.html'>LED On/Off</a>"\
									"<br>"\
									"<img src='https://avatars0.githubusercontent.com/u/7522853?v=3&s=460' />"\
									"<br>"\
								"</body>"\
							"</html>"

//Index page for all example
//#define index_page			"<html>"\
								"<head>"\
								"<title>WIZwiki-W7500 Web Server</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"\
								"</head>"\
								"<body>"\
									"<div>"\
									"WIZwiki-W7500 Web Server Demopage"\
									"</div>"\
									"<br>"\
									"<a href='netinfo.html'>Network Information</a>"\
									"<br>"\
									"<a href='img.html'>Base64 Image Data</a>"\
									"<br>"\
									"<br>"\
									"<a href='dio.html'>Ex1> Digital I/O</a>"\
									"<br>"\
									"<a href='ain.html'>Ex2> Analog Input</a>"\
									"<br>"\
									"<a href='ain_gauge.html'>Ex3> Analog Input: Google Gauge Chart</a>"\
								"</body>"\
							"</html>"

#define netinfo_page 		"<!DOCTYPE html>"\
							"<html>"\
								"<head>"\
								"<title>Web Server Network Info</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"\
								"<style>"\
								"label{float:left;text-align:left;width:50px;}"\
								"li {list-style:none;}"\
								"</style>"\
								"<script type='text/javascript' src='ajax.js'></script>"\
								"<script type='text/javascript' src='netinfo.js'></script>"\
								"</head>"\
								"<body οnlοad='getNetinfo();'>"\
									"<div>"\
									"Web Server Network Information"\
									"</div>"\
									"<br>"\
									"<ul>"\
										"<li><label for='txtmac'>MAC:</label><input id='txtmac' name='mac' type='text' size='20' disabled='disabled'/></li> "\
										"<li><label for='txtip'>IP:</label><input id='txtip' name='ip' type='text' size='20' disabled='disabled'/></li> "\
										"<li><label for='txtgw'>GW:</label><input id='txtgw' name='gw' type='text' size='20' disabled='disabled'/></li> "\
										"<li><label for='txtsn'>SN:</label><input id='txtsn' name='sn' type='text' size='20' disabled='disabled'/></li> "\
										"<li><label for='txtdns'>DNS:</label><input id='txtdns' name='dns' type='text' size='20' disabled='disabled'/></li> "\
									"</ul>"\
								"</body>"\
							"</html>"


#define dio_page  			"<!DOCTYPE html>"\
							"<html>"\
								"<head>"\
								"<title>Web Server Digital I/O</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"\
								"<script type='text/javascript' src='ajax.js'></script>"\
								"<script type='text/javascript' src='dio.js'></script>"\
								"</head>"\
								"<body>"\
									"<!-- to do -->"\
									"<div>"\
									"<input type='button' value='LED R On' pin='8' s='0' οnclick='setDiostate(this);'> "\
									"<input type='button' value='LED R Off' pin='8' s= '1' οnclick='setDiostate(this);'>"\
									"<br>"\
									"<input type='button' value='LED G On' pin='9' s='0' οnclick='setDiostate(this);'> "\
									"<input type='button' value='LED G Off' pin='9' s= '1' οnclick='setDiostate(this);'>"\
									"<br>"\
									"<input type='button' value='LED B On' pin='5' s='0' οnclick='setDiostate(this);'> "\
									"<input type='button' value='LED B Off' pin='5' s= '1' οnclick='setDiostate(this);'>"\
									"</div>"\
									"<!-- to do -->"\
								"</body>"\
							"</html>"


//#define ain_page  			"<!DOCTYPE html>"\
							"<html>"\
								"<head>"\
								"<title>WIZwiki-W7500 Web Server Analog Input</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"\
								"<meta http-equiv='pragma' content='no-cache' />"\
 	 	 	 	 	 	 	 	"<meta http-equiv='content-type' content='no-cache, no-store, must-revalidate' />"\
								"<script type='text/javascript' src='ajax.js'></script>"\
								"<script type='text/javascript' src='ain.js'></script>"\
								"<style>"\
									".analog{margin-top:2px;margin-right:10px;border:1px solid #ccc;height:20px;width:500px;display:block;}"\
									".ain{width:0%;height:100%;text-align:center;background:red;float:left;display:block;}"\
								"</style>"\
								"</head>"\
								"<body>"\
									"<!-- to do -->"\
									"<div>"\
										"<input type='text' id='txtain_v6' size='5' disabled='disabled' value=''> "\
										"<input type='button' value='Get AIN' pin='6' οnclick='getAin(this);'> "\
										"<input type='button' value='Get AIN Auto' οnclick='getAin6_update();'> "\
										"<br>"\
										"<div class='analog' style='padding:0px;'><strong id='ain_v6' name='ain' class='ain' style='width:0%;'></strong></div>"\
									"</div>"\
									"<!-- to do -->"\
								"</body>"\
							"</html>"



//#define ain_gauge_page		"<!DOCTYPE html>"\
							"<html>"\
								"<head>"\
								"<title>WIZwiki-W7500 Web Server Analog Input Gauge</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"\
								"<meta http-equiv='pragma' content='no-cache' />"\
 	 	 	 	 	 	 	 	"<meta http-equiv='content-type' content='no-cache, no-store, must-revalidate' />"\
								"<script type='text/javascript' src='ajax.js'></script>"\
								"<script type='text/javascript' src='https://www.google.com/jsapi'></script>"\
								"<script type='text/javascript' src='ain_gauge.js'></script>"\
								"</head>"\
								"<body>"\
									"<div>"\
										"<input type='text' id='txtain_v6' size='5' disabled='disabled' value=''> "\
										"<input type='button' value='Get AIN' pin='6' οnclick='getAin(this);'> "\
										"<input type='button' value='Get AIN Auto' οnclick='getAin6_update();'> "\
										"<br>"\
										"<!--Draw the Google Gauge Chart-->"\
										"<div id='chart_div' style='width: 400px; height: 120px;'></div>"\
									"</div>"\
								"</body>"\
							"</html>"


/* Base64 Image converter: http://base64.wutils.com/encoding-online/ */
//#define img_page			"<!DOCTYPE html>"\
							"<html>"\
								"<head>"\
								"<title>WIZwiki-W7500 Web Server Image</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"\
								"<meta http-equiv='pragma' content='no-cache' />"\
								"<meta http-equiv='content-type' content='no-cache, no-store, must-revalidate' />"\
								"</head>"\
								"<body>"\
									"<div>"\
									"<img alt='wizwebserver.png'"\
									"src='data:image/png;base64,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' />"\
									"</div>"\
								"</body>"\
							"</html>"
#define img_page			"<!DOCTYPE html>"\
							"<html>"\
								"<head>"\
								"<title>Web Server Image</title>"\
								"<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"\
								"<meta http-equiv='pragma' content='no-cache' />"\
								"<meta http-equiv='content-type' content='no-cache, no-store, must-revalidate' />"\
								"</head>"\
								"<body>"\
									"<div>"\
									"<img src='https://avatars0.githubusercontent.com/u/7522853?v=3&s=460' />"\
									"</div>"\
								"</body>"\
							"</html>"
#endif
           

繼續閱讀