dbo 发表于 2012-8-30 09:37:03

W5100能不能连接mysql 并发送传感器数据

W5100能不能连接mysql 并发送传感器数据

soxitoday 发表于 2012-8-30 20:47:49

本帖最后由 弘毅 于 2017-3-23 08:00 编辑

用php+apache+mysql在自己的电脑上搭建一个网站,或者如果你有一个网站的话也可以。可以让W5100发送查询字符串到一个网站,网站再根据收到的字符串做一个数据库写入或者查询。下面是一段php的查询和写入代码。
$statue = $_GET['statue'];

        if($statue==NULL || $statue!=1){
                $statue=0;
        }
        switch ($statue)
        {
                case 0: getHistory();break;
                case 1: getStatue();break;
                default:getHistory();break;
       
        }

function getStatue(){
        require('inc\conn.inc.php');
        $sensor = $_GET['sensor'];
        $sdata = $_GET['sdata'];
        $geeker = $_GET['geeker'];
        $showtime = date("Y-m-d H:i:s");
       
        if (mysqli_connect_errno()){
                echo 'can not connect to database!';
        } else {
                if($sensor==NULL || $sdata == NULL || $geeker==NULL){
                echo 'Error. Please check your data!';
               
        }else{
                $query="insert into arduino values(".'NULL'. ", '".$geeker. "', '".$sensor. "', '".$sdata. "', '".$showtime."')";
                $result = $db->query($query);               
                echo 'Submitted OK!';
        }
}
}

function getHistory(){

        require('inc\conn.inc.php');
        echo '<html xmlns="http://www.w3.org/1999/xhtml">
                  <head><title>Arduino上传数据至网络测试页面</title></head>
                  <div align="center"><h1>Arduino上传数据至网络测试历史记录</h1></div>';
                  
        if (mysqli_connect_errno()){
                echo 'can not connect to database!';
        } else {
                $query='select * from arduino order by id desc limit 100';
                $result=$db->query($query);
                $num=$result->num_rows;
               
                if($num!=0)
                {
                        echo '<table width="640" border="1" align="center">
                                <tr>
                                          <td><strong>编号</strong></td>
                                    <td><strong>作者</strong></td>
                                    <td><strong>传感器</strong></td>
                                    <td><strong>传感器数据</strong></td>
                                    <td><strong>上传时间</strong></td>
                                </tr>';
                       
                while($allrow=$result->fetch_array()){
                        echo '<tr>';
                        echo '<td>'.$allrow['id'].'</td>';
                        echo '<td>'.$allrow['geek'].'</td>';
                        echo '<td>'.$allrow['sensor'].'</td>';
                        echo '<td>'.$allrow['sensor_data'].'</td>';
                        echo '<td>'.$allrow['time'].'</td>';
                        echo '</tr>';
                }

                       echo '</table>';
                }else{
                echo '没有历史记录可查';
                }               
        }          
        echo '<body></body></html>';
        $db->close();
}

W5100的代码如下,你需要自己写获取传感器数据的部分,不过如果只是做测试的,直接使用下面的代码也行。红色的部分需要改成你自己的,黄色的部分可以改也可以不改。具体的做法参见 http://www.soxitoday.com/archives/1926.html:
    #include <SPI.h>
    #include <Ethernet.h>

    byte mac[] = {0x8C, 0xB8, 0×64, 0xEF, 0×71, 0×97 };
    IPAddress ip(218,23,63,34);
    EthernetClient client;

    char serverName[] = "www.lycabc.com";

    void setup() {
       Serial.begin(9600);
       while (!Serial) {
      ; // wait for serial port to connect. Needed for Leonardo only
      }

      Serial.println("Attempting to get an IP address using DHCP:");
      if (!Ethernet.begin(mac)) {
      Serial.println("failed to get an IP address using DHCP, trying manually");
      Ethernet.begin(mac, ip);
      }
      Serial.print("My address:");
      Serial.println(Ethernet.localIP());
      connectToServer();
    }

    void loop()
    {
      if (client.connected()) {
      if (client.available()) {
          char inChar = client.read();
          Serial.print(inChar);
      }
    }
    }

    void connectToServer() {
      Serial.println("connecting to server…");
      if (client.connect(serverName, 80)) {
      Serial.println("making HTTP request…");
       String Requesting;
       String sensor="mysensor";//传感器的名称
      int sdata=100;//传感器的数值
      String geeker="yourname";//你的昵称
      Requesting= "GET /?sensor="+sensor+"&sdata="+sdata+"&geeker="+geeker+"&statue=1 HTTP/1.1";   
      client.println(Requesting);
      client.println("HOST: www.lycabc.com");
      client.println();
      }
    }
       

lmaq 发表于 2012-8-30 10:32:24

mysql端做个接口这个简单。

zcbzjx 发表于 2012-8-30 10:35:25

这个应该是服务器端脚本解决吧。

dbo 发表于 2012-8-30 13:10:14

完全无从下手

dbo 发表于 2012-8-31 10:31:23

实在是太感谢啦 很有帮助

kagetang 发表于 2016-5-12 14:57:00

soxitoday 发表于 2012-8-30 20:47 static/image/common/back.gif
用php+apache+mysql在自己的电脑上搭建一个网站,或者如果你有一个网站的话也可以。可以让W5100发送查询字符 ...

你好,请问inc\conn.inc.php这个函数在哪可以找到?

haichaofine 发表于 2017-3-22 22:54:26

试了一下,代码编译不过去,期待更多细节

haichaofine 发表于 2017-3-27 09:40:04

终于搞定,返回了那么多的400,终于见到了200
页: [1]
查看完整版本: W5100能不能连接mysql 并发送传感器数据