Commit c380ff23 authored by 学习的菜鸟's avatar 学习的菜鸟
parent 8deca748
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
#define PROJECT_VERSION_MINOR 1 #define PROJECT_VERSION_MINOR 1
#define PROJECT_VERSION_PATCH 8 #define PROJECT_VERSION_PATCH 8
#define GIT_HASH "" #define GIT_HASH ""
#define BUILD_TIMESTAMP "2025-06-24T10:17:31" #define BUILD_TIMESTAMP "2025-06-26T03:49:36"
#define BUILD_USER "orangepi" #define BUILD_USER "orangepi"
No preview for this file type
...@@ -6,10 +6,14 @@ ...@@ -6,10 +6,14 @@
extern int gverify_count;//验证计时 extern int gverify_count;//验证计时
extern int gverify_index;//判断是否验证成功 extern int gverify_index;//判断是否验证成功
int receive_jwt(cJSON *body);//jwt验证
//接收安卓发送的mqtt //接收安卓发送的mqtt
int receive_verify(cJSON *body); //int receive_verify(cJSON *body);//为aes验证,暂时不用,注释
//加密并发送mqtt //加密并发送mqtt
int mqtt_encryption(); //int mqtt_encryption();//为aes验证,暂时不用,注释
int message2006_verify(cJSON *body);
#endif #endif
\ No newline at end of file
...@@ -8,6 +8,7 @@ char urlbuf[512]; ...@@ -8,6 +8,7 @@ char urlbuf[512];
char keybuf[256]; char keybuf[256];
double audio_volume=0.8; double audio_volume=0.8;
//接收音频播放
void audioplay_mqtt_receive(cJSON *json) { void audioplay_mqtt_receive(cJSON *json) {
// 解析"audioLink"字段(修正了原始JSON中的拼写错误) // 解析"audioLink"字段(修正了原始JSON中的拼写错误)
cJSON *audio_link = cJSON_GetObjectItemCaseSensitive(json, "audioLink"); cJSON *audio_link = cJSON_GetObjectItemCaseSensitive(json, "audioLink");
...@@ -49,7 +50,8 @@ void audioplay_mqtt_receive(cJSON *json) { ...@@ -49,7 +50,8 @@ void audioplay_mqtt_receive(cJSON *json) {
} }
} }
void audioplay_send_mqtt() {//发送音频播放是否完毕 //发送音频播放是否完毕
void audioplay_send_mqtt() {
cJSON *root = cJSON_CreateObject(); cJSON *root = cJSON_CreateObject();
cJSON *body = cJSON_CreateObject(); cJSON *body = cJSON_CreateObject();
cJSON *head = cJSON_CreateObject(); cJSON *head = cJSON_CreateObject();
...@@ -73,6 +75,7 @@ void audioplay_send_mqtt() {//发送音频播放是否完毕 ...@@ -73,6 +75,7 @@ void audioplay_send_mqtt() {//发送音频播放是否完毕
cJSON_Delete(root); cJSON_Delete(root);
} }
//音频播放
void audioplay_cycle(){ void audioplay_cycle(){
char command[512]; char command[512];
int ret; int ret;
......
...@@ -52,6 +52,7 @@ char *glon=NULL;//加入gps后删除,心跳预留,不更改 ...@@ -52,6 +52,7 @@ char *glon=NULL;//加入gps后删除,心跳预留,不更改
time_t gStart;//时间戳 time_t gStart;//时间戳
//mqtt初始化
int mqtt_init() { int mqtt_init() {
mosquitto_lib_init(); mosquitto_lib_init();
// 这里创建mosq可以保留,也可以删除这一行,让创建放到 Mqtt_onnect 里 // 这里创建mosq可以保留,也可以删除这一行,让创建放到 Mqtt_onnect 里
...@@ -64,7 +65,8 @@ int mqtt_init() { ...@@ -64,7 +65,8 @@ int mqtt_init() {
return 0; return 0;
} }
void on_connect(struct mosquitto *mosq, void *obj, int rc) {//回调函数 //回调函数
void on_connect(struct mosquitto *mosq, void *obj, int rc) {
if (rc == 0) { if (rc == 0) {
my_zlog_debug("Connected to broker"); my_zlog_debug("Connected to broker");
topic_middle_value(); topic_middle_value();
...@@ -76,7 +78,8 @@ void on_connect(struct mosquitto *mosq, void *obj, int rc) {//回调函数 ...@@ -76,7 +78,8 @@ void on_connect(struct mosquitto *mosq, void *obj, int rc) {//回调函数
} }
} }
void heartbeat_send() {//心跳发送格式*5/2 //心跳发送格式*5/2
void heartbeat_send() {
float voltage = INA226_readBusVoltage(); float voltage = INA226_readBusVoltage();
float current = INA226_readCurrent(); float current = INA226_readCurrent();
//my_zlog_debug("%.2f\n", voltage); //my_zlog_debug("%.2f\n", voltage);
...@@ -130,7 +133,8 @@ void heartbeat_send() {//心跳发送格式*5/2 ...@@ -130,7 +133,8 @@ void heartbeat_send() {//心跳发送格式*5/2
cJSON_Delete(root); // 释放 cJSON 对象 cJSON_Delete(root); // 释放 cJSON 对象
} }
void angle_mqtt_send() { //角度发送 //角度发送
void angle_mqtt_send() {
float angle_shot=ads1115_read_channel(2); float angle_shot=ads1115_read_channel(2);
if(angle_shot>0){ if(angle_shot>0){
angle_shot=angle_shot*360/5; angle_shot=angle_shot*360/5;
...@@ -151,14 +155,16 @@ void angle_mqtt_send() { //角度发送 ...@@ -151,14 +155,16 @@ void angle_mqtt_send() { //角度发送
} }
void mqtt_wirte(){//心跳格式,每5s一次心跳 //心跳格式,每5s一次心跳
void mqtt_wirte(){
if( heartbeat_count >= 30) heartbeat_send(); if( heartbeat_count >= 30) heartbeat_send();
if( AppExit_pin_pwm == 202) angle_mqtt_send(); if( AppExit_pin_pwm == 202) angle_mqtt_send();
} }
void message_3(cJSON *body){//message_type为3,控制pwm //message_type为3,控制pwm
void message_3(cJSON *body){
cJSON *pwm_ctrl = cJSON_GetObjectItem(body, "pwm_ctrl"); cJSON *pwm_ctrl = cJSON_GetObjectItem(body, "pwm_ctrl");
cJSON *pin_setctrl = cJSON_GetObjectItem(body, "pin_setctrl"); cJSON *pin_setctrl = cJSON_GetObjectItem(body, "pin_setctrl");
if(pwm_ctrl==NULL||pin_setctrl==NULL){ if(pwm_ctrl==NULL||pin_setctrl==NULL){
...@@ -220,7 +226,39 @@ void message_4(cJSON *body){//message 为4时候 ...@@ -220,7 +226,39 @@ void message_4(cJSON *body){//message 为4时候
if(AppExit_pin_pwm == 202 ) tank_shot_back_stop(gvalt[1],gvalt[2]); if(AppExit_pin_pwm == 202 ) tank_shot_back_stop(gvalt[1],gvalt[2]);
} }
int download_message(cJSON *body){//接收的下载的mqtt消息 //当接收到2时候验证
void message_2_judyverify(cJSON *body){
receive_jwt(body);
if(gverify_index == 0) {
refresh_cam();
} else {
my_zlog_warn("验证不通过");
}
}
//当接收到3时候验证
void message_3_judyverify(cJSON *body){
receive_jwt(body);
if(gverify_index == 0) {
message_3(body);
} else {
my_zlog_warn("验证不通过");
}
}
//当接收到4时候验证
void message_4_judyverify(cJSON *body){
receive_jwt(body);
if(gverify_index == 0) {
message_4(body);
} else {
my_zlog_warn("验证不通过");
}
}
//接收的下载的mqtt消息
int download_message(cJSON *body){
if (cJSON_IsObject(body)) { if (cJSON_IsObject(body)) {
// 获取 doby 对象 // 获取 doby 对象
// 获取 site 中的 name 和 url // 获取 site 中的 name 和 url
...@@ -246,6 +284,7 @@ int download_message(cJSON *body){//接收的下载的mqtt消息 ...@@ -246,6 +284,7 @@ int download_message(cJSON *body){//接收的下载的mqtt消息
return 0; return 0;
} }
//接收到设备改名函数
int device_mqttchange_name(cJSON *device_id){ int device_mqttchange_name(cJSON *device_id){
cJSON *id = cJSON_GetObjectItem(device_id, "id");// 提取ID cJSON *id = cJSON_GetObjectItem(device_id, "id");// 提取ID
cJSON *date = cJSON_GetObjectItem(device_id, "date");// 提取日期 cJSON *date = cJSON_GetObjectItem(device_id, "date");// 提取日期
...@@ -274,21 +313,16 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息 ...@@ -274,21 +313,16 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息
gmessage_type=message_type->valueint; gmessage_type=message_type->valueint;
my_zlog_debug("message_type: %d",message_type->valueint); my_zlog_debug("message_type: %d",message_type->valueint);
switch(gmessage_type){ switch(gmessage_type){
case 1:
system("sudo reboot");//重启香橙派
my_zlog_debug("重启成功");
break;
case 2: case 2:
refresh_cam(); message_2_judyverify(body);
my_zlog_debug("刷新成功"); my_zlog_debug("进入刷新");
break; break;
case 3: case 3:
receive_verify(body); message_3_judyverify(body);
if(gverify_index == 0) message_3(body);
my_zlog_debug("进入pwm控制"); my_zlog_debug("进入pwm控制");
break; break;
case 4: case 4:
message_4(body); message_4_judyverify(body);
my_zlog_debug("进入引脚控制"); my_zlog_debug("进入引脚控制");
break; break;
case 2001: case 2001:
...@@ -309,6 +343,19 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息 ...@@ -309,6 +343,19 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息
break; break;
case 2005: case 2005:
download_message(body); download_message(body);
my_zlog_debug("进入下载");
break;
case 2006:
message2006_verify(body);
my_zlog_debug("进入消息为2006验证");
break;
case 2011:
system("sudo reboot");//重启香橙派
my_zlog_debug("重启成功");
break;
case 2012:
refresh_cam();
my_zlog_debug("刷新成功");
break; break;
default: default:
break; break;
...@@ -318,7 +365,8 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息 ...@@ -318,7 +365,8 @@ int device_message_receive(cJSON *json){//接收到的控制设备的mqtt消息
return 0; return 0;
} }
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) {//消息回环函数 //消息回环函数
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) {
time_t end = time(NULL); time_t end = time(NULL);
if(gStart+5>end){ if(gStart+5>end){
...@@ -349,8 +397,8 @@ void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_messag ...@@ -349,8 +397,8 @@ void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_messag
} }
} }
// 返回连接结果,0成功,非0失败
int mqtt_create(struct mosquitto *mosq) { // 返回连接结果,0成功,非0失败 int mqtt_create(struct mosquitto *mosq) {
mosquitto_reconnect_delay_set(mosq, 2, 10, true); mosquitto_reconnect_delay_set(mosq, 2, 10, true);
mosquitto_connect_callback_set(mosq, on_connect); mosquitto_connect_callback_set(mosq, on_connect);
mosquitto_message_callback_set(mosq, on_message); mosquitto_message_callback_set(mosq, on_message);
...@@ -365,7 +413,8 @@ int mqtt_create(struct mosquitto *mosq) { // 返回连接结果,0成功,非0 ...@@ -365,7 +413,8 @@ int mqtt_create(struct mosquitto *mosq) { // 返回连接结果,0成功,非0
return 0; // 成功 return 0; // 成功
} }
int mqtt_cycle(struct mosquitto *mosq) {//阻塞型 //阻塞型
int mqtt_cycle(struct mosquitto *mosq) {
// 这个函数会阻塞直到连接断开或错误返回 // 这个函数会阻塞直到连接断开或错误返回
int rc = mosquitto_loop_forever(mosq, -1, 1); int rc = mosquitto_loop_forever(mosq, -1, 1);
if (rc != MOSQ_ERR_SUCCESS) { if (rc != MOSQ_ERR_SUCCESS) {
...@@ -386,6 +435,7 @@ int mqtt_cycle(struct mosquitto *mosq) {//阻塞型 ...@@ -386,6 +435,7 @@ int mqtt_cycle(struct mosquitto *mosq) {//阻塞型
// } // }
// } // }
//mqtt清理
void mqtt_clean(struct mosquitto *mosq){ void mqtt_clean(struct mosquitto *mosq){
// 清理 // 清理
mosquitto_destroy(mosq); mosquitto_destroy(mosq);
......
This diff is collapsed.
...@@ -138,7 +138,7 @@ void *delay_count(void *arg) { ...@@ -138,7 +138,7 @@ void *delay_count(void *arg) {
Delay_Ms(0,5); Delay_Ms(0,5);
device_delay_count++;//设备计时,坦克打击倒退逻辑 device_delay_count++;//设备计时,坦克打击倒退逻辑
gverify_count++;//验证计时,每15s一次 gverify_count++;//验证计时,每15s一次
if(gverify_count >= 5000) gverify_count = 5000; if(gverify_count >= 20000) gverify_count = 20000;
if(device_delay_count >= 5000) device_delay_count = 5000; if(device_delay_count >= 5000) device_delay_count = 5000;
} }
return NULL; return NULL;
......
...@@ -70,19 +70,19 @@ void car0102_mode_2_back(unsigned char gval) { ...@@ -70,19 +70,19 @@ void car0102_mode_2_back(unsigned char gval) {
if (gval < 50) { if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 0); pwmWrite(PWM_PIN_SPEED, 0);
} else if (gval <= 55) { } else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k); pwmWrite(PWM_PIN_SPEED,b + 40 * k);
} else if (gval <= 60) { } else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k); pwmWrite(PWM_PIN_SPEED,b + 40 * k);
} else if (gval <= 65) { } else if (gval <= 65) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k); pwmWrite(PWM_PIN_SPEED, b + 40* k);
} else if (gval <= 70) { } else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k); pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 75) { } else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k); pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 90) { } else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, b + 30 * k); pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 100) { } else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, b + 35 * k); pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 110) { } else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, b + 40 * k); pwmWrite(PWM_PIN_SPEED, b + 40 * k);
} else if (gval <= 120) { } else if (gval <= 120) {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
char temperature[20]; char temperature[20];
float temp_str; float temp_str;
//温度获取
int heat_tem() { int heat_tem() {
FILE *file; FILE *file;
char line[MAX_LINE_LENGTH]; char line[MAX_LINE_LENGTH];
......
...@@ -4,7 +4,8 @@ ...@@ -4,7 +4,8 @@
#include "gpio_pwm_carship.h" #include "gpio_pwm_carship.h"
#include "request.h" #include "request.h"
int alarm_highest(int index) {//最高警报,最低电压报警 //最高警报,最低电压报警
int alarm_highest(int index) {
if(index == 1) { if(index == 1) {
pin_value(20,1);//紫灯 pin_value(20,1);//紫灯
if(enable_buzzer_value) { if(enable_buzzer_value) {
...@@ -18,7 +19,8 @@ int alarm_highest(int index) {//最高警报,最低电压报警 ...@@ -18,7 +19,8 @@ int alarm_highest(int index) {//最高警报,最低电压报警
return index ; return index ;
} }
int alarm_low(int index) {//比较小警报 //比较小警报
int alarm_low(int index) {
if(index == 1) { if(index == 1) {
pin_value(16,1);//黄灯 pin_value(16,1);//黄灯
} else if(index == 0) { } else if(index == 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment