Mai atasez un proiect preluat de pe www.geocities.jp . Eu am folosit o parte din acest proiect pentru a adauga intr-un mysql temperaturile preluate cuarduino cu ajutorul unor senzori digitali ds1820.
Pentru cei care vor sa faca rost de ds1820s la preturi aproape de O sa imi postele comentariu.
1. Demo Video
2.Concept Diagram
FON2100 internal serial pin-header
FON2200 internal serial pin-header
3.Schematics
4.Photo
5.Source Code
Server Side (Processing)
/*************************************/ /* Arduino meets Processing via Wifi */ /* Processing Sever side sketch */ /*************************************/ import processing.net.*; int port = 5555; //Sever TCP-Port number int x = 200; int y = 200; int z = 0; Server server; String strdata = "0"; void setup(){ size(400,400,P3D); server = new Server(this, port); noStroke(); colorMode(RGB, 1); } void draw(){ Client client = server.available(); // /* Draw ColorCube */ background(0); pushMatrix(); translate(x,y,z); rotateX(PI/4); float r = float(strdata); rotateZ(PI*r/512.0-0.75); colorcube(80); popMatrix(); /* Communication with client */ if(client != null){ // if client is connecting client.write("\n"); if((strdata=client.readString()) != null){ strdata=trim(strdata); // println(strdata); } } delay(10); } /* When a client is connected */ void serverEvent(Server s, Client c){ println("Client connect - IP:"+c.ip()); // show IP } /* Draw ColorCube function */ void colorcube(int s){ scale(s); beginShape(QUADS); fill(0, 1, 1); vertex(-1, 1, 1); fill(1, 1, 1); vertex( 1, 1, 1); fill(1, 0, 1); vertex( 1, -1, 1); fill(0, 0, 1); vertex(-1, -1, 1); fill(1, 1, 1); vertex( 1, 1, 1); fill(1, 1, 0); vertex( 1, 1, -1); fill(1, 0, 0); vertex( 1, -1, -1); fill(1, 0, 1); vertex( 1, -1, 1); fill(1, 1, 0); vertex( 1, 1, -1); fill(0, 1, 0); vertex(-1, 1, -1); fill(0, 0, 0); vertex(-1, -1, -1); fill(1, 0, 0); vertex( 1, -1, -1); fill(0, 1, 0); vertex(-1, 1, -1); fill(0, 1, 1); vertex(-1, 1, 1); fill(0, 0, 1); vertex(-1, -1, 1); fill(0, 0, 0); vertex(-1, -1, -1); fill(0, 1, 0); vertex(-1, 1, -1); fill(1, 1, 0); vertex( 1, 1, -1); fill(1, 1, 1); vertex( 1, 1, 1); fill(0, 1, 1); vertex(-1, 1, 1); fill(0, 0, 0); vertex(-1, -1, -1); fill(1, 0, 0); vertex( 1, -1, -1); fill(1, 0, 1); vertex( 1, -1, 1); fill(0, 0, 1); vertex(-1, -1, 1); endShape(); } /* End of Sever side sketch */ /* Copyright by Kimio Kosaka 2008.08.20 */
Client Side (Arduino-0011)
/*************************************/ /* Arduino meets Processing via Wifi */ /* Arduino Client side sketch */ /*************************************/ /* Switch and LED settings */ #define start_sw 4 #define led 3 /* DD-WRT user-ID,password,serial-speed settings */ #define USER_ID "root" #define PASSWD "admin" #define SERIAL_SPEED 115200 /* Processing-Server IP and TCP-Port settings */ #define SERVER "192.168.10.129" #define PORT "5555" void setup() { pinMode(led, OUTPUT); pinMode(start_sw,INPUT); Serial.begin(SERIAL_SPEED); /* waiting until start_sw was pushed */ while(digitalRead(start_sw)==HIGH){ digitalWrite(led,HIGH); delay(100); digitalWrite(led,LOW); delay(100); } while(digitalRead(start_sw)==LOW); /* login and connect */ login(); //login DD-WRT connect(); //connect Processing-Server digitalWrite(led,HIGH); } void loop() { int x = analogRead(0); // read voltage of potentiometer if(Serial.available()>0){ Serial.read(); // read out data from Processing-Server Serial.println(x,DEC); //send data to Processing-Server } /* if start_sw is pushed */ if(digitalRead(start_sw)==LOW){ disconnect(); //disconnect from Processing-Server logoff(); // logoff from DD-WRT /* LED blink eternally */ while(true){ digitalWrite(led,LOW); delay(1000); digitalWrite(led,HIGH); delay(1000); } } } /* login to DD-WRT */ void login() { Serial.print("\n"); allflush(); // flushing serial read buffer Serial.println(USER_ID); delay(500); Serial.println(PASSWD); allflush(); } /* logoff from DD-WRT */ void logoff() { Serial.print("\x03"); //CTRL+C delay(100); Serial.println("exit"); allflush(); } /* connect to Processing-Server */ void connect() { Serial.print("\x03\n\n"); //CRTL+C,LF,LF allflush(); /* telnet to Processing-Server */ Serial.print("telnet "); Serial.print(SERVER); Serial.print(" "); Serial.println(PORT); allflush(); /* telnet change "character mode". cf: DD-WRT telnet command */ Serial.print("\x03"); //CTRL+C Serial.print("c"); allflush(); Serial.print("\n"); allflush(); /* send first data to Processing-Server. first data is 0 */ Serial.println("0"); //send 0 } /* disconnect form Processing-Server */ void disconnect() { digitalWrite(led,HIGH); /* exit telnet. cf:DD-WRT telnet command */ Serial.print("\x1d");//CTRL+] delay(100); Serial.print("e"); delay(100); allflush(); } /* flushing serial read buffer */ void allflush() { delay(100); while(Serial.available()>0) Serial.flush(); } /* End of Client side sketch */ /* Copyright by Kimio Kosaka 2008.08.20 */
- The Arduino sketchIt’s sending characters over serial to a command line on the Fonera router.
-
- It’s doing is responding to „Username” and „Password” prompts with „root” and „admin”, so it’s logging in to the fonera as the root user.
- It’s running the „telnet” command to connect to the PC running a server written in Processing via wifi.
- It’s sending the value from an analogRead of a pin with potentiometer constantly.
- It receives those values, and rotates the colour cube on the screen by those.
The Arduino sketch It’s sending characters over serial to a command line on the Fonera router. The Processing sketch
6 Now I’m making and testing „Foneraduino” (Fonera + Arduino clone).
thanks