1. 程式人生 > >3.1 ESP8266- FreeRTOS SDK 入門學習筆記

3.1 ESP8266- FreeRTOS SDK 入門學習筆記

============================================================================

感謝      開源原始碼和視訊貢獻者:                     

                                                                            作者:火柴棍

                                                                            時間:2016.2.28

============================================================================

演示視訊:

演示程式碼:

資料下載地址:

連結:https://pan.baidu.com/s/1dGSkbip 密碼:i03o

這篇學習筆記介紹這款晶片的基本功能,以及原始碼分析.

這是ESP8266入門必看視訊,在這裡面我學習到了很多.

在開始這個ESP8266學習的路上,由衷感謝 這種開源貢獻者,我表示深深感謝他對開發者的默默貢獻!

=========================================================================

                                            第0節   ESP8266開發環境 之搭建Linux下編譯平臺

演示搭建Linux下的編譯平臺,Window下安裝虛擬機器,然後在Window下安裝Source Insight程式碼編輯軟體

smartconfig 是基本例程(環境),以後的程式碼都是在此基礎上開發的

                                                                     第一節  smartconfig

0.修改gen_misc.sh 裡面的路徑

  

1.FLASH TOOL使用手冊

  不支援雲端升級( Non-FOTA)
  燒錄檔案及地址說明

1.1 根據自己情況選擇即可:

      比如:不支援雲端升級--->1024KB Flash  8Mbit

      編譯過程如下圖

1.2  具體選項 介紹 ---> <<2a-esp8266-sdk_getting_started_guide_cn>> ---> 4.1. Non-FOTA

 

1.3 虛擬機器上的操作如下圖所示

2.esp8266_rtos_sdk 預設EART0波特率為74880

   程式碼UART_SetBaudrate(UART0,74880);  //註釋
  -->  修改為115200

     Makefile增加一行程式碼:

    uart.c裡面修改波特率:

PS:同一個檔案 在虛擬機器 可以編譯成bin檔案(本文的編譯環境)
    在eclips 報錯 No rule to make target 'clean'.  Stop.(安信可編譯環境)


3.燒錄下面4個檔案  esp_init_data_default.bin    0xFC000
                 blank.bin                                          0xFE000
                 eagle.flash.bin                                  0x00000
                 eagle.irom0text.bin                          0x20000

注意:  eagle.irom0text.bin -->  0x20000

         虛擬機器上的路徑為0x20000,那麼以虛擬機器上面的路徑為準,上面圖片的地址要重新改變再下載!!!
 
=========================================================================== 

                                                          第二節  SDK建立LED閃爍任務

1.ESP TOUCH APK(安卓軟體)
  手機配置功能:讓模組連wifi

2.led_toggle
參考手冊:20a-esp8266_rtos_sdk_programming_guide_cn(作業系統)
在user_main.c裡面新增有關GPIO的函式(重要)
 
 
新增GPIO方法:
ESP8266_RTOS_SDK_V1.4.0\examples\driver_lib\driver\gpio.c
-----> led_toggle\driver\gpio.c

\ESP8266_RTOS_SDK_V1.4.0\examples\driver_lib\include\gpio.h
-----> \led_toggle\include\driver\gpio.h

user_main.c裡面包含標頭檔案
#include "driver/gpio.h"

3.修改gen_misc.sh檔案
  export BIN_PATH=/home/esp8266/Share/led_toggle/bin

4.Gpio.c新增
  #include "driver/gpio.h"

5.燒錄韌體

=======================================================================

                                         第三節   SDK多工、按鍵中斷觸發進入smartconfig
在user_main.c裡面新增有關KEY的函式


PS:關於作業系統的函式說明,在相應的標頭檔案會有詳細介紹
新增KEY方法:在第二節已經完成(GPIO)

功能:演示多工執行,建立一個LED燈閃爍任務和按鍵處理任務.建立按鍵任務後將任務掛起,
在按鍵中斷處理任務中喚醒按鍵處理任務,按鍵處理任務檢測到按鍵按下5S後啟動ESP8266進入snartconfig模式

==========================================================================
                                         第四節   SDK建立UDP伺服器、區域網搜尋裝置

功能:演示建立UDP伺服器,區域網內廣播搜尋裝置(網路通訊)

參考手冊:LWIP中文手冊 -->  Socket程式設計

1. 主要編寫UdpServer.c和UdpServer.h   二個檔案


2. 在user_main.c --> user_init(void)
   新增UdpServerInit()

3. 修改bin檔案路徑
  udp_server-->gen_misc.sh
  export BIN_PATH=/home/esp8266/Share/udp_server/bin

===========================================================================
                              第五節  SDK建立TCP伺服器、區域網控制LED亮滅(重點)

功能:演示建立TCP伺服器,區域網內TCP客戶端傳送指令控制LED亮滅
     TCP相比UDP穩定可靠(具體百度)
參考手冊:
      20a-esp8266_rtos_sdk_programming_guide_cn-->3.3網路協議示例-->TCP Server(21頁)
      20b-esp8266_rtos_sdk_api_reference_v1.4.0
1.使用SourceInsight 編輯器
  a.Project-->New Project
    Where do you want to...?(建立一個新的資料夾命名為tcp_server)   
    New project name-->tcp_server

  b.Project Source Directory-->(選擇已有的tcp_server基本程式碼檔案路徑下的user)

  c.把用到的C檔案和H檔案新增進來(Add All)
  udp_server的driver檔案+include檔案+user檔案
  ESP8266_RTOS_SDK_V1.4.0的include檔案

2.主要編寫TcpServer.c和TcpServer.h檔案
  TcpServer.c儲存在tcp_server-->user下
  TcpServer.h儲存在tcp_server-->include下

3.Socket程式設計
  Udp和TCP用的Socket函式名一樣,但是裡面引數不一樣
  程式碼裡面有一些函式在百度裡面都有,不會百度有詳細說明


4.編寫Led.c和Led.h檔案
  Led.c儲存在tcp_server-->user下
  Led.h儲存在tcp_server-->include下

5.修改bin檔案路徑
  tcp_server-->gen_misc.sh
  export BIN_PATH=/home/esp8266/Share/tcp_server/bin

6.在虛擬機器上編譯程式碼後下載到開發板

===========================================================================


                                     第六節  SDK建立http請求,使用GET訪問百度首頁
              
        工具:POSTMAN
        URL基本知識 
        <協議>://<主機>:<埠>/<路徑>?<引數>&<引數>&....
      
        HTTP基本知識講解
        HTTP請求過程如下:
        a.域名解析
        b.建立TCP連線
        c.傳送資料(傳送HTTP頭資訊)
        d.接收資料
        e.斷開連線

        GET:主要用於獲取伺服器上的內容
        POST:傳輸內容到伺服器
        CR 回車 , LR 換行       

        HTTP GET請求舉例
         首先執行cmd.exe,然後 ping www.baidu.com,獲取IP地址,使用網路除錯助手
       作為TCP客戶端,連線IP地址:180.97.33.108,埠:80
         請求訊息:
       GET /index.html HTTP/1.1
       Host:www.baidu.com
       (空行) (回車換行-\r\n)
         響應訊息:
       HTTP/1.1 200 OK
       ......

1.使用SourceInsight 編輯器

2.編寫TcpServer.c和TcpServer.h 檔案

3.在TcpServer.c-->void tcp_server_thread( void *pvParameters )增加部分程式碼

4.在虛擬機器修改路徑,生成bin檔案

===========================================================================

                                                              第七節 SDK實現OTA

  功能:在區域網內執行WebServer,將韌體放到WebServer的目錄下,使用網路助手觸發ESP8266從WebServer
 上下載新韌體,然後ESP8266重啟,執行新韌體

  參考文件:自己編寫的文件 --> 第七講 ESP8266 RTOS SDK實現OTA.pdf

  使用使用者自己的伺服器,這方式比較簡單,將新的韌體放到伺服器的路徑下,ESP8266使用http get 的方式下載
新的韌體寫到FLASH裡面,然後重啟執行新的韌體.

1.修改相關檔案(視訊中的PPT)
2.例程實現(視訊中的PPT)
3.編寫程式碼
 
  a.修改程式碼(Upgrade.C檔案)
  BOOL 
  system_upgrade_start(struct upgrade_server_info *server)//回撥函式
  只需填寫引數,然後呼叫此函式即可實現韌體更新
      | |
      | |回撥函式如下
      | |
    struct upgrade_server_info {
    struct sockaddr_in sockaddrin;          /**< socket of upgrading */
    upgrade_states_check_callback check_cb; /**< callback of upgrading */
    uint32 check_times;                     /**< time out of upgrading, unit : ms */
    uint8 pre_version[16];                  /**< previous version of firmware */
    uint8 upgrade_version[16];              /**< the new version of firmware */
    uint8 *url;                             /**< the url of upgrading server */
    void *pclient_param;
    uint8 upgrade_flag;                     /**< true, upgrade succeed; false, upgrade fail */
   };

   b.需要填寫三個引數
   
4.執行升級程式碼
  UpgradeFirmware.c-->bool ExcuteUpgrade( char * FirmWareDownLoadPath )

5.具體說明
  OTA\程式說明

相關推薦

3.1 ESP8266- FreeRTOS SDK 入門學習筆記

============================================================================ 感謝      開源原始碼和視訊貢獻者:                                       

java入門學習筆記1(類的定義,代碼的編譯執行)

spa hex nts 自動調用 [] alt vim 進制 技術 這篇文章講解Java代碼的基本執行過程 我們先拋開各種JAVA IDE,開發工具,只使用文本編輯器,以突出最本質的東西。 在Linux環境下,我們編輯一個文件: vim HelloWorld.java

Spring入門學習筆記1

eth cast path jpa 組件 註解 lob 調用bean 應用 目錄 Spring好處 依賴註入 面向面編程(AOP) Spring Framework Core Container Web Miscellaneous 編寫第一個程序 IoC容器 Sprin

Spring入門學習筆記3)——事件處理類

aware super 不能 href his 應用 odi eap app 目錄 Spring中的事件處理 Spring內建事件 監聽Context事件 Example 自定義Spring事件 Spring中的事件處理 ApplicationContext 是Spr

Arduino 入門學習筆記3 程式結構和常用函式

Arduino 的程式可以劃分為三個主要部分:結構、變數(變數與常量)、函式。 函式 1、setup() 當Arduino開始的時候被呼叫。用它來初始化變數,設定引腳執行模式,啟動庫檔案等。setup函式只執行一次,每次上電或者被重置時候呼叫。 int buttonPin

Arduino 入門學習筆記1 開發環境及雙色LED實驗

本系列學習教程來自 創樂博智慧學習視訊 Arduino 發展 2005年,Massimo Banzi和David Cuartielles、David Mellis設計 Arduino。取該名稱的原因是Massimo Banzi喜歡去一家名叫Arduino的酒吧,其名稱是1000年

筆記1 python入門學習筆記

目錄 官方手冊 菜鳥站手冊地址: python的執行方法 註釋 變數 字串 列表 (相當於PHP裡的索引陣列) 列表的新增 列表的刪除 列表的更新 指定列表裡元素的索引下標重新賦值 列表擷取與拼接 巢狀列表 列表的賦值

Node.js入門學習筆記(1)

node.js筆記(1) 前端小白 自己打算做個微信小程式,剛好學習一下node.js,準備用node搭建一個簡單的後臺。寫部落格記錄一下學習進度,另一方面加強對新知識的理解。 主要學習途徑 一、node安裝 之前安裝過,這裡簡單記錄一下 安裝包地址 檢查n

3章 Pandas資料處理(3.1-3.2)_Python資料科學手冊學習筆記

第2章介紹的NumPy和它的ndarray物件. 為多維陣列提供了高效的儲存和處理方法. Pandas是在NumPy的基礎上建立的新程式庫, 提供DataFrame資料結構. DataFrame帶行標籤(索引),列標籤(變數名),支援相同資料型別和缺失值的多維陣

opencv3程式設計入門學習筆記1-----基本影象容器Mat

1、Mat的結構 Mat本質上是由兩個資料部分組成的類: (包含資訊有矩陣的大小,用於儲存的方法,矩陣儲存的地址等)的矩陣頭和一個指標,指向包含了畫素值的矩陣(可根據選擇用於儲存的方法採用任何維度儲存資料)。矩陣頭部的大小是恆定的。然而,矩陣本身的大小因影象的不同而不同,通

Python 入門學習筆記3

八、切片 8-1 對list進行切片 >>> L[0:3] ['Adam', 'Lisa', 'Bart'] L[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素。 如果第一個索引是0,還可以省略: &

[TensorFlow]入門學習筆記(3)-影象預處理

影象預處理 前言 因為在做目標追蹤方面,一直在matlab中寫程式碼,不得不說改程式碼改的又複雜又難改,優化難做啊。就把影象預處理過程直接放到tensorflow中學習吧。 TFRecord資料格式 對於資料量較小而言,可能一般選擇直接將資料載入進記憶體

AngularJS入門學習筆記

rect directive 技術分享 attr 兩個 ava 內容 module 大括號 首先聲明: 本博客源自於學習:跟我學AngularJs:AngularJs入門及第一個實例。通過學習,我自己的一些學習筆記。 1.AngularJS的一些基本特性 (1)使用雙大括號

PyTorch框架+Python 3面向對象編程學習筆記

clu 外部 接口 需要 util self. mat its 函數表 一、CNN情感分類中的面向對象部分 sparse.py 1 super(Embedding, self).__init__() 表示需要父類初始化,即要運行父類的_init_(),如果沒有這個,則

python數據分析入門學習筆記

rip help cat app run 復雜 bsp 真的 parser 學習利用python進行數據分析的筆記兒&下星期二內部交流會要講的內容,一並分享給大家。博主粗心大意,有什麽不對的地方歡迎指正~還有許多尚待完善的地方,待我一邊學習一邊完善~ 前言:各種和

【幹貨】Html與CSS入門學習筆記12-14【完】

進度條 tom step char number 視頻容器 復選框 其中 私有 十二、HTML5標記 現代HTML html5新增的元素:header nav footer aside section article time 這些新增元素使頁面結構更清晰,取代<di

Backbone.js入門學習筆記目錄

href web back mode 應用 bookmark hello www col //來自 https://www.the5fire.com/backbone-tutorials-catalogue.html 1、初識backbone.js 2、通過hello

前端開發入門學習筆記(一)

type red 學習 lin attach black 復合 等於 round HTML:超文本標記語言。 html:是一個基礎結構。 CSS:就是跟網頁做裝修的,修飾HTML的基礎內容:樣式。 JavaScript:一個網頁的行為,動作,動態的東西。 html標準文件格

Java小白入門學習筆記demo1輸出helloworld

out hello string 語句 返回 學習筆記 print [] system public class Hello{//公共 類 類名   public static void main(String[] args){ // 公共 靜態

nodejs入門學習筆記二——解決阻塞問題

rtti 線程 需要 std 額外 tar fun 自己 我們   在最開始,我們要弄清楚node會什麽會存在阻塞?   node是這麽標榜自己的:“在node中除了代碼,所有一切都是並行執行的!”   意思是,Node.js可以在不新增額外線程的情況下,依然可以對任務進行