将Arduino草图从以太网移植到Wifi

将Arduino草图从以太网移植到Wifi,arduino,arduino-uno,arduino-uno-wifi,Arduino,Arduino Uno,Arduino Uno Wifi,我有一个使用Arduino Uno和以太网屏蔽的草图,它工作得很好。现在我得到了一些Arduino Uno WiFi,我想把草图从以太网移植到WiFi,但我现在遇到了一堵墙。我能找到的大部分指南/常见问题解答/帮助都是针对WiFi屏蔽的,而不是WiFi Arduino,所以我被困在这里 下面是我的(原始以太网)代码。我可以发布一些修改过的Wifi代码,但我甚至不能编译它而不出错 // Hartmann fugtighedsmåler v 0.1 // Lavet af Jan Andreas

我有一个使用Arduino Uno和以太网屏蔽的草图,它工作得很好。现在我得到了一些Arduino Uno WiFi,我想把草图从以太网移植到WiFi,但我现在遇到了一堵墙。我能找到的大部分指南/常见问题解答/帮助都是针对WiFi屏蔽的,而不是WiFi Arduino,所以我被困在这里

下面是我的(原始以太网)代码。我可以发布一些修改过的Wifi代码,但我甚至不能编译它而不出错

//  Hartmann fugtighedsmåler v 0.1
//  Lavet af Jan Andreasen
//  Skriver til DB på FDKTO517

#include <Ethernet.h>
#include <SPI.h>
#include <DHT.h>
#define DHTPIN 2 // Siger sig selv
#define DHTTYPE DHT11 // Typen af sensor. 

float h = 0;
float t = 0;
byte mac[] = {0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02}; // Macadresse på kortet
IPAddress server(10,16,9,229); // Server adressen på SQL'en

EthernetClient client;
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("Starting...");
  Ethernet.begin(mac);
  dht.begin();
}

void loop() {
  readTempHum();
  delay(300000); // Loop timer i millis - 5 minutter
}

void get_request(float t, float h) {
  Serial.println("Connecting to Client...");
  if (client.connect(server, 10080)) {
    Serial.println("--> connection ok\n");
    client.print("GET /test.php?");
    // Placering af PHP script til upload til DB
    client.print("t="); // Temp
    client.print(t); 
    client.print("&h="); // Fugtighed
    client.print(h);
    client.println(" HTTP/1.1");
    client.print( "Host: " );
    client.println(server);
    client.println("Connection: close");
    client.println();
    client.println();
    client.stop();
    Serial.println("--> finished transmission\n");
  } else {
    Serial.println("--> connection failed\n");
  }
}

void readTempHum() {
  h = dht.readHumidity();
  t = dht.readTemperature();
  {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print("%\t");
    Serial.print("Temperature:");
    Serial.print(t);
    Serial.println("*C");
    get_request(t,h);
  }
}

现在,我希望你们中的一些人能在这里帮我一点忙://p>如果是Arduino.org Arduino UNO WiFi开发者版,那么使用WiFi链接

好的-所以我成功了。我必须从头开始,在Juraj的帮助下(我也会接受你的答案),它现在可以工作了

以下是最终草图(“最终”,因为DHT11传感器仅用于测试目的,作为概念证明)

//Hartmann fugtighedsmåler v 0.2.2
//安德烈森薰衣草
//Skriver til DB påFDKTO517
//WiFi测试版
#包括
#包括
#包括
#定义DHTPIN 4
#定义DHT类型DHT11
#定义连接器“rest”
#定义服务器地址“10.16.9.229”
浮点数h=0;
浮动t=0;
DHT-DHT(DHTPIN,DHTTYPE);
无效设置(){
Serial.begin(9600);
再见,开始();
dht.begin();
pinMode(2,输入);//我不确定这是否是必需的,只是现在看到了
延迟(10000);//从启动到初始化的10秒延迟
}
void循环(){
readTempHum();
延迟(300000);//测量之间的5分钟延迟
}
void readTempHum(){
h=dht.read湿度();//从传感器读取湿度
t=dht.readTemperature();//从传感器读取温度
字符串uri=“/test.php?t=“;//指向php文件的URL
uri+=t;//插入t值
uri+=“&h=”;
uri+=h;//插入h值
CiaoData data=Ciao.write(连接器,服务器地址,uri);//使用REST和上面指定的URL向指定的服务器发出基本HTTP请求
}

也许不是你见过的最漂亮的代码,但是,它现在可以工作了。感谢您的所有输入:)

我们是否应该对编译器错误所说的内容进行猜测?还要浪费我们的时间,重复在Arduino论坛上已经说过的话?如果你想要答案,你需要让我们更容易。谢谢你承认交叉张贴。它通常不受欢迎,因为它可能导致一种情况,即某人不知道同一问题的其他副本,并且他们花费大量精力来回答,这实际上是在另一副本上复制了先前存在的答复。至少,请将你所有的交叉帖子的链接添加到所有其他帖子,这样人们就可以在其他帖子上查看已经做出的答案。你能编辑一下吗?@halfer好吧,我不诚实是没有用的。我知道你们中的一些人可能会同时使用这两个论坛,但如果X在Y搜索时没有找到答案,那么-不管怎样,我会将答案发布在没有找到答案的论坛上(有ofc的信用)-这有意义吗?哦,好吧,我编辑了带有编译器错误的问题和Arduino.cc论坛的链接。不过,我想我会从零开始使用Juraj的答案。谢谢,我会研究这个。是直接闪存到新固件,还是涉及到巨大的砖块风险?非常简单。从IDE构建和上传源代码。AT固件有一个选项,但我建议您使用WiFi链接实际上,当我今天早上喝了一杯新鲜咖啡时,我意识到了一些事情。起初,我无法让RestClient演示草图正常工作,但后来我意识到arduino.org已关闭。然后我尝试了我自己的服务器,但是我找不到任何地方可以将端口号从80改成其他的。然后,我试图在XAMPP中将我的端口更改回80,但我无法-浏览堆栈后,我找到了答案-SQL Reporting Services出于某种原因占用了80端口?!无论如何,现在RestClient正在工作,我认为不需要更改固件。我将在构建新草图时更新此线程。无论如何,我都会接受你的回答,因为这似乎是一条正确的道路。但是作为我工作的一个项目(有15个UNO),我不想尝试和摆弄固件——我会在我的测试平台上做。所以你很幸运。您所需要的可以通过工厂固件的有限功能来完成。恭喜。至少我的Uno WiFi Wiki有帮助。(stackoverflow不允许我评论这个问题或其他答案。我在这个“游戏”中没有获得足够的分数:-),但现在我还有25分)
#include <Wire.h>
#include <UnoWiFiDevEd.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT11

float h = 0;
float t = 0;

DHT dht(DHTPIN, DHTTYPE);

void setup() {

  const char* connector = "rest";
  const char* server = "10.16.9.229";
  const char* method = "GET";
  const char* resource = "/test.php?t=";

  Serial.begin(9600);
  Ciao.begin();
  dht.begin();

  pinMode(2, INPUT);

  delay(10000);
}

void loop() {

  readTempHum();
//  doRequest(connector, server, resource, method);
  delay(300000);
}

void doRequest(const char* conn, const char* server, const char* command, const char* method, float t, float h){
  CiaoData data = Ciao.write(conn, server, command, method);
}

void readTempHum() {
  h = dht.readHumidity();
  t = dht.readTemperature();
  const char* connector = "rest";
  const char* server = "10.16.9.229";
  const char* method = "GET";
  const char* resource = "/test.php?t=";

    {
    doRequest(connector, server, resource, method,t,h);
    }
  }
HumidSQL3_Wifi_master:24: error: invalid operands of types 'const char [13]' and 'float' to binary 'operator+'

const char* resource = "/test.php?t="+t+"&h="+h;
//  Hartmann fugtighedsmåler v 0.2.2
//  Lavet af Jan Andreasen
//  Skriver til DB på FDKTO517
//  WiFi udgave, testversion


#include <Wire.h>
#include <UnoWiFiDevEd.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT11
#define CONNECTOR "rest"
#define SERVER_ADDR "10.16.9.229"


float h = 0;
float t = 0;

DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.begin(9600);
  Ciao.begin();
  dht.begin();

  pinMode(2, INPUT); // I'm not sure if this is required, just saw it now

  delay(10000); // A 10 second delay from start to initialization
}

void loop() {

  readTempHum();
  delay(300000); // A 5 minute delay between measurements
}

void readTempHum() {
  h = dht.readHumidity(); // Reads the humidity from sensor
  t = dht.readTemperature(); // Reads the temperature from sensor
  String uri = "/test.php?t="; // URL to the PHP-file
  uri += t;  // Insert the T-value
  uri +="&h=";
  uri += h; // Insert the H-value

  CiaoData data = Ciao.write(CONNECTOR, SERVER_ADDR, uri); // Make a basic HTTP request to the specified server using REST and the URL specified above
  }