This is RPC_HTTP Example for using WIZnetInterface

Dependencies:   HTTPServer WIZnetInterface mbed-rpc DHT mbed-src

I want to make example which can use mbed RPC library and Python interface so I made this project. This project is led controller and temperature/humidity checker with android application. In brief, This project has function as below.

  • Controlling tri-color led in the mbed platform ( On/Off )
  • Checking current led status ( It can check led color using TTS(Text to Speech) on Android)
  • Checking temperature and humidity information using Android

This example used mbed RPC library to control WIzwiki-W7500 board with Android and Android application is made using kivy library of Python.

https://farm1.staticflickr.com/470/20036515102_d298ed0b5f_o.png

Simple Application in Android

I explain how to make android application using kivy library of Python. This android application can control mbed device and get information from mbed device. For implementation and operation this application, you have to have step as below.

https://farm1.staticflickr.com/297/19891752250_3853ef53aa_z.jpg

Demo Video

For more detailed information, refer to this URL.

http://www.life4iot.com/2015/07/28/remote-temperaturehumidity-checker-led-controller-using-mbed-rpc/?lang=en

Committer:
kaizen
Date:
Thu Jul 30 04:09:39 2015 +0000
Revision:
2:96321cb48732
Parent:
1:cffa64d79a8b
Change mbed library to mbed-src and added DHT library.; I think mbed library has some bug about WIZwiki-W7500

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaizen 0:ca442200bc8a 1 #include "mbed.h"
kaizen 0:ca442200bc8a 2 #include "EthernetInterface.h"
kaizen 0:ca442200bc8a 3 #include "HTTPServer.h"
kaizen 0:ca442200bc8a 4 #include "mbed_rpc.h"
kaizen 1:cffa64d79a8b 5 #include "DHT.h"
kaizen 1:cffa64d79a8b 6
kaizen 1:cffa64d79a8b 7 RpcDigitalOut led1(D9,"led1");
kaizen 1:cffa64d79a8b 8 RpcDigitalOut led2(D10,"led2");
kaizen 1:cffa64d79a8b 9 RpcDigitalOut led3(D11,"led3");
kaizen 0:ca442200bc8a 10
kaizen 1:cffa64d79a8b 11 //RPCVarialbe<float> RPCTemperature(&GetTemperature, "Temperature");
kaizen 1:cffa64d79a8b 12 //RPCVarialbe<float> RPCHumidity(&GetHumidity, "Humidity");
kaizen 1:cffa64d79a8b 13 void Get_Temp_and_Humidity(Arguments * input, Reply * output);
kaizen 1:cffa64d79a8b 14
kaizen 1:cffa64d79a8b 15 RPCFunction Temp_and_Humidity_Finder(&Get_Temp_and_Humidity, "Temp_and_Humidity_Finder");
kaizen 0:ca442200bc8a 16
kaizen 0:ca442200bc8a 17 EthernetInterface eth;
kaizen 0:ca442200bc8a 18 HTTPServer svr;
kaizen 0:ca442200bc8a 19
kaizen 1:cffa64d79a8b 20 DHT sensor(D4, DHT11);
kaizen 1:cffa64d79a8b 21
kaizen 1:cffa64d79a8b 22 void Get_Temp_and_Humidity(Arguments * input, Reply *output){
kaizen 1:cffa64d79a8b 23 int error = 0;
kaizen 1:cffa64d79a8b 24 float h = 0.0f, c = 0.0f;
kaizen 1:cffa64d79a8b 25 char arg[100];
kaizen 1:cffa64d79a8b 26
kaizen 1:cffa64d79a8b 27 error = sensor.readData();
kaizen 1:cffa64d79a8b 28 if (0 == error) {
kaizen 1:cffa64d79a8b 29 c = sensor.ReadTemperature(CELCIUS);
kaizen 1:cffa64d79a8b 30 h = sensor.ReadHumidity();
kaizen 1:cffa64d79a8b 31 sprintf(arg,"Temperature in Celcius: %4.2f, Humidity is %4.2f",c, h);
kaizen 1:cffa64d79a8b 32
kaizen 1:cffa64d79a8b 33 output->putData(arg);
kaizen 1:cffa64d79a8b 34 }
kaizen 1:cffa64d79a8b 35 }
kaizen 1:cffa64d79a8b 36
kaizen 0:ca442200bc8a 37 int main() {
kaizen 0:ca442200bc8a 38 //Turn the LEDs off
kaizen 1:cffa64d79a8b 39 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x32, 0x23, 0x42};
kaizen 1:cffa64d79a8b 40 led1.write(0);
kaizen 1:cffa64d79a8b 41 led2.write(0);
kaizen 1:cffa64d79a8b 42 led3.write(0);
kaizen 0:ca442200bc8a 43
kaizen 0:ca442200bc8a 44 RPC::add_rpc_class<RpcDigitalOut>();
kaizen 0:ca442200bc8a 45
kaizen 0:ca442200bc8a 46 printf("Setting up...\n");
kaizen 0:ca442200bc8a 47 eth.init(mac_addr);
kaizen 0:ca442200bc8a 48 int ethErr = eth.connect();
kaizen 0:ca442200bc8a 49 if(ethErr < 0)
kaizen 0:ca442200bc8a 50 {
kaizen 0:ca442200bc8a 51 printf("Error %d in setup.\n", ethErr);
kaizen 0:ca442200bc8a 52 return -1;
kaizen 0:ca442200bc8a 53 }
kaizen 0:ca442200bc8a 54 svr.addHandler<HTTPRpcRequestHandler>("/rpc");
kaizen 0:ca442200bc8a 55
kaizen 0:ca442200bc8a 56 //attach server to port 80
kaizen 1:cffa64d79a8b 57 printf("Listening...\n");
kaizen 0:ca442200bc8a 58 svr.start(80, &eth);
kaizen 0:ca442200bc8a 59
kaizen 0:ca442200bc8a 60 Timer tm;
kaizen 0:ca442200bc8a 61 tm.start();
kaizen 0:ca442200bc8a 62 //Listen indefinitely
kaizen 0:ca442200bc8a 63 while(true)
kaizen 0:ca442200bc8a 64 {
kaizen 0:ca442200bc8a 65 svr.poll();
kaizen 0:ca442200bc8a 66 if(tm.read()>.5)
kaizen 0:ca442200bc8a 67 {
kaizen 0:ca442200bc8a 68 tm.start();
kaizen 0:ca442200bc8a 69 }
kaizen 0:ca442200bc8a 70 }
kaizen 1:cffa64d79a8b 71 }