目前分類:ESP32(Arduino) (97)

瀏覽方式: 標題列表 簡短摘要

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


繼前篇「MySQL資料庫存取」可以把溫濕度存放在自己的資料庫,這樣雖然非常好,可是考慮到不是每一個人都有辦法架設一台網路資料庫伺服器,所以我們來介紹一個目前物聯網最受歡迎的ThingSpeak資料庫,他是由大名鼎鼎的MATLAB公司所提供的免費空間,每一個註冊帳號可以免費取得4個頻道,頻道可以視為資料庫,每1個頻道可提供8個自訂欄位,最重要的是它提供非常直覺的圖表製作的功能,可以快速將資料轉換成圖表,且資料傳遞採用最簡單的http get,因此非常受到網友的推薦,算是網路入門的第一步。

除了儲存資料外,也有提供React及ThingHTTP,功能類似IFTTT可以進一步再串連其他服務,例如發現溫度過高就發送LINE通知,這都在本篇的文章中會介紹。

一、實驗目的

透過ESP32及DHT11取得環境溫濕度,將資料上傳至ThingSpeak並完成圖表設定,最後設定React,當溫度過高時,發送LINE通知給管理員,避免災害發生。

二、實驗過程

為了完成上述實驗,過程可分成以下幾個步驟,但有些屬於之前的課程就不再贅述,主要可分成以下幾個流程:
1.建立ThingSpeak帳號,並設定一個頻道
2.ESP32 透過DHT11取得溫濕度:
3.ESP32 WiFi連線及http get資料上傳:
4.圖表設定與頻道資料分享
5.設定LINE通知服務:
6.設定ThingSpeak React 及 ThingHTTP

三、實驗步驟

1.建立ThingSpeak帳號,並設定一個頻道

首先利用我們到ThingSpeak首頁: https://thingspeak.com/ ,ThingSpeak註冊過程比較特別,在建立帳號時並沒有密碼欄位,而是經過eMAIL確認後,才會要使用者輸入註冊欄位。這過程經常搞的大家摸不清頭緒,因此請大家依照以下流程進行註冊

1.1 註冊
進入ThingSpeak首頁後,點選右上角Sign Up功能,若您沒看到Sign Up,應該可能收到功能表內了。
image

文章標籤

夜市 小霸王 發表在 痞客邦 留言(6) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


當我們從上一章學習如何利用ESP32所具備的WiFi上網能力,並到公開資訊網站上取得台灣各地PM2.5的數值,本章則要介紹如何讓ESP32成為一個小幫手,能幫我們監看倉庫的溫濕度,並在發生異常時發訊息通知我們,讓我們能立即處理異常,避免災害擴大,這樣是不是很方便呢?

而在台灣幾乎每個人都有手機,不管是Apple或是Android,也都會安裝Line通訊軟體來跟家人朋友聯繫,利用Line來打打字或是語音通訊都是免費的,而且還有可愛的貼圖可以用,所以發送Line訊息可以說是最方便即時的,不過ESP32要如何串接Line的訊息呢?ESP32又沒有手指是要如何打字呢?

Line有提供一個官方的網站工具,可以讓我們透過該網站傳遞參數,參數則包括訊息內容及權杖,權杖則是代表要傳遞的Line群組,當網站收到這些參數之後就會將訊息傳遞到指定的Line群組。也就是說,ESP32並不是直接把訊息傳到某個人手機的Line裡面,而是透過某個網站協助中間轉傳訊息,通常這類的網站就通稱為API(Application Programming Interface),使用這些API工具我們就可以省去學習Line APP內複雜的通訊協定、機制、格式、架構…等等,只需要把資料傳給API,而API就會處理所有的通訊過程,讓我們省下很多程式開發的時間。

整理上面的內容,也就是說首先我們利用ESP32及DHT11監看現場的溫濕度(也可以再加上氣體偵測MQ2、水位感測…等),當發現異常時(例如溫度>40或濕度>85)就發送到Line的API網站,Line API收到我們的訊息之後,就會轉傳到指定的Line群組中,讓相關的管理人員收到訊息,然後立即處理。

要完成以上的任務,本章分成四個步驟
一、申請Line Notify權杖
二、手冊測試Line Notify
三、ESP32+DHT11接線
四、程式設計


一、申請Line Notify權杖

Line Notify的網站申請開通服務,首先在瀏覽器中輸入網址:https://notify-bot.line.me/,並點選右上角的登入。
image

Line帳號密碼後,按下方的登入
image

完成登入,點選右上角的登入帳號/個人頁面,即可進入「已連動服務」管理頁面
image

Line群組通訊的密碼,若無此密碼,我們的Line可能每天都會收到一堆廣告訊息。
image

文章標籤

夜市 小霸王 發表在 痞客邦 留言(15) 人氣()

稍後更新


文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


ESP內建的WiFi上網,我們就可以將收集到的資料存入雲端資料庫,方便立即查看即時狀況,而且有長期的資料後就可以進行後續分析與比較,也能在發生異常時發出Mail, Line等通知管理者,達到立即處理的功能,這樣才算真正發揮IoT裝置的功能。

本章要介紹如何將DHT11的溫濕度等資料上傳到自己建立的資料庫,若讀者沒有網路伺服器可以建立MySQL,則可跳過本章,直接閱讀下一章「ESP32 資料庫存取ThingSpeak圖表製作」,不需要自己建立資料庫,畢竟資料庫伺服器的管理維護問題之外,還有網路連線IP、DDNS、NAT、虛擬伺服器、連接埠轉送等網路相關的知識,再加上SQL資料庫的維護與語法也是一個很大的議題。不過自己建立資料庫的好處則是資料儲存、使用、及後續管理與查詢都是由自己掌控,相對更加自由,這也是很多進階玩家選擇這樣作法的原因。

另外要說明的則是本篇介紹的方法是讓ESP32與MySQL直接建立連接,而不是更正式的三層式(Three Tier)作法,也就是讓ESP32透過HTTP Post或Get傳資料到AP Server,而AP Server再存入資料庫中的間接連線方式。

為了快速讓讀者能完成練習,本章分成以下幾個部份說明

一、環境設定:安裝MySQL及workbench

二、線路佈置:連接ESP32及DHT11

三、程式開發:在Arduino IDE中撰寫程式


一、環境設定

本章使用MySQL最大的好處是,他是免費的,執行效能也不差,另外就是workbench,這是懶人的福音,如果你跟我一樣,對cmd界面不熟悉,你一定要安裝workbench,他提供你完整的MySQL圖形界面操作模式,真心推薦。

1.安裝MySQL伺服器,安裝方式網路非常多介紹,請自行google,或參考這篇: https://jerrynest.io/windows-mysql-installer/ ,下載的網址: https://dev.mysql.com/downloads/installer/ ,題外話,如果你想用cluster版,可參考本人本篇文章: http://youyouyou.pixnet.net/blog/post/119326123

2.安裝workbench,下載網址: https://www.mysql.com/products/workbench/ 

3.將workbench連線到mysql資料庫

workbench安裝完畢後,我們就可以透過workbench進入資料庫,以進行設定,包括建立新的資料庫欄位以及開放讓IoT可連入更新資料,讓Arduino可以WiFi遠端更新資料庫,

3.1 Workbench連線

一般Workbench安裝完畢都會建立一個連線是直接連線到本機端MySQL,名稱是127.0.0.1直接打開即可。

3.2 建立新資料庫

點選左上方的Create new schema圖示,以建立資料庫,將存放DHT11傳入的溫濕度資料。

文章標籤

夜市 小霸王 發表在 痞客邦 留言(9) 人氣()

各位好

由於環保署已經停用AQI 1.0的網址,AQI 2.0的網址則需要申請API KEY,相關流程請參考本人所撰寫的新文章

https://www.nmking.io/index.php/2022/11/21/612/


本章介紹如何使用ESP32內建的WiFi模組連上網路,並上網抓取即時空氣品質PM2.5資料顯示在1602LCD上,ESP32使用網路模組非常簡單,利用WiFi函式庫連上網路,並用HTTPClient模擬一個瀏覽器,就可以上網抓取網頁資料,不過為了讓讀者了解ESP32 WiFi的運作原理,我們會先從WiFiscan這個範例開始上,WiFiscan就是掃描網路的意思,就像我們手機開啟WiFi功能時,會先列表附近掃描到的網路名稱及訊號強度,WiFiscan就是這樣的功能,我們掃描到網路之後,再來選擇要使用哪個網路上網,以下為本章大綱。

1.WiFiscan網路掃描
2.HTTPClient抓取PM2.5資訊
3.JSON資料解析
4.1602LCD顯示資訊

一、WiFiscan網路掃描

在ESP32中使用無線網路要使用到WiFi.h函式庫內的WiFi物件,另外ESP32啟動WiFi之後,可以選擇四種模式WiFi.mode,列表如下。

名稱

說明

語法

WIFI_STA

以工作站(Station)模式啟動,ESP32用來上網讀取資料,此為預設模式

WiFi.mode(WIFI_STA);

WIFI_AP

以熱點(Access Point)模式啟動,讓其他裝置連入ESP32

WiFi.mode(AP);

WIFI_AP_STA

文章標籤

夜市 小霸王 發表在 痞客邦 留言(2) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


 超音波與蜂鳴器:倒車雷達

現在的汽車大部分都有配備倒車雷達,就是倒車時,會依據車子與障礙物之間的距離發出不同頻率的嗶嗶聲,用來指引駕駛避免撞到別人的車子,而這套倒車雷達我們也可以使用ESP32來實做。本章分成兩個部份,第一節我們先來了解超音波測距的原理,第二節再實做蜂鳴器與倒車雷達。

 超音波距離感測

爬山時,如果我們對著遠處的山頭大喊「你好」,過了幾秒就會聽到有人也對你喊著「你好」,筆者小時候一直以為是對面的登山客跟你在打招呼,後來才知道這叫做回音。

image

圖 回音的原理

那麼回音與超音波距離感測器有什麼關係呢?

所謂的回音就是聲音傳遞路徑上有障礙物時,聲音就會反彈到原來發出聲音的人,而聲音在空氣中傳遞的速度約340公尺/秒,因此若我們計算發出(trigger)時間與聽到回音(echo)的時間差,就可以大致推算出發聲者與障礙物之間的距離了,我們可以將公式表示為:

距離(m)=(時間(s) x 340/ 2

數字340是音速,而要除2則是因為聲音去一次、回一次,一共跑了兩次所以要除2,而這也就是後來在二次大戰中廣泛使用的雷達的原理,不同的地方是雷達用的是電磁波,而我們在本次實驗用是超音波(Ultrasound)模組,所謂的「超」音波是指「超出人類可以聽到的聲音頻率」,一般人類的耳朵可以聽到的聲音頻率是在16Hz~20KHz之間,而超音波測距模組則設計使用20KHz以上的頻率,目的是不要在測距時發出惱人的噪音,也因為這樣這個測量距離的模組就稱為超音波測距模組,市面上常見的型號是HC-SR04如下圖。

image

HC-SR04超音波模組

超音波感測器有兩個大大的「眼睛」,很多機器人或小車結構都會利用這個感測器做避障功能,不過其實與其說是眼睛,不如說是「耳朵」,左下角標示的「T」是TX的意思,代表左邊的孔負責傳送(Transport)超音波,而右下角標示「R」是RX代表右側的耳朵負責接收(Receive)超音波回音,也就是左側是嘴巴負責發出聲音,而右側是耳朵負責聽回音,兩者缺一不可。

下方四個腳位則依序為VCCTrigEchoGND,其中Trig代表嘴巴,決定何時發出聲音,Echo則代表耳朵,用來計算聽到回音的時間,再透過公式就可以計算距離了,而VCCGND則與以往相同,接在5VGND腳位,這裡說明一下目前超音波有多個版本,有少數版本僅能使用5V,而大多數是5V3.3V都可用,因此個人建議接在5V的位置。

另外一個要注意的地方是超音波感測器可量測的範圍約在2cm~500cm之間,低於2cm則無法感測,超過500cm則會相當不準確,還有就是如果現場有多個超音波感測器同時作用,則會造成聲波之間的互相干擾,因此不要讓多個超音波同時進行測距。

本節我們就使用超音波感測器來製作倒車雷達,也就是說,利用超音波測量距離,並利用蜂鳴器發出聲音來指引駕駛,讓駕駛知道車子與障礙物之間的距離。不過我們先分別測試超音波與蜂鳴器是否正常,然後再將功能合併。

一、超音波測量距離

本部份我們先展示如何使用超音波模組進行距離測量,接線部份請參考圖

image

超音波距離測量

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195



溫濕度感測是物聯網實驗重要的一環,收集大量的資料可以了解溫濕度數值對環境的影響,例如偵測倉庫的溫濕度,可以避免商品受潮而故障或腐敗,監控教室的溫濕度也可以避免太熱影響到學生的學習效率,而本章將會以DHT11感測器來感測環境溫濕度,並利用1602LCD顯示數值。
一、溫濕度感測(DHT11)
在Arduino中有許多感測溫度的感測器,例如DHT系列(11或22)、DS18B20、LM35等,其中LM35及DS18B20為三極體外型,DHT系列則分成藍色DHT11及白色DHT22,其規格比較表如下,LM35與DS18B20在感測上效果差不多,可以精確到小數點以下兩位,市售DS18B20常包覆不鏽鋼,可以用於偵測一些極端環境,例如測量水族箱溫度,或者化學溶液中。本書則是以DHT11為範例,可同時測量溫度及濕度變化。

image

image

DHT11的外觀如下圖,由左到右依序為訊號(s)、VCC(+)及GND(-)及三個腳位,其中VCC因為位置不夠因此沒標明,特別要說明的是DHT11與其他感測器比較起來較為脆弱,若VCC、GND接反了很快就會燒毀,因此在接線上必須特別注意,以免發生危險。
 

image
DHT11感測器
DHT系列規格上雖然標明為數位傳輸,但是非digitalRead這麼簡單,而是一連串的訊號交換及解譯才能獲得數值,為了減少這個複雜的過程,我們可以安裝simpleDHT.h程式庫,只要呼叫一行指令就可以直接取得感測器數值。

image
DHT 資料時序圖

image
安裝simpleDHT程式庫
接下來我們將DHT11與ESP32連接起來,其腳位圖如下,除了GND及VCC之外,將DHT11的訊號(S)連接到ESP32的GPIO4,不過若要將DHT11接在GPIO12或GPIO2時,則須等程式上傳完畢後,再將DHT11接上,否則可能會遇到Time out的錯誤訊息。
 

image

文章標籤

夜市 小霸王 發表在 痞客邦 留言(4) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


本篇是前篇(第六篇 ESP32類比讀取(analogRead):小夜燈)的另一種應用,主要談的是mq系列的氣體感測器,相同的是使用類比讀取,只是這顆感測器其實用途不大,做簡易實驗可,但是要做精確的研究,建議換商用的感測器,mq這系列的,坑太大了

mq系列有一個龐大的家族,在台灣市面上常見的大概是mq2, mq9, mq135這幾個,根據原廠提供的規格表(下圖),每一顆都有其主要感測的氣體,如果你有特定需要感測的目標,則依照下表去購買。

image
image

一般為了授課方便,我會拿容易取得的消毒用酒精進行測試,畢竟上課時間你不可能搬一個瓦斯筒來測試,所以我會選擇mq2, mq135, mq3這幾個,而mq2是最常見的。讀者若需要mq系列更詳細的細節,可參考原廠網站: https://playground.arduino.cc/Main/MQGasSensors/

一、實驗目的

本次實驗要學習利用氣體感測器感測是否有有害氣體洩漏,本處以容易取得的酒精取代瓦斯,並以燈號顯示環境的嚴重程度,當然後續講到網路及藍芽時,就可以透過網路發布LINE訊息給管理員進行緊急處置,請讀者持續關注。
1.感測有害氣體洩漏嚴重:紅燈
2.感測有害氣體洩漏徵兆:黃燈
3.感測環境氣體狀況正常:綠燈

二、材料準備

1.ESP32主板+麵包板
2.紅、黃、綠LED燈各1
3.杜邦線若干
4.酒精棉片若干:用來模擬瓦斯外洩
5.mq2氣體感應器:mq2外型如下圖,外型有點像麥克風,四跟腳位與上一篇的光敏電阻完全一樣,AO=類比輸出、DO=數位輸出,而在外罩內部是二氧化錫線,其工作原理是當空氣中有可燃氣體時,則會改變線的導電率,藉由變化來提供濃度「數值」的參考。

image
▲mq2的外觀

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


類比讀取(analogRead)是Arduino非常重要的課程,因為大部分的感測器都是提供類比腳位AO,以類比方式感測可以提供更多的數據來收集或比較,精度更高的數值可以提供使用者在程式設計上更多的選擇,ESP32可以將類比數值切成0~4095之間的範圍,例如等等要介紹利用光敏電阻所實驗的小夜燈,就可以選擇環境很亮時(數值0~500)燈號全關,普通亮時(500~1000)開一顆燈,普通暗時(1000~2000)開兩顆燈,非常暗時燈號全開,不像數位讀取(digitalRead)只有0、1兩種數值,不能了解更細部的資訊。

一、實驗目的

利用光敏電阻感測現場亮度數值,0代表亮度最大,4095代表亮度最小,並依據亮度明暗開啟不同數量的LED作為補光。

  1. 環境很亮時(0~500)燈號全關
  2. 普通亮時(500~1000)開一顆燈
  3. 普通暗時(1000~2000)開兩顆燈
  4. 非常暗時(2000以上)燈號全開

這些500、1000、2000的門檻值,請使用者依據現場環境進行調整。

二、材料準備

  1. ESP32主板+麵包板
  2. 顏色不拘 LED燈x3,不同顏色功能相同在此測試僅作為照明用
  3. 各式杜邦線若干
  4. 四針式光敏電阻:特別說明4pin式光敏電阻(如圖),這種光敏電阻不須再加上1K電阻,教學上較為方便。若用在數位讀取時,可透過設定數位觸發敏感度來調整出發門檻值。
    而接線的AO(AnalogOut)代表類比輸出,相對Arduino來說就是把AO接到要類比讀取的腳位,而DO(DigitalOut)則是數位輸出,在本實驗則沒有使用。

image

三、線路佈置

首先把三顆LED放置在ESP32麵包板右側序號4、5、7,對應GPIO為15、2、4。

而光敏電阻我們則將它放在ESP32麵包板左側(有粉紅色ADC標示的位置),除了VCC、GND之外,依照上述所說,我們會使用光敏的AO腳,我們預期將AO接在麵包板左側序號5也就是GPIO13。
由於我們要使用到左側,因此把VCC及GND引到左側縱向的正負極(如圖),這樣光敏接VCC及GND就不用再跨到右側會比較方便。

image

image

四、程式撰寫

1.簡易測試

簡易測試的程式的部份相當簡單,我們僅須使用類比讀取analogRead就可以讀到數值後,顯示在序列視窗,這次我們宣告一個變數去接讀到的數值(LightValue)。


void setup() {
  Serial.begin(115200);

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


繼上篇的數位讀取人體通知器製作,採用LED的燈號變化做通知,本篇我們要使用錄放音ISD1820製作「來客報知機」,也就是我們進入某些商店時(例如小北百貨),會聽到「歡迎光臨,現在全面特價」這類的裝置。錄放音模組(ISD1820)與LED類似,一樣使用數位寫入即可驅動,以下稍微介紹一下ISD1820。

一、錄放音模組ISD1820簡介

市面上購買ISD1820都會附帶一個8歐姆喇叭,有些賣家會註明「帶咪頭」,我們會看不懂什麼是咪頭,其實咪頭是大陸用語=麥克風的意思,也就是說可以自己錄音一段,屆時是需要播放錄音,錄音的長度在15-20秒,且錄音會覆蓋上一次,也就是只能保留一段錄音,若您需要多段聲音,可以參考另外一篇文章:ESP32 arduino網路控制mp3播放器(dfplayer mini),請自己將喇叭與附的配線焊接起來,這個裝置的喇叭可不分正負極。

ISD1820如圖,下方的三個按鈕功能依序是

image

  • REC錄音鈕:按住錄音10秒以內,只有一段,下次錄音會洗掉上次的。如果需要能撥放多段錄音的需要使用別種模組。
  • PLAYE播放一次:會將上一次錄音的內容直接播放出來。
  • PLAYL按住播放:按住會播放上次錄音的內容,與PLAYE的差異是,PLAYL要按住才會播放,放掉馬上停止,因此這個按鈕不常用,PLAYE比較常用。

左側腳位的部份則依序是

  • VCC:電源,接5V
  • GND:接地,接GND
  • FT:本例沒用到
  • P-L:播放,給予高電位多久播放多久,像PlayL鈕按住播放一樣,停止供電就會馬上停止
  • P-E:播放,給予一次高電位,就會完整播放一整段
  • REC:錄音,給予高電位就啟動錄音

二、ESP32線路佈置

首先為了測試,我們先利用ISD1820上面的紅色REC錄影按鈕錄一段音約10秒的聲音,例如「歡迎光臨,商品全面特價喔」之類,要記得不要亂錄,因為這學期同學的錄音會一直存下來,直到下一屆的學生再上到這單元為止,也許你也話要對學弟妹說也可以透過這個來傳遞,哈哈。

佈線的部份,除了VCC、GND之外,我們將P-E接在麵包板編號右9,也就是GPIO17(麵包板編號與ESP32腳位請參考下面的對照圖)。

image

image

三、程式撰寫

依據之前LED的練習(第四篇 ESP32數位讀取(感測)digitalRead),我們只要在SR-501偵測到高電位時,就在GPIO 17給予高電位一次,否則平常保持GPIO 17為低電位狀態即可完成來客報知機的功能,因此程式很簡單


void setup() {
  //setup設定,只執行一次
  Serial.begin(115200);
  pinMode(16, INPUT); //宣告GPIO 16作為輸入(人體紅外線SR-501)
  pinMode(17, OUTPUT); //宣告GPIO 17作為輸出(錄放音ISD1820)  

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


本篇我們要利用ESP32的數位讀取(digitalRead)來製作來客通知器,「當有人經過時會亮紅燈,沒人經過時亮綠燈」,本篇會結合上一篇數位寫入digitalWrite及紅色、綠色LED。

數位讀取也可稱為數位輸入、數位感測等,都是代表這種方式只能讀取狀態是LOW或是HIGH兩種狀況,例如等等要做的人體紅外線(SR-501模組)感測,該裝置只會提供"有人"或者"無人",而沒有其他種狀態,相對數位讀取另外一種則是類比讀取,例如雨滴感測來說,它會提供雨滴大小的可能數值,以ESP32來說就是介於0-4095之間,而0代表雨滴非常多、4095則代表目前是乾的,但可能也會讀到數值=1200之類,代表雨滴不大也不小。

至於哪些感測模組要用哪種方式?要選數位還是類比?則必須看該感測模組提供的讀取方式,這必須查看規格文件或者詢問賣家,當然也可以靠經驗,例如上述的雨滴、瓦斯氣體(mq系列)、土壤...等等都是類比,而人體、觸控則是數位,有些模組則會兩種都提供,例如瓦斯氣體感測有提供DO(Digital Out)及AO(Analog Out)腳位,若是選擇使用D0,則程式使用數位讀取(digitalRead),若是接在A0則是選擇類比讀取(Analog)。

image

一、材料準備

要製作來客通知器除了主板ESP32及上次用的LED之外,我們還需要人體紅外線(PIR)感應器,目前市面上主要有兩種如下圖。

image

這裡建議購買大顆SR-501,因為它有旋鈕可以調整設定值。SR-501的感應參數如圖

  • 感應角度大概110度
  • 感應距離大概3-7公尺

image

另外一個要注意的部份就是SR-501的兩個旋鈕用途及腳位,

  • 敏感度旋鈕:感應到多強的紅外線才要觸發
  • 時間延遲旋鈕:觸發後,要多少要持續多久時間,調整範圍是3秒-300秒左右,建議逆時針轉到底,減少持續時間到3秒左右
  • VCC:供電端,使用5V或3.3V皆可
  • OUT:訊號輸出,輸出到指定GPIO,LOW或HIGH
  • GND:接地端,接到GND
  • 觸發模式:採連續觸發或間段觸發,這裡建議保持在LOW的位置(如圖)

image

由於一般上課都在教室內,教室內到處都是人體所散發的紅外線,因此經常會有神奇的觸發現象,筆者建議將兩個旋鈕全部逆時針轉到底,以降低敏感度及持續時間。

image

市面上SR-501廠家眾多,但有些廠家並未標明VCC、OUT、GND等腳位,不過其實是因為他們標是在正面,也就是白色橢圓形內部,建議拆開檢查確認腳位,若插錯正負級會導致零件故障。而白色橢圓形的功能是用來發散紅外線,讓它感應範圍更廣。

image

二、ESP32線路佈置

首先我們還是要先參考ESP32佈線圖

image

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


數位寫入是最基礎的Arduino課程,用來指定某腳位輸出高電壓(HIGH=3.3V)或低電壓(LOW=0)。通常我們必須先告訴ESP32要使用那一個腳位,是用作輸入偵測,還是輸出以開啟某個裝置(例如LED),語法則是

  • pinMode(腳位,模式);//宣告腳位模式語法腳位是腳位編號,模式則有作為輸入INPUT或輸出OUTPUT,都是大寫
  • digitalWrite(腳位,電位);//數位寫入語法,腳位是腳位編號,電位則有HIGH或LOW都是大寫,也可以寫1或0

這裡要注意的是ESP32的腳位(如下圖,腳位解說可參閱本文:第一篇 ESP32 Arduino開發環境架設),除了灰色系統用之外,GPIO34-39僅能提供INPUT,另外有些腳位則是有特殊用途,因此筆者會先避開

  • TXRX:GPIO1、3
  • I2C:GPIO21、22
  • SPI:GPIO5、18、19、23

image
                                                      ▲ESP32編號腳位圖

一、ESP32+LED線路佈置

ESP32不像arduino把插孔預留在主板上,而是腳位向下,因此為了方便起見,多會將ESP32插入麵包板中(如下圖),方式是將ESP32的USB插孔朝下,麵包板的編號1朝下,數字多的朝上。

將ESP32腳位對準後,完整用力的壓入麵包板中,避免接觸不良。

image
                               ▲ESP32插入麵包板的方式與位置

再加上ESP32-S的腳位是寫在下方,一旦插入麵包板就無法看到腳位,為了方便起見,會指定所有學生插入相同的位置,參考下圖,不過這樣就會變成實際GPIO編號與麵包板序號不同,例如你可能會說將LED長腳插入GPIO4,學生可能會以為是右側4號,也就是GPIO15,這個很常發生。因此腳位圖,是非常好用的。

我們先準備一個LED,LED的口訣是「長正短負」,也就是長腳接正極,短腳接負極(在arduino中負極可視為GND=接地),這次我們要用GPIO15作為練習,因此我們將它長腳插入GPIO15(麵包板右側4號),短腳插入右側藍色線的位置,這裡預設是要作為GND,因此最後我們再拿一根公對公杜邦線將GND(麵包板右19)引入右側藍色線的位置,這樣整個右側藍色都是GND。

如此便算是設定好本次練習的線路,接下來就可來寫程式。

image
                        ▲ESP32 LED練習接線圖

二、程式撰寫

這次我們來練習LED最常見的範例叫做Blink,也就是閃耀,我們希望它亮一秒後,暗一秒,不斷的重複,
開啟Arduino IDE後,寫入以下程式,相關說明都註解在程式內。


void setup() {

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


架構好ESP32的開發環境後(http://t.ly/O3jqD),就可以開始寫程式,一般來說除了一開始的helloworld之外,arduino有很多感測及輸出模組(塊),依據難度可以暫時分成以下幾個類型,以後會依序介紹。

  1. 數位輸出:供電就會啟動,不需要任何控制,例如:LED、Relay、錄放音等,LED也可作為類比輸出pwm
  2. 數位感測:這類感測器只會提供兩個選項:HIGH(高電壓)、LOW(低電壓),例如振動感測、人體感測器HC-SR501、觸摸感測器TTP223B,有人經過時會給HIGH,沒人時會給LOW。
  3. 類比感測:這類項目比較多,例如火焰大小、水位、雨滴、土壤、氣體mq2,這類感測可以提供一個0-4095之間的數值,例如水位感測的數值為100,代表該處有一點點水,若回覆4095則是代表水已經滿了,因此類比感測能提供變化較多的數值提供使用者作為參考。
  4. 類比輸出:蜂鳴器、伺服馬達、DC馬達等,在ESP32中類比輸出pwm稍微複雜些,可以引入analogWrite的lib,或者直接寫ledcSetup控制。
  5. I2C類感測器:例如1602LCD、MPU-6000陀螺儀加速器。
  6. SPI模塊:高速傳輸設備,例如SD卡、RC522 RFID、TFT顯示器等。
  7. UART模塊:源自於RS232,例如BLE藍芽通訊,也可以用來讓兩個arduino傳輸資料
  8. 其他特殊類:例如WIFI網路、聲音、影像,這類較為複雜的傳感器,需要透過特殊的函式庫來讀取資訊。

這裡我們先從最簡單的HelloWorld開始吧。

HelloWorld

先了解Arduino的程式結構,主要分成Setup()與Loop(),Setup用來做初始設定,Arduino只會執行一次,然後就會執行Loop,Loop就是迴圈,會不斷重複的執行,一般要做什麼重複感測(例如每1分鐘感測一次溫濕度),都會放在Loop這裡。

image

通常我們第一個程式是標準HelloWorld,用以檢測開發環境是否正常、晶片有沒有故障之類。而這隻程式暫時沒有用到Loop,我們僅須寫在Setup中。

HelloWorld程式會用到第一個物件Serial:序列通訊,用以將Arduino的資訊傳輸到開發工具的序列視窗,如果你常寫程式的話就是Log除錯的功能,將獲得的資料顯示出來,主要是Arduino沒有程式中斷點(Breakpoint)功能,所以Serial非常重要,每一隻程式幾乎都會用到。

Serial.begin(115200);//代表以胞率115200啟動序列通訊,另外一個常見的胞率是9600,兩者速度對人類來說是幾乎一樣的,這裡建議先用115200。
Serial.println("Hello World!");//代表在訊列視窗中顯示HelloWorld並換行,另外一個語法是Serial.print(),這樣的寫法是印出資料後不換行。
delay(1000);//delay代表休息,1000=1000ms=1秒,所以這句代表休息一秒
整個程式的意思將HelloWorld每秒印在序列視窗一次,重複執行不停止。

image
點選上傳程式按鈕後,ESP32要注意需要在畫面出現.....____......____.....時
按住ESP32右下側按鈕(BOOT或標示為IO0)不放,直到畫面跳開
如果太晚放開,要在燒錄完畢後,按一下左側RESET重開機以開始工作  

image

image

完成程式上傳後,點選開啟序列視窗按鈕,可以看到每秒不斷出現的Hello World,若無顯示任何資訊,請先檢查胞率設定是否相同。

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


因朋友的需求,所以做了一個網路控制的mp3播放器,控制方式是使用web的url讀取內部指令,其實我也做過藍芽跟紅外線的,晚點再整理一下。

一、材料準備

  1. ESP32:詳細說明請參考網址 https://youyouyou.pixnet.net/blog/post/119410732,(露天搜尋https://t.ly/p7A6M)
  2. Dfplayer mini mp3:在露天搜尋"Dfplayer",另外還有一款mp3-TF-1xP,其結構功能是完全一樣的
    image
  3. Speaker:露天搜尋"Arduino 喇叭 歐姆",網路常見的是8歐姆,也可以買更大的
    image
  4. 記憶卡:依照需要購買適合大小的記憶卡,記得最高支援32G,太大不支援

二、接線,請參考下圖

  1. RX接在GPIO13,編號可以在程式內更改,本次使用esp32的硬體序列,而以往的經驗ESP32的軟體序列似乎有點問題。
  2. TX這裡我沒接,功能是可以查詢mp3 player的狀態,因為我沒有用到所以沒接
  3. speaker可不分正負極
    image

 

三、複製mp3到記憶卡中

  • 依照規定,先在記憶卡中建立一個名稱為mp3的資料夾,再將需要播放的mp3檔案放入,檔案必須更改為000x.mp3
    image

四、寫入ESP32程式

1.下載函式庫並完成安裝: https://github.com/DFRobot/DFRobotDFPlayerMini

2.複製程式如下,並請記得修改第5-6行的wifi連線資訊

五、展示

執行方法很簡單,就是在網址列輸入要播放的mp3檔案,例如輸入「 http://192.168.1.133/?mp3=4; 」代表要播放第四首歌,其中尾巴的「;」不可省略,此處為作為判斷結尾用。
image

若輸入mp3=0;則代表停止播放的意思

文章標籤

夜市 小霸王 發表在 痞客邦 留言(8) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


之前用YOLO的測試時,在純CPU狀況下以webcam做影像物件辨識,以intel i7, 16G檢測800*600的大小,大概每秒2-4張

不過如果影像是來自ESP32CAM的串流視訊,一樣800*600的大小,會變慢到每秒1張。

若你沒有GPU做加速,但也想要加快檢測速度,可以改用tiny版,速度可以快10倍左右,但是檢測的效果會比較差。
修改的方法很簡單,先下載這個壓縮檔,內部包含兩個檔案,下載網址:https://t.ly/JvKz5

  1. yolov3-tiny.cfg
  2. yolov3-tiny.weights

將上述檔案放置在yolo同一個資料夾中,並修改程式的第30,31行的內容如下:

modelConfiguration = "yolov3-tiny.cfg"
modelWeights = "yolov3-tiny.weights"

image

接下來是測試狀況

1.Yolo標準版效能與測試結果:以我的電腦來說,標準版的檢測大概每秒3張,而檢測效果非常好
就算是只有一隻手,她都能判斷出這是人。

image

2.Yolo Tiny版效能與測試結果:大約每秒30張,只有手的時候就檢測不出來是人,甚至手機如果螢幕沒打開的狀況,她也認不出來是手機。

image

總而言之,要選yolo標準版跟tiny版,視需要而定,需要快不需要準確度,可以選tiny版,如果需要準確,可以選標準(可是會掉格...那還不是一樣)

下次來使用GPU加強物件辨識。


文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


我開發的程式很多元,雖然都是半調子,但是還能混口飯吃。我開發專案時,通常會混用這些工具,一般前端client會用.net開發windows或b4a開發Android界面,中介層使用IIS HTML、asp.net做資料接取及API,後端常用MySQL資料庫。這樣做速度最快,開發也最穩定。

一、物聯網開發工具:

  1. arduino ide,IoT開發工具:https://youyouyou.pixnet.net/blog/post/119383183

二、網頁及視窗程式開發:

  1. VS.net 2017或2019 社群免費版,大名鼎鼎宇宙最肥開發工具組,全部安裝要你210G,請斟酌安裝開發模組:https://youyouyou.pixnet.net/blog/post/119683104
  2. IIS express,網頁伺服器,如果作業系統是Server版本,請直接使用IIS Server:https://me1237guy.pixnet.net/blog/post/62600393
  3. Github版本控制工具:https://github.com/

三、人工智慧:

  1. anaconda,可建立虛擬環境,用來隔離不同專案:https://www.anaconda.com/distribution/
  2. VScode,可以視為微軟.net簡易版,可跨平台開發多種程式,包括python:https://code.visualstudio.com/

四、資料庫(MSSQL或MySQL安裝一套即可):

  1. Tableau線上即時分析軟體,可對資料庫即時圖形化資料,用來嚇唬人特別有用: https://www.tableau.com/zh-tw
  2. SQL develop,微軟佛心提供的完整版免費SQL Server(但不可作為商業用途):https://www.microsoft.com/zh-tw/sql-server/sql-server-downloads#
  3. SQL Management,SQL Server視覺化管理平台:https://docs.microsoft.com/zh-tw/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15
  4. MySQL,免費全能的資料庫,唯一的缺點是跟VS.net語法有點不太相容: https://dev.mysql.com/downloads/
  5. MySQL Cluster,叢集資料庫: https://youyouyou.pixnet.net/blog/post/119326123

五、Android與iOS開發:

  1. Android Studio,android開發工具,記得要開啟設定,下載最新版開發核心版本及模擬器: https://developer.android.com/studio
  2. Java SDK,Java 開發工具,但是好像分成13版跟8版,似乎目前還是8版為主,連結為我的備份:https://t.ly/OdM9l
  3. B4a android快速開發工具: https://www.b4x.com/b4a.html
  4. B4i iOS快速開發工具: https://www.b4x.com/b4i.html
  5. Virtual Box虛擬機器,如果要開發iOS,一定需要一台MAC電腦,此時可以用虛擬機器來做: https://youyouyou.pixnet.net/blog/post/120149406

六、Unity 3D互動:

  1. Unity,可製作3D、VR、AR等互動,目前我還是以2018.2.8f為主: https://unity3d.com/get-unity/download/archive

七、流程圖工具:

  1. Visio超好用的啦

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


電子紙是一種最新的顯示裝置,大家也許都有聽過,操作方式雖然跟LCD、TFT差不多,但是電子紙最重要的特性就是用電量很少,而且在無電的狀態下,會保持最後一次顯示的內容,還有就是螢幕180可視,不像LCD, TFT可能只有120度,因此適合用來需要長期顯示,但改變次數不多的環境,例如貨價標籤、一些不常改變的告示、名牌等(我暫時先想到這些)。

今天拿到的是最新的產品,以電子紙平常不耗電的特性,僅用手機的NFC就可以改變電子紙的內容,廠商也提供搭配的APP,只要手機支援NFC就可以立即改變內容。而且過程完全不需用到任何電池,非常適合難以接電的地方,例如貨架、廁所這類(還是想不到很多適用環境)。

無源電子紙

開箱後,先看看外觀,感覺簡潔厚實,也沒有任何接口,應該可以作成防水,現在這款應該是沒做防水。

外觀

 

接下來看看如何更新內容,還有效果如何。
1.首先到微雪網站下載APP(目前僅有Android),網址: http://www.waveshare.net/wiki/4.2inch_NFC-Powered_e-Paper

下載後直接安裝APP,開啟後如以下畫面

Screenshot_2020-01-03-10-40-30-505_waveshare.feng.nfctag Screenshot_2020-01-03-10-40-48-444_com.android.settings  Screenshot_2020-01-03-14-42-05-232_waveshare.feng.nfctag
首頁 需要開啟NFC功能喔 首頁畫面

2.先拿預設的微雪電子圖形來測試(畫面有點模糊...),先選好圖形後,手機靠近電子紙約2-5cm內後,手機就會開始傳輸,大約5秒即可完成圖形上傳。

4.2inch-NFC-Powered-e-Paper-02 Image1
選好圖形 顯示結果

 

3.接下來馬上自拍一張照片來測試看看,因為只有黑白的,所以這個....有點像遺照,建議各位以後不要用自拍

Screenshot_2020-01-03-10-48-53-970_waveshare.feng.nfctag image
先拍好照片 上傳照片

 

4.作成QRcode看看好不好用,先把LINE的QRcode複製下來,用小畫家加上文字。用掃描器確認過是可以掃出來的。

Image4 Screenshot_2020-01-03-10-58-23-088_waveshare.feng.nfctag IMG_20200103_105854
先編好圖形 在APP中調整一下大小 QRcode還不錯

 

5.來做名牌看看,例如做一個評審牌,一樣先在小畫家做好再上傳,不過其實APP裡面也有打字的功能,只是我不太會操作。

namecard IMG_20200103_150332
在小畫家先做好名牌 如果只有文字看起來很不錯

 

6.來做價格標籤看看,一樣先做好價格標籤的圖形,再上傳上去即可看到結果,這裡要注意,如果是實物照片,建議顏色要深一點,不然會不清楚。

上傳過程

 

文章標籤

夜市 小霸王 發表在 痞客邦 留言(1) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010894841


室內定位是目前很流行的服務,除了用RFID(距離太短)之外,還是以beacon最常被使用,beacon的原理是利用藍芽的訊號強度RSSI,推測使用者與每一個beacon的距離,以往我曾經介紹使用arduino,或者android來定位,這次要介紹如何利用最流行的python做室內定位不過我還沒作到三角定位,如果有研究的夥伴可以分享一下。順便介紹賣場裡常見的beacon類型。(beacon定位原理可參考本文:https://youyouyou.pixnet.net/blog/post/119410657

ibeacon偵測定位,目前提供三種主要規格
1.手環型: https://goods.ruten.com.tw/item/show?21828335470340

設定APP下載

iOS:https://t.ly/RCp8
(密碼:123456,有完整功能)

設定APP Android:https://t.ly/zk3X
(功能很少)

這款優點是,可以配合手環,而且防水,但是缺點是在更換電池時,必須打開外殼,而外殼有點難開,這部份比較不方便

 image    image

新款手環型有帶體感及溫濕度偵測,外型與上述完全相同,但其控制APP不同
image

測試影片如下:

 

2.吊環型: https://goods.ruten.com.tw/item/show?21947900936493

這款的優點是開關做在外面,容易開關,另外APP有提供一個功能做定時啟動與關閉,不過因為形狀關係,找不到搭配的手環,只能做成吊環的樣式

APP下載:Beacon搖一搖助理

文章標籤

夜市 小霸王 發表在 痞客邦 留言(0) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


利用ESP32-CAM來做智慧辨識一直是有趣的議題,目前使用ESP32CAM來做智慧辨識可分成以下幾種

  1. 在ESP32-CAM上做智慧辨識:這端受限ESP32記憶體及CPU速度,很難達成高速度的影像辨識運算
  2. 在雲端做智慧辨識:將ESP32CAM所獲取的影像上傳到智慧雲端平台做辨識後,將結果回傳,這種則可辨識較為精確,但網路傳輸則是另外須考量的問題。    
  3. 利用近端智慧辨識:也就是在近端建立智慧平台,收集ESP32-CAM所傳來的影像,這樣影像不用上傳到雲端,在區域網路就可以辨識,也算一種折衷的邊緣運算,知名大師法蘭斯所用tensorflow.js外掛到ESP32-CAM內進行體態辨識也屬這類,主要是透過觀看影像的裝置進行運算,例如手機或電腦。

以往我也介紹了利用.net環境接取多台ESP32-CAM的影像進行分析(ESP32-CAM mpeg Video Stream 用.net接收並錄製影片檔 ),但智慧辨識的後台都是採用微軟Azure的AI Cognitive Service API進行智慧判斷。

這次參考網路文章,終於完成將ESP32-CAM接取到python後,用時下最流行的yolo v3物件辨識模型進行分析。

要完成本次操作,請先閱讀以下文章

重點來了,如何使用python接取ESP32-CAM影像,一般在python接取webcam都是用opencv的「cap = cv.VideoCapture(0)」一句就可以搞定,不過ESP32-CAM的影像屬於mjpeg影像串流,因此無法使用這個方法,後來發現需要用到jpg的格式「 FF D8 」為開頭與「 FF D9」為結尾的方式,在串流中找出一張完整的jpg,在放入yolo中進行分析,以下分成兩個主題說明

  1. python 接取esp32-cam影像
  2. 利用yolo物件辨識

1.python 接取esp32-cam影像

本部份僅有利用python接取ESP32-CAM影像的程式,無任何其他處理,參考範例程式:

 

2.利用yolo物件辨識

本部份將上述ESP32CAM影像利用python知名的yolo模型進行物件辨識,參考範例程式:

 

參考網址:
1.http://hk.voidcc.com/question/p-nagarvzd-b.html

文章標籤

夜市 小霸王 發表在 痞客邦 留言(2) 人氣()

我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


因為課程的原因,在網路淘X買了一套GSR Sensor,露天搜尋: https://goods.ruten.com.tw/item/show?21930155869010
號稱可以用手指上的肌膚電位偵測來判斷使用者是否說謊,理論依據是
「皮膚電導傳感器是用來測試皮膚的電導率的模塊。強烈的情感會刺激交感神經系統,汗腺會分泌更多汗液」

也不知道是真的假的,這次就來測試看看。
首先線路接法如下圖,本次實驗使用ESP32,主要是後續需要用藍芽傳送到數值到PC做存檔,傳統UNO可沒有藍芽(要外接HC05)。

GSR這個模組很簡單的用類比感測analogRead即可
本次實驗我將SIG腳位用杜邦線接在ESP32的pin36上,VCC GND就不說了(3.3V/5V都可),大家應該知道,TP4不用接。

再將兩個手指套套在食指及中指上,上傳程式來觀察結果。

實驗一:觀察深呼吸的變化

常聽到大家說,參加考試、遇到重大決定、心神不定太緊張時,深呼吸可以減緩壓力,這次來測試看看。
上傳程式後,在一般狀態我的數值都在1850-1900之間,如果進行深呼吸後,GSR的值都會下降。
以序列繪圖家來看結果,可以看到深呼吸會有下降的效果。
(註:由於數值上下跳動頗大,我將數值每10個做一個平均)

實驗二:看迷片(不要問我網址)

精神亢奮時,GSR是否會有上升的現象,為了進行實驗,作者這次只好為了科學來犧牲,開無痕視窗轉到成人頻道。

文章標籤

夜市 小霸王 發表在 痞客邦 留言(2) 人氣()