使用nRF52832連接到Android和ESP826的機(jī)器人
資料介紹
描述
概述
我的機(jī)器人由 ArduinoMEGA2560 控制。
使用了 MEGA2560 的所有功能:3 個(gè)串行接口、I2C、SPI、PWM、ADC 和 2 個(gè)中斷。這就是為什么我選擇了提供如此多接口的MEGA2560。但請(qǐng)注意,MEGA2560 在中斷方面有一點(diǎn)限制,因?yàn)槿绻褂?I2C 和 Serial2,則 6 個(gè)中斷中有 4 個(gè)不可用。
MEGA2560 唯一缺少的功能是藍(lán)牙和 WIFI 連接。為此,我添加了一個(gè) nRF52832 來處理藍(lán)牙和一個(gè) ESP8266 來處理 WIFI。第一個(gè)管理從 Android 上運(yùn)行的用戶界面接收到的命令,第二個(gè)將數(shù)據(jù)和圖片發(fā)送到 Raspberry PI。
最初我還使用了一個(gè) ESP8266 來管理從我的 Windows PC 接收到的命令,但是 WIFI 太耗電了,所以我已經(jīng)將這部分遷移到 Android 和 BLE 藍(lán)牙,所以現(xiàn)在命令是從我的手機(jī)發(fā)送的。
設(shè)備
現(xiàn)在讓我們更詳細(xì)地討論所實(shí)施的設(shè)備。在設(shè)備列表下方。
-
nRF52832
-
ESP8266
-
4 motors
-
2 H-bridges
-
2 Contact sensors
-
Sharp IR
-
Servo for IR
-
3 ToF
-
Compass
-
LCD
-
RGB led
-
Buzzer
-
Camera
-
Tilt&Pan servos for Camera
-
SD Card
-
RTC
-
Brightness sensor
-
Temperature & Humidity sensor
-
Motion sensor
-
Sound sensor
首先,有 4 個(gè)電機(jī)由 2 個(gè) H 橋控制,使用 PWM 和數(shù)字引腳進(jìn)行管理。他們有專用的鋰離子電池,以免干擾 MEGA2560,但不要忘記接地,否則 PWM 將無法工作。
為了讓機(jī)器人能夠獨(dú)立運(yùn)行,實(shí)現(xiàn)了以下裝置:
- 3 連接到 I2C 的飛行時(shí)間 TOF 可以非常精確地指示機(jī)器人與潛在障礙物之間的距離(最大 1、20 m)。一個(gè)TOF設(shè)置在機(jī)器人的正面,另外2個(gè)設(shè)置在左右兩側(cè),與正面成45°角。它們的管腳 Shutdown 被管理以便為每個(gè)設(shè)備設(shè)置不同的 I2C 地址。如果需要,它們被配置為允許每 33 毫秒測(cè)量一次。為了避免不穩(wěn)定的措施,只考慮措施樣本的中位數(shù)。
- 一個(gè)連接到 ADC 并安裝在伺服系統(tǒng)上的 IR Sharp 檢查機(jī)器人周圍障礙物(左右)的距離(最大 0.80 米)。請(qǐng)注意,它不如 TOF 精確。伺服由 PWM 控制,允許將 IR Sharp 從 -180° 移動(dòng)到 + 180°,超過靜態(tài)的 TOF。
- 左右兩側(cè)安裝了 2 個(gè)接觸傳感器來檢測(cè)撞擊,以防機(jī)器人沒有及時(shí)檢測(cè)到障礙物!
每 165 毫秒(33*5:nb 樣本測(cè)量),F(xiàn)ront TOF 測(cè)量機(jī)器人與潛在障礙物之間的距離。
如果距離小于Distance minimum,則機(jī)器人向沒有障礙物的方向轉(zhuǎn)45°,如果檢測(cè)到左右兩側(cè)有障礙物則返回。安裝在 Tilt&Pan 上的 IR Sharpis 用于檢查周圍的障礙物。連接到 I2C 的羅盤提供方向以控制轉(zhuǎn)彎。如果接觸傳感器檢測(cè)到提示,機(jī)器人也會(huì)遵循此過程。
如果距離介于 Distanceminimum 和 Distance nominal 之間,則機(jī)器人會(huì)檢查左右 TOF 測(cè)量的距離,并通過加速/減速一側(cè)的電機(jī)將其推向最佳方向。
如果距離大于標(biāo)稱的距離,則機(jī)器人繼續(xù)直線向前運(yùn)行。
機(jī)器人還可以檢查環(huán)境并在異常變化時(shí)發(fā)出警報(bào)。監(jiān)測(cè)的參數(shù)如下:
· 運(yùn)動(dòng)由觸發(fā) MEGA2560 中斷的傳感器檢測(cè)。所以這個(gè)警報(bào)是實(shí)時(shí)的。
· 連接到 Digitalpin 的溫度和濕度可以檢測(cè)溫度或濕度的異常變化
· 亮度也由連接到 I2C 的傳感器監(jiān)控
· 我已經(jīng)嘗試了幾種聲音傳感器,但是沒有一個(gè)是足夠的:當(dāng)我增加揚(yáng)聲器的音量時(shí),它們不會(huì)檢測(cè)到。不要猶豫,推薦一個(gè)!
在出現(xiàn)警報(bào)的情況下,機(jī)器人會(huì)使用安裝在傾斜盤上的相機(jī)拍照。因此相機(jī)可以水平和垂直從-180°到+180°移動(dòng)。相機(jī)連接到 Serial3,Tilt pan 的 2 servos 由 PWM 控制。
圖片存儲(chǔ)在與 SPI 連接的 SD 卡上的 jpeg 文件中。然后 MEGA2560 通過 Serial1 以 38400 波特將它們發(fā)送到 ESP8266 客戶端,然后通過 WIFI 將機(jī)器人捕獲的數(shù)據(jù)發(fā)送到 Raspberry PI
Raspberry PI 上有 PHP 程序,將接收到的數(shù)據(jù)存儲(chǔ)在 TXT 文件和 MySQL 數(shù)據(jù)庫(kù)中。如果出現(xiàn)警報(bào),Raspberry PI 會(huì)發(fā)送包含這些數(shù)據(jù)和相應(yīng)圖片的電子郵件。
除了所有這些設(shè)備之外,還有一些其他組件可以監(jiān)控系統(tǒng):連接到數(shù)字引腳的 RGB LED 和蜂鳴器、連接到 I2C 的實(shí)時(shí)時(shí)鐘 RTC 和 LCD。
主要用于實(shí)時(shí)了解系統(tǒng)在做什么,因?yàn)楫?dāng)機(jī)器人運(yùn)行時(shí)不再連接和記錄到 IDE 標(biāo)準(zhǔn)串口。日志被寫入 SD 卡上的一個(gè)文件中,帶有跟蹤和 RTC 時(shí)間戳,因此可以在以后進(jìn)行分析。
?
命令
該機(jī)器人可以獨(dú)立運(yùn)行,但也可以通過在 Android 或 Windows 上運(yùn)行的用戶界面 UI 進(jìn)行管理。
在 Windows 上,UI 是使用 google widgets 用 HTML/jQuery 編寫的。如前所述,命令通過 WIFI 發(fā)送到專用的 ESP8266 服務(wù)器,該服務(wù)器在通過 Serial2 發(fā)送命令之前中斷 MEGA2650。所以 MEGA2650 不會(huì)阻塞等待命令,但他可以在需要時(shí)盡快管理它。
響應(yīng)被傳輸回 ESP8266,然后傳輸?shù)?UI。請(qǐng)注意,ESP8266 最大的不便之處在于功耗,大約 80mAh。所以幾個(gè)小時(shí)后 LIPO 780mAh 就沒電了,所以我需要在不再需要任何 UI 時(shí)手動(dòng)關(guān)閉 ESP8266 服務(wù)器。
這就是為什么我又建立了一個(gè)基于安卓和藍(lán)牙的界面的原因。
這個(gè) UI 是使用 MIT App Inventor 編寫的,可以輕松地為 Android 創(chuàng)建軟件應(yīng)用程序。命令通過 BLE 藍(lán)牙使用串行服務(wù)發(fā)送到 nRF52832,在通過串行 2 發(fā)送命令之前中斷 MEGA2650。所以 MEGA2650 不會(huì)阻塞等待命令,但他可以在需要時(shí)盡快管理它。
請(qǐng)注意,與 WIFI 相比,藍(lán)牙緩沖區(qū)非常?。?0 字節(jié))。
命令如下:
- 測(cè)試物聯(lián)網(wǎng)
- 每n秒檢查一次
- 停止
- 圖片
- 移動(dòng)傾斜和平移
- 四處看看
- 獲取數(shù)據(jù)
- PI通訊方式
與 Raspberry PI 的通信
ESP8266 Client負(fù)責(zé)通過WIFI向樹莓派發(fā)送數(shù)據(jù)和圖片。
為了降低功耗,它始終處于深度睡眠模式,并在通過串行接口發(fā)送任何數(shù)據(jù)或圖片之前,由 Arduino 觸發(fā)的 pinDTR/RTS 的 10ms 低脈沖喚醒。請(qǐng)注意,由于 ESP 啟動(dòng)過程也使用串行來記錄一些信息,ESP 的啟動(dòng)有時(shí)會(huì)被阻止,我在啟動(dòng)后立即交換 ESP 的串行引腳以避免與 Arduino 發(fā)生沖突。
發(fā)送數(shù)據(jù)后,Arduino 立即向 ESP 發(fā)送睡眠命令以返回深度睡眠模式。
?
軟件
在軟件方面,我用 C++ 為每個(gè)設(shè)備編寫了一個(gè)庫(kù),并且有一個(gè)主程序Robot處理 MEGA2560 的核心處理并調(diào)用庫(kù)中的函數(shù)。
最后這個(gè)程序非常大,希望 MEGA 2560 有足夠的內(nèi)存來運(yùn)行它,但你肯定不能在 Uno 上運(yùn)行它。請(qǐng)注意,所有用于記錄的字符串都存儲(chǔ)在閃存中以贏得數(shù)據(jù)存儲(chǔ)器空間。
此外,還有 2 個(gè)主要程序用于ESP 服務(wù)器(基于藍(lán)牙或 WIFI )和ESP 客戶端。
還有一些工具:
- 設(shè)置 RTC 的時(shí)間
- 將 WIFI 憑據(jù)存儲(chǔ)在 ESP 的閃存中(因此它們不會(huì)顯示在 Git 中?。?/font>
- 校準(zhǔn)羅盤
大多數(shù)代碼源已在網(wǎng)上找到(感謝開源?。?,然后進(jìn)行定制/改進(jìn)。一個(gè)關(guān)鍵點(diǎn)是大多數(shù)時(shí)候在網(wǎng)上找到的資源沒有正確處理錯(cuò)誤,所以我完成了這部分,主要是在 I2C 部分。
每個(gè)設(shè)備在集成到核心程序之前都經(jīng)過專用草圖單獨(dú)測(cè)試。這對(duì)于更好地理解行為和了解限制非常有用。例如,有時(shí)設(shè)備會(huì)提供不穩(wěn)定的測(cè)量結(jié)果,因此獲取測(cè)量樣本并計(jì)算中位數(shù)會(huì)更加安全。
初始化部分也非常關(guān)鍵,我在這個(gè)階段為每個(gè)設(shè)備添加了一些測(cè)試用例,以便在開始之前驗(yàn)證一切是否準(zhǔn)備就緒。例如,更改 TOF 的 I2C 地址以避免總線沖突。
我還構(gòu)建了一個(gè)庫(kù)來定義 nRF、ESP 和 Arduino 之間的協(xié)議,以確保串行接口上??的傳輸質(zhì)量良好并避免死鎖。這是強(qiáng)制性的,因?yàn)榇薪涌诓话踩绻芯彌_區(qū)已滿且讀取器未準(zhǔn)備好,一些字節(jié)可能會(huì)丟失。
?
?
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
- 基于Nordic nRF52832的徽章构建5次下载
- NRF52832使用说明4次下载
- NRF52832触摸开关2ch开源项目8次下载
- NRF52832触摸开关1ch开源项目7次下载
- nRF52832开发指南-上册78次下载
- nRF52832开发指南-下册48次下载
- NRF52832产品规格书下载65次下载
- 基于nRF52832无线蓝牙开发板设计资料18次下载
- nRF52832蓝牙芯片的数据手册99次下载
- nRF52832蓝牙模块的电路原理图免费下载79次下载
- nRF52832蓝牙芯片的数据手册免费下载54次下载
- 干货分享:nRF51822蓝牙模块和nRF52832蓝牙模块对比选型124次下载
- NRF52832原理图和PCB0次下载
- nRF52832数据手册669次下载
- nrf52832 datasheet pdf1028次下载
- 基于ESP32开发的蚂蚁机器人方案1496次阅读
- VASS 标准机器人的附加功能1012次阅读
- 面对疫情 医疗机器人能帮上什么忙?2321次阅读
- 工业机器人与PLC混合编程控制的通讯连接介绍5354次阅读
- 工业机器人与PLC的通讯连接方式和控制方法16039次阅读
- 工业机器人编程入门_工业机器人的编程要求9926次阅读
- 医用机器人的定义_医用机器人发展3800次阅读
- 医用机器人的功能_医用机器人分类3071次阅读
- 协作机器人的起源_为什么需要协作机器人8465次阅读
- 机器视觉的机器人取代四台传统的火焰处理机器人3490次阅读
- 如何区分机器人、协作机器人和移动机器人?7188次阅读
- 软体机器人 前所未见的机器人3887次阅读
- 机器人的最佳编程语言是什么?机器人十大流行编程语言汇总35538次阅读
- 手机如何连接小米扫地机器人_小米扫地机器人怎么连wifi178198次阅读
- 如何选择扫地机器人?怎样选择智能扫地机器人更适合?2948次阅读
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論