接觸物聯網差不多10年了。
先跟大家聊聊,老宇哥11年進入大學,大一就在實驗室開始了電子研發,記得那時候師兄介紹我買了一塊郭天祥老師的51開發板,還有配套的一本書,雖然從小非常喜歡電子,經常折騰,有一些硬體相關知識,但是軟體可是從來沒接觸過,看到第一行代碼就懵逼了,這是啥?
後來問隔壁師兄,師兄很耐心,跟我簡單講解了一下,然後讓我看一本C語言的書,說先簡單看一看,不用看的很深,邊看邊學,就這樣,在無數次的逃課以及晚上挑燈奮鬥之後,我成功點亮第一個燈了,那時候的興奮無以言表。郭老師的那本神作通俗易懂,我也是激動的做一個個的小實驗,邊學邊補充,遇到不懂的先查資料,實在不會的,就跟實驗室的夥伴們討論,那時候的求知慾非常強烈,實驗室也是經常呆到晚上10點之後,慢慢的小小的入門了。
後來大二參加比賽,第一個應該是合泰杯吧,比賽要求必須要用合泰的晶片開發,當時拿到幾個合泰的開發板,開始也是不知所措,我只用過51呀,這晶片怎麼開發?後來也是跟夥伴們討論交流,安裝對應的開發環境,驅動,跑第一個點燈例程,簡單熟悉串口,定時器等外設,再添加自己的邏輯。
當時做了一個WiFi智能排插,也是我做的第一個智能家居類小製作,當時的條件並不像現在這麼高級,我自己做硬體以及嵌入式軟體這邊,找同學介紹了一個計算機學院的同學,做APP的開發,還有一個用java簡單做了一個小伺服器,用於數據轉發,然後開始惡補網絡方便的一些知識,什麼路由器,TCP,UDP,WiFi模塊,埠映射、內網穿透什麼的,用有人的WiFi模塊,花生殼做的內網穿透,也是實現了簡單的遠程以及區域網控制,不過最後只拿了一個三等獎。
從這開始,基本上都很關注物聯網行業,到現在從事做家電相關產品,一直都是圍繞物聯網相關在做。
關於做產品或者是小製作,從方案角度,一般有以下下幾種:
用一些開源硬體平臺,類似Arduino,樹莓派等,網上學習資料,各種庫,開源項目非常多,簡單易懂,但是靈活性、效率沒那麼高,創客們用的多;用51,STM8,MSP430,STM32等單片機,最接地氣的方式,可以深入控制到寄存器,MCU品牌,資料也是非常多,原子,野火等開發板都非常不錯,簡單點的裸機開發即可,結合一些嵌入式的實時作業系統,FreeRTOS、UCOS、RTT等,可以做一些複雜點的項目;用Linux或者FPGA開發,有一些要求高的項目,單片機等滿足不了,例如做一些高級的顯示,工控板,複雜的應用等,門檻比較高,韋東山,原子,野火,朱友鵬老師等都有出了一些非常好的教程,真正深入進去,才能體會到Linux的博大精深。老宇哥打算寫一些基礎的文章,跟大家一起做一些好玩有趣的項目,ESP8266,ESP32等樂鑫推出的晶片深受國內外愛好者的喜歡,業內人士應該沒多少人沒聽過ESP8266,我們本次選用ESP32系列的模塊進行開發,以最簡單的方式給大家展示。關於ESP32的開發,有幾種開發方式:
Arduino方式開發,得益於簡單易上手的體驗,Arduino無疑成為最成功的開源硬體平臺之一,結合眾多的開源庫,可玩性非常非常高;Espressif IDF,這是樂鑫官方的原生開發方式,設置工具鏈,自己安裝CMake Ninja編譯構建工具,獲取ESP-IDF軟體開發框架,運行工具鏈腳本,Windows,Linux,macOS下均可以開發,新手配置略顯複雜,但代碼效率最高;在VSCode下添加ESP-IDF插件,跟第二種一樣,但可以一鍵配置好環境,編譯工具什麼的都會自動安裝好,體驗還是不錯的,產品級別的ESP32推薦此方式開發;microPython方式開發,類似Arduino的開發方式,大部分語法都能跟Python兼容;這裡我們選擇用Arduino的方式開發(後續會介紹VSCode下添加ESP-IDF插件的開發),Arduino core for the ESP32是樂鑫官方主導開發維護的,看到這裡可能有部分同學要批我,為啥還用Arduino這麼「low」的開發方式,有一些骨子裡不太看得起Arduino,其實Arduino這些年發展非常好,效率雖然比傳統開發可能會慢一丟丟,但是在這麼強的晶片性能下基本上可以忽略了,還有一些說底層屏蔽了太多的東西,看不到實際的寄存器操作,其實用官方SDK開發也不是一樣,都是在調庫,當我們想了解實際怎麼控制的,同樣的可以打開庫,去看庫是怎麼實現的。最最重點的一點,Arduino有很多很多優秀的庫,非常方便我們做一些小製作。
接下來進入正式的開發,完全沒Arduino基礎的,先自行學習一下。
1、ESP32介紹ESP32 晶片是由樂鑫公司繼 ESP8266 晶片後推出的又一款集成 WiFi/BLE 功能的微控制器。性能比 ESP8266 更加強大,ESP32 晶片或模組具有下列特點:
功能框圖:
引腳圖,初期開發我們就用ESP32-DevKit開發板,便宜好用。2、開發環境搭建 Arduino軟體安裝,下載Arduino IDE並安裝,當然也可以用其它編輯器,VSCode + PlatformIO IDE插件等方式,這個後續介紹。https://www.arduino.cc/en/softwareArduino IDE中添加對應開發板,在文件->首選項->附加開發板管理網址中,添加ESP32的管理網址:https://dl.espressif.com/dl/package_esp32_index.json添加開發板,在工具->開發板->開發板管理中,搜索esp32,如下圖所示,安裝Arduino core for esp32,過程可能比較慢,也可能需要科學上網才能安裝好然後選擇中對應的開發板,我們可以看到這裡有很多不同的ESP32開發板,這裡選擇ESP32 Dev Module就可以了3、程序測試void setup()
{
Serial.begin(115200);
Serial.println("");
}
void loop()
{
Serial.println("Hello World!");
Serial.println("This is my first esp32 code!");
delay(1000);
}非常非常簡單,默認已經引用了ESP32的頭文件,通過Serial.begin(115200);初始化串口波特率之後,就可以通過Serial.println();列印輸出了。
選中對應串口並點擊編譯下載
今天我們先介紹到這裡,先有個大概的感覺,後面我們會一一介紹ESP32的外設,然後分享很多好玩有趣的物聯網項目,敬請期待!感謝大家閱讀到這裡,我們建了一個微信群,用於討論Arduino、ESP32、物聯網相關內容,有興趣的小夥伴可以加微信apink666888或者karaxiaoyu加入群聊,一起交流學習,為保證群的純淨,關閉了自動進入,謝謝大家!