Added a basic WiFi UDP client example (#114)
* Added a basic WiFi UDP client example: a sketch that sends random bytes over udp. * Updated udp example and included Python and Ruby UDP servers.
This commit is contained in:
		
							parent
							
								
									de017a8a1b
								
							
						
					
					
						commit
						97e9a120bd
					
				
							
								
								
									
										75
									
								
								libraries/WiFi/examples/WiFiUDPClient/WiFiUDPClient.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								libraries/WiFi/examples/WiFiUDPClient/WiFiUDPClient.ino
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| /*
 | ||||
|  *  This sketch sends random data over UDP on a ESP32 device | ||||
|  * | ||||
|  */ | ||||
| #include <WiFi.h> | ||||
| #include <WiFiUdp.h> | ||||
| 
 | ||||
| // WiFi network name and password:
 | ||||
| const char * networkName = "your-ssid"; | ||||
| const char * networkPswd = "your-password"; | ||||
| 
 | ||||
| //IP address to send UDP data to:
 | ||||
| // either use the ip address of the server or 
 | ||||
| // a network broadcast address
 | ||||
| const char * udpAddress = "192.168.0.255"; | ||||
| const int udpPort = 3333; | ||||
| 
 | ||||
| //Are we currently connected?
 | ||||
| boolean connected = false; | ||||
| 
 | ||||
| //The udp library class
 | ||||
| WiFiUDP udp; | ||||
| 
 | ||||
| void setup(){ | ||||
|   // Initilize hardware serial:
 | ||||
|   Serial.begin(115200); | ||||
|    | ||||
|   //Connect to the WiFi network
 | ||||
|   connectToWiFi(networkName, networkPswd); | ||||
| } | ||||
| 
 | ||||
| void loop(){ | ||||
|   //only send data when connected
 | ||||
|   if(connected){ | ||||
|     //Send a packet
 | ||||
|     udp.beginPacket(udpAddress,udpPort); | ||||
|     udp.printf("Seconds since boot: %u", millis()/1000); | ||||
|     udp.endPacket(); | ||||
|   } | ||||
|   //Wait for 1 second
 | ||||
|   delay(1000); | ||||
| } | ||||
| 
 | ||||
| void connectToWiFi(const char * ssid, const char * pwd){ | ||||
|   Serial.println("Connecting to WiFi network: " + String(ssid)); | ||||
| 
 | ||||
|   // delete old config
 | ||||
|   WiFi.disconnect(true); | ||||
|   //register event handler
 | ||||
|   WiFi.onEvent(WiFiEvent); | ||||
|    | ||||
|   //Initiate connection
 | ||||
|   WiFi.begin(ssid, pwd); | ||||
| 
 | ||||
|   Serial.println("Waiting for WIFI connection..."); | ||||
| } | ||||
| 
 | ||||
| //wifi event handler
 | ||||
| void WiFiEvent(WiFiEvent_t event){ | ||||
|     switch(event) { | ||||
|       case SYSTEM_EVENT_STA_GOT_IP: | ||||
|           //When connected set 
 | ||||
|           Serial.print("WiFi connected! IP address: "); | ||||
|           Serial.println(WiFi.localIP());   | ||||
|           //initializes the UDP state
 | ||||
|           //This initializes the transfer buffer
 | ||||
|           udp.begin(WiFi.localIP(),udpPort); | ||||
|           connected = true; | ||||
|           break; | ||||
|       case SYSTEM_EVENT_STA_DISCONNECTED: | ||||
|           Serial.println("WiFi lost connection"); | ||||
|           connected = false; | ||||
|           break; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										30
									
								
								libraries/WiFi/examples/WiFiUDPClient/udp_server.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								libraries/WiFi/examples/WiFiUDPClient/udp_server.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| # This python script listens on UDP port 3333  | ||||
| # for messages from the ESP32 board and prints them | ||||
| import socket | ||||
| import sys | ||||
| 
 | ||||
| try : | ||||
|     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | ||||
|     s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | ||||
| except socket.error, msg : | ||||
|     print 'Failed to create socket. Error Code : ' + str(msg[0]) + ' Message ' + msg[1] | ||||
|     sys.exit() | ||||
| 
 | ||||
| try: | ||||
|     s.bind(('', 3333)) | ||||
| except socket.error , msg: | ||||
|     print 'Bind failed. Error: ' + str(msg[0]) + ': ' + msg[1] | ||||
|     sys.exit() | ||||
|       | ||||
| print 'Server listening' | ||||
| 
 | ||||
| while 1: | ||||
|     d = s.recvfrom(1024) | ||||
|     data = d[0] | ||||
|       | ||||
|     if not data:  | ||||
|         break | ||||
|      | ||||
|     print data.strip() | ||||
|      | ||||
| s.close() | ||||
							
								
								
									
										16
									
								
								libraries/WiFi/examples/WiFiUDPClient/udp_server.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								libraries/WiFi/examples/WiFiUDPClient/udp_server.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| # This ruby script listens on UDP port 3333  | ||||
| # for messages from the ESP32 board and prints them | ||||
| 
 | ||||
| require 'socket' | ||||
| include Socket::Constants | ||||
| 
 | ||||
| udp_socket = UDPSocket.new(AF_INET) | ||||
| 
 | ||||
| #bind  | ||||
| udp_socket.bind("", 3333) | ||||
| puts 'Server listening' | ||||
| 
 | ||||
| while true do | ||||
|   message, sender = udp_socket.recvfrom(1024) | ||||
|   puts message | ||||
| end | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user