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:
Thu Jun 19 10:16:36 2014 +0000
Revision:
19:4e2900daad59
Parent:
18:62daece493a9
Child:
20:f0c7f5ca7e8a
Supported a new command format of SNIC UART.

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