Crawl再現プロジェクト

Committer:
miyakkey
Date:
Sat Feb 09 14:58:44 2019 +0000
Revision:
0:d730ea7f5784
Child:
1:6e1c32b423ac
test publidh for mbed-cli

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miyakkey 0:d730ea7f5784 1 #include "mbed.h"
miyakkey 0:d730ea7f5784 2 #include "ESP8266Interface.h"
miyakkey 0:d730ea7f5784 3
miyakkey 0:d730ea7f5784 4 DigitalOut myled(PB_3) ;
miyakkey 0:d730ea7f5784 5 Serial pc (PA_2, PA_15, 115200) ;
miyakkey 0:d730ea7f5784 6 //Serial pc (PA_2, PA_15, 9600) ;
miyakkey 0:d730ea7f5784 7 //Serial esp (PB_6, PB_7, 115200) ;
miyakkey 0:d730ea7f5784 8 ESP8266Interface wifi(PB_6, PB_7, false); //tx,rx,debug
miyakkey 0:d730ea7f5784 9 PwmOut mt[2][2] = {{PA_3, PA_6}, {PA_9, PA_8}} ;
miyakkey 0:d730ea7f5784 10
miyakkey 0:d730ea7f5784 11 const char ip_addr_dns[4] = {192,168,137,1} ;
miyakkey 0:d730ea7f5784 12 SocketAddress dns(ip_addr_dns) ;
miyakkey 0:d730ea7f5784 13 Thread t_led(osPriorityLow) ;
miyakkey 0:d730ea7f5784 14 //Thread t_serial(osPriorityAboveNormal) ; //configure mutax lock
miyakkey 0:d730ea7f5784 15
miyakkey 0:d730ea7f5784 16 void thread_led() ;
miyakkey 0:d730ea7f5784 17 //void thread_serial() ;
miyakkey 0:d730ea7f5784 18 void move_motor(float*) ;
miyakkey 0:d730ea7f5784 19 const char *sec2str(nsapi_security_t sec) ;
miyakkey 0:d730ea7f5784 20
miyakkey 0:d730ea7f5784 21 void thread_led(){
miyakkey 0:d730ea7f5784 22 while( true ) {
miyakkey 0:d730ea7f5784 23 myled = 1 ;
miyakkey 0:d730ea7f5784 24 wait(0.1) ;
miyakkey 0:d730ea7f5784 25 myled = 0 ;
miyakkey 0:d730ea7f5784 26 wait(1.0) ;
miyakkey 0:d730ea7f5784 27 }
miyakkey 0:d730ea7f5784 28 }
miyakkey 0:d730ea7f5784 29
miyakkey 0:d730ea7f5784 30 /*
miyakkey 0:d730ea7f5784 31
miyakkey 0:d730ea7f5784 32 void thread_serial(){
miyakkey 0:d730ea7f5784 33 pc.printf("Reset\r\n") ;
miyakkey 0:d730ea7f5784 34 pc.printf("Start Moving\r\n") ;
miyakkey 0:d730ea7f5784 35 pc.printf("Command\r\n") ;
miyakkey 0:d730ea7f5784 36 pc.printf("w:Forward, s:Backward\r\n") ;
miyakkey 0:d730ea7f5784 37 pc.printf("a:Left, d:Right\r\n") ;
miyakkey 0:d730ea7f5784 38 pc.printf("x:Stop\r\n") ;
miyakkey 0:d730ea7f5784 39
miyakkey 0:d730ea7f5784 40 float motor[2] = {0.0, 0.0} ;
miyakkey 0:d730ea7f5784 41
miyakkey 0:d730ea7f5784 42 while( true ){
miyakkey 0:d730ea7f5784 43 if ( pc.readable() ){
miyakkey 0:d730ea7f5784 44 char command ;
miyakkey 0:d730ea7f5784 45 command = pc.getc() ;
miyakkey 0:d730ea7f5784 46 switch ( command ) {
miyakkey 0:d730ea7f5784 47 case 'w' :
miyakkey 0:d730ea7f5784 48 motor[0] = 0.5 ;
miyakkey 0:d730ea7f5784 49 motor[1] = 0.5 ;
miyakkey 0:d730ea7f5784 50 break ;
miyakkey 0:d730ea7f5784 51 case 's' :
miyakkey 0:d730ea7f5784 52 motor[0] = -0.5 ;
miyakkey 0:d730ea7f5784 53 motor[1] = -0.5 ;
miyakkey 0:d730ea7f5784 54 break ;
miyakkey 0:d730ea7f5784 55 case 'a' :
miyakkey 0:d730ea7f5784 56 motor[0] = 0.7 ;
miyakkey 0:d730ea7f5784 57 motor[1] = -0.7 ;
miyakkey 0:d730ea7f5784 58 break ;
miyakkey 0:d730ea7f5784 59 case 'd' :
miyakkey 0:d730ea7f5784 60 motor[0] = -0.7 ;
miyakkey 0:d730ea7f5784 61 motor[1] = 0.7 ;
miyakkey 0:d730ea7f5784 62 break ;
miyakkey 0:d730ea7f5784 63 case 'x' :
miyakkey 0:d730ea7f5784 64 motor[0] = 0.0 ;
miyakkey 0:d730ea7f5784 65 motor[1] = 0.0 ;
miyakkey 0:d730ea7f5784 66 break ;
miyakkey 0:d730ea7f5784 67 default :
miyakkey 0:d730ea7f5784 68 break ;
miyakkey 0:d730ea7f5784 69 }
miyakkey 0:d730ea7f5784 70 pc.putc(command) ;
miyakkey 0:d730ea7f5784 71 move_motor(motor) ;
miyakkey 0:d730ea7f5784 72 }
miyakkey 0:d730ea7f5784 73 wait(0.05) ;
miyakkey 0:d730ea7f5784 74 }
miyakkey 0:d730ea7f5784 75 }*/
miyakkey 0:d730ea7f5784 76
miyakkey 0:d730ea7f5784 77 void move_motor(float* _motor){
miyakkey 0:d730ea7f5784 78 int i ;
miyakkey 0:d730ea7f5784 79 for ( i = 0 ; i < 2 ; i++ ){
miyakkey 0:d730ea7f5784 80 if ( _motor[i] > 0.01f ){
miyakkey 0:d730ea7f5784 81 mt[i][0] = _motor[i] ;
miyakkey 0:d730ea7f5784 82 mt[i][1] = 0.0 ;
miyakkey 0:d730ea7f5784 83 } else if ( _motor[i] < -0.01f ) {
miyakkey 0:d730ea7f5784 84 mt[i][0] = 0.0 ;
miyakkey 0:d730ea7f5784 85 mt[i][1] = ( _motor[i] * -1.f ) ;
miyakkey 0:d730ea7f5784 86 } else {
miyakkey 0:d730ea7f5784 87 mt[i][0] = 0.0 ;
miyakkey 0:d730ea7f5784 88 mt[i][1] = 0.0 ;
miyakkey 0:d730ea7f5784 89 }
miyakkey 0:d730ea7f5784 90 }
miyakkey 0:d730ea7f5784 91 }
miyakkey 0:d730ea7f5784 92
miyakkey 0:d730ea7f5784 93 const char *sec2str(nsapi_security_t sec){
miyakkey 0:d730ea7f5784 94 switch (sec) {
miyakkey 0:d730ea7f5784 95 case NSAPI_SECURITY_NONE:
miyakkey 0:d730ea7f5784 96 return "None";
miyakkey 0:d730ea7f5784 97 case NSAPI_SECURITY_WEP:
miyakkey 0:d730ea7f5784 98 return "WEP";
miyakkey 0:d730ea7f5784 99 case NSAPI_SECURITY_WPA:
miyakkey 0:d730ea7f5784 100 return "WPA";
miyakkey 0:d730ea7f5784 101 case NSAPI_SECURITY_WPA2:
miyakkey 0:d730ea7f5784 102 return "WPA2";
miyakkey 0:d730ea7f5784 103 case NSAPI_SECURITY_WPA_WPA2:
miyakkey 0:d730ea7f5784 104 return "WPA/WPA2";
miyakkey 0:d730ea7f5784 105 case NSAPI_SECURITY_UNKNOWN:
miyakkey 0:d730ea7f5784 106 default:
miyakkey 0:d730ea7f5784 107 return "Unknown";
miyakkey 0:d730ea7f5784 108 }
miyakkey 0:d730ea7f5784 109 }
miyakkey 0:d730ea7f5784 110
miyakkey 0:d730ea7f5784 111 void http_demo()
miyakkey 0:d730ea7f5784 112 {
miyakkey 0:d730ea7f5784 113 TCPSocket socket;
miyakkey 0:d730ea7f5784 114 nsapi_error_t response;
miyakkey 0:d730ea7f5784 115
miyakkey 0:d730ea7f5784 116 pc.printf("Sending HTTP request to www.arm.com...\n");
miyakkey 0:d730ea7f5784 117
miyakkey 0:d730ea7f5784 118 // Open a socket on the network interface, and create a TCP connection to www.arm.com
miyakkey 0:d730ea7f5784 119 response = socket.open(&wifi);
miyakkey 0:d730ea7f5784 120 if(0 != response) {
miyakkey 0:d730ea7f5784 121 pc.printf("socket.open() failed: %d\n", response);
miyakkey 0:d730ea7f5784 122 return;
miyakkey 0:d730ea7f5784 123 }
miyakkey 0:d730ea7f5784 124
miyakkey 0:d730ea7f5784 125 //response = socket.connect("api.ipify.org", 80);
miyakkey 0:d730ea7f5784 126 const char ip_addr_ipify[4] = {23,21,121,219} ;
miyakkey 0:d730ea7f5784 127 SocketAddress addr(ip_addr_ipify, 80) ;
miyakkey 0:d730ea7f5784 128 response = socket.connect(addr);
miyakkey 0:d730ea7f5784 129 if(0 != response) {
miyakkey 0:d730ea7f5784 130 pc.printf("Error connecting: %d\n", response);
miyakkey 0:d730ea7f5784 131 socket.close();
miyakkey 0:d730ea7f5784 132 return;
miyakkey 0:d730ea7f5784 133 }
miyakkey 0:d730ea7f5784 134
miyakkey 0:d730ea7f5784 135 // Send a simple http request
miyakkey 0:d730ea7f5784 136 char sbuffer[] = "GET / HTTP/1.1\r\nHost: api.ipify.org\r\nConnection: close\r\n\r\n";
miyakkey 0:d730ea7f5784 137 nsapi_size_t size = strlen(sbuffer);
miyakkey 0:d730ea7f5784 138
miyakkey 0:d730ea7f5784 139 // Loop until whole request send
miyakkey 0:d730ea7f5784 140 while(size) {
miyakkey 0:d730ea7f5784 141 response = socket.send(sbuffer+response, size);
miyakkey 0:d730ea7f5784 142 if (response < 0) {
miyakkey 0:d730ea7f5784 143 pc.printf("Error sending data: %d\n", response);
miyakkey 0:d730ea7f5784 144 socket.close();
miyakkey 0:d730ea7f5784 145 return;
miyakkey 0:d730ea7f5784 146 }
miyakkey 0:d730ea7f5784 147 size -= response;
miyakkey 0:d730ea7f5784 148 pc.printf("sent %d [%.*s]\n", response, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
miyakkey 0:d730ea7f5784 149 }
miyakkey 0:d730ea7f5784 150
miyakkey 0:d730ea7f5784 151 // Receieve a simple http response and print out the response line
miyakkey 0:d730ea7f5784 152 char rbuffer[64];
miyakkey 0:d730ea7f5784 153 response = socket.recv(rbuffer, sizeof rbuffer);
miyakkey 0:d730ea7f5784 154 if (response < 0) {
miyakkey 0:d730ea7f5784 155 pc.printf("Error receiving data: %d\n", response);
miyakkey 0:d730ea7f5784 156 } else {
miyakkey 0:d730ea7f5784 157 pc.printf("recv %d [%.*s]\n", response, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
miyakkey 0:d730ea7f5784 158 }
miyakkey 0:d730ea7f5784 159
miyakkey 0:d730ea7f5784 160 // Close the socket to return its memory and bring down the network interface
miyakkey 0:d730ea7f5784 161 socket.close();
miyakkey 0:d730ea7f5784 162 }
miyakkey 0:d730ea7f5784 163
miyakkey 0:d730ea7f5784 164 int main() {
miyakkey 0:d730ea7f5784 165 int i, j ;
miyakkey 0:d730ea7f5784 166 for ( i = 0 ; i < 2 ; i++ ){
miyakkey 0:d730ea7f5784 167 for ( j = 0 ; j < 2 ; j++ ){
miyakkey 0:d730ea7f5784 168 mt[i][j].period(0.00002) ;
miyakkey 0:d730ea7f5784 169 }
miyakkey 0:d730ea7f5784 170 }
miyakkey 0:d730ea7f5784 171 t_led.start(thread_led) ;
miyakkey 0:d730ea7f5784 172 //t_serial.start(thread_serial) ;
miyakkey 0:d730ea7f5784 173 pc.printf("Helloworld\r\n") ;
miyakkey 0:d730ea7f5784 174
miyakkey 0:d730ea7f5784 175 WiFiAccessPoint *ap ;
miyakkey 0:d730ea7f5784 176 pc.printf("Scan:\r\n");
miyakkey 0:d730ea7f5784 177 int count = wifi.scan(NULL,0);
miyakkey 0:d730ea7f5784 178 pc.printf("scan end, %d access point founded\r\n",count) ;
miyakkey 0:d730ea7f5784 179
miyakkey 0:d730ea7f5784 180 pc.printf("Scan:\r\n");
miyakkey 0:d730ea7f5784 181 ap = new WiFiAccessPoint[count];
miyakkey 0:d730ea7f5784 182 count = wifi.scan(ap, count);
miyakkey 0:d730ea7f5784 183 for (int i = 0; i < count; i++) {
miyakkey 0:d730ea7f5784 184 pc.printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\r\n", ap[i].get_ssid(),
miyakkey 0:d730ea7f5784 185 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
miyakkey 0:d730ea7f5784 186 ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel());
miyakkey 0:d730ea7f5784 187 }
miyakkey 0:d730ea7f5784 188 pc.printf("%d networks available.\r\n", count);
miyakkey 0:d730ea7f5784 189
miyakkey 0:d730ea7f5784 190 pc.printf("Connecting...") ;
miyakkey 0:d730ea7f5784 191 //int val = wifi.connect("Buffalo-G-C1B0", "hp43hgw57hhxe", NSAPI_SECURITY_WPA2);
miyakkey 0:d730ea7f5784 192 int val = wifi.connect("KOUSUKE-PC_6698", "67eT0013", NSAPI_SECURITY_WPA2) ;
miyakkey 0:d730ea7f5784 193 pc.printf("Connection Result::%d\r\n", val) ;
miyakkey 0:d730ea7f5784 194 pc.printf("MAC: %s\r\n", wifi.get_mac_address());
miyakkey 0:d730ea7f5784 195 pc.printf("IP: %s\r\n", wifi.get_ip_address());
miyakkey 0:d730ea7f5784 196 pc.printf("Netmask: %s\r\n", wifi.get_netmask());
miyakkey 0:d730ea7f5784 197 pc.printf("Gateway: %s\r\n", wifi.get_gateway());
miyakkey 0:d730ea7f5784 198 pc.printf("RSSI: %d\r\n\n", wifi.get_rssi());
miyakkey 0:d730ea7f5784 199
miyakkey 0:d730ea7f5784 200 wifi.add_dns_server(dns) ;
miyakkey 0:d730ea7f5784 201 http_demo() ;
miyakkey 0:d730ea7f5784 202
miyakkey 0:d730ea7f5784 203 pc.printf("Finished\r\n");
miyakkey 0:d730ea7f5784 204
miyakkey 0:d730ea7f5784 205 wait(osWaitForever) ;
miyakkey 0:d730ea7f5784 206 }