demo of Murata wifi chip as TCP client.

Dependencies:   SNICInterface mbed-rtos mbed

Fork of murataDemo by Austin Blackstone

Intro

this program demonstrates how to use TCP on the Murata Wifi chip. It will connect to a server and send a message, the server will then send a reply. The reply will be printed out to the terminal on the microcontroller.

Instructions

  1. Make sure you have both the wifi device and the computer running the server on the same network / wifi router.
  2. Change the hard coded IP in the microcontroller code to match that of the laptop running the python server.
  3. Run the python2 script below on the computer
  4. Have a console hooked up to the microcontroller and watch as messages are sent back and forth between the server (python) and the client (murata).
  5. Run the microcontroller code on the device.

For ease of use numbers have been appended to the end of the messages being sent back and forth.

Python Server

Please run this python2.7 code on your computer. Make sure to change the IP Address in the microcontroller code to match the IP of your computer.

import socket
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 7))
s.listen(1)
 
x = 0
while True:
    conn, addr = s.accept()
    print 'Connected b'TCP data from server: 'y', addr
    while True:
        # receive data from board
        data = conn.recv(1024)
        
        # check received data
        if not data: 
            break
        
        # print received data 
        print("TCP data from microcontroller: '"+data+"'")
        
        # send data to board with counter to differentiate messages
        conn.sendall("HelloFromPython!: "+str(x)+"\n\r")
        x+=1

    # close the port
    conn.close()

Revision:
28:174412ff9671
Parent:
27:6949291ca38d
Child:
29:9f08c7152c7a
--- a/main.cpp	Tue Nov 25 00:33:30 2014 +0000
+++ b/main.cpp	Wed Apr 01 22:37:22 2015 +0000
@@ -19,158 +19,52 @@
 #include "mbed.h"
 #include "SNIC_WifiInterface.h"
 
-#define XI_FEED_ID 1056160623 // set Xively Feed ID (numerical, no quoutes)
-#define XI_API_KEY "Wg7CfZDrj7VjIIpiYzdDrMow6wdENAOGjkIfQ0fUjJh6DAw2" // set Xively API key (double-quoted string)
-
-#include "app_board_io.h"
+Serial pc(USBTX, USBRX);
 
-#include "xively.h"
-#include "xi_err.h"
-
-#include "MMA7660.h"
-#include "LM75B.h"
-#include "C12832.h"
 
-#if defined(TARGET_LPC1768)
-#include "PowerControl/EthernetPowerControl.h"
-C12832 lcd(p5, p7, p6, p8, p11);
-MMA7660 axl(p28, p27);
-LM75B tmp(p28, p27);
-Serial pc(USBTX, USBRX);    /* for DEBUG_PRINT */
-#elif defined(TARGET_KL46Z)
-C12832 lcd(D11, D13, D12, D7, D10);
-MMA7660 axl(I2C_SDA, I2C_SCL);
-LM75B tmp(I2C_SDA, I2C_SCL);
-Serial pc(P2_12, P2_11);    /* for DEBUG_PRINT */
-#endif
+#define WIFI_SSID                  "AP_SSID"
+#define WIFI_SECURITY_TYPE         e_SEC_WPA2_AES
+#define WIFI_SECUTIRY_KEY          "WPA2_PASSPHRASE"
+#define WIFI_SECUTIRY_KEY_LEN      15
 
-#include "logo.h"
-
-#define DEMO_AP_SSID                  "AP_SSID"
-#define DEMO_AP_SECURITY_TYPE         e_SEC_WPA2_AES
-#define DEMO_AP_SECUTIRY_KEY          "WPA2_PASSPHRASE"
-#define DEMO_AP_SECUTIRY_KEY_LEN      15
-
-/** Wi-Fi SNIC UART Interface*/
-#if defined(TARGET_LPC1768)
-C_SNIC_WifiInterface     mSNICwifi( p9, p10, NC, NC, p30 );
-#elif defined(TARGET_KL46Z)
-C_SNIC_WifiInterface     mSNICwifi( D1, D0, NC, NC, D3 );
-#endif
+C_SNIC_WifiInterface     wifi( D1, D0, NC, NC, D3 );
 
-int main() {
-    
-#if defined(TARGET_LPC1768)
-    PHY_PowerDown();
-#endif
-#ifdef _DEBUG
-    pc.baud( 115200 );
-#endif
-    DEBUG_PRINT("main\r\n");
-    lcd_print_xively_logo();
-    
+int main()
+{
+    // for built in debug printouts
+//    pc.baud( 115200 ); 
+
     // Initialize Wi-Fi interface
-    int s = mSNICwifi.init();
-    
-    lcd_printf("init();\r\n");
-    
-    if( s != 0 )
-    {
-        lcd_printf( "Could not initialise. Will halt!\n" );        
+    if( wifi.init() != 0 ) {
+        printf( "Wifi could not be initialized, halting.\r\n" );
         return -1;
-    }    
-    wait(0.5);
-    s = mSNICwifi.disconnect();
-    lcd_printf("disconnect();\r\n");
-    if( s != 0 )
-    {
-        printf( "disconnect failed\r\n" );        
-        return -1;
-    }    
-    
-    wait(0.3);
-    // Connect AP
-    mSNICwifi.connect( DEMO_AP_SSID
-                        , strlen(DEMO_AP_SSID)
-                        , DEMO_AP_SECURITY_TYPE
-                        , DEMO_AP_SECUTIRY_KEY
-                        , DEMO_AP_SECUTIRY_KEY_LEN );
-    lcd_printf("connect();\r\n");
+    }else {
+        printf("wifi initialized successfully!\r\n");
+    }
     wait(0.5);
     
-    lcd_printf("IP Config();\r\n");
-    mSNICwifi.setIPConfig( true );
+    // good form to make sure you are disconnected from all AP's
+    if( wifi.disconnect() != 0 ) {
+        printf( "disconnect failed\r\n" );
+        return -1;
+    }else{
+        printf("disconnection successful!\r\n");
+        }
+    wait(0.3);
     
+    // Connect AP
+    wifi.connect( WIFI_SSID
+                       , strlen(WIFI_SSID)
+                       , WIFI_SECURITY_TYPE
+                       , WIFI_SECUTIRY_KEY
+                       , WIFI_SECUTIRY_KEY_LEN );
+    printf("connect();\r\n");
     wait(0.5);
 
-    xi_feed_t feed;
-    memset( &feed, NULL, sizeof( xi_feed_t ) );
-    
-    feed.feed_id = XI_FEED_ID;
-    feed.datastream_count = 3;
-    
-    feed.datastreams[0].datapoint_count = 1;
-    xi_datastream_t* orientation_datastream = &feed.datastreams[0];
-    strcpy( orientation_datastream->datastream_id, "orientation" );
-    xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0];
-
-    feed.datastreams[1].datapoint_count = 1;
-    xi_datastream_t* side_rotation_datastream = &feed.datastreams[1];
-    strcpy( side_rotation_datastream->datastream_id, "side_rotation" );
-    xi_datapoint_t* current_side_rotation = &side_rotation_datastream->datapoints[0];
-    
-    feed.datastreams[2].datapoint_count = 1;
-    xi_datastream_t* temperature_datastream = &feed.datastreams[2];
-    strcpy( temperature_datastream->datastream_id, "temperature" );
-    xi_datapoint_t* current_temperature = &temperature_datastream->datapoints[0];
-    
-    // create the cosm library context
-    xi_context_t* xi_context
-        = xi_create_context( XI_HTTP, XI_API_KEY, feed.feed_id );
-
-    // check if everything works
-    if( xi_context == NULL )
-    {
-        return -1;
-    }
+    printf("IP Config();\r\n");
+    wifi.setIPConfig( true );
 
-    while(1) {
-      switch( axl.getSide() ) {
-        case MMA7660::Front:
-          xi_set_value_str( current_side_rotation, "front" );
-          break;
-        case MMA7660::Back:
-          xi_set_value_str( current_side_rotation, "back" );
-          break;
-        default:
-          xi_set_value_str( current_side_rotation, "unknown" );
-          break;
-      }
-      
-      switch( axl.getOrientation() ) {
-        case MMA7660::Down:
-          xi_set_value_str( current_orientation, "down" );
-          break;
-        case MMA7660::Up:
-           xi_set_value_str( current_orientation, "up" );
-           break;
-        case MMA7660::Right:
-          xi_set_value_str( current_orientation, "right" );
-          break;
-        case MMA7660::Left:
-          xi_set_value_str( current_orientation, "left" );
-          break;
-        default: 
-          xi_set_value_str( current_orientation, "unknown" );
-          break;
-      }
-      
-      xi_set_value_f32( current_temperature, tmp.read() );
-        
-      lcd_printf( "update...\n" );
-      xi_feed_update( xi_context, &feed );
-      lcd_printf( "done...\n" );
-      
-      wait( 1.0 );
-    }
+    printf( "done...\n" );
+
+    wait( 1.0 );
 }