2017-11-22 9 views
0

私はArduino Unoとイーサネットシールドを使ってスケッチを作成しました。今ではいくつかのArduino Uno WiFiを手に入れました。スケッチをイーサネットからwifiに移植したいのですが、今は壁に入っています。私が見つけることができるガイド/ FAQ /ヘルプのほとんどはWiFiシールドであり、WiFi Arduinoではないので、私はここで立ち往生しています。イーサネットからWifiへのArduinoスケッチの移植

以下は私のオリジナルのEthernetコードです。私は若干変更された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); 
    } 
} 

この投稿はon the Arduino Forumにも投稿されています。私は二重郵便を見ると申し訳ありません、私はここで私の問題に解決策を掲載します。

新しいスケッチ:今すぐ

#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); 
    } 
    } 

は、私は新しい問題に遭遇しました。センサーからの値(tとh)は、次のようにHTTP/GETコマンドで出力されるはずです。 test.php?t = 1 &h = 2 しかし、私はその作業を行うことはできません。リソースをこのように定義しようとした場合 const char * resource = "/test.php?t="+t+" & h = "+ 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; 

は今、私はあなたのいくつかは、ここで少し私を助けることができることを願って:/

+0

私たちは、コンパイラのエラーとは何かについて推測ゲームをすることになっていますか?また、Arduino Forumですでに述べられていることを繰り返して、時間を無駄にしますか?答えが必要な場合は、私たちのために簡単にする必要があります。 –

+0

クロスポストを所有していただき、ありがとうございます。誰かが同じ質問の他のコピーを知らない状況につながる可能性があり、他のコピーに既存の回答を本質的に複製する回答に大きな努力を費やしているため、一般的にうまく受信されません。少なくとも、他のすべての投稿へのリンクをすべて追加してください。これにより、人々は他の投稿を確認できます。あなたはそれを編集しますか? – halfer

+0

@halferまあ、私は正直ではないのでどこにも行きません。あなたの中には両方のフォーラムを使用している人もいるかもしれませんが、XがYを検索して答えを見つけられない場合は、フォーラムで答えを投稿しますクレジットカード) - 意味がありますか?まあ、コンパイラのエラーとArduino.ccフォーラムへのリンクで質問を編集しました。しかし、私はJurajの答えを使って最初から始めたいと思います。 –

答えて

1

それはArduino.org ArduinoのUNOのWiFiのDeveloper Editionの場合は、無線LANを使用しますUNO WiFi Serial1 library

+0

ありがとう、私はこれを調べます。それはまっすぐ前方に新しいファームウェアにフラッシュするか、または巨大なレンガのリスクが関与していますか? –

+0

非常に簡単です。 IDEからソースコードをビルドしてアップロードします。ATファームウェアのオプションがありますが、私はあなたにWiFi Link – Juraj

+0

をお勧めします。回答を受け入れてください。 – Juraj

0

とリンクしています。私は最初から始めなければなりませんでした.Jurajの助けを借りて(私もあなたの答えを受け入れるでしょう)それは今働きます。 (DHT11センサーのみの概念実証として、テストの目的であったように、「最終」)

以下

は、しかし、たぶん

// 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 
    } 

あなたが見てきたきれいなコード最終的なスケッチではありません、それは今働く。あなたのすべての入力をありがとう:)

関連する問題