System to manage inventory for a cooler. Allows real time check in of products via RFID, as well as check out. Also includes a scale to weigh products upon check out, and has a real time temperature tracking system that sounds an alert if the cooler gets too hot.
Dependencies: DHT11 HX711 MFRC522 SDFileSystemEditied mbed
Diff: main.cpp
- Revision:
- 0:ad334aa4c7c4
diff -r 000000000000 -r ad334aa4c7c4 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Mar 07 17:52:23 2018 +0000 @@ -0,0 +1,115 @@ +#include "mbed.h" +#include <stdio.h> +#include <iostream> +#include <stdlib.h> +#include <string.h> +#include "functions.h" +#include "product.h" +#include "HX711.h" +#include "SDFileSystem.h" +#include "Dht11.h" +#include "MFRC522.h" +#define SPI_MOSI D11 +#define SPI_MISO D12 +#define SPI_SCLK D13 +#define SPI_CS D10 +#define MF_RESET D9 + + +SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS +MFRC522 RfChip(SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET); + +Ticker ticker; +Ticker rfidtick; + +void rfidsense(); +struct product *head = NULL; +int id[10] = {0,0,0,0,0,0,0,0,0,0}; +int flag1 =1, flag2; + +int main() +{ + //Declarations and initializations + char k[5]; + HX711 scale1(A0,A1); + ticker.attach(&timer_temp_hum_isr, 2); + rfidtick.attach(&rfidsense, .25); + head = loadlist(); + RfChip.PCD_Init(); + + + while(1) + { + printf("\n\r1: Add product to database\n\r2: Check in product\n\r3: See inventory\n\r4: " + "Check out product\n\r5: Cooler Status\n\r6: Set max temperature\n\r7: Quit\n\r\n\r"); + scanf("%5s", &k); + + + //User choices + if(strcmp(k, "1") == 0) + head = addproduct(head); + + else if(strcmp(k, "2") == 0) + head = checkin(head); + + else if(strcmp(k, "3") == 0) + head = displaylist(head); + + else if(strcmp(k, "4") == 0) + head = checkout(head, scale1); + + else if(strcmp(k, "5") == 0) + getstatus(); + + else if(strcmp(k, "6") == 0) + setmax(); + + else if(strcmp(k, "7") == 0) + break; + + //Clears input buffer + fflush(stdin); + } + + if(head == NULL) + return 0; + + + savelist(head); + + freelist(head); + return 0; +} + +void rfidsense() +{ + + + // Look for new cards + if ( ! RfChip.PICC_IsNewCardPresent()) + { + return; + } + + // Select one of the cards + if ( ! RfChip.PICC_ReadCardSerial()) + { + return; + } + + + for (uint8_t i = 0; i < RfChip.uid.size; i++) + { + id[i] = RfChip.uid.uidByte[i]; + printf(" %d ", RfChip.uid.uidByte[i]); + } + + //Add corresponding product to list based on rfid + if(flag1 == 1) + head = findrfid(id, head); + + flag2 = 1; + + printf("\n\r\n\rRFID Scanned!!\n\r\n\r"); +} +