日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

利用吃灰的釣魚利器做一個手機遠程遙控小車

 風聲之家 2019-09-05

前言

在FB看了不少關(guān)于ESP8266釣魚測試的文章,這么低成本的玩法,我心動了。在一次買了兩個燒錄數(shù)次Copy過來的代碼后就一直吃灰,想必各位也有類似的經(jīng)歷。那么本著“廢物”利用的原則,今天來打造一個手機遙控的玩具小車,使用WiFi接入,當設(shè)備和手機在同一個局域網(wǎng)中,為局域網(wǎng)通信,其余情況,使用MQTT遠程通信。

思路:nodemcu接入wifi同時根據(jù)指令控制舵機,通過給電機驅(qū)動板不同的高低電平,使舵機驅(qū)動板驅(qū)動馬達。

假設(shè) A1 A2為輸入口,D1 D2為輸出口(接電機。) 給驅(qū)動板供電以后,假設(shè)利用Nodemcu使A1為高電平,A2為低電平,則電機正轉(zhuǎn),相反,A2高電平,A1低電平,那么電機反轉(zhuǎn),A1 A2都為低電平,則電機不轉(zhuǎn)。

準備工作

需要的設(shè)備

廢棄玩具遙控車、淘汰手機舊電池、吃灰的釣魚玩具ESP8266、9.9包郵舵機一個、小車里拆下來的線材、航模馬達一個、靈巧的一雙手。

使用Arduino IDE來對Nodemcu(就是esp8266+4M的flask,即你們吃灰的那個)編程。所以需要先簡單的配置一下arduino。

安裝軟件|添加esp8266支持

首先從Arduino 官網(wǎng)下載最新版本的Arduino IDE軟件并安裝。

安裝完成以后,進入首選項(Preferences),找到附加開發(fā)板管理器地址(Additional Board Manager URLs),并在其后添加如下信息:

http://arduino./stable/package_esp8266com_index.json

之后點擊工具-開發(fā)板-開發(fā)板管理器,進入開發(fā)板管理器界面:

下載并安裝blinker Arduino庫

點擊下載https://github.com/blinker-iot/blinker-library/archive/master.zip

Windows:將下載好的blinker庫解壓到我的電腦>文檔>Arduino>libraries文件夾中

Mac OS:將下載好的blinker庫解壓到文稿>Arduino>libraries文件夾中

在app中添加設(shè)備,獲取Secret Key

APK地址:http://blinker./blinker-2.2.4.apk

進入App,點擊右上角的“+”號,然后選擇添加設(shè)備

點擊選擇Arduino>WiFi接入

選擇要接入的服務(wù)商

復(fù)制申請到的Secret Key

DIY一個炫酷的界面

在設(shè)備列表頁,點擊設(shè)備圖標,進入設(shè)備控制面板

首次進入設(shè)備控制面板,會彈出向?qū)ы?/p>

在向?qū)ы擖c擊載入示例,即可載入示例組件

拆解并改裝小車:

以前大概這樣?

改裝轉(zhuǎn)彎模塊

拆掉華麗的外表,并用烙鐵在如圖位置開個方形洞:

把多余的部件清理掉,余下轉(zhuǎn)動裝置

清理干凈,電池盒的蓋子什么的掀飛。不平的地方用烙鐵抹平。

將舵機的舵把用螺絲固定,舵把在合適的位置擰上一個長螺絲釘,但是不要太長以免無法合蓋。舵把的螺絲釘扣住玩具小車轉(zhuǎn)向裝置中間的洞。舵機牽拉,便可達到一個轉(zhuǎn)彎的效果。

剛才打孔的地方就是固定舵機的地方。

組裝好,再用螺絲壓緊。

改裝動力模塊

更換電機:把右邊的垃圾小機機改為左邊的老式航模電機。

由于航模電機長了一節(jié),是不可能蓋嚴了,把蓋住電機屁股的那一塊用烙鐵抹掉。

蓋住以后傳動絲滑流暢,雖然丑了點,但是強行裝上電機了。

編寫程序

值得一提的是,你需要用哪個口直接填寫即可。例如 你使用gpio5 接一個小燈泡。聲明變量時填寫 int led = D1; 即可

#define BLINKER_PRINT Serial#define BLINKER_WIFI

#include <Blinker.h>#include <Servo.h>Servo myservo;
//向右轉(zhuǎn)void right(){ int pos = 0; //舵機端口號 myservo.attach(D1); for(pos = 0; pos <= 180; pos += 3){ myservo.write(pos); delay(10); } myservo.write(180); delay(200); }

//向左轉(zhuǎn)void left(){ int pos=100; myservo.attach(D1); for(pos = 100; pos >= 0; pos -= 3){ myservo.write(pos); delay(10); } myservo.write(0); delay(200);}//復(fù)位void rest(){ myservo.attach(D1); myservo.write(100); delay(200); }

char auth[] = "b8b8d0568edb";char ssid[] = "LookCos";char pswd[] = "123456789";

// 前進后退,左轉(zhuǎn)右轉(zhuǎn)BlinkerButton Button1("btn-qj");BlinkerButton Button2("btn-ht");BlinkerButton Button3("btn-zz");BlinkerButton Button4("btn-yz");//方向復(fù)位按鍵BlinkerButton Button5("btn-rest");//停車BlinkerButton Button6("btn-stop");BlinkerNumber Number1("num-abc");

int counter = 0;

// 前進void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); digitalWrite(D3, HIGH); digitalWrite(D2, LOW); }// 后退void button2_callback(const String & state) { BLINKER_LOG("get button state: ", state); digitalWrite(D2, HIGH); digitalWrite(D3, LOW); }// 左轉(zhuǎn)void button3_callback(const String & state) { BLINKER_LOG("get button state: ", state); left();}// 右轉(zhuǎn)void button4_callback(const String & state) { BLINKER_LOG("get button state: ", state); right();}// 方向復(fù)位void button5_callback(const String & state) { BLINKER_LOG("get button state: ", state); rest();}//停車void button6_callback(const String & state) { BLINKER_LOG("get button state: ", state); rest(); digitalWrite(D2, LOW); digitalWrite(D3, LOW); }

// 如果未綁定的組件被觸發(fā),則會執(zhí)行其中內(nèi)容void dataRead(const String & data){ BLINKER_LOG("Blinker readString: ", data); counter++; Number1.print(counter);}

void setup() { // 初始化串口 Serial.begin(115200); int QQ_GROUP = 8805926; #if defined(BLINKER_PRINT) BLINKER_DEBUG.stream(BLINKER_PRINT); #endif pinMode(D2, OUTPUT); pinMode(D3, OUTPUT); // 初始化blinker Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); //前后左右 Button1.attach(button1_callback); Button2.attach(button2_callback); Button3.attach(button3_callback); Button4.attach(button4_callback); //方向復(fù)位 Button5.attach(button5_callback); //停車 Button6.attach(button6_callback);}

void loop() { Blinker.run();}

燒錄程序(直接USB插上即可):

一般的Nodemcu 如何選擇即可。

組裝好,調(diào)試:

第一次用這個東西畫圖,畫的不太好,而且我的電機驅(qū)動模塊沒有找到。就找了一個(綠色的那個)代替。

如圖,我使用外置5V電源來驅(qū)動舵機與馬達,值得注意的是,舵機要與Nodemcu共地(地線接一塊)才能控制舵機。

下面那個電池(iPhone 5S原裝電池)專門用來驅(qū)動Nodemcu 3.3V與5V皆可。

親測,局域網(wǎng)環(huán)境,延遲很低。

成了,放到地面跑還是很快的。圓了兒時夢想。

參考資料

https://blinker.app/doc

https://www.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多