init

Dependencies:   mbed

Fork of iot_example by YX ZHANG

Committer:
glintligo
Date:
Thu May 17 08:29:35 2018 +0000
Revision:
9:238780dda8af
Parent:
8:d5e340a59c71
fasdf;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brainliang 0:63af4719467f 1 /*-----------------------------------------------------
brainliang 0:63af4719467f 2 File Name : main.cpp
brainliang 0:63af4719467f 3 Purpose : For esp8266 mbed porting
brainliang 0:63af4719467f 4 Creation Date : 22-06-2017
brainliang 0:63af4719467f 5 Last Modified :
brainliang 0:63af4719467f 6 Created By : Jeasine Ma [jeasinema[at]gmail[dot]com]
brainliang 0:63af4719467f 7 -----------------------------------------------------*/
brainliang 0:63af4719467f 8 #include <cstdarg>
brainliang 0:63af4719467f 9 #include <cstring>
brainliang 0:63af4719467f 10 #include "mbed.h"
brainliang 0:63af4719467f 11 #include "esp8266.h"
brainliang 0:63af4719467f 12
zhangyx 7:49a823b5a935 13 Serial ser2usb(PA_2, PA_3, 115200);
zhangyx 8:d5e340a59c71 14 DigitalIn ref(PA_12);
zhangyx 8:d5e340a59c71 15 DigitalOut LED(PC_13);
brainliang 0:63af4719467f 16
glintligo 9:238780dda8af 17
glintligo 9:238780dda8af 18 // PA_6 P3 从下往上第二个舵机 1ms 往后倒90度 1.5ms 往后倒45度 2ms 笔直
glintligo 9:238780dda8af 19 // PB_1 P6 从下往上第四个舵机 2ms 张开 1.5ms 中间 1ms 完全合上
glintligo 9:238780dda8af 20 // PA_7 P4 从下往上第一个舵机 1.5ms 从正前方看往右偏45度 1ms 正中间 2ms 右偏度
glintligo 9:238780dda8af 21 // PB_0 P5 从下往上第三个舵机 1.5 中间 1 往后45度 2 往前45
glintligo 9:238780dda8af 22
glintligo 9:238780dda8af 23
glintligo 9:238780dda8af 24 PwmOut mypwm1(PA_7);
glintligo 9:238780dda8af 25 PwmOut mypwm2(PA_6);
glintligo 9:238780dda8af 26 PwmOut mypwm3(PB_0);
glintligo 9:238780dda8af 27 PwmOut mypwm4(PB_1);
glintligo 9:238780dda8af 28
glintligo 9:238780dda8af 29
glintligo 9:238780dda8af 30
brainliang 0:63af4719467f 31 int main(void) {
zhangyx 8:d5e340a59c71 32 ser2usb.printf("starting\r\n");
zhangyx 7:49a823b5a935 33
zhangyx 1:3b487c4813a2 34 // 选定与 esp8266 相连接的串口,WiFi 名称和密码
glintligo 9:238780dda8af 35 Esp8266 client(PA_9, PA_10, "iot_b827ebd838be", "ab087c9e");// 参数分别为 TX pin / RX pin / SSID / Password
zyx 3:06080fa094a0 36
zyx 3:06080fa094a0 37 //声明所有的传感器,每行一个,每个由名字、单位两部分组成,最后一行必须为空指针作为结尾
zyx 3:06080fa094a0 38 const char* sensors[][2] = {
zhangyx 8:d5e340a59c71 39 "light", "lx",
zhangyx 8:d5e340a59c71 40 "reflection"," ",
zyx 3:06080fa094a0 41 NULL, NULL //最后一行以空指针作为结束标记
zyx 3:06080fa094a0 42 };
zyx 3:06080fa094a0 43
zyx 3:06080fa094a0 44 //声明所有的执行器,每行一个,每个由名字、参数类型两部分组成,最后一行必须为空指针作为结尾
zyx 3:06080fa094a0 45 const char* actuators[][2] = {
zhangyx 8:d5e340a59c71 46 "led", "int",
zyx 3:06080fa094a0 47 NULL, NULL //最后一行以空指针作为结束标记
zyx 3:06080fa094a0 48 };
zhangyx 8:d5e340a59c71 49 ser2usb.printf("connecting...\r\n");
zyx 3:06080fa094a0 50
zyx 3:06080fa094a0 51 //连接到服务器
zhangyx 8:d5e340a59c71 52 client.connect_mqtt_broker("192.168.12.1", "alpha", sensors, actuators);
zyx 3:06080fa094a0 53
brainliang 0:63af4719467f 54 ser2usb.printf("Initialization done.\r\n");
zyx 3:06080fa094a0 55
zyx 3:06080fa094a0 56 char actuator_name[32], control_value[32];
zhangyx 8:d5e340a59c71 57 bool ref_last;
zyx 3:06080fa094a0 58 float last_report=0;
zyx 3:06080fa094a0 59 Timer t;// 定时器用于计量发送传感器数据的时间
zyx 3:06080fa094a0 60 t.start();
zyx 3:06080fa094a0 61
brainliang 0:63af4719467f 62 while(1) {
zyx 3:06080fa094a0 63 //检查有没有收到新的执行器控制指令
zyx 3:06080fa094a0 64 if(client.get_control_cmd(actuator_name, control_value)){
zhangyx 8:d5e340a59c71 65 ser2usb.printf("Received CMD %s %s\r\n", actuator_name, control_value);
zyx 3:06080fa094a0 66 //判断哪个执行器收到命令
zhangyx 8:d5e340a59c71 67 if(strcmp(actuator_name, "led")==0){
glintligo 9:238780dda8af 68 mypwm1.period_ms(20);
glintligo 9:238780dda8af 69 mypwm2.period_ms(20);
glintligo 9:238780dda8af 70 mypwm3.period_ms(20);
glintligo 9:238780dda8af 71 mypwm4.period_ms(20);
glintligo 9:238780dda8af 72
glintligo 9:238780dda8af 73
glintligo 9:238780dda8af 74 mypwm1.pulsewidth(0.001);
glintligo 9:238780dda8af 75 wait(0.5);
glintligo 9:238780dda8af 76 mypwm1.pulsewidth(0.0015);
glintligo 9:238780dda8af 77 wait(0.5);
glintligo 9:238780dda8af 78 mypwm1.pulsewidth(0.002);
glintligo 9:238780dda8af 79 wait(0.5);
glintligo 9:238780dda8af 80 mypwm1.pulsewidth(0.0015);
glintligo 9:238780dda8af 81 wait(0.5);
glintligo 9:238780dda8af 82 mypwm1.pulsewidth(0.001);
glintligo 9:238780dda8af 83 wait(0.5);
glintligo 9:238780dda8af 84
glintligo 9:238780dda8af 85 mypwm3.pulsewidth(0.001);
glintligo 9:238780dda8af 86 wait(0.5);
glintligo 9:238780dda8af 87 mypwm3.pulsewidth(0.0015);
glintligo 9:238780dda8af 88 wait(0.5);
glintligo 9:238780dda8af 89
glintligo 9:238780dda8af 90 mypwm4.pulsewidth(0.001);
glintligo 9:238780dda8af 91 wait(0.5);
glintligo 9:238780dda8af 92 mypwm4.pulsewidth(0.0015);
glintligo 9:238780dda8af 93 wait(0.5);
glintligo 9:238780dda8af 94 mypwm4.pulsewidth(0.002);
glintligo 9:238780dda8af 95 wait(0.5);
glintligo 9:238780dda8af 96
glintligo 9:238780dda8af 97 mypwm3.pulsewidth(0.0015);
glintligo 9:238780dda8af 98 wait(0.5);
glintligo 9:238780dda8af 99 }
zyx 3:06080fa094a0 100 }
zhangyx 8:d5e340a59c71 101
zhangyx 8:d5e340a59c71 102 bool reflection = ref;
zhangyx 8:d5e340a59c71 103 if(reflection != ref_last){ //仅在传感器发生变化时汇报数据
zhangyx 8:d5e340a59c71 104
zhangyx 8:d5e340a59c71 105 ref_last = reflection;
zhangyx 8:d5e340a59c71 106
zhangyx 8:d5e340a59c71 107 char val[4];
zhangyx 8:d5e340a59c71 108 sprintf(val, "%d", (int)reflection);
zhangyx 8:d5e340a59c71 109
zhangyx 8:d5e340a59c71 110 //汇报传感器数据,两个参数分别是传感器名字和值
zhangyx 8:d5e340a59c71 111 client.publish_value("reflection", val);
zhangyx 8:d5e340a59c71 112 }
zyx 3:06080fa094a0 113
zyx 3:06080fa094a0 114 if(t.read() - last_report > 1){ // 每1s发送汇报一次传感器数据
zyx 3:06080fa094a0 115
zyx 3:06080fa094a0 116 //汇报传感器数据,两个参数分别是传感器名字和值
zhangyx 8:d5e340a59c71 117 //client.publish_value("light", "30 lx");
zhangyx 5:9a0acd11c445 118
zhangyx 5:9a0acd11c445 119 last_report = t.read();
zyx 3:06080fa094a0 120 }
brainliang 0:63af4719467f 121 }
brainliang 0:63af4719467f 122 }