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()

Committer:
kishino
Date:
Wed Jun 11 05:29:07 2014 +0000
Revision:
18:62daece493a9
Parent:
17:0bf3c49a83d5
Child:
19:4e2900daad59
Update SNIC xively demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xively 0:efdea27c3b81 1 #include "mbed.h"
kishino 14:6d58d3855feb 2 #include "SNIC_WifiInterface.h"
xively 7:0eff5db44b8b 3
kishino 14:6d58d3855feb 4 #define XI_FEED_ID 1056160623 // set Xively Feed ID (numerical, no quoutes)
kishino 14:6d58d3855feb 5 #define XI_API_KEY "Wg7CfZDrj7VjIIpiYzdDrMow6wdENAOGjkIfQ0fUjJh6DAw2" // set Xively API key (double-quoted string)
errordeveloper 10:86ffba646df1 6
errordeveloper 10:86ffba646df1 7 #include "app_board_io.h"
xively 7:0eff5db44b8b 8
xively 0:efdea27c3b81 9 #include "xively.h"
xively 0:efdea27c3b81 10 #include "xi_err.h"
xively 0:efdea27c3b81 11
errordeveloper 10:86ffba646df1 12 #include "MMA7660.h"
errordeveloper 10:86ffba646df1 13 #include "LM75B.h"
errordeveloper 11:bdf601a405fc 14 #include "C12832_lcd.h"
errordeveloper 10:86ffba646df1 15
kishino 16:ed9b9c28f860 16 #include "PowerControl/EthernetPowerControl.h"
kishino 16:ed9b9c28f860 17
kishino 17:0bf3c49a83d5 18 #include "UDPSocket.h"
kishino 17:0bf3c49a83d5 19
xively 0:efdea27c3b81 20 MMA7660 axl(p28, p27);
xively 3:7ad3f6543b6e 21 LM75B tmp(p28, p27);
errordeveloper 11:bdf601a405fc 22 C12832_LCD lcd;
errordeveloper 11:bdf601a405fc 23
errordeveloper 11:bdf601a405fc 24 #include "logo.h"
xively 0:efdea27c3b81 25
kishino 17:0bf3c49a83d5 26 #if 0
kishino 15:abc12b228291 27 #define DEMO_AP_SSID "muRata12345"
kishino 15:abc12b228291 28 #define DEMO_AP_SECURITY_TYPE e_SEC_WPA2_AES
kishino 15:abc12b228291 29 #define DEMO_AP_SECUTIRY_KEY "12345678"
kishino 16:ed9b9c28f860 30 #define DEMO_AP_SECUTIRY_KEY_LEN 8
kishino 14:6d58d3855feb 31 #else
kishino 15:abc12b228291 32 #define DEMO_AP_SSID "E2N1-Lab-Buffalo-D302"
kishino 17:0bf3c49a83d5 33 //#define DEMO_AP_SECURITY_TYPE e_SEC_OPEN
kishino 17:0bf3c49a83d5 34 //#define DEMO_AP_SECUTIRY_KEY ""
kishino 17:0bf3c49a83d5 35 #define DEMO_AP_SECURITY_TYPE e_SEC_WPA2_AES
kishino 17:0bf3c49a83d5 36 #define DEMO_AP_SECUTIRY_KEY "12345678"
kishino 17:0bf3c49a83d5 37 #define DEMO_AP_SECUTIRY_KEY_LEN 8
kishino 14:6d58d3855feb 38 #endif
kishino 14:6d58d3855feb 39 /** Wi-Fi SNIC UART Interface*/
kishino 14:6d58d3855feb 40 C_SNIC_WifiInterface mSNICwifi( p9, p10, NC, NC, p30 );
kishino 14:6d58d3855feb 41 Serial pc(USBTX, USBRX);
kishino 17:0bf3c49a83d5 42
xively 0:efdea27c3b81 43 int main() {
kishino 16:ed9b9c28f860 44
kishino 16:ed9b9c28f860 45 PHY_PowerDown();
kishino 16:ed9b9c28f860 46
kishino 14:6d58d3855feb 47 pc.baud( 115200 );
kishino 14:6d58d3855feb 48 printf("main\r\n");
errordeveloper 11:bdf601a405fc 49 lcd_print_xively_logo();
xively 0:efdea27c3b81 50
kishino 14:6d58d3855feb 51 // Initialize Wi-Fi interface
kishino 14:6d58d3855feb 52 int s = mSNICwifi.init();
xively 0:efdea27c3b81 53
kishino 14:6d58d3855feb 54 lcd_printf("init();\r\n");
kishino 14:6d58d3855feb 55
kishino 14:6d58d3855feb 56 if( s != 0 )
xively 0:efdea27c3b81 57 {
xively 7:0eff5db44b8b 58 lcd_printf( "Could not initialise. Will halt!\n" );
kishino 14:6d58d3855feb 59 return -1;
xively 0:efdea27c3b81 60 }
xively 0:efdea27c3b81 61
kishino 14:6d58d3855feb 62 wait(0.5);
kishino 14:6d58d3855feb 63 mSNICwifi.disconnect();
kishino 14:6d58d3855feb 64 lcd_printf("disconnect();\r\n");
xively 0:efdea27c3b81 65
kishino 14:6d58d3855feb 66 wait(0.5);
kishino 14:6d58d3855feb 67 // Connect AP
kishino 14:6d58d3855feb 68 s = mSNICwifi.connect( DEMO_AP_SSID
kishino 14:6d58d3855feb 69 , strlen(DEMO_AP_SSID)
kishino 14:6d58d3855feb 70 , DEMO_AP_SECURITY_TYPE
kishino 14:6d58d3855feb 71 , DEMO_AP_SECUTIRY_KEY
kishino 14:6d58d3855feb 72 , DEMO_AP_SECUTIRY_KEY_LEN );
kishino 14:6d58d3855feb 73 lcd_printf("connect();\r\n");
kishino 16:ed9b9c28f860 74 if( s != 0 )
xively 0:efdea27c3b81 75 {
xively 7:0eff5db44b8b 76 lcd_printf( "Could not connect. Will halt!\n" );
kishino 14:6d58d3855feb 77 return -1;
xively 0:efdea27c3b81 78 }
kishino 14:6d58d3855feb 79 wait(0.5);
kishino 14:6d58d3855feb 80
xively 0:efdea27c3b81 81 xi_feed_t feed;
xively 0:efdea27c3b81 82 memset( &feed, NULL, sizeof( xi_feed_t ) );
xively 0:efdea27c3b81 83
xively 0:efdea27c3b81 84 feed.feed_id = XI_FEED_ID;
xively 3:7ad3f6543b6e 85 feed.datastream_count = 3;
xively 0:efdea27c3b81 86
xively 0:efdea27c3b81 87 feed.datastreams[0].datapoint_count = 1;
xively 0:efdea27c3b81 88 xi_datastream_t* orientation_datastream = &feed.datastreams[0];
xively 0:efdea27c3b81 89 strcpy( orientation_datastream->datastream_id, "orientation" );
xively 0:efdea27c3b81 90 xi_datapoint_t* current_orientation = &orientation_datastream->datapoints[0];
xively 0:efdea27c3b81 91
xively 0:efdea27c3b81 92 feed.datastreams[1].datapoint_count = 1;
xively 0:efdea27c3b81 93 xi_datastream_t* side_rotation_datastream = &feed.datastreams[1];
xively 0:efdea27c3b81 94 strcpy( side_rotation_datastream->datastream_id, "side_rotation" );
xively 0:efdea27c3b81 95 xi_datapoint_t* current_side_rotation = &side_rotation_datastream->datapoints[0];
xively 0:efdea27c3b81 96
xively 3:7ad3f6543b6e 97 feed.datastreams[2].datapoint_count = 1;
xively 3:7ad3f6543b6e 98 xi_datastream_t* temperature_datastream = &feed.datastreams[2];
xively 3:7ad3f6543b6e 99 strcpy( temperature_datastream->datastream_id, "temperature" );
xively 3:7ad3f6543b6e 100 xi_datapoint_t* current_temperature = &temperature_datastream->datapoints[0];
xively 3:7ad3f6543b6e 101
xively 0:efdea27c3b81 102 // create the cosm library context
xively 0:efdea27c3b81 103 xi_context_t* xi_context
xively 0:efdea27c3b81 104 = xi_create_context( XI_HTTP, XI_API_KEY, feed.feed_id );
xively 0:efdea27c3b81 105
xively 0:efdea27c3b81 106 // check if everything works
xively 0:efdea27c3b81 107 if( xi_context == NULL )
xively 0:efdea27c3b81 108 {
xively 0:efdea27c3b81 109 return -1;
xively 0:efdea27c3b81 110 }
xively 0:efdea27c3b81 111
xively 0:efdea27c3b81 112 while(1) {
xively 0:efdea27c3b81 113
xively 0:efdea27c3b81 114 switch( axl.getSide() ) {
xively 0:efdea27c3b81 115 case MMA7660::Front:
xively 0:efdea27c3b81 116 xi_set_value_str( current_side_rotation, "front" );
xively 0:efdea27c3b81 117 break;
xively 0:efdea27c3b81 118 case MMA7660::Back:
xively 0:efdea27c3b81 119 xi_set_value_str( current_side_rotation, "back" );
xively 0:efdea27c3b81 120 break;
xively 0:efdea27c3b81 121 default:
xively 0:efdea27c3b81 122 xi_set_value_str( current_side_rotation, "unknown" );
xively 0:efdea27c3b81 123 break;
xively 0:efdea27c3b81 124 }
xively 0:efdea27c3b81 125
xively 0:efdea27c3b81 126 switch( axl.getOrientation() ) {
xively 0:efdea27c3b81 127 case MMA7660::Down:
xively 0:efdea27c3b81 128 xi_set_value_str( current_orientation, "down" );
xively 0:efdea27c3b81 129 break;
xively 0:efdea27c3b81 130 case MMA7660::Up:
xively 0:efdea27c3b81 131 xi_set_value_str( current_orientation, "up" );
xively 0:efdea27c3b81 132 break;
xively 0:efdea27c3b81 133 case MMA7660::Right:
xively 0:efdea27c3b81 134 xi_set_value_str( current_orientation, "right" );
xively 0:efdea27c3b81 135 break;
xively 0:efdea27c3b81 136 case MMA7660::Left:
xively 0:efdea27c3b81 137 xi_set_value_str( current_orientation, "left" );
xively 0:efdea27c3b81 138 break;
xively 0:efdea27c3b81 139 default:
xively 0:efdea27c3b81 140 xi_set_value_str( current_orientation, "unknown" );
xively 0:efdea27c3b81 141 break;
xively 0:efdea27c3b81 142 }
xively 3:7ad3f6543b6e 143
xively 3:7ad3f6543b6e 144 xi_set_value_f32( current_temperature, tmp.read() );
xively 4:e7ca62a11595 145
xively 7:0eff5db44b8b 146 lcd_printf( "update...\n" );
errordeveloper 11:bdf601a405fc 147 xi_feed_update( xi_context, &feed );
xively 7:0eff5db44b8b 148 lcd_printf( "done...\n" );
xively 3:7ad3f6543b6e 149
kishino 14:6d58d3855feb 150 wait( 1.0 );
xively 0:efdea27c3b81 151 }
Ilya Dmitrichenko 6:9e4f4a8c1829 152 }