project
Dependencies: MbedJSONValue DISCO_L475VG_IOT01A_wifi mbed-http
Revision 0:8bcd728684c5, committed 2019-01-07
- Comitter:
- Eason0505
- Date:
- Mon Jan 07 11:19:49 2019 +0000
- Commit message:
- IoT Project code
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DISCO_L475VG_IOT01A_wifi.lib Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/DISCO_L475VG_IOT01A_wifi/#c61a93635433
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MbedJSONValue.lib Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/samux/code/MbedJSONValue/#10a99cdf7846
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ServoMove.cpp Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,38 @@ +#include "ServoMove.h" +PwmOut servo(PA_6); +Serial pc1(USBTX, USBRX); + +void ServoConvert(double cnv) +{ + if (cnv > 144) { + servo.pulsewidth_us(1000); //0deg + pc1.printf("cnv1 =%f\n\r",cnv); + } else if(cnv >108 && cnv <144) { + servo.pulsewidth_us(1100); + pc1.printf("cnv2 =%f\n\r",cnv); + } else if (cnv >72 && cnv <108) { + servo.pulsewidth_us(1200); + pc1.printf("cnv3 =%f\n\r",cnv); + } else if (cnv > 36&& cnv <72) { + servo.pulsewidth_us(1300); + pc1.printf("cnv4 =%f\n\r",cnv); + } else if(cnv > 0&& cnv <36) { + servo.pulsewidth_us(1400); + pc1.printf("cnv5 =%f\n\r",cnv); + } else if(cnv > -36&& cnv <0) { + servo.pulsewidth_us(1500); + pc1.printf("cnv6 =%f\n\r",cnv); + } else if(cnv > -72&& cnv <-36) { + servo.pulsewidth_us(1600); + pc1.printf("cnv7 =%f\n\r",cnv); + } else if(cnv > -108&& cnv <-72) { + servo.pulsewidth_us(1700); + pc1.printf("cnv8 =%f\n\r",cnv); + } else if(cnv > -144&& cnv <-108) { + servo.pulsewidth_us(1800); + pc1.printf("cnv9 =%f\n\r",cnv); + } else if(cnv > -180&& cnv <-144) { + servo.pulsewidth_us(1900); + pc1.printf("cnv10 =%f\n\r",cnv); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ServoMove.h Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,6 @@ +#ifndef SERVOMOVE_H +#define SERVOMOVE_H +#include "mbed.h" +extern PwmOut servo; +void ServoConvert(double cnv); // function prototype +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/US100.cpp Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,29 @@ +#include "US100.h" +#include "mbed.h" +US100::US100(PinName t, PinName e) : trig(t), echo(e) {} +// Trigger Echo +// ______ _____________,,,,,,,,, +// ____| 10us |_________| 150us-25ms, or 38ms if no obstacle +// +//return echo duration in us (refer to digram above) +int US100::echo_duration() +{ + timer.reset(); + trig = 0; + wait_us(10); + trig = 1; + wait_us(10); + trig = 0; + while(echo == 0); + timer.start(); + while(echo == 1); + timer.stop(); + return timer.read_us(); +} + +int US100::distance() +{ +int duration = echo_duration(); +int distacne_mm = duration*0.34/2/10; +return distacne_mm; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/US100.h Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,16 @@ +#ifndef US100_H +#define US100_H +#include "mbed.h" +class US100 +{ +public: + US100(PinName t, PinName e); + int echo_duration(); + int distance(); +private: + DigitalOut trig; + DigitalIn echo; + Timer timer; +}; + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,150 @@ +#include "mbed.h" +#include "wifi.h" +#include "US100.h" +#include "NetworkInterface.h" +#include "ISM43362Interface.h" +#include "http_request.h" +#include "ServoMove.h" +#include <string> + +/* Private defines -----------------------------------------------------------*/ +#define WIFI_WRITE_TIMEOUT 10000 +#define WIFI_READ_TIMEOUT 10000 +#define CONNECTION_TRIAL_MAX 10 + +/* Private typedef------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +Serial pc(SERIAL_TX, SERIAL_RX); +ISM43362Interface wifi(MBED_CONF_APP_WIFI_SPI_MOSI, MBED_CONF_APP_WIFI_SPI_MISO, MBED_CONF_APP_WIFI_SPI_SCLK, MBED_CONF_APP_WIFI_SPI_NSS, MBED_CONF_APP_WIFI_RESET, MBED_CONF_APP_WIFI_DATAREADY, MBED_CONF_APP_WIFI_WAKEUP, false); +uint8_t MAC_Addr[6]; +uint8_t IP_Addr[4]; + +// Interval(second) to do tasking &sensing +const int INTERVAL = 1; +// Distance sensor +US100 sensor(PC_3, PC_4); +// Select network interface +NetworkInterface* network = &wifi; + +int main() +{ + + pc.baud(9600); + + printf("\n"); + printf("************************************************************\n"); + printf("*** IoT Final Project - TSENG, I-SHENG ***\n"); + printf("************************************************************\n"); + + /*Initialize WIFI module */ + if(WIFI_Init() == WIFI_STATUS_OK) { + printf("> WIFI Module Initialized.\n"); + if(WIFI_GetMAC_Address(MAC_Addr) == WIFI_STATUS_OK) { + printf("> es-wifi module MAC Address : %X:%X:%X:%X:%X:%X\n", + MAC_Addr[0], + MAC_Addr[1], + MAC_Addr[2], + MAC_Addr[3], + MAC_Addr[4], + MAC_Addr[5]); + } else { + printf("> ERROR : CANNOT get MAC address\n"); + } + + if( WIFI_Connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, WIFI_ECN_WPA2_PSK) == WIFI_STATUS_OK) { + printf("> es-wifi module connected \n"); + if(WIFI_GetIP_Address(IP_Addr) == WIFI_STATUS_OK) { + printf("> es-wifi module got IP Address : %d.%d.%d.%d\n", + IP_Addr[0], + IP_Addr[1], + IP_Addr[2], + IP_Addr[3]); + } else { + printf("> ERROR : es-wifi module CANNOT get IP address\n"); + } + } else { + printf("> ERROR : es-wifi module NOT connected\n"); + } + } else { + printf("> ERROR : WIFI Module cannot be initialized.\n"); + } + + while(1){ + char c[] = ""; + int d = sensor.distance(); + sprintf(c, "%d", d); + printf("Distance = %d \n", d); + + char body[] = "{\"result\":"; + char body_1[] = "}"; + strcat(body,c); + strcat(body,body_1); + + HttpRequest* POST_request = new HttpRequest(network, HTTP_POST, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(1)/Observations"); + POST_request->set_header("Content-Type", "application/json"); + HttpResponse* POST_response = POST_request->send(body, strlen(body)); + printf("HTTP POST sending...\n"); + // if response is NULL, check response->get_error() + + printf("status is %d - %s\n", POST_response->get_status_code(), POST_response->get_status_message()); + printf("body is:\n%s\n", POST_response->get_body_as_string().c_str()); + + delete POST_request; // also clears out the response + + + HttpRequest* request = new HttpRequest(network, HTTP_GET, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(2)/Observations?$top=1&$orderby=phenomenonTime%20desc"); + HttpResponse* response = request->send(); + // if response is NULL, check response->get_error() + +// printf("status is %d - %s\n", response->get_status_code(), response->get_status_message()); +// printf("body is:\n%s\n", response->get_body_as_string().c_str()); + + string JSON = response->get_body_as_string(); + string LOCK = "LOCK"; + string UNLOCK = "unlock"; + + if(strstr(JSON.c_str(),LOCK.c_str()) != NULL){ + printf("LOCK\n"); + servo.pulsewidth_us(700); +/* const char lock[] = "{\"result\":\"LOCK\"}"; + HttpRequest* LOCK_request = new HttpRequest(network, HTTP_POST, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(2)/Observations"); + LOCK_request->set_header("Content-Type", "application/json"); + HttpResponse* LOCK_response = LOCK_request->send(lock, strlen(lock)); + // if response is NULL, check response->get_error() + + printf("status is %d - %s\n", LOCK_response->get_status_code(), LOCK_response->get_status_message()); +// printf("body is:\n%s\n", LOCK_response->get_body_as_string().c_str()); + + delete LOCK_request; // also clears out the response +*/ + }else if(strstr(JSON.c_str(),UNLOCK.c_str()) != NULL){ + printf("UNLOCK\n"); + servo.pulsewidth_us(2500); +/* const char unlock[] = "{\"result\":\"unlock\"}"; + HttpRequest* UNLOCK_request = new HttpRequest(network, HTTP_POST, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(2)/Observations"); + UNLOCK_request->set_header("Content-Type", "application/json"); + HttpResponse* UNLOCK_response = UNLOCK_request->send(unlock, strlen(unlock)); + // if response is NULL, check response->get_error() + + printf("status is %d - %s\n", UNLOCK_response->get_status_code(), UNLOCK_response->get_status_message()); +// printf("body is:\n%s\n", UNLOCK_response->get_body_as_string().c_str()); + + delete UNLOCK_request; // also clears out the response +*/ + } + + delete request; + + printf("%s\n","END..."); + wait(INTERVAL); + } +} + + + + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-http.lib Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/sandbox/code/mbed-http/#fa4d71265625
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#2fd0c5cfbd83fce62da6308f9d64c0ab64e1f0d6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed_app.json Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,83 @@ +{ + "config": { + "wifi-shield": { + "help": "Options are internal, WIFI_IDW0XX1", + "value": "internal" + }, + "wifi-ssid": { + "help": "WiFi SSID", + "value": "\"EASON\"" + }, + "wifi-password": { + "help": "WiFi Password", + "value": "\"00000000\"" + }, + "wifi-tx": { + "help": "TX pin for serial connection to external device", + "value": "D1" + }, + "wifi-rx": { + "help": "RX pin for serial connection to external device", + "value": "D0" + }, + "wifi-spi_miso": { + "help": "SPI-MISO connection to external device", + "value": "PC_11" + }, + "wifi-spi_mosi": { + "help": "SPI-MOSI connection to external device", + "value": "PC_12" + }, + "wifi-spi_sclk": { + "help": "SPI-CLOCK connection to external device", + "value": "PC_10" + }, + "wifi-spi_nss": { + "help": "SPI chip select of external device", + "value": "PE_0" + }, + "wifi-reset": { + "help": "WIFI module reset pin", + "value": "PE_8" + }, + "wifi-dataready": { + "help": "WIFI module data ready pin", + "value": "PE_1" + }, + "wifi-wakeup": { + "help": "WIFI module wakeup pin", + "value": "PB_12" + } + }, + "target_overrides": { + "*": { + "platform.stdio-convert-newlines": true + }, + "NUCLEO_L476RG": { + "wifi-tx": "D8", + "wifi-rx": "D2" + }, + "NUCLEO_F401RE": { + "wifi-tx": "D8", + "wifi-rx": "D2" + }, + "DISCO_L475VG_IOT1A": { + "wifi-spi_miso": "PC_11", + "wifi-spi_mosi": "PC_12", + "wifi-spi_sclk": "PC_10", + "wifi-spi_nss": "PE_0", + "wifi-reset": "PE_8", + "wifi-dataready": "PE_1", + "wifi-wakeup": "PB_12" + }, + "DISCO_F413ZH": { + "wifi-spi_miso": "PB_4", + "wifi-spi_mosi": "PB_5", + "wifi-spi_sclk": "PB_12", + "wifi-spi_nss": "PG_11", + "wifi-reset": "PH_1", + "wifi-dataready": "PG_12", + "wifi-wakeup": "PB_15" + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed_app_ism43362.json Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,86 @@ +{ + "config": { + "wifi-shield": { + "help": "Options are internal, WIFI_ESP8266, WIFI_IDW0XX1", + "value": "internal" + }, + "wifi-ssid": { + "help": "WiFi SSID", + "value": "\"EASON\"" + }, + "wifi-password": { + "help": "WiFi Password", + "value": "\"00000000\"" + }, + "wifi-tx": { + "help": "TX pin for serial connection to external device", + "value": "D1" + }, + "wifi-rx": { + "help": "RX pin for serial connection to external device", + "value": "D0" + }, + "wifi-spi_miso": { + "help": "SPI-MISO connection to external device", + "value": "PC_11" + }, + "wifi-spi_mosi": { + "help": "SPI-MOSI connection to external device", + "value": "PC_12" + }, + "wifi-spi_sclk": { + "help": "SPI-CLOCK connection to external device", + "value": "PC_10" + }, + "wifi-spi_nss": { + "help": "SPI chip select of external device", + "value": "PE_0" + }, + "wifi-reset": { + "help": "WIFI module reset pin", + "value": "PE_8" + }, + "wifi-dataready": { + "help": "WIFI module data ready pin", + "value": "PE_1" + }, + "wifi-wakeup": { + "help": "WIFI module wakeup pin", + "value": "PB_12" + } + }, + "target_overrides": { + "*": { + "platform.stdio-convert-newlines": true + }, + "UBLOX_EVK_ODIN_W2": { + "target.device_has": ["EMAC"] + }, + "NUCLEO_L476RG": { + "wifi-tx": "D8", + "wifi-rx": "D2" + }, + "NUCLEO_F401RE": { + "wifi-tx": "D8", + "wifi-rx": "D2" + }, + "DISCO_L475VG_IOT1A": { + "wifi-spi_miso": "PC_11", + "wifi-spi_mosi": "PC_12", + "wifi-spi_sclk": "PC_10", + "wifi-spi_nss": "PE_0", + "wifi-reset": "PE_8", + "wifi-dataready": "PE_1", + "wifi-wakeup": "PB_12" + }, + "DISCO_F413ZH": { + "wifi-spi_miso": "PB_4", + "wifi-spi_mosi": "PB_5", + "wifi-spi_sclk": "PB_12", + "wifi-spi_nss": "PG_11", + "wifi-reset": "PH_1", + "wifi-dataready": "PG_12", + "wifi-wakeup": "PB_15" + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wifi-ism43362.lib Mon Jan 07 11:19:49 2019 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/wifi-ism43362/#e4ecc27e87d96072f7df62a25ef007986dc95c4e