First Commit
This commit is contained in:
82
libraries/MySQL_Connector_Arduino/examples/reboot/reboot.ino
Normal file
82
libraries/MySQL_Connector_Arduino/examples/reboot/reboot.ino
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
MySQL Connector/Arduino Example : reboot if connection lost
|
||||
|
||||
This example demonstrates how to reboot an Arduino if connection to the
|
||||
server is lost for a period of time.
|
||||
|
||||
For more information and documentation, visit the wiki:
|
||||
https://github.com/ChuckBell/MySQL_Connector_Arduino/wiki.
|
||||
|
||||
INSTRUCTIONS FOR USE
|
||||
|
||||
1) Change the address of the server to the IP address of the MySQL server
|
||||
2) Change the user and password to a valid MySQL user and password
|
||||
3) Connect a USB cable to your Arduino
|
||||
4) Select the correct board and port
|
||||
5) Compile and upload the sketch to your Arduino
|
||||
6) Once uploaded, open Serial Monitor (use 115200 speed) and observe
|
||||
|
||||
To test the reboot, unplug your Ethernet cable once you see "disconnected"
|
||||
then wait for the timeout. Once the Arduino reboots, plug the cable in again
|
||||
and you should see the query processing resume.
|
||||
|
||||
Created by: Dr. Charles A. Bell
|
||||
*/
|
||||
#include <Ethernet.h>
|
||||
#include <MySQL_Connection.h>
|
||||
#include <MySQL_Cursor.h>
|
||||
|
||||
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
|
||||
|
||||
IPAddress server_addr(10,0,1,35); // IP of the MySQL *server* here
|
||||
char user[] = "root"; // MySQL user login username
|
||||
char password[] = "secret"; // MySQL user login password
|
||||
|
||||
EthernetClient client;
|
||||
MySQL_Connection conn((Client *)&client);
|
||||
MySQL_Cursor cur = MySQL_Cursor(&conn);
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
while (!Serial); // wait for serial port to connect
|
||||
Ethernet.begin(mac_addr);
|
||||
}
|
||||
|
||||
// Begin reboot code
|
||||
int num_fails; // variable for number of failure attempts
|
||||
#define MAX_FAILED_CONNECTS 5 // maximum number of failed connects to MySQL
|
||||
|
||||
void soft_reset() {
|
||||
asm volatile("jmp 0");
|
||||
}
|
||||
// End reboot code
|
||||
|
||||
void loop() {
|
||||
Serial.println("Sleeping...");
|
||||
delay(1000);
|
||||
if (conn.connected()) {
|
||||
Serial.println("Running a query");
|
||||
cur.execute("SHOW DATABASES"); // execute a query
|
||||
cur.show_results(); // show the results
|
||||
cur.close(); // close the cursor
|
||||
conn.close(); // close the connection
|
||||
num_fails = 0; // reset failures
|
||||
delay(3000);
|
||||
} else {
|
||||
Serial.println("Connecting...");
|
||||
if (conn.connect(server_addr, 3306, user, password)) {
|
||||
delay(500);
|
||||
} else {
|
||||
num_fails++;
|
||||
Serial.println("Connect failed!");
|
||||
if (num_fails == MAX_FAILED_CONNECTS) {
|
||||
Serial.println("Ok, that's it. I'm outta here. Rebooting...");
|
||||
delay(2000);
|
||||
// Here we tell the Arduino to reboot by redirecting the instruction
|
||||
// pointer to the "top" or position 0. This is a soft reset and may
|
||||
// not solve all hardware-related lockups.
|
||||
soft_reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user