close
2017.11.22(星期三)
這個文件用來記錄ESP-IDF的安裝及使用過程, Espressif IoT Development Framework (esp-idf). 是使用 ESP32 晶片所發展 Internet-of-Things (IoT)應用程式的正式開發架構。
Get Started
需要的材料
- PC 有Windows, Linux or Mac 作業系統。
- Download and Install VirtualBox 5.2 & Ubuntu 16.04 (參考http://blog.xuite.net/yh96301/blog/432341564)
- Toolchain 建造ESP32的應用程式。
- ESP-IDF 包括ESP32必須要使用的API。
- 文字編輯器(e.g. Eclipse)寫C語言 。
- ESP32 開發板和連到PC的USB cable
ESP32 發展環境三個步驟
- 安裝Toolchain。 (參考 https://dl.espressif.com/doc/esp-idf/latest/get-started/windows-setup.html)
- 從GitHub得到ESP-IDF。 (參考 https://dl.espressif.com/doc/esp-idf/latest/get-started/index.html#guides)
- 設定路徑至ESP-IDF。 (參考 https://dl.espressif.com/doc/esp-idf/latest/get-started/index.html#guides)
ESP32 應用程式開發四個步驟
- 配置一個專案及程式碼。(參考 https://dl.espressif.com/doc/esp-idf/latest/get-started/index.html#guides)
- 編譯專案及連結至應用程式。
- 燒錄應用程式至ESP32晶片內。(參考 https://dl.espressif.com/doc/esp-idf/latest/get-started/make-project.html)
- 監控及除錯應用程式。
測試程式: Hello World
參考https://exploreembedded.com/wiki/Hello_World_with_ESP32_Explained
- /* Hello World Example*/
- #include <stdio.h>
- #include "freertos/FreeRTOS.h"
- #include "freertos/task.h"
- #include "esp_system.h"
- void hello_task(void *pvParameter)
- {
- printf("Hello world!\n");
- for (int i = 10; i >= 0; i--) {
- printf("Restarting in %d seconds...\n", i);
- vTaskDelay(1000 / portTICK_RATE_MS);
- }
- printf("Restarting now.\n");
- fflush(stdout);
- esp_restart();
- }
- void app_main()
- {
- nvs_flash_init();
- xTaskCreate(&hello_task, "hello_task", 2048, NULL, 5, NULL);
- }
另一個LED On/Off 程式
- #include <stdio.h>
- #include "freertos/FreeRTOS.h"
- #include "freertos/task.h"
- #include "esp_system.h"
- #include "driver/gpio.h"
- #define BLINK_GPIO 13
- void hello_task(void *pvParameter)
- {
- while(1)
- {
- printf("Hello world!\n");
- vTaskDelay(100/portTICK_RATE_MS);
- }
- }
- void blinky(void *pvParameter)
- {
- gpio_pad_select_gpio(BLINK_GPIO); /* Set the GPIO as a push/pull output */
- gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
- while(1) { /* Blink off (output low) */
- gpio_set_level(BLINK_GPIO, 0);
- vTaskDelay(1000/portTICK_RATE_MS); /* Blink on (output high) */
- gpio_set_level(BLINK_GPIO, 1);
- vTaskDelay(1000/portTICK_RATE_MS);
- }
- }
- void app_main()
- {
- nvs_flash_init();
- xTaskCreate(&hello_task, "hello_task", 2048, NULL, 5, NULL);
- xTaskCreate(&blinky, "blinky", 512,NULL,5,NULL );
- }
參考資料:
https://dl.espressif.com/doc/esp-idf/latest/index.html
ESP32: Hello World
ESP32 Bluetooth: Using the BTstack library
全站熱搜
留言列表