VAWT ARDUINO
Pentru a inregistra parametrii de functionare a unei turbine eoliene intr-o baza de date SQL se poate folosi solutia compusa din :
1. configuratia hardware din :http://vawt.ro/vawt-arduino/
2. codul pentru Arduino care transfera prin metoda POST date catre un fisier php aflat pe server
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
#include <dht.h> #include <Ethernet.h> #include <SPI.h> #include <Wire.h> byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 }; // MAC ADDRESS EthernetClient client; dht DHT; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// se initializeaza variabilele float val11=0; float val2=0; float i1 = 0; float i = 0; float curent=0; float tensiune=0; int t = 0; int h = 0; float sample1=0; float sample2=0; float p=0; String data; void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); } data = ""; } void loop(){ DHT.read11(A0); // se citeste senzorul de temperatura si umiditate h = (int) DHT.humidity; t = (int) DHT.temperature; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// se stabileste numarul de valori care se mediaza si timpul dintre doua masuratori for(int i=0;i<500;i++) { sample1+=analogRead(A1); //se citeste sensorul de tensiune sample2+=analogRead(A2); //se citeste senzorul de curent delay(5); } sample1=sample1/500; sample2=sample2/500; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///se calculeaza valorile float temp; val11=sample1; temp=val11/4.092; val2=(temp/10); i1 = sample2; i = ((.0049 * i1) - 2.5)/.066; p=i*val2; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///se transmit date catre server data = "temp1=" + String(t) + "&hum1=" + String(h)+ "&curent1=" + String(i)+"&tensiune1=" + String(val2)+"&putere1=" + String(p); if (client.connect("www.vawt.local",80)) { // adresa server client.println("POST /add.php HTTP/1.1"); client.println("Host: vawt.local"); // adresa server client.println("Content-Type: application/x-www-form-urlencoded"); client.print("Content-Length: "); client.println(data.length()); client.println(); client.print(data); Serial.print(data); } if (client.connected()) { client.stop(); // deconectare } delay(100); // intarziere pana la urmatorul ciclu de masuratori } |
3. un fisier „add.php” care primestele datele de la ARDUINO se conecteaza la baza de date si inregistreaza valorile in aceasta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php // se conecteaza la baza de date mysql_connect("Localhost", "user", "parola") or die(mysql_error()); mysql_select_db("nume baza de date") or die(mysql_error()); $temp1=$_POST["temp1"]; $hum1=$_POST["hum1"]; $curent1=$_POST["curent1"]; $tensiune1=$_POST["tensiune1"]; $putere1=$_POST["putere1"]; $query = "INSERT INTO `tempLog` (`temperature`, `humidity`, `curent`, `tensiune`, `putere`) VALUES ('".$temp1."','".$hum1."','".$curent1."','".$tensiune1."','".$putere1."')"; mysql_query($query); mysql_close; header("Location: index.php"); ?> |
4. VAWT ARDUINO o baza de date SQL care pentru exemplul de mai sus poate fi generata cu urmatorul script:
1 2 3 4 5 6 7 |
CREATE TABLE tempLog ( timeStamp TIMESTAMP NOT NULL PRIMARY KEY, temperature int(11) NOT NULL, humidity int(11) NOT NULL, curent decimal(5,2) NOT NULL, tensiune decimal(5,2) NOT NULL, putere decimal(5,2) NOT NULL); |
5. Un „web hosting” pentru baza de date SQL si fisiere.
Eu folosesc Hostico