forked from platformio/platformio-core
Add Arduino example with external library (Adafruit CC3000)
This commit is contained in:
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "examples/arduino-adafruit-library/lib/Adafruit_CC3000"]
|
||||
path = examples/arduino-adafruit-library/lib/Adafruit_CC3000
|
||||
url = https://github.com/adafruit/Adafruit_CC3000_Library.git
|
22
examples/arduino-adafruit-library/README.rst
Normal file
22
examples/arduino-adafruit-library/README.rst
Normal file
@ -0,0 +1,22 @@
|
||||
Arduino Example: Build \*.ino file with external Adafruit library
|
||||
=================================================================
|
||||
|
||||
1. Download ``platformio``
|
||||
`sources <https://github.com/ivankravets/platformio/archive/develop.zip>`_
|
||||
2. Extract ZIP archive
|
||||
3. Then run these commands:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# Change directory to example
|
||||
$ cd platformio-develop/examples/arduino-adafruit-library/
|
||||
|
||||
# Install Atmel AVR development platform with Arduino Framework
|
||||
$ platformio install atmelavr
|
||||
|
||||
# Process example project
|
||||
$ platformio run
|
||||
|
||||
# Upload firmware
|
||||
$ platformio run -t upload
|
||||
|
Submodule examples/arduino-adafruit-library/lib/Adafruit_CC3000 added at b285b094c6
7
examples/arduino-adafruit-library/platformio.ini
Normal file
7
examples/arduino-adafruit-library/platformio.ini
Normal file
@ -0,0 +1,7 @@
|
||||
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||
# See LICENSE for details.
|
||||
|
||||
[env:microduino]
|
||||
platform = atmelavr
|
||||
framework = arduino
|
||||
board = 644pa16m
|
185
examples/arduino-adafruit-library/src/EchoServer.ino
Executable file
185
examples/arduino-adafruit-library/src/EchoServer.ino
Executable file
@ -0,0 +1,185 @@
|
||||
|
||||
/***************************************************
|
||||
Adafruit CC3000 Breakout/Shield TCP Echo Server
|
||||
|
||||
This is a simple implementation of the echo
|
||||
protocol, RFC 862 http://tools.ietf.org/html/rfc862 ,
|
||||
for the Arduino platform and Adafruit CC3000 breakout
|
||||
or shield. This sketch will create a TCP server that
|
||||
listens by default on port 7 and echos back any data
|
||||
received. Up to 3 clients can be connected concurrently
|
||||
to the server. This sketch is meant as an example of how
|
||||
to write a simple server with the Arduino and CC3000.
|
||||
|
||||
See the CC3000 tutorial on Adafruit's learning system
|
||||
for more information on setting up and using the
|
||||
CC3000:
|
||||
http://learn.adafruit.com/adafruit-cc3000-wifi
|
||||
|
||||
Requirements:
|
||||
|
||||
This sketch requires the Adafruit CC3000 library. You can
|
||||
download the library from:
|
||||
https://github.com/adafruit/Adafruit_CC3000_Library
|
||||
|
||||
For information on installing libraries in the Arduino IDE
|
||||
see this page:
|
||||
http://arduino.cc/en/Guide/Libraries
|
||||
|
||||
Usage:
|
||||
|
||||
Update the SSID and, if necessary, the CC3000 hardware pin
|
||||
information below, then run the sketch and check the
|
||||
output of the serial port. After connecting to the
|
||||
wireless network successfully the sketch will output
|
||||
the IP address of the server and start listening for
|
||||
connections. Once listening for connections, connect
|
||||
to the server from your computer using a telnet client
|
||||
on port 7.
|
||||
|
||||
For example on Linux or Mac OSX, if your CC3000 has an
|
||||
IP address 192.168.1.100 you would execute in a command
|
||||
window:
|
||||
|
||||
telnet 192.168.1.100 7
|
||||
|
||||
After connecting, notice that as you type input and
|
||||
press enter to send it the CC3000 will echo back exactly
|
||||
what you typed. Press ctrl-] and type quit at the prompt
|
||||
to close the telnet session.
|
||||
|
||||
On Windows you'll need to download a telnet client. PuTTY
|
||||
is a good, free GUI client:
|
||||
http://www.chiark.greenend.org.uk/~sgtatham/putty/
|
||||
|
||||
License:
|
||||
|
||||
This example is copyright (c) 2013 Tony DiCola (tony@tonydicola.com)
|
||||
and is released under an open source MIT license. See details at:
|
||||
http://opensource.org/licenses/MIT
|
||||
|
||||
This code was adapted from Adafruit CC3000 library example
|
||||
code which has the following license:
|
||||
|
||||
Designed specifically to work with the Adafruit WiFi products:
|
||||
----> https://www.adafruit.com/products/1469
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
|
||||
BSD license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
#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 "myNetwork" // cannot be longer than 32 characters!
|
||||
#define WLAN_PASS "myPassword"
|
||||
// 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 7 // What TCP port to listen on for connections. The echo protocol uses port 7.
|
||||
|
||||
Adafruit_CC3000_Server echoServer(LISTEN_PORT);
|
||||
|
||||
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
|
||||
echoServer.begin();
|
||||
|
||||
Serial.println(F("Listening for connections..."));
|
||||
}
|
||||
|
||||
void loop(void)
|
||||
{
|
||||
// Try to get a client which is connected.
|
||||
Adafruit_CC3000_ClientRef client = echoServer.available();
|
||||
if (client) {
|
||||
// Check if there is data available to read.
|
||||
if (client.available() > 0) {
|
||||
// Read a byte and write it to all clients.
|
||||
uint8_t ch = client.read();
|
||||
client.write(ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user