In this video we look at how to make a simple Android App to control your Arduino via WiFi
To download the Andriod App .aia file to load into MIT App Inventor: https://dl.dropboxusercontent.com/u/26591541/HomeAutoEx.aia
Arduino Code from video:
//This sketch made for a video tutorial on the ForceTronics YouTube Channel
//The tutorial shows how to make a simple Android app to control an Arduino wirelessly via WiFi
//This sketch leverages code from the Arduino example programs "AP_SimpleWebServer" and "WiFiWebServer"
//This sketch is free and open to be used and modified
#include <SPI.h> //What is used to communicate witht he WiFi chip
#include <WiFi101.h> //Wifi library fro Arduino MKR1000 and WiFi shield
int lControl = 6; //Digital pin that LED is connected to on the MKR1000
char ssid[] = "YourNetwork"; // your network SSID (name)
char pass[] = "YourPassword"; // your network password
int keyIndex = 0; // your network key Index number (needed only for WEP)
int status = WL_IDLE_STATUS; //status of wifi
WiFiServer server(80); //declare server object and spedify port, 80 is port used for internet
void setup() {
//Uncomment serial for debugging and to see details of WiFi connection
// Serial.begin(9600);
// while (!Serial) {
// wait for serial port to connect. Needed for native USB port only
// }
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
// Serial.println("WiFi shield not present");
// don't continue:
while (true);
}
// attempt to connect to Wifi network:
while ( status != WL_CONNECTED) {
// Serial.print("Attempting to connect to SSID: ");
// Serial.println(ssid);
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
server.begin();
// you're connected now, so print out the status:
// printWifiStatus();
}
void loop() {
WiFiClient client = server.available(); // listen for incoming clients
if (client) { // if you get a client,
// Serial.println("new client"); // print a message out the serial port
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected()) { // loop while the client's connected
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
// Serial.write(c); // print it out the serial monitor
if (c == '\n') { // if the byte is a newline character
// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.print("Value at A0 is ");
client.print(analogRead(A0));
client.print("<br>");
// The HTTP response ends with another blank line:
client.println();
// break out of the while loop:
break;
}
else { // if you got a newline, then clear currentLine:
currentLine = "";
}
}
else if (c != '\r') { // if you got anything else but a carriage return character,
currentLine += c; // add it to the end of the currentLine
}
// Check to see if the client request was "GET /H" or "GET /L":
if (currentLine.endsWith("GET /H")) {
digitalWrite(lControl, HIGH); // GET /H turns the LED on
}
if (currentLine.endsWith("GET /L")) {
digitalWrite(lControl, LOW); // GET /L turns the LED off
}
}
}
// close the connection:
client.stop();
// Serial.println("client disconnected");
}
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
Thanks for the tutorial. The .aia file is missing, can you post it somewhere? Thanks.
ReplyDeleteCan you repost the application as the link is expired
ReplyDeletethanks, but link is broken
ReplyDeletehI!!Where is circuit diagram please give circuit diagram
ReplyDeleteRegards
If you a have question like that how to build an app? Then you should know that there are some popular names like Weebly, Wix, and Squarespace which let you create a website with just a drag-and-drop option. While using sites like Woocommerce and Shopify, you can easily develop a web store in no time.
ReplyDeleteNice post. Very interesting. Link is broken though. Can you post a new link? Thanks
ReplyDeleteGood job.But MIT App Inventor's link not working. Can you refresh this link? Thanks
ReplyDeleteCan I provide power supply to Vin pin. Can I give 5 v power supply which is getting from the mobile charger. Can you provide me any good link in which an external power supply is provided with mobile charger or with battery and how to connect it with battery.
ReplyDeleteAlso I've heard that giving 5 v to vin is ok. Can you please tell me can I give 5v supply coming from mobile charger with 2A to usb available in ESP8266. I took the reference from https://forum.arduino.cc/index.php?topic=583773.0
Thanks a lot for sharing info
You can't mix and match, though, as all WiFi devices on your network must use the same encryption scheme. WEP may be not as good as the WPA settings, but remember that it's far better than no encryption at all. 192.168.100.1
ReplyDelete