Oefening embedded 10: deus ex machina
Doel
Lees sensoren met een microcontroller en verzamel deze gegevens in een bestand op PC. Zoek en gebruik bibliotheken. Gebruik code voorbeelden en pas deze aan voor de applicatie.
Opdracht
- Kies een sensor: temperatuursensor, accellerometer of lees de analoge spanning over een potentiometer.
- Lees de sensorwaarde. Voorzie een samplenummer.
- Verstuur de waarde en het samplenummer naar de PC. Via de seriële poort of ethernet.
- Verzamel alle data op de PC en sla deze data op in een bestand. Kies een formaat, zoals CSV of JSON.
TCP/IP
- Open cmd shell.
- Voer de volgende commando's uit:
ipconfig
: geeft instellingen van de netwerk interfacesping
: test de verbinding met een adres, bvb.ping localhost
,ping 127.0.0.1
,ping google.be
nslookup
: geeft informatie over DNS, i.e. vertaling tussen IP-adres en een domeinnaam. bvb.nslookup google.be
tracert
: geeft de route weer, bvb.tracert google.be
Stel zelf een IP adres in op de Ethernet port.
Figuur 1: Netwerkcentrum -> Verbinding: ethernet -> Eigenschappen -> Internet Protocol Version 4 -> Gebruik het volgende IP adres.
-
// ethernet object EthernetInterface eth; // set a static ip address eth.set_network("192.168.0.3","255.255.255.0","192.168.0.1"); // setup the physical interface eth.connect(); printf("The IP address is '%s'\n\r", eth.get_ip_address());
TCP Server:
// TCP server object on the ethernet interface TCPServer srv(ð); // setup a port for the TCP server srv.bind(4000); // start listening on the ethernet interface on the given port srv.listen(); // TCP socket represents a connection with a client TCPSocket client; // Socket address of the client SocketAddress client_addr; // setup data to send char *buffer = "Hello TCP client!\r\n"; // wait for a connection from a client srv.accept(&client, &client_addr); // received a connection from: ip on port printf("Accepted %s:%d\n\r", client_addr.get_ip_address(), client_addr.get_port()); // use the socket to send the data, 256 indicates the number of characters sent client.send(buffer, 256); // close connection client.close();
TCP Client:
// TCP socket represents a connection with a server TCPSocket socket; // open the connection using the ethernet interface socket.open(ð); // connect with the server on the IP address on a given port socket.connect("192.168.0.40",4000); // buffer to store received characters char rbuffer[64]; // wait for data int rcount = socket.recv(rbuffer, sizeof rbuffer); // data received printf("received: %d\r\n", rcount); printf(rbuffer); // close connection socket.close();
Extra
- Verstuur een samplefrequentie en het verwachte aantal samples vanuit de PC.
- Start en stop de dataverzameling vanaf de PC.