University of Glasgow MSc Project 1-Wire Master interfacing with temperature and serial number iButtons and transmitting the measurements to a UDP socket
Dependencies: DS2480B EthernetInterface mbed-rtos mbed
main.cpp@0:e0f44f70662e, 2016-08-29 (annotated)
- Committer:
- giorgos2405
- Date:
- Mon Aug 29 14:22:33 2016 +0000
- Revision:
- 0:e0f44f70662e
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
giorgos2405 | 0:e0f44f70662e | 1 | #include "mbed.h" |
giorgos2405 | 0:e0f44f70662e | 2 | #include "EthernetInterface.h" |
giorgos2405 | 0:e0f44f70662e | 3 | #include "DS2480B.h" |
giorgos2405 | 0:e0f44f70662e | 4 | |
giorgos2405 | 0:e0f44f70662e | 5 | #define PORT 5001 |
giorgos2405 | 0:e0f44f70662e | 6 | |
giorgos2405 | 0:e0f44f70662e | 7 | #define searchROM 0xF0 |
giorgos2405 | 0:e0f44f70662e | 8 | #define alarmsearch 0xEC |
giorgos2405 | 0:e0f44f70662e | 9 | |
giorgos2405 | 0:e0f44f70662e | 10 | #define ID 0x91000012E145EC01 |
giorgos2405 | 0:e0f44f70662e | 11 | |
giorgos2405 | 0:e0f44f70662e | 12 | DigitalOut toggle(p8); |
giorgos2405 | 0:e0f44f70662e | 13 | DS2480B ds2480b; |
giorgos2405 | 0:e0f44f70662e | 14 | |
giorgos2405 | 0:e0f44f70662e | 15 | |
giorgos2405 | 0:e0f44f70662e | 16 | Ticker flash; |
giorgos2405 | 0:e0f44f70662e | 17 | |
giorgos2405 | 0:e0f44f70662e | 18 | int main (void) { |
giorgos2405 | 0:e0f44f70662e | 19 | |
giorgos2405 | 0:e0f44f70662e | 20 | ds2480b.Search(searchROM); |
giorgos2405 | 0:e0f44f70662e | 21 | |
giorgos2405 | 0:e0f44f70662e | 22 | EthernetInterface eth; |
giorgos2405 | 0:e0f44f70662e | 23 | eth.init(); //Use DHCP |
giorgos2405 | 0:e0f44f70662e | 24 | eth.connect(); |
giorgos2405 | 0:e0f44f70662e | 25 | printf("\nServer IP Address is %s\n", eth.getIPAddress()); |
giorgos2405 | 0:e0f44f70662e | 26 | |
giorgos2405 | 0:e0f44f70662e | 27 | UDPSocket server; |
giorgos2405 | 0:e0f44f70662e | 28 | server.init(); |
giorgos2405 | 0:e0f44f70662e | 29 | server.set_broadcasting(); |
giorgos2405 | 0:e0f44f70662e | 30 | |
giorgos2405 | 0:e0f44f70662e | 31 | Endpoint client; |
giorgos2405 | 0:e0f44f70662e | 32 | client.set_address("255.255.255.255", PORT); |
giorgos2405 | 0:e0f44f70662e | 33 | |
giorgos2405 | 0:e0f44f70662e | 34 | char str[256]; |
giorgos2405 | 0:e0f44f70662e | 35 | printf("Sending Packet back to Client\n"); |
giorgos2405 | 0:e0f44f70662e | 36 | |
giorgos2405 | 0:e0f44f70662e | 37 | while (true) { |
giorgos2405 | 0:e0f44f70662e | 38 | |
giorgos2405 | 0:e0f44f70662e | 39 | ds2480b.Search(alarmsearch); |
giorgos2405 | 0:e0f44f70662e | 40 | int devices = ds2480b.Checkdevices(); |
giorgos2405 | 0:e0f44f70662e | 41 | ds2480b.ConvertTemp(); |
giorgos2405 | 0:e0f44f70662e | 42 | |
giorgos2405 | 0:e0f44f70662e | 43 | for(int i=ds2480b.ds1920first; i<ds2480b.ds1920no; i++){ |
giorgos2405 | 0:e0f44f70662e | 44 | float temperature = ds2480b.AcquireTemp(ds2480b.romstorage[i]); |
giorgos2405 | 0:e0f44f70662e | 45 | sprintf(str, "%llX %f END", ds2480b.romstorage[i], ds2480b.temperature); |
giorgos2405 | 0:e0f44f70662e | 46 | printf("%s", str); |
giorgos2405 | 0:e0f44f70662e | 47 | server.sendTo(client, str, 256); |
giorgos2405 | 0:e0f44f70662e | 48 | } |
giorgos2405 | 0:e0f44f70662e | 49 | |
giorgos2405 | 0:e0f44f70662e | 50 | ds2480b.Search(searchROM); |
giorgos2405 | 0:e0f44f70662e | 51 | int devices = ds2480b.Checkdevices(); |
giorgos2405 | 0:e0f44f70662e | 52 | |
giorgos2405 | 0:e0f44f70662e | 53 | ds2480b.ConvertTemp(); |
giorgos2405 | 0:e0f44f70662e | 54 | |
giorgos2405 | 0:e0f44f70662e | 55 | for(int i=ds2480b.ds1990first; i<ds2480b.ds1990no; i++){ |
giorgos2405 | 0:e0f44f70662e | 56 | if(ID == romstorage[i]){ |
giorgos2405 | 0:e0f44f70662e | 57 | for(int i=ds2480b.ds1920first; i<ds2480b.ds1920no; i++){ |
giorgos2405 | 0:e0f44f70662e | 58 | float temperature = ds2480b.AcquireTemp(ds2480b.romstorage[i]); |
giorgos2405 | 0:e0f44f70662e | 59 | |
giorgos2405 | 0:e0f44f70662e | 60 | //send the temperature measurements |
giorgos2405 | 0:e0f44f70662e | 61 | |
giorgos2405 | 0:e0f44f70662e | 62 | sprintf(str, "%llX %f END", ds2480b.romstorage[i], ds2480b.temperature); |
giorgos2405 | 0:e0f44f70662e | 63 | printf("%s", str); |
giorgos2405 | 0:e0f44f70662e | 64 | server.sendTo(client, str, 256); |
giorgos2405 | 0:e0f44f70662e | 65 | } |
giorgos2405 | 0:e0f44f70662e | 66 | } |
giorgos2405 | 0:e0f44f70662e | 67 | } |
giorgos2405 | 0:e0f44f70662e | 68 | } |