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

  1. Kies een sensor: temperatuursensor, accellerometer of lees de analoge spanning over een potentiometer.
  2. Lees de sensorwaarde. Voorzie een samplenummer.
  3. Verstuur de waarde en het samplenummer naar de PC. Via de seriële poort of ethernet.
  4. Verzamel alle data op de PC en sla deze data op in een bestand. Kies een formaat, zoals CSV of JSON.

TCP/IP

  1. Open cmd shell.
  2. Voer de volgende commando's uit:
    1. ipconfig : geeft instellingen van de netwerk interfaces
    2. ping : test de verbinding met een adres, bvb. ping localhost, ping 127.0.0.1, ping google.be
    3. nslookup : geeft informatie over DNS, i.e. vertaling tussen IP-adres en een domeinnaam. bvb. nslookup google.be
    4. tracert : geeft de route weer, bvb. tracert google.be
  3. Stel zelf een IP adres in op de Ethernet port.

    Netwerk instellingen

    Figuur 1: Netwerkcentrum -> Verbinding: ethernet -> Eigenschappen -> Internet Protocol Version 4 -> Gebruik het volgende IP adres.

  4. EthernetInterface

    // 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());
    
  5. TCP Server:

    // TCP server object on the ethernet interface
    TCPServer srv(&eth);
    // 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();
    
  6. TCP Client:

     // TCP socket represents a connection with a server
     TCPSocket socket;
     // open the connection using the ethernet interface
     socket.open(&eth);
     // 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

  1. Verstuur een samplefrequentie en het verwachte aantal samples vanuit de PC.
  2. Start en stop de dataverzameling vanaf de PC.

results matching ""

    No results matching ""