加一个风扇,状态选择,mqtt接收,暴力反复连接mqtt
This commit is contained in:
parent
6a572b6e05
commit
40961a85ea
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -33,7 +33,8 @@
|
|||||||
"at.h": "c",
|
"at.h": "c",
|
||||||
"ADC.C": "cpp",
|
"ADC.C": "cpp",
|
||||||
"PM2.5.C": "cpp",
|
"PM2.5.C": "cpp",
|
||||||
"sensor.h": "c"
|
"sensor.h": "c",
|
||||||
|
"status.h": "c"
|
||||||
},
|
},
|
||||||
// "cortex-debug.openocdPath": "d:/Develop/"
|
// "cortex-debug.openocdPath": "d:/Develop/"
|
||||||
}
|
}
|
@ -6,6 +6,9 @@ ADC传感器
|
|||||||
PA1 pm25
|
PA1 pm25
|
||||||
PA5 空气质量
|
PA5 空气质量
|
||||||
PA6 压力
|
PA6 压力
|
||||||
|
风扇
|
||||||
|
PA8
|
||||||
|
PB2
|
||||||
|
|
||||||
# 红外遥控贪吃蛇/显示+上传温度等数据
|
# 红外遥控贪吃蛇/显示+上传温度等数据
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include <rtdevice.h>
|
#include <rtdevice.h>
|
||||||
|
#include "status.h"
|
||||||
|
|
||||||
#define SAMPLE_UART_NAME "uart3" /* 串口设备名称 */
|
#define SAMPLE_UART_NAME "uart3" /* 串口设备名称 */
|
||||||
|
|
||||||
@ -51,7 +52,29 @@ static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
void assist_control(char *rx_buffer)
|
||||||
|
{
|
||||||
|
if (rt_strstr(rx_buffer, "cc")!=RT_NULL)
|
||||||
|
{
|
||||||
|
fan_on();
|
||||||
|
rt_kprintf("加大抽风\n");
|
||||||
|
}
|
||||||
|
else if (rt_strstr(rx_buffer, "dd")!=RT_NULL)
|
||||||
|
{
|
||||||
|
fan_off();
|
||||||
|
rt_kprintf("关闭抽风\n");
|
||||||
|
}
|
||||||
|
else if (rt_strstr(rx_buffer, "ee")!=RT_NULL)
|
||||||
|
{
|
||||||
|
light_on();
|
||||||
|
rt_kprintf("开灯\n");
|
||||||
|
}
|
||||||
|
else if (rt_strstr(rx_buffer, "ff")!=RT_NULL)
|
||||||
|
{
|
||||||
|
light_off();
|
||||||
|
rt_kprintf("关灯\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
static void serial_thread_entry(void *parameter)
|
static void serial_thread_entry(void *parameter)
|
||||||
{
|
{
|
||||||
struct rx_msg msg;
|
struct rx_msg msg;
|
||||||
@ -69,23 +92,7 @@ static void serial_thread_entry(void *parameter)
|
|||||||
/* 从串口读取数据 */
|
/* 从串口读取数据 */
|
||||||
rx_length = rt_device_read(msg.dev, 0, rx_buffer, msg.size);
|
rx_length = rt_device_read(msg.dev, 0, rx_buffer, msg.size);
|
||||||
rx_buffer[rx_length] = '\0';
|
rx_buffer[rx_length] = '\0';
|
||||||
if(!rt_strcasecmp(rx_buffer, "cc"))
|
assist_control(rx_buffer);
|
||||||
{
|
|
||||||
rt_kprintf("加大抽风\n");
|
|
||||||
}
|
|
||||||
else if(!rt_strcasecmp(rx_buffer, "dd"))
|
|
||||||
{
|
|
||||||
rt_kprintf("关闭抽风\n");
|
|
||||||
|
|
||||||
}
|
|
||||||
else if(!rt_strcasecmp(rx_buffer, "ee"))
|
|
||||||
{
|
|
||||||
rt_kprintf("开灯\n");
|
|
||||||
}
|
|
||||||
else if(!rt_strcasecmp(rx_buffer, "ff"))
|
|
||||||
{
|
|
||||||
rt_kprintf("关灯\n");
|
|
||||||
}
|
|
||||||
/* 通过串口设备 serial 输出读取到的消息 */
|
/* 通过串口设备 serial 输出读取到的消息 */
|
||||||
// rt_device_write(serial, 0, rx_buffer, rx_length);
|
// rt_device_write(serial, 0, rx_buffer, rx_length);
|
||||||
/* 打印数据 */
|
/* 打印数据 */
|
||||||
@ -94,7 +101,6 @@ static void serial_thread_entry(void *parameter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void serial_send(char *str)
|
void serial_send(char *str)
|
||||||
{
|
{
|
||||||
rt_device_write(serial, 0, str, (sizeof(str) - 1));
|
rt_device_write(serial, 0, str, (sizeof(str) - 1));
|
||||||
|
@ -1 +1,2 @@
|
|||||||
void serial_send(char *str);
|
void serial_send(char *str);
|
||||||
|
void assist_control(char *rx_buffer);
|
@ -24,8 +24,13 @@
|
|||||||
|
|
||||||
|
|
||||||
struct rt_device_pwm *motor_dev; // pwm设备句柄
|
struct rt_device_pwm *motor_dev; // pwm设备句柄
|
||||||
rt_uint32_t period = 1000000000; // 单位us 向左6位,变毫秒 1s
|
rt_uint32_t period = 100000000; // 单位us 向左6位,变毫秒 10s
|
||||||
rt_uint32_t pulse = 1000000;
|
// rt_uint32_t pulse = 1000000;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define PIN_MOTOR2 GET_PIN(B, 2)
|
||||||
|
int motor1=PIN_HIGH;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,20 +41,16 @@ rt_uint32_t pulse = 1000000;
|
|||||||
*/
|
*/
|
||||||
void motor_speed(int num)
|
void motor_speed(int num)
|
||||||
{
|
{
|
||||||
rt_pwm_set(motor_dev, MOTOR_PWM_DEV_CHANNEL, period, 100-(num * period / 100));
|
rt_pwm_set(motor_dev, MOTOR_PWM_DEV_CHANNEL, period, (100-num)/ 100 * period );
|
||||||
|
rt_pin_write(PIN_MOTOR2, num>0?PIN_LOW:PIN_HIGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PIN_MOTOR1 GET_PIN(B, 2)
|
|
||||||
int motor1=PIN_HIGH;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int mot_init(void)
|
int mot_init(void)
|
||||||
{
|
{
|
||||||
// rt_pin_mode(PIN_MOTOR1, PIN_MODE_OUTPUT);
|
rt_pin_mode(PIN_MOTOR2, PIN_MODE_OUTPUT);
|
||||||
// rt_pin_write(PIN_MOTOR1, PIN_HIGH);
|
rt_pin_write(PIN_MOTOR2, PIN_HIGH);
|
||||||
motor_dev = (struct rt_device_pwm *)rt_device_find(MOTOR_PWM_DEV_NAME);
|
motor_dev = (struct rt_device_pwm *)rt_device_find(MOTOR_PWM_DEV_NAME);
|
||||||
if (motor_dev == RT_NULL)
|
if (motor_dev == RT_NULL)
|
||||||
{
|
{
|
||||||
@ -57,7 +58,8 @@ int mot_init(void)
|
|||||||
return RT_ERROR;
|
return RT_ERROR;
|
||||||
}
|
}
|
||||||
/* 设置PWM周期和脉冲宽度默认值 */
|
/* 设置PWM周期和脉冲宽度默认值 */
|
||||||
motor_speed(100);
|
motor_speed(0);
|
||||||
|
rt_pwm_enable(motor_dev, MOTOR_PWM_DEV_CHANNEL);
|
||||||
LOG1("motor init success!");
|
LOG1("motor init success!");
|
||||||
}
|
}
|
||||||
void motor_set(int argc, char **argv)
|
void motor_set(int argc, char **argv)
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include "my_func.h"
|
#include "my_func.h"
|
||||||
#include "indicator_led.h"
|
#include "indicator_led.h"
|
||||||
#include "sensor.h"
|
#include "sensor.h"
|
||||||
|
#include "assistant.h"
|
||||||
#define THREAD_PRIORITY 25
|
#define THREAD_PRIORITY 25
|
||||||
#define THREAD_STACK_SIZE 4096
|
#define THREAD_STACK_SIZE 4096
|
||||||
#define THREAD_TIMESLICE 5
|
#define THREAD_TIMESLICE 5
|
||||||
@ -119,6 +120,12 @@ static void example_message_arrive(void *pcontext, void *pclient, iotx_mqtt_even
|
|||||||
EXAMPLE_TRACE("Topic : %.*s", topic_info->topic_len, topic_info->ptopic);
|
EXAMPLE_TRACE("Topic : %.*s", topic_info->topic_len, topic_info->ptopic);
|
||||||
EXAMPLE_TRACE("Payload: %.*s", topic_info->payload_len, topic_info->payload);
|
EXAMPLE_TRACE("Payload: %.*s", topic_info->payload_len, topic_info->payload);
|
||||||
EXAMPLE_TRACE("\n");
|
EXAMPLE_TRACE("\n");
|
||||||
|
|
||||||
|
// topic_info->payload[strlen(topic_info->payload)] = '\0';
|
||||||
|
char str_tmp[32];
|
||||||
|
rt_strncpy(str_tmp, topic_info->payload, topic_info->payload_len);
|
||||||
|
str_tmp[topic_info->payload_len] = '\0';
|
||||||
|
assist_control(str_tmp);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -172,9 +179,12 @@ void show_lcd()
|
|||||||
{
|
{
|
||||||
lcd_y = 10;
|
lcd_y = 10;
|
||||||
easy_show_lcd("Temperature:", Temp);
|
easy_show_lcd("Temperature:", Temp);
|
||||||
easy_show_lcd("Humidity:", Humi);
|
// easy_show_lcd("Humidity:", Humi);
|
||||||
easy_show_lcd("Brightness:(lux)", brightness);
|
// easy_show_lcd("Brightness:(lux)", brightness);
|
||||||
easy_show_lcd("Ps data:", (float)ps_data);
|
// easy_show_lcd("Ps data:", (float)ps_data);
|
||||||
|
easy_show_lcd("Air quality:", ADC_air);
|
||||||
|
easy_show_lcd("PM2.5:", ADC_PM25);
|
||||||
|
easy_show_lcd("Pressure:",ADC_pressure);
|
||||||
// lcd_show_string(10, plus_lcd_y(10), 24, "Temperature:");
|
// lcd_show_string(10, plus_lcd_y(10), 24, "Temperature:");
|
||||||
// rt_sprintf(tmp, "%f", Temp);
|
// rt_sprintf(tmp, "%f", Temp);
|
||||||
// lcd_show_string(10, plus_lcd_y(24), 32, tmp);
|
// lcd_show_string(10, plus_lcd_y(24), 32, tmp);
|
||||||
@ -394,7 +404,6 @@ static void mqtt_example_main(void *parameter)
|
|||||||
res = example_subscribe(pclient);
|
res = example_subscribe(pclient);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
{
|
{
|
||||||
wlan_connected = RT_FALSE;
|
|
||||||
IOT_MQTT_Destroy(&pclient);
|
IOT_MQTT_Destroy(&pclient);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -436,33 +445,35 @@ void wlan_connect_thread(void *parameter)
|
|||||||
{
|
{
|
||||||
(void *)parameter;
|
(void *)parameter;
|
||||||
wlan_connected=RT_FALSE;
|
wlan_connected=RT_FALSE;
|
||||||
// rt_wlan_connect(WLAN_NAME,WLAN_PASSWORD);
|
rt_wlan_connect(WLAN_NAME,WLAN_PASSWORD);
|
||||||
while(rt_wlan_connect(WLAN_NAME,WLAN_PASSWORD)!= RT_EOK)
|
rt_wlan_connect(WLAN_NAME,WLAN_PASSWORD);
|
||||||
{
|
// while(rt_wlan_connect(WLAN_NAME,WLAN_PASSWORD)!= RT_EOK)
|
||||||
rt_thread_mdelay(2000);
|
// {
|
||||||
}
|
// rt_thread_mdelay(2000);
|
||||||
|
// }
|
||||||
rt_wlan_config_autoreconnect(RT_TRUE);
|
rt_wlan_config_autoreconnect(RT_TRUE);
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if (rt_wlan_is_connected() == RT_TRUE)
|
if (rt_wlan_is_connected() == RT_TRUE)
|
||||||
{
|
{
|
||||||
if(!wlan_connected)
|
// if(!wlan_connected)
|
||||||
{
|
{
|
||||||
wlan_connected = RT_TRUE;
|
wlan_connected = RT_TRUE;
|
||||||
rt_thread_mdelay(10000);
|
// rt_wlan_connect(WLAN_NAME,WLAN_PASSWORD);
|
||||||
|
rt_thread_mdelay(5000);
|
||||||
mqt_init();
|
mqt_init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
if(wlan_connected)
|
// if(wlan_connected)
|
||||||
{
|
// {
|
||||||
wlan_connected = RT_FALSE;
|
// wlan_connected = RT_FALSE;
|
||||||
IOT_MQTT_Destroy(&pclient);
|
// IOT_MQTT_Destroy(&pclient);
|
||||||
rt_thread_delete(MQTT_Thread);
|
// rt_thread_delete(MQTT_Thread);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
rt_thread_mdelay(500);
|
rt_thread_mdelay(5000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// /* 用于接收消息的信号量 */
|
// /* 用于接收消息的信号量 */
|
||||||
|
@ -169,7 +169,7 @@ static void sensor_thread(void *parameter)
|
|||||||
warning_range("air", ADC_air, 0, 4095);
|
warning_range("air", ADC_air, 0, 4095);
|
||||||
warning_range("PM25", ADC_PM25, 0, 500);
|
warning_range("PM25", ADC_PM25, 0, 500);
|
||||||
warning_range("pressure", ADC_pressure, 0, 4095);
|
warning_range("pressure", ADC_pressure, 0, 4095);
|
||||||
rt_thread_mdelay(1000);
|
rt_thread_mdelay(2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void sensor_init(void)
|
void sensor_init(void)
|
||||||
|
@ -45,7 +45,7 @@ void fan_on(void)
|
|||||||
void fan_off(void)
|
void fan_off(void)
|
||||||
{
|
{
|
||||||
LOG3("fan off!");
|
LOG3("fan off!");
|
||||||
motor_speed(20);
|
motor_speed(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void light_on(void)
|
void light_on(void)
|
||||||
@ -59,5 +59,5 @@ void light_off(void)
|
|||||||
{
|
{
|
||||||
LOG3("light off!");
|
LOG3("light off!");
|
||||||
rt_pin_mode(PIN_LED_B, PIN_MODE_OUTPUT);
|
rt_pin_mode(PIN_LED_B, PIN_MODE_OUTPUT);
|
||||||
rt_pin_write(PIN_LED_B, PIN_LOW);
|
rt_pin_write(PIN_LED_B, PIN_HIGH);
|
||||||
}
|
}
|
@ -1 +1,5 @@
|
|||||||
void danger_status(void);
|
void danger_status(void);
|
||||||
|
void fan_on(void);
|
||||||
|
void fan_off(void);
|
||||||
|
void light_on(void);
|
||||||
|
void light_off(void);
|
Loading…
x
Reference in New Issue
Block a user