發表文章

目前顯示的是有「MQTT」標籤的文章

使用Node-RED控制LED&風扇-ESP32

圖片
 使用Node-RED控制LED&風扇-ESP32 原本這個實作主題是搭配夜市小霸王-尤老師的課程,使用LineBot語音控制LED和風扇, 但因為正好有事,提前請了假,所以就先把手邊拿到的零件先做看看。 一方面也學習一下CSS按鍵的制作。 接線圖 正負端就都接在板子上的Vcc和GND, 風扇 控制線接 IO35 LED 控制線接 IO34 ESP32上的程式碼 #include <WiFi.h> #include <WiFiClient.h> #include <PubSubClient.h> WiFiClient espClient ; PubSubClient client ( espClient ); const int ledR = 15 ; const int ledG = 2 ; const int ledB = 4 ; const int LIGHT = 2 ; const int Fan = 18 ; const char * ssid ="--- " ; const char * password = "-----" ; const char * mqtt_server = "192.168.---.---" ; //如果連線至MQTT成功,即會開始接收訂閱的主題 void reconnect (){   while (! client . connected ()){     Serial . print ( "Attempting MQTT connection..." );     if ( client . connect ( "esp32Client" )){       Serial . println ( "connected" );       client . subscribe ( "linebot/onoff" ); //LED訂閱主題       client . subscribe ( "fan_out/onoff" ); //風扇訂閱主題     } else {...

MQTT-DashBoard+溫濕度+OLED-ESP32

圖片
MQTT-DashBoard+溫濕度+OLED-ESP32 先看一下demo 手機APP上的顯示 DashBoard上的顯示 前言 因為整個流程有點複雜,所以我把它寫成流程圖比較容易理解。 當時我的構想是想做天氣時鐘,試過用時鐘模組顯示時間,但因為模組 本身時間並不精準,所以只好取值用公開API來經過樹莓派的Broker的推送 讓ESP32訂閱topic,後來發現要讓時間和溫濕度不要以輪替的方式在OLED 上顯示,只好在ESP32用上DHT11讓其偵測溫濕度,本來有嚐試用按鈕來 切換時間和溫濕度,但有點麻煩,所以就只先全顯示在一個0.96的OLED 然後手機APP上也訂閱樹莓派的MQTT,另外在DashBoard增加一個開關來 控制ESP32上的LED。   接線圖 樹莓派Node-RED 開始之前 先備妥樹莓派上所須的軟硬體 安裝 Mosquitto broker (如果沒玩過樹莓派,請連結 這裡 安裝樹莓派系統和 如 何使用SSH和VNC鏡像 ) 安裝   Node-RED installed    和  Node-RED Dashboard 在樹莓派上。 備註:安裝Node-RED時若出現錯誤訊息改用下面所附下載    bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) 接下來先測試BMP280是否可正常測溫度和壓力-請參考之前的紀錄( 點我傳送 )。 先來看一下整個發送原理比較容易理解自己要學的重點在哪裡 此次實驗我只寫從ESP32發送數據到樹莓派的Mosquitto代理接收/發送 然後通過MQTT通信協議去控制ESP32發送數據到Node-RED,其實我覺 得和ThingSpeak很類似,只是使用Node-RED更能客製化。 看一下這張圖 Node-Red配置 DashBoard配置檔-- https://github.com/blairan/esp32.git 手機端MQTTapp設定 原則上注意Topic要和NODE-RED上的一致才能訂閱和推送的到 payload是NODE-RED裡開關的控制項 程式碼 ...

MQTT-Node-RED控制二軸云台-ESP32

圖片
 MQTT-Node-RED控制二軸云台-ESP32 伺服馬達對於微控板玩家一定是再熟悉不過,也是入門必學的元件之一,只是特別要注意如果要控制2個以上的伺服馬達,一定要使用外接電源或者PCA9685。 伺服馬達有很多款,小型常用的就屬SG-90,它是塑膠齒輪,還有一種是金屬齒輪 SG-90規格 工作電壓:4.8V. 轉矩:1.8kg-cm 運轉速度:0.1秒∕ 60度 轉動角度:最大90° 脈衝寬度範圍:500~2400µs. MG90S規格 金屬銅齒、空心杯電機、雙滾珠軸承 產品型號: MG90s . 扭力:2.0kg(4.8v) 運轉速度:0.11s(4.8v) 轉動角度:最大90°/180° 舵機類型:數字舵機 此次實驗以MG-90為主 要控制伺服馬達有兩種方式,一種是利用PWM,另一種是使用現有的庫包來控制,本次實驗以庫包為主 首先安裝   ESP32 Arduino Servo Library 接線方式 GND -> ESP32  GND  pin; Power -> ESP32  VIN  pin; Signal ->  GPIO 13  (or any PWM pin). 進行實驗 #include   <ESP32Servo.h>   Servo   myservo ;   int   pos  =  20 ; const   int   pin  =  12 ;   void   setup (){    Serial . begin ( 115200 );    myservo . attach ( pin ,  500 ,  2400 ); }   void   loop (){    for  ( pos = 20 ;  pos <= 160 ;  pos += 3 ){      myservo . write ( pos ); ...

MQTT-Nord-RED顯示超音波測距數據+控制LED

圖片
 MQTT-Nord-RED顯示超音波測距數據+控制LED 超音波模組(HC-SC04)測試回顧- 點我回顧 MQTT相關布暑- 點我回顧 #include   <Ultrasonic.h> #include   <WiFi.h> #include   <PubSubClient.h> Ultrasonic   ultrasonic ( 32 ,  33 ); const   char *  ssid  =  "---" ; const   char *  password  =  "-----" ; const   char *  mqttServer  =  "192.168.67.22" ; //wifi客戶端及MQTT客戶端代數 WiFiClient   espClient ; PubSubClient   client ( espClient ); //設定wifi void   wifiConn (){    WiFi . begin ( ssid ,  password );    while  ( WiFi . status () !=  WL_CONNECTED ){      Serial . print ( "." );      delay ( 50 );   }    Serial . println ( "Connected successful!" );    Serial . println ( WiFi . localIP ()); } //檢查訂閱的字串是否含有on和off,如果比對下來是 //nord-red裡的標頭一樣,而且包含on就開燈,off就關燈 void   callback ( char   * topic ,  byte...