Esp8266 mqtt 步進電機遠程控制窗簾

使用 28BYJ-48步進電機 esp8266-12f(或nodemcu) mqtt 基於arduino IDE開發實現
通過mqtt發送指令給wifi模塊進而控制電機,電機拖動窗簾打開或閉合

效果演示地址:
鏈接

搭建模型

如何製作電動窗簾,牛人給你解釋它的原理
參考這個視頻 搭建窗簾模型
enter description here

模型搭建很重要 就算電機能夠穩定控制但是模型搭建的不好 窗簾的打開和關閉都會受到影響

  • 電機要粘牢固
  • 繩子要選細的粗糙的(摩擦力大)
  • 窗簾選軟紙 或者布
  • 滑輪一定要認真做 很影響轉動

我第一次試驗論證是否能夠行得通的時候 製作了一個窗簾模型,犯了很多錯做的也很醜
但是試驗成功了!!!
enter description here

第二次我們的窗簾模型是我和另外一個java大佬熬夜做出來的,兩個工科生做手工真的是太折磨人了…
enter description here

步進電機原理

28BYJ-48步進電機
enter description here

28BYJ-48的含義爲外徑28毫米四相八拍式永磁減速型步進電機
對於驅動28BYJ-48步進電機,最常用的方法是使用ULN2003驅動板。
用Arduino開發板的+5V電源直接爲ULN2003驅動板供電的方法短時間測試是可以的,但是不要在長時間使用Arduino爲ULN2003驅動板進行供電。
enter description here

更詳細的原理分析 鏈接

控制步進電機

電路接線圖
enter description here

使用Stepper庫
建立步進電機對象
定義電機控制引腳以及電機基本信息。
電機控制引腳爲 8,9,10,11
以上引腳依次連接在ULN2003 驅動板 In1, In2, In3, In4
創建電機 對象

示例代碼
參考 dianji.ino 學習stepper庫的使用方法
創建對象 Stepper steppermotor(STEPS_PER_ROTOR_REV, 8, 10, 9, 11);
其中的第一個參數爲 一次轉動的步數
在這裏可以設置爲2048

示例代碼

/*
  Arduino控制28BYJ-48步進電機測試程序
  本示例程序旨在演示如何通過Arduino控制28BYJ-48步進電機。
*/
 
//本示例程序使用Stepper庫
#include 
 
// 定義電機控制用常量
 
// 電機內部輸出軸旋轉一週步數
const int STEPS_PER_ROTOR_REV = 32; 
 
//  減速比
const int GEAR_REDUCTION = 64;
 
/*
 * 轉子旋轉一週需要走32步。轉子每旋轉一週,電機輸出軸只旋轉1/64周。
 * (電機內部配有多個減速齒輪,這些齒輪會的作用是讓轉子每旋轉一週,
 * 輸出軸只旋轉1/64周。)
 * 因此電機輸出軸旋轉一週則需要轉子走32X64=2048步,即以下常量定義。
*/
 
// 電機外部輸出軸旋轉一週步數 (2048)
const float STEPS_PER_OUT_REV = STEPS_PER_ROTOR_REV * GEAR_REDUCTION;
 
// 定義電機控制用變量
 
// 電機旋轉步數
int StepsRequired;
 
// 建立步進電機對象
// 定義電機控制引腳以及電機基本信息。
// 電機控制引腳爲 8,9,10,11 
// 以上引腳依次連接在ULN2003 驅動板 In1, In2, In3, In4 
 
Stepper steppermotor(STEPS_PER_ROTOR_REV, 8, 10, 9, 11); 
 
void setup()
{
//setup函數內無內容
}
 
void loop()
{
  // 極慢轉動4步用於觀察ULN2003電機驅動板LED變化
  steppermotor.setSpeed(1);    
  StepsRequired  =  4;
  steppermotor.step(StepsRequired);
  delay(1000);
 
   // 慢速順時針旋轉一圈
  StepsRequired  =  STEPS_PER_OUT_REV; 
  steppermotor.setSpeed(500);   
  steppermotor.step(StepsRequired);
  delay(1000);
  
  // 快速逆時針旋轉一圈
  StepsRequired  =  - STEPS_PER_OUT_REV;   
  steppermotor.setSpeed(800);  
  steppermotor.step(StepsRequired);
  delay(2000);
 
}

參考太極創客鏈接

wifi模塊控制電機

依舊使用的stepper庫更改了GPIO引腳
創建對象
Stepper steppermotor(STEPS_PER_OUT_REV, D1, D2, D5, D6);
Stepper steppermotor(STEPS_PER_OUT_REV, 5, 4, 14, 12);
(兩個一樣)

看到國外一個使用nodemcu mqtt 以及 28BYJ-48步進電機的使用方法
更換了引腳 更改了部分參數 成功了

接線圖
enter description here
enter description here
(對應GPIO 分別是GPIO 5,GPIO 4, GPIO14, GPIO12)

創建的對象爲 Stepper steppermotor(STEPS_PER_OUT_REV, D1, D2, D5, D6);
其中第一個參數設置爲200 速度設置80 相比於arduino都比較小
將第一個參數提升到600時電機轉不動… 沒找到原因

項目參考代碼鏈接

GitHub地址

更多學習教程

ESP開發學習基礎知識

基礎知識包括對esp模塊的認識與瞭解 mqtt協議的瞭解,arduino IDE運用代碼編寫等等。

  1. arduino基礎學習
  2. esp系列模塊的介紹
  3. mqtt協議的介紹與使用
  4. 利用mqtt esp模塊 基於arduino IDE開發方法
  5. esp模塊的AT指令 刷固件
  6. esp模塊睡眠模式使用
  7. esp8266-01s介紹與使用
  8. esp8266-12f介紹與使用
  9. NodeMcu介紹與使用
esp開發IOT應用

基於esp8266的模塊以及其他模塊根據實際的應用場景與需求製作的物聯網應用

  1. 基於FRID arduino 繼電器 電磁鎖開發的FRID門禁系統
  2. esp32-cam獲取視頻流圖像處理
  3. 基於步進電機 esp8266 mqtt開發的自動窗簾控制
  4. 基於DHT11 Esp8266 mqtt獲取室內溫溼度
  5. 基於CCS811 esp8266 mqtt 獲取室內空氣質量
  6. 基於紅外模塊 esp8266 mqtt開發的智能遙控控制
  7. 基於ws2812 esp8266 mqtt開發的智能多級照明燈
  8. 基於ws2812 esp8266 mqtt開發的智能多模式氛圍燈
  9. 基於mp3player esp8266 mqtt開發的智能語音播報系統
  10. IOT綜合應用之智慧教室項目開發
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章