zoukankan      html  css  js  c++  java
  • 地址代码Arduino以太网插板教程

    本文是一篇关于地址代码的帖子

        地址和代码

        Arduino以太网插板让你轻松将你的Arduino连接因特网。这个插板可以让Arduino发送和接收来自世界任何角落的数据。你可以用它来做有意思的东西,比如用网站远程控制机器人,或者每次你收到一个新的twitter信息都会响一次铃。这个插板开启了无穷尽的可能性,让你立刻将你的项目参与因特网。

        第一步:安装

        地址和代码

        安装很简单,将插板头部的引脚针插入你的Arduino。

        第二步:插板特征

        地址和代码

        以太网插板基于W5100芯片(WIZnet),带有一个16K的内部缓冲区。连接速率高达10/100Mb。

        依赖于Arduino以太网库,和开发环境捆绑。

        还有一个板载微型SD卡槽,可以让你存储可查找到的数据。这需要使用外部SD库,它其实不附带软件。本教程不涵盖SD卡。在无线SD卡的 Step 8(http://www.instructables.com/id/Arduino-Wireless-SD-Shield-Tutorial/step8/Prepare-the-SD-card/)中可以找到。

        这个板子也有空间增长PoE模块,它可以给Arduino连接以太网供电。

        完全的技巧概述,请看官方以太网插板页http://arduino.cc/en/Main/ArduinoEthernetShield

        第三步:启动

        地址和代码

        地址和代码

        将Arduino与你电脑USB口连接;以太网插板连接路由器(或直接联网)

        接下来,打开Arduino开发环境。我强烈推荐更新Arduino 1.0及以上版本(如果你还没有用过)。这个软件版本支撑DHCP,不需要手动配置一个IP地址

        要清晰分配到你板子上的IP地址是多少,打开DhcpAddressPrinter:
    File --> Examples --> Ethernet --> DhcpAddressPrinter

        打开后,你可能需要换个MAC地址。在较新的以太网插板版本,你应当看到板子上贴了个地址标签。如果你弄丢了这个标签,就编个能任务的独一地址。如果您使用多个插板,要保证MAC地址的独一性。

        MAC地址配置好后,上传代码到你的Arduino,打开串口监控器。它会打出使用中的IP地址。

        第四步:服务器

        地址和代码

        地址和代码

        地址和代码地址和代码

        你可以将Arduino插板用作一个网络服务器,来负载一个HTML页或者聊天服务器功能。你也可以解析请求客户端发送,就像一个网络浏览器。上面的两个例子说明了怎样使用它来负载HTML页,和解析URL字符串。

        重要的是要记住,你需要输入你的Arduino IP地址在上面两个例子中,这样才能任务。

        上面的代码将网页服务改换到基于一个按钮:

        /*   Web Server Demo   thrown together by Randy Sarafan    A simple web server that changes the page that is served, triggered by a button press.    Circuit:  * Ethernet shield attached to pins 10, 11, 12, 13  * Connect a button between Pin D2 and 5V  * Connect a 10K resistor between Pin D2 and ground    Based almost entirely upon Web Server by Tom Igoe and David Mellis    Edit history:  created 18 Dec 2009  by David A. Mellis  modified 4 Sep 2010  by Tom Igoe    */

        #include <SPI.h> #include <Ethernet.h>

        // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 }; IPAddress ip(191,11,1,1); //<<< ENTER YOUR IP ADDRESS HERE!!!

        // Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80);

        int buttonPress = 1;

        void setup() {   pinMode(2, INPUT);

        // start the Ethernet connection and the server:   Ethernet.begin(mac, ip);   server.begin(); }

        void loop() {

        buttonPress = digitalRead(2);

        // listen for incoming clients

        EthernetClient client = server.available();

        if (client) {

        // an http request ends with a blank line

        boolean currentLineIsBlank = true;

        while (client.connected()) {

        if (client.available()) {

        char c = client.read();

        // if you've gotten to the end of the line (received a newline character) and the line is blank, the http request has ended,

        // so you can send a reply

        if (c == '\n' && currentLineIsBlank) {

        // send a standard http response header

        client.println("HTTP/1.1 200 OK");

        client.println("Content-Type: text/html");

        client.println();

        //serves a different version of a website depending on whether or not the button

        //connected to pin 2 is pressed.

        if (buttonPress == 1) {

        client.println("<cke:html><cke:body bgcolor=#FFFFFF>LIGHT!</cke:body></cke:html>");

        }

        else if (buttonPress == 0){

        client.println("<cke:html><cke:body bgcolor=#000000 text=#FFFFFF>DARK!  </cke:body></cke:html>");

        }

        break;

        }

        if (c == '\n') {

        // you're starting a new line  currentLineIsBlank = true;

        }

        else if (c != '\r') {

        // you've gotten a character on the current line  currentLineIsBlank = false;

        }

        }

        }

        // give the web browser time to receive the data

        delay(1);

        // close the connection:

        client.stop();

        }

        }

        让这个样例代码任务,附上一个一个按钮在 D2引脚和5V之间,一个10K电阻在 D2引脚与接地之间,然后负载你的ArduinoIP地址到你的网页浏览器。网页应当打开一个玄色的背景。按下这个按钮并保持住,然后刷新页面。这页面将会打开一个白色背景。

        上面的代码在URL上点亮一个LED,并发送到Arduino:

        /*   Web Server Demo   thrown together by Randy Sarafan    Allows you to turn on and off an LED by entering different urls.    To turn it on:  http://your-IP-address/$1    To turn it off:  http://your-IP-address/$2    Circuit:  * Ethernet shield attached to pins 10, 11, 12, 13  * Connect an LED to pin D2 and put it in series with a 220 ohm resistor to ground    Based almost entirely upon Web Server by Tom Igoe and David Mellis    Edit history:  created 18 Dec 2009  by David A. Mellis  modified 4 Sep 2010  by Tom Igoe    */

        #include <SPI.h> #include <Ethernet.h>

        boolean incoming = 0;

        // Enter a MAC address and IP address for your controller below.

        // The IP address will be dependent on your local network: byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 }; IPAddress ip(191,11,1,1);

        每日一道理
    美丽是平凡的,平凡得让你感觉不到她的存在;美丽是平淡的,平淡得只剩下温馨的回忆;美丽又是平静的,平静得只有你费尽心思才能激起她的涟漪。

        //<<< ENTER YOUR IP ADDRESS HERE!!!

        // Initialize the Ethernet server library // with the IP address and port you want to use

        // (port 80 is default for HTTP): EthernetServer server(80);

        void setup() {   pinMode(2, OUTPUT);

        // start the Ethernet connection and the server:

        Ethernet.begin(mac, ip);

        server.begin();

        Serial.begin(9600); }

        void loop() {

        // listen for incoming clients

        EthernetClient client = server.available();

        if (client) {

        // an http request ends with a blank line

        boolean currentLineIsBlank = true;

        while (client.connected()) {

        if (client.available()) {

        char c = client.read();

        // if you've gotten to the end of the line (received a newline character) and the line is blank, the http request has ended,

        // so you can send a reply

        //reads URL string from $ to first blank space

        if(incoming && c == ' '){

        incoming = 0;

        }

        if(c == '$'){

        incoming = 1;

        }

        //Checks for the URL string $1 or $2

        if(incoming == 1){

        Serial.println(c);

        if(c == '1'){

        Serial.println("ON");

        digitalWrite(2, HIGH);

        }

        if(c == '2'){

        Serial.println("OFF");

        digitalWrite(2, LOW);

        }

        }

        if (c == '\n') {

        // you're starting a new line

        currentLineIsBlank = true;

        }

        else if (c != '\r') {

        // you've gotten a character on the current line

        currentLineIsBlank = false;

        }

        }

        }

        // give the web browser time to receive the data

        delay(1);

        // close the connection:

        client.stop();

        }

        }

        将正极引诱LED连接到引脚D2,负极连接220欧姆电阻到地。

        打开LED键入这个到你的浏览器:

        http://[YOUR IP ADDRESS HERE]/$1

        关闭LED键入这个到你的浏览器:

        http://[YOUR IP ADDRESS HERE]/$2

        注意:很明显你应当用你的IP地址替换[YOUR IP ADDRESS HERE]

        第五步:客户端

        地址和代码

        你也可以使用以太网插板作为一个客户端。换言说,你可以用它像个网页浏览器一个读取网页。

        网页也有可见和隐藏的文本,这样使其在客户端编程变得非常棘手。读网页信息平日涉及到解析很多字符串。这很让人受不了,但是值得的是,如果这正是你想要的。

        我写一些读Twitter信息的代码,但这代码已作为Arduino编辑器的例子存在了。相反,我只需要略微修改一下,就可以在信息被读的时候 点亮一个LED灯。

        连接正极引诱LED到引脚D2,连接负极引诱220欧姆电阻接地。

        不要忘却键入你的IP地址到上面的代码,不然它不会任务的。

        代码如下:

        /*   Twitter Client with Strings    This sketch connects to Twitter using an Ethernet shield. It parses the XML  returned, and looks for <text>this is a tweet</text>    You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield,  either one will work, as long as it's got a Wiznet Ethernet module on board.    This example uses the DHCP routines in the Ethernet library which is part of the  Arduino core from version 1.0 beta 1    This example uses the String library, which is part of the Arduino core from  version 0019.     Circuit:   * Ethernet shield attached to pins 10, 11, 12, 13    created 21 May 2011  by Tom Igoe    This code is in the public domain.    */

        #include <SPI.h> #include <Ethernet.h>

        // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = {   0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 }; IPAddress ip(191,11,1,1);

        //<<< ENTER YOUR IP ADDRESS HERE!!!

        // initialize the library instance: EthernetClient client;

        const int requestInterval = 60000;

        // delay between requests

        char serverName[] = "api.twitter.com";

        // twitter URL

        boolean requested;

        // whether you've made a request since connecting long lastAttemptTime = 0;

        // last time you connected to the server, in milliseconds

        String currentLine = "";

        // string to hold the text from server String tweet = "";

        // string to hold the tweet boolean readingTweet = false;

        // if you're currently reading the tweet

        void setup() {

        pinMode(2, OUTPUT);

        // reserve space for the strings:   currentLine.reserve(256);   tweet.reserve(150);

        // initialize serial:   Serial.begin(9600);

        // attempt a DHCP connection:

        if (!Ethernet.begin(mac)) {

        // if DHCP fails, start with a hard-coded address:

        Ethernet.begin(mac, ip);   }

        // connect to Twitter:   connectToServer(); }

        void loop() {

        if (client.connected()) {

        if (client.available()) {

        // read incoming bytes:

        char inChar = client.read();

        // add incoming byte to end of line:

        currentLine += inChar;

        // if you get a newline, clear the line:

        if (inChar == '\n') {

        currentLine = "";       }

        // if the current line ends with <text>, it will

        // be followed by the tweet:

        if ( currentLine.endsWith("<text>")) {

        // tweet is beginning. Clear the tweet string:

        readingTweet = true;

        tweet = "";       }

        // if you're currently reading the bytes of a tweet,

        // add them to the tweet String:

        if (readingTweet) {

        if (inChar != '<') {

        tweet += inChar;

        }

        else {

        // if you got a "<" character,

        // you've reached the end of the tweet:

        readingTweet = false;

        Serial.println(tweet);

        if(tweet == ">Hello Cruel World"){

        digitalWrite(2, HIGH);

        Serial.println("LED ON!");           }

        if(tweet != ">Hello Cruel World"){

        digitalWrite(2, LOW);

        Serial.println("LED OFF!");

        }

        // close the connection to the server:

        client.stop();

        }

        }

        }

        }

        else if (millis() - lastAttemptTime > requestInterval) {

        // if you're not connected, and two minutes have passed since

        // your last connection, then attempt to connect again:

        connectToServer();   } }

        void connectToServer() {

        // attempt to connect, and wait a millisecond:

        Serial.println("connecting to server...");

        if (client.connect(serverName, 80)) {

        Serial.println("making HTTP request...");

        // make HTTP GET request to twitter:

        client.println("GET /1/statuses/user_timeline.xml?screen_name=RandyMcTester&count=1 HTTP/1.1");     client.println("HOST: api.twitter.com");

        client.println();   }

        // note the time of this connect attempt:

        lastAttemptTime = millis();

        }

        也许你想读一些其他最近的帖子在 RandyMcTester Twitter feed
    阅读其他Twitter feed, 转变上面的文本:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=[NEW TWITTER NAME HERE]&count=1 HTTP/1.1");

        翻译自:http://www.instructables.com/id/Arduino-Ethernet-Shield-Tutorial/

        感谢您的阅读!欢迎与我们停止更多交流~

    文章结束给大家分享下程序员的一些笑话语录: 问:你觉得让你女朋友(或者任何一个女的)从你和李彦宏之间选一个,你觉得她会选谁?  
      答:因为李艳红这种败类,所以我没女友!

    --------------------------------- 原创文章 By 地址和代码 ---------------------------------

  • 相关阅读:
    程序员与HR博弈之:有城府的表达你的兴趣爱好
    也谈创业企业CEO该拿多少工资
    今日互联网关注(写在清明节后):每天都有值得关注的大变化
    另眼看纸媒电商的发展
    今日互联网关注(20140331):善待和你裸婚的员工
    看着烧了十几亿的打车软件,我们能跟着模仿点什么?
    一款云端开发环境平台,思考互联网产品模式
    2018年的医保控费思路
    新形势下国家医疗保障局信息化建设注意点(五)强化监管信息化
    新形势下国家医疗保障局信息化建设注意点(四)推进电子医保卡
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3095711.html
Copyright © 2011-2022 走看看