minimal function example, it shoot, it spin, it repeat
This commit is contained in:
parent
e3acf612b7
commit
f39139f910
1 changed files with 147 additions and 0 deletions
147
main/main.c
147
main/main.c
|
@ -17,11 +17,144 @@
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "esp_http_client.h"
|
#include "esp_http_client.h"
|
||||||
|
#include "driver/mcpwm.h"
|
||||||
|
#include "soc/mcpwm_reg.h"
|
||||||
|
#include "soc/mcpwm_struct.h"
|
||||||
|
|
||||||
|
#include "esp32-wifi-manager.h"
|
||||||
|
|
||||||
#define TAG "CACO"
|
#define TAG "CACO"
|
||||||
|
|
||||||
|
#define BASE_URL "http://192.168.0.1/"
|
||||||
|
#define CMD_BEEP "cmd=audio resplay 0 1 3\n"
|
||||||
|
|
||||||
static uint8_t id;
|
static uint8_t id;
|
||||||
|
|
||||||
|
EventGroupHandle_t wm_event_group;
|
||||||
|
|
||||||
|
esp_err_t _http_event_handle(esp_http_client_event_t *evt) {
|
||||||
|
//ESP_LOGI(TAG, "Returning request for %s", (char*)evt->user_data);
|
||||||
|
|
||||||
|
switch(evt->event_id) {
|
||||||
|
case HTTP_EVENT_ERROR:
|
||||||
|
ESP_LOGI(TAG, "HTTP_EVENT_ERROR");
|
||||||
|
break;
|
||||||
|
case HTTP_EVENT_ON_CONNECTED:
|
||||||
|
ESP_LOGI(TAG, "HTTP_EVENT_ON_CONNECTED");
|
||||||
|
break;
|
||||||
|
case HTTP_EVENT_HEADER_SENT:
|
||||||
|
ESP_LOGI(TAG, "HTTP_EVENT_HEADER_SENT");
|
||||||
|
break;
|
||||||
|
case HTTP_EVENT_ON_HEADER:
|
||||||
|
ESP_LOGI(TAG, "HTTP_EVENT_ON_HEADER");
|
||||||
|
printf("%.*s", evt->data_len, (char*)evt->data);
|
||||||
|
break;
|
||||||
|
case HTTP_EVENT_ON_DATA:
|
||||||
|
ESP_LOGI(TAG, "HTTP_EVENT_ON_DATA, len=%d", evt->data_len);
|
||||||
|
if (!esp_http_client_is_chunked_response(evt->client)) {
|
||||||
|
printf("%.*s", evt->data_len, (char*)evt->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case HTTP_EVENT_ON_FINISH:
|
||||||
|
ESP_LOGI(TAG, "HTTP_EVENT_ON_FINISH");
|
||||||
|
break;
|
||||||
|
case HTTP_EVENT_DISCONNECTED:
|
||||||
|
ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ping() {
|
||||||
|
esp_http_client_config_t config = {
|
||||||
|
.url = "http://192.168.0.1/_gr",
|
||||||
|
.method = HTTP_METHOD_POST,
|
||||||
|
};
|
||||||
|
|
||||||
|
esp_http_client_handle_t client = esp_http_client_init(&config);
|
||||||
|
esp_http_client_set_post_field(client, CMD_BEEP, strlen(CMD_BEEP));
|
||||||
|
esp_err_t err = esp_http_client_perform(client);
|
||||||
|
|
||||||
|
if (err == ESP_OK) {
|
||||||
|
ESP_LOGI(TAG, "Status = %d, content_length = %d",
|
||||||
|
esp_http_client_get_status_code(client),
|
||||||
|
esp_http_client_get_content_length(client));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void shoot() {
|
||||||
|
esp_http_client_config_t config = {
|
||||||
|
.url = "http://192.168.0.1/v1/camera/shoot",
|
||||||
|
.method = HTTP_METHOD_POST,
|
||||||
|
};
|
||||||
|
|
||||||
|
esp_http_client_handle_t client = esp_http_client_init(&config);
|
||||||
|
esp_http_client_set_post_field(client, CMD_BEEP, strlen(CMD_BEEP));
|
||||||
|
esp_err_t err = esp_http_client_perform(client);
|
||||||
|
|
||||||
|
if (err == ESP_OK) {
|
||||||
|
ESP_LOGI(TAG, "Status = %d, content_length = %d",
|
||||||
|
esp_http_client_get_status_code(client),
|
||||||
|
esp_http_client_get_content_length(client));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void request(char *path) {
|
||||||
|
char *url = malloc(strlen(BASE_URL) + strlen(path) + 1);
|
||||||
|
strcpy(url, BASE_URL);
|
||||||
|
strcat(url, path);
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "Making request to %s", url);
|
||||||
|
|
||||||
|
esp_http_client_config_t config = {
|
||||||
|
.url = url,
|
||||||
|
.event_handler = _http_event_handle
|
||||||
|
};
|
||||||
|
|
||||||
|
esp_http_client_handle_t client = esp_http_client_init(&config);
|
||||||
|
esp_err_t err = esp_http_client_perform(client);
|
||||||
|
|
||||||
|
if (err == ESP_OK) {
|
||||||
|
ESP_LOGI(TAG, "Status = %d, content_length = %d",
|
||||||
|
esp_http_client_get_status_code(client),
|
||||||
|
esp_http_client_get_content_length(client));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
xEventGroupWaitBits(wm_event_group, WIFI_CONNECTED, false, true, portMAX_DELAY);
|
||||||
|
ping();
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
shoot();
|
||||||
|
|
||||||
|
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||||
|
|
||||||
|
mcpwm_set_duty_in_us(MCPWM_UNIT_0, MCPWM_TIMER_0, MCPWM_OPR_A, 1200);
|
||||||
|
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||||
|
mcpwm_set_duty_in_us(MCPWM_UNIT_0, MCPWM_TIMER_0, MCPWM_OPR_A, 1500);
|
||||||
|
|
||||||
|
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void servo() {
|
||||||
|
mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0A, 21);
|
||||||
|
|
||||||
|
mcpwm_config_t pwm_config;
|
||||||
|
pwm_config.frequency = 50; //frequency = 50Hz, i.e. for every servo motor time period should be 20ms
|
||||||
|
pwm_config.cmpr_a = 0; //duty cycle of PWMxA = 0
|
||||||
|
pwm_config.cmpr_b = 0; //duty cycle of PWMxb = 0
|
||||||
|
pwm_config.counter_mode = MCPWM_UP_COUNTER;
|
||||||
|
pwm_config.duty_mode = MCPWM_DUTY_MODE_0;
|
||||||
|
mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); //Configure PWM0A & PWM0B with above settings
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void app_main() {
|
void app_main() {
|
||||||
esp_err_t ret;
|
esp_err_t ret;
|
||||||
|
|
||||||
|
@ -40,4 +173,18 @@ void app_main() {
|
||||||
id = mac[5];
|
id = mac[5];
|
||||||
|
|
||||||
ESP_LOGI(TAG, "MAC: %X:%X:%X:%X:%X:%X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
ESP_LOGI(TAG, "MAC: %X:%X:%X:%X:%X:%X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||||
|
|
||||||
|
wm_event_group = wifi_manager_start();
|
||||||
|
wifi_manager_reset_store();
|
||||||
|
|
||||||
|
if(wifi_manager_ap_count() == 0) {
|
||||||
|
ESP_LOGI(TAG, "Adding new AP");
|
||||||
|
|
||||||
|
if(strlen(CONFIG_WIFI_MANAGER_TEST_AP) > 0) {
|
||||||
|
wifi_manager_add_ap(CONFIG_WIFI_MANAGER_TEST_AP, CONFIG_WIFI_MANAGER_TEST_PWD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
xTaskCreate(&loop, "loop", 2048, NULL, 6, NULL);
|
||||||
|
xTaskCreate(&servo, "servo", 2048, NULL, 6, NULL);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue