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