CC3000 wifi shield difficulties
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: CC3000 wifi shield difficulties
Can you post some pictures of the shield, showing your soldering?
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
Like this?:
http://serviciosagranel.comcastbiz.net/ ... cion.shtml
By the way.... When I run the sketch even without the shield plugged in, it throws the same results, which tells me that the arduinno board doesn't even know the shield is there!
http://serviciosagranel.comcastbiz.net/ ... cion.shtml
By the way.... When I run the sketch even without the shield plugged in, it throws the same results, which tells me that the arduinno board doesn't even know the shield is there!
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: CC3000 wifi shield difficulties
Right - you've got some cold solder joints there. That's probably why it's not working.
Reheat all of the joints and make sure to heat the pad as well as the pin. Pin 10 in particular is a problem. The important pins are 13, 12, 11, 10, 5, and 3. Make sure that the solder has flowed over the pad smoothly, like this:
Reheat all of the joints and make sure to heat the pad as well as the pin. Pin 10 in particular is a problem. The important pins are 13, 12, 11, 10, 5, and 3. Make sure that the solder has flowed over the pad smoothly, like this:
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
Ok.. I've made a couple of corrections in the soldering, however, i get the same results. Unless you can give me another suggestion, I am going to assume my WiFi shield is fried. This thinks run at $40.00, so I would like to know where to send it back, to see if they can either send me another, or let me know what is wrong with it.
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: CC3000 wifi shield difficulties
Please email [email protected] with a link to this thread for a replacement shield
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
Done!... Thanks!
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
I have not got any response to my email asking for a replacement. Should I send another one?.... I am guesing they are going to tell me where to send this damaged one.... Any other suggestions?
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: CC3000 wifi shield difficulties
They may be out for the weekend. You can try sending another email. I don't know if they'll want the old one back or not.
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
Got a reply from Matt. He explained he would take care of my case. Thank you for your help
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
As far as my case, I am happy to inform that it is now resolved. Thanks to all of you, especially Matt, who took ownership on it, and completed the solution.
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: CC3000 wifi shield difficulties
You're welcome!wellyntong wrote:As far as my case, I am happy to inform that it is now resolved. Thanks to all of you, especially Matt, who took ownership on it, and completed the solution.
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
OK Rick... here I am again, sir.
Now I can see the web page in my iphone, using this sketch:..... However, the links I try to show, look like: "<a href=\"/H\">here</a> turn the LED on pin 9 on<br>".... in other words, HTML tags are showing. what is it I need to do to send a response to the arduino from my iphone, and turn on a simple LED?
Now I can see the web page in my iphone, using this sketch:
Code: Select all
#include <Adafruit_CC3000.h>
#include <SPI.h>
#include "utility/debug.h"
#include "utility/socket.h"
// These are the interrupt and control pins
#define ADAFRUIT_CC3000_IRQ 3 // MUST be an interrupt pin!
// These can be any two pins
#define ADAFRUIT_CC3000_VBAT 5
#define ADAFRUIT_CC3000_CS 10
// Use hardware SPI for the remaining pins
// On an UNO, SCK = 13, MISO = 12, and MOSI = 11
Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT,
SPI_CLOCK_DIVIDER); // you can change this clock speed
#define WLAN_SSID "BRETON-NG" // cannot be longer than 32 characters!
#define WLAN_PASS "CARAMBA001"
// Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
#define WLAN_SECURITY WLAN_SEC_WPA2
#define LISTEN_PORT 80 // What TCP port to listen on for connections.
// The HTTP protocol uses port 80 by default.
#define MAX_ACTION 10 // Maximum length of the HTTP action that can be parsed.
#define MAX_PATH 64 // Maximum length of the HTTP request path that can be parsed.
// There isn't much memory available so keep this short!
#define BUFFER_SIZE MAX_ACTION + MAX_PATH + 20 // Size of buffer for incoming request data.
// Since only the first line is parsed this
// needs to be as large as the maximum action
// and path plus a little for whitespace and
// HTTP version.
#define TIMEOUT_MS 500 // Amount of time in milliseconds to wait for
// an incoming request to finish. Don't set this
// too high or your server could be slow to respond.
Adafruit_CC3000_Server httpServer(LISTEN_PORT);
uint8_t buffer[BUFFER_SIZE+1];
int bufindex = 0;
char action[MAX_ACTION+1];
char path[MAX_PATH+1];
void setup(void)
{
Serial.begin(115200);
Serial.println(F("Hello, CC3000!\n"));
Serial.print("Free RAM: ");
Serial.println(getFreeRam(), DEC);
// Initialise the module
Serial.println(F("\nInitializing..."));
if (!cc3000.begin())
{
Serial.println(F("Couldn't begin()! Check your wiring?"));
while(1);
}
Serial.print(F("\nAttempting to connect to "));
Serial.println(WLAN_SSID);
if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
Serial.println(F("Failed!"));
while(1);
}
Serial.println(F("Connected!"));
Serial.println(F("Request DHCP"));
while (!cc3000.checkDHCP())
{
delay(100); // ToDo: Insert a DHCP timeout!
}
// Display the IP address DNS, Gateway, etc.
while (! displayConnectionDetails()) {
delay(1000);
}
// ******************************************************
// You can safely remove this to save some flash memory!
// ******************************************************
Serial.println(F("\r\nNOTE: This sketch may cause problems with other sketches"));
Serial.println(F("since the .disconnect() function is never called, so the"));
Serial.println(F("AP may refuse connection requests from the CC3000 until a"));
Serial.println(F("timeout period passes. This is normal behaviour since"));
Serial.println(F("there isn't an obvious moment to disconnect with a server.\r\n"));
// Start listening for connections
httpServer.begin();
Serial.println(F("Listening for connections..."));
}
void loop(void)
{
// Try to get a client which is connected.
Adafruit_CC3000_ClientRef client = httpServer.available();
if (client) {
Serial.println(F("Client connected."));
// Process this request until it completes or times out.
// Note that this is explicitly limited to handling one request at a time!
// Clear the incoming data buffer and point to the beginning of it.
bufindex = 0;
memset(&buffer, 0, sizeof(buffer));
// Clear action and path strings.
memset(&action, 0, sizeof(action));
memset(&path, 0, sizeof(path));
// Set a timeout for reading all the incoming data.
unsigned long endtime = millis() + TIMEOUT_MS;
// Read all the incoming data until it can be parsed or the timeout expires.
bool parsed = false;
while (!parsed && (millis() < endtime) && (bufindex < BUFFER_SIZE)) {
if (client.available()) {
buffer[bufindex++] = client.read();
}
parsed = parseRequest(buffer, bufindex, action, path);
}
// Handle the request if it was parsed.
if (parsed) {
Serial.println(F("Processing request"));
Serial.print(F("Action: "));
Serial.println(action);
Serial.print(F("Path: "));
Serial.println(path);
Serial.print(F("Parsed: "));
Serial.println(parsed);
// Check the action to see if it was a GET request.
if (strcmp(action, "GET") == 0) {
// Respond with the path that was accessed.
// First send the success response code.
client.fastrprintln(F("HTTP/1.1 200 OK"));
// Then send a few headers to identify the type of data returned and that
// the connection will not be held open.
client.fastrprintln(F("Content-Type: text/plain"));
client.fastrprintln(F("Connection: close"));
client.fastrprintln(F("Server: Adafruit CC3000"));
// Send an empty line to signal start of body.
client.fastrprintln(F(""));
// Now send the response data.
client.fastrprintln(F("Hello world!"));
client.fastrprint(F("You accessed path: "));
client.fastrprintln(path);
client.fastrprintln(F("<a href=\"/H\">here</a> turn the LED on pin 9 on<br>"));
client.fastrprintln(F("<a href=\"/L\">here</a> turn the LED on pin 9 off<br>"));
// The HTTP response ends with another blank line:
client.fastrprintln(F(""));
}
else {
// Unsupported action, respond with an HTTP 405 method not allowed error.
client.fastrprintln(F("HTTP/1.1 405 Method Not Allowed"));
client.fastrprintln(F(""));
}
}
// Wait a short period to make sure the response had time to send before
// the connection is closed (the CC3000 sends data asyncronously).
delay(100);
// Close the connection when done.
Serial.println(F("Client disconnected"));
client.close();
}
}
// Return true if the buffer contains an HTTP request. Also returns the request
// path and action strings if the request was parsed. This does not attempt to
// parse any HTTP headers because there really isn't enough memory to process
// them all.
// HTTP request looks like:
// [method] [path] [version] \r\n
// Header_key_1: Header_value_1 \r\n
// ...
// Header_key_n: Header_value_n \r\n
// \r\n
bool parseRequest(uint8_t* buf, int bufSize, char* action, char* path) {
// Check if the request ends with \r\n to signal end of first line.
if (bufSize < 2)
return false;
if (buf[bufSize-2] == '\r' && buf[bufSize-1] == '\n') {
parseFirstLine((char*)buf, action, path);
return true;
}
return false;
}
// Parse the action and path from the first line of an HTTP request.
void parseFirstLine(char* line, char* action, char* path) {
// Parse first word up to whitespace as action.
char* lineaction = strtok(line, " ");
if (lineaction != NULL)
strncpy(action, lineaction, MAX_ACTION);
// Parse second word up to whitespace as path.
char* linepath = strtok(NULL, " ");
if (linepath != NULL)
strncpy(path, linepath, MAX_PATH);
}
// Tries to read the IP address and other connection details
bool displayConnectionDetails(void)
{
uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv;
if(!cc3000.getIPAddress(&ipAddress, &netmask, &gateway, &dhcpserv, &dnsserv))
{
Serial.println(F("Unable to retrieve the IP Address!\r\n"));
return false;
}
else
{
Serial.print(F("\nIP Addr: "));
cc3000.printIPdotsRev(ipAddress);
Serial.print(F("\nNetmask: "));
cc3000.printIPdotsRev(netmask);
Serial.print(F("\nGateway: "));
cc3000.printIPdotsRev(gateway);
Serial.print(F("\nDHCPsrv: "));
cc3000.printIPdotsRev(dhcpserv);
Serial.print(F("\nDNSserv: "));
cc3000.printIPdotsRev(dnsserv);
Serial.println();
return true;
}
}
Last edited by adafruit_support_rick on Mon Dec 22, 2014 2:05 pm, edited 2 times in total.
Reason: please use Code tags when posting code (</> button)
Reason: please use Code tags when posting code (</> button)
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: CC3000 wifi shield difficulties
Sorry - I'm clueless on HTML. I'll see if somebody else can help.
- tdicola
- Posts: 1074
- Joined: Thu Oct 17, 2013 9:11 pm
Re: CC3000 wifi shield difficulties
Oh it's probably the content type header being sent back to the browser. This line:
Is telling the web browser that the following data should be interpreted as plain text. However you really want to browser to treat it as HTML. Try changing it to this:
That should be all you need to do to have the browser interpret everything as HTML and render the page. Give it a shot and let me know if you see any issues, thanks!
Code: Select all
client.fastrprintln(F("Content-Type: text/plain"));
Code: Select all
client.fastrprintln(F("Content-Type: text/html"));
- wellyntong
- Posts: 16
- Joined: Mon Nov 03, 2014 5:28 pm
Re: CC3000 wifi shield difficulties
Alright!, guys!... That worked!... Now I get the links!.... Thank you!.... So, when I click on the link, the page gets refreshed...... Now, I'm guessing, I use the "path" (H or L) to turn my LEDs on or off, Right?
Please be positive and constructive with your questions and comments.