91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

ART PI重力感應無線智能小車

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:RTThread物聯(lián)網(wǎng)操作 ? 2021-01-20 09:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

雷德斯 and枕頭們,好久不見,大家是不是更優(yōu)秀了呢,哈哈,工作太忙啦,夜里肝一篇,大家久等啦,話不多說,來,干貨!

ART-PI-重力感應無線智能小車第二彈-----OneNet+板載wifi控制電機轉(zhuǎn)動此次分享主要用到的軟硬件資源:軟件(RT-Studio平臺): 1、OneNet軟件包; 2、OneNet服務器; 3、pahomqtt軟件包 4、webclient軟件包 硬件: 1、板載wifi模塊 2、ART-PI擴展板(自設計,開源) 3、L298N電機驅(qū)動 4、4個普通IO 實現(xiàn)目標:OneNet服務器下發(fā)控制電機正轉(zhuǎn)、反轉(zhuǎn)、停止。

一、L298N簡介

此次使用的是左邊封裝的15引腳封裝

05bc42ba-59b9-11eb-8b86-12bb97331649.png

L298N是專用驅(qū)動集成電路,屬于H橋集成電路,其持續(xù)輸出電流為2A,最高電流4A,最高工作電壓46V,可以驅(qū)動感性負載,如大功率直流電機,步進電機,電磁閥等,輸入端可以與單片機直接相連接,方便單片機控制。當驅(qū)動直流電機時,可以直接控制步進電機,并可以實現(xiàn)電機正轉(zhuǎn)與反轉(zhuǎn),實現(xiàn)此功能只需改變輸入端的邏輯電平。L298N芯片可以驅(qū)動兩個二相電機,也可以驅(qū)動一個四相電機,輸出電壓最高可達46V,可以直接通過電源來調(diào)節(jié)輸出電壓;可以直接用單片機的IO口提供控制信號。 內(nèi)部結(jié)構(gòu)框圖:有興趣的可以分析分析里面的控制邏輯,也比較簡單,不多說了。

05deb890-59b9-11eb-8b86-12bb97331649.png

引腳定義:

061b0552-59b9-11eb-8b86-12bb97331649.png

064224ca-59b9-11eb-8b86-12bb97331649.png

069843dc-59b9-11eb-8b86-12bb97331649.png

L298N可接受標準TTL邏輯電平信號VSS,VSS可接4.5~7V電壓。4腳VS接電源電壓,VS電壓范圍為VIH+2.5~46V。輸出電流可達2A,可驅(qū)動電感性負載。1腳和15腳下管的發(fā)射極分別單獨引出以便接入電流采樣電阻,形成電流傳感信號。L298可驅(qū)動2個電動機,OUT1,OUT2和OUT3,OUT4之間可分別接電動機。5,7,10,12腳接輸入控制電平,控制電機的正反轉(zhuǎn)。EnA,EnB接控制使能端,控制電機的停轉(zhuǎn)。此次設計我們驅(qū)動兩個直流電機,OUT1和OUT2控制1個,OUT3和OUT4控制1個。 以上介紹我們知道,通過5,7,10,12引腳可以控制電機的正轉(zhuǎn),反轉(zhuǎn),停止,那么怎么實現(xiàn)呢,下面是控制IO的真值表,拿其中一組作為演示,另一組一樣的邏輯,手冊中給出的是:

06b53500-59b9-11eb-8b86-12bb97331649.png

從手冊給出的說明來看,欲要電機驅(qū)動輸出,需要以下步驟來實現(xiàn):1、使能EnA,EnB引腳,可以直接接到單片機系統(tǒng)電源或者由單片機IO輸出高電平來控制; 2、Input1、Input2必須是相反的電平,即以下邏輯,至于前進還是后退,跟電機的接線有關系哈,大家可以自己測試調(diào)整。

輸入信號 電機運行方式
使能端A/B 輸入引腳1(5)/3(10) 輸入引腳2(7)/4(12)
1 1 0 前進
1 0 1 后退
1 1 1 緊急停車
1 0 0 緊急停車
0 X X 停止

二、電路設計

070553f0-59b9-11eb-8b86-12bb97331649.png

前半部分是光耦隔離芯片,用來抗干擾以及保護單片機IO,P8、P9是使能端,如果不接單片機IO控制,直接短路帽短接即可,P7是電機控制輸出端口。 與ART-PI的接口采用的是4個普通IO,伙伴們?nèi)羰琴I的L298N模塊,IO可以自選。

075b3efa-59b9-11eb-8b86-12bb97331649.png

電機:關于電機的介紹,大家可以移步到一位大佬的公眾號,介紹非常詳細啦,公眾號:嵌入式從0到1,大家可以多多關注,非常nice的一位號主。

組裝好的小車,用了2個輪子加一個萬向輪,剛好用一個L298N來驅(qū)動。

三、代碼控制實現(xiàn)

此前我們一直用的是ESP8266,現(xiàn)在我們改為使用板載的wifi模組,充分利用板載資源,沒有ART-PI板子的童鞋不要擔心,RT-Studio支持很多芯片的,大家可以使用手里現(xiàn)有的板子跟著做,一樣的,wifi部分可以使用小飛哥上個教程,使用esp8266或者其他方式,邏輯是一樣的啦。 1、新建工程,我們選擇如下的參數(shù),基于ART-PI開發(fā)板,當然沒有板子的伙伴可以選擇基于芯片,然后選擇示例工程,wifi工程,RT-Thread團隊已經(jīng)把AP6212部分做成庫封裝在RT-Studio平臺,建立好工程之后,setting里面可以看到關于AP6212的組件已經(jīng)勾選,main函數(shù)開始增加了2個函數(shù)調(diào)用,這兩個函數(shù)是用來上電自動初始化wifi部分,如果已經(jīng)連接了wifi,下次上電就會自動搜索完成連接。編譯完成之后,download進去,來看看初步效果:

0889c7b0-59b9-11eb-8b86-12bb97331649.png

08bfcfa4-59b9-11eb-8b86-12bb97331649.png

08fa909e-59b9-11eb-8b86-12bb97331649.png

092e72a6-59b9-11eb-8b86-12bb97331649.png

控制臺輸入wifi help,可以看到關于wifi的一些命令

輸入wifi scan,掃描附近區(qū)域wifi,接下來輸入wifi join SSID password,由于小飛哥的板子之前連接過別的wifi,一直在搜索,但并沒有找到,輸入新的wifi名稱。

096b668e-59b9-11eb-8b86-12bb97331649.png

09c27898-59b9-11eb-8b86-12bb97331649.png

Wifi連接成功,現(xiàn)在重啟設備,看看自動連接效果,可以發(fā)現(xiàn),是逐個進行掃描的,成功找到當前wifi并連接成功,開機自動連接效果測試OK。

0a08d626-59b9-11eb-8b86-12bb97331649.png

接下來是連接OneNet啦,熟悉小飛哥的應該知道怎么做啦,第一次看小飛哥文章的麻煩移步前面的文章看看呀,不懂的,加群一起交流,群里有很多志同道合的好伙伴。 下面在我們的工程里面添加L298N控制邏輯代碼,主要是對IO的控制,也是比較簡單的,根據(jù)上面介紹的控制邏輯,讓相應的IO輸出高低電平就可以啦,方向控制函數(shù)可以合成一個,小飛哥為了讓大家看的更簡單明了,分開寫了,要注意的是,方向控制跟你的L29N輸出接到電機的順序有關,如果方向反了,修改代碼或者接線順序反一下就可以實現(xiàn)同樣的功能啦。有需要的伙伴,源碼都是開源的,可以跟小飛哥說一下,后續(xù)會上傳到github,大家可以自行下載。

IO初始化配置函數(shù):

#include

#include

#include"drv_common.h"

#include"motor_drv.h"

#defineMotorCtrl1Pin GET_PIN(B, 0)

#defineMotorCtrl2Pin GET_PIN(B, 2)

#defineMotorCtrl3Pin GET_PIN(B, 1)

#defineMotorCtrl4Pin GET_PIN(A, 11)

voidMotorCtrlPinInit()

{

rt_pin_mode(MotorCtrl1Pin, PIN_MODE_OUTPUT);

rt_pin_mode(MotorCtrl2Pin, PIN_MODE_OUTPUT);

rt_pin_mode(MotorCtrl3Pin, PIN_MODE_OUTPUT);

rt_pin_mode(MotorCtrl4Pin, PIN_MODE_OUTPUT);

rt_pin_write(MotorCtrl1Pin, PIN_LOW);

rt_pin_write(MotorCtrl2Pin, PIN_LOW);

rt_pin_write(MotorCtrl3Pin, PIN_LOW);

rt_pin_write(MotorCtrl4Pin, PIN_LOW);

}

前進:

voidMotorCtrlForward()

{

rt_pin_write(MotorCtrl1Pin, PIN_HIGH);

rt_pin_write(MotorCtrl2Pin, PIN_LOW);

rt_pin_write(MotorCtrl3Pin, PIN_HIGH);

rt_pin_write(MotorCtrl4Pin, PIN_LOW);

}

后退:

voidMotorCtrlBack()

{

rt_pin_write(MotorCtrl1Pin, PIN_LOW);

rt_pin_write(MotorCtrl2Pin, PIN_HIGH);

rt_pin_write(MotorCtrl3Pin, PIN_LOW);

rt_pin_write(MotorCtrl4Pin, PIN_HIGH);

}

右轉(zhuǎn):

voidMotorCtrlRight()

{

rt_pin_write(MotorCtrl1Pin, PIN_LOW);

rt_pin_write(MotorCtrl2Pin, PIN_HIGH);

rt_pin_write(MotorCtrl3Pin, PIN_HIGH);

rt_pin_write(MotorCtrl4Pin, PIN_LOW);

}

左轉(zhuǎn):

voidMotorCtrlLeft()

{

rt_pin_write(MotorCtrl1Pin, PIN_HIGH);

rt_pin_write(MotorCtrl2Pin, PIN_LOW);

rt_pin_write(MotorCtrl3Pin, PIN_LOW);

rt_pin_write(MotorCtrl4Pin, PIN_HIGH);

}

停止:

voidMotorCtrlStop()

{

/* rt_pin_mode(MotorCtrl1Pin, PIN_MODE_OUTPUT);

rt_pin_mode(MotorCtrl2Pin, PIN_MODE_OUTPUT);

rt_pin_mode(MotorCtrl3Pin, PIN_MODE_OUTPUT);

rt_pin_mode(MotorCtrl4Pin, PIN_MODE_OUTPUT);*/

rt_pin_write(MotorCtrl1Pin, PIN_LOW);

rt_pin_write(MotorCtrl2Pin, PIN_LOW);

rt_pin_write(MotorCtrl3Pin, PIN_LOW);

rt_pin_write(MotorCtrl4Pin, PIN_LOW);

}

接下來就是OneNet下發(fā)指令進行控制啦,這也是為后面的重力感應遙控做鋪墊,小飛哥在之前代碼基礎上做了一些修改,不需要再一條條發(fā)命令接入Onenet啦,上電就可以自動連接wifi,接入Onenet服務器啦,省了不少麻煩,哈哈,無需輸入一條命令,就可以連接到Onenet服務器了。

0a27bb0e-59b9-11eb-8b86-12bb97331649.png

設備已在線

0c5b0610-59b9-11eb-8b86-12bb97331649.png

然后在Onenet端做了一個無比丑陋的控制器。拿一個舉例子,電機ON是發(fā)送控制命令,OFF發(fā)送停止命令,相信到這里,之前做過Onenet控制控制板載LED的童鞋已經(jīng)知道怎么做啦,沒錯,LED控制函數(shù)中增加下車接收命令控制即可,完整函數(shù)內(nèi)容,占篇幅,可以直接跳過,主要是給大家拷貝方便點。

0cb34c8a-59b9-11eb-8b86-12bb97331649.png

/* onenetmqttcommand response callback function */

staticvoidonenet_cmd_rsp_cb(uint8_t*recv_data, size_trecv_size, uint8_t**resp_data, size_t*resp_size)

{

charres_buf[] = { "cmdis received! "};

LOG_D("recvdata is %.*s ", recv_size, recv_data);

if(!strncmp((char*)recv_data, "led0 on", 7)) //(strstr((char*)recv_data, "led0 on"))

{

rt_pin_write(LED_PIN, 0);

rt_snprintf(res_buf,sizeof(res_buf), "led0 is on");

rt_kprintf("led0 is on ");

}

elseif(!strncmp((char*)recv_data, "led0 off", 8))//(strstr((char*)recv_data, "led0 off"))

{

rt_pin_write(LED_PIN, 1);

rt_snprintf(res_buf,sizeof(res_buf), "led0 is off");

rt_kprintf("led0 is off ");

}

else

{

//rt_kprintf("ledcmdERROR! ");

}

if(!strncmp((char*)recv_data, "led1 on", 7))//(strstr((char*)recv_data, "led1 on"))

{

//rt_pin_write(LED1_PIN, 0);

rt_snprintf(res_buf,sizeof(res_buf), "led1 is on");

rt_kprintf("led1 is on ");

}

elseif(!strncmp((char*)recv_data, "led1 off", 8))//(strstr((char*)recv_data, "led1 off"))

{

//rt_pin_write(LED1_PIN, 1);

rt_snprintf(res_buf,sizeof(res_buf), "led1 is off");

rt_kprintf("led1 is off ");

}

else

{

//rt_kprintf("ledcmdERROR! ");

}

if(!strncmp((char*)recv_data, "forward", 7))//

{

MotorCtrlForward();

rt_kprintf("forward is on ");

}

elseif(!strncmp((char*)recv_data, "back", 4))//

{

MotorCtrlBack();

}

elseif(!strncmp((char*)recv_data, "turnright", 9))//

{

MotorCtrlRight();

}

elseif(!strncmp((char*)recv_data, "turnleft", 8))//

{

MotorCtrlLeft();

}

elseif(!strncmp((char*)recv_data, "stop", 4)){

MotorCtrlStop();

}

/* user have to mallocmemory for response data */

*resp_data = (uint8_t*) ONENET_MALLOC(strlen(res_buf));

strncpy((char*)*resp_data, res_buf,strlen(res_buf));

*resp_size =strlen(res_buf);

}

實現(xiàn)效果:

0d10a3a8-59b9-11eb-8b86-12bb97331649.png

原文標題:ART-PI-重力感應無線智能小車第二彈-----OneNet+板載wifi控制電機轉(zhuǎn)動

文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 集成電路
    +關注

    關注

    5453

    文章

    12574

    瀏覽量

    374696
  • 封裝
    +關注

    關注

    128

    文章

    9258

    瀏覽量

    148697
  • 智能車
    +關注

    關注

    21

    文章

    411

    瀏覽量

    78521

原文標題:ART-PI-重力感應無線智能小車第二彈-----OneNet+板載wifi控制電機轉(zhuǎn)動

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    軌道小車無線控制系統(tǒng)設計與實現(xiàn)

    斷裂、信號衰減,故障率高達35%,嚴重制約柔性生產(chǎn)與智能化升級。 一、無線技術(shù)優(yōu)勢 1. 工業(yè)級抗干擾與超遠傳輸 雙頻智能切換:2.4GHz/5GHz自適應頻段,結(jié)合MIMO多天線技術(shù),穿透金屬隔擋能力提升3倍,傳輸距離最遠3公
    的頭像 發(fā)表于 01-26 10:11 ?263次閱讀
    軌道<b class='flag-5'>小車</b><b class='flag-5'>無線</b>控制系統(tǒng)設計與實現(xiàn)

    ART-Pi中啟用外部flash是在哪里配置了qspi的引腳呢?

    。由于我是按照以芯片建立工程,并沒有使用ART-PI的工程。 2、我目前了解到在ART-PI工程中會有這個下載算法。 在這個鏈接文件要配置地址 3、于是我有個好奇的點是在工程中沒看到有QSPI的配置
    發(fā)表于 10-10 06:09

    ART-PI使用新的env工具已經(jīng)無法編譯SDK倉庫里的示例工程了,怎么解決?

    ART-PI 使用新的env工具已經(jīng)無法編譯SDK倉庫里的示例工程了 希望還是能維護一下,新的env已經(jīng)無法構(gòu)建出工程進行編譯了 使用scons —target=mdk5 直接報錯了 希望有方
    發(fā)表于 10-09 06:47

    art_pi_lrs007_lora_gw_driver示例工程無法創(chuàng)建怎么解決?

    art_pi_lrs007_lora_gw_driver示例工程無法創(chuàng)建 1.log
    發(fā)表于 09-25 06:57

    按照官方文檔在ART-PI上開啟PWM,但是串口輸出找不到設備,怎么解決?

    , tim_config.h里也仿照TIM13加入了有關TIM3的代碼, stm32h7xx_hal_msp.c里也打開了TIM3的使能, 最后按照官方文檔上的代碼,拷貝到ART-PI的模板例程里。但是不能發(fā)現(xiàn)TIM3的設備
    發(fā)表于 09-17 06:27

    如何在 ART-Pi 平臺使用 openocd 直接燒錄到外部 spi flash?

    ART-Pi 內(nèi)置的 128Kb flash太小了,我現(xiàn)在在 Linux openocd 燒錄程序,請問有沒有人成功使用 openocd 可以直接燒寫到外部 Quad spi flash 的?
    發(fā)表于 09-15 07:32

    ART-PI2串口DMA累計接收超過buf設置的大小后就不能再接收了為什么?

    使用ART-PI2板子串口1DMA接收數(shù)據(jù),buf的大小為64,只能累計接收64字節(jié),如果擴大到256字節(jié),也只能累計接受到256字節(jié)。數(shù)據(jù)及時讀取,緩沖區(qū)應該是沒有溢出的,應用程序移到F4的板子是正常,求解
    發(fā)表于 09-12 07:56

    ART-PI2的CherryUSB cdc_acm例程 在復位后需要好久才能出來COM口?

    第一次使用ART-PI2上的USB-HS接口。在ART-PI2上燒錄編譯的art_pi2_cherryusb_usbdev_cdc_acm工程,程序能夠正常運行: 但是在復位后,需要等待2分鐘
    發(fā)表于 09-12 07:01

    全智芯433MHz無線傳輸人體感應門鈴方案概述

    全智芯433MHz無線傳輸人體感應門鈴方案采用433.92MHz無線射頻技術(shù)與人體紅外感應技術(shù)結(jié)合實現(xiàn)一種無線傳輸
    的頭像 發(fā)表于 08-27 16:14 ?1211次閱讀

    無線充電利用了電磁感應原理嗎?

    無線充電基于電磁感應,通過高頻電流產(chǎn)生磁場,實現(xiàn)無接觸能量傳輸,但需緊密貼合以保證效率。
    的頭像 發(fā)表于 08-26 08:33 ?1493次閱讀
    <b class='flag-5'>無線</b>充電利用了電磁<b class='flag-5'>感應</b>原理嗎?

    智能小車設計源碼和圖紙資料

    智能小車設計源碼和圖紙
    發(fā)表于 08-25 15:38 ?1次下載

    ART-PI H750-USB-MSC設備描述符異常的原因?怎么解決?

    主控:STM32H750XBH6- ART-Pi 開發(fā)環(huán)境:CubeMX+MDK V5.27問題背景:當前已經(jīng)調(diào)試通SD卡+Fatfs文件系統(tǒng),(通過主控來模擬讀卡器)使用單根USB-C線纜連接至
    發(fā)表于 06-19 06:52

    感應電機智能調(diào)速

    原理,感應電機的MATLAB?/Simulink 建模和仿真,智能控制 MATLAB?/Simulink仿真基礎,感應電機的專家系統(tǒng)控制,混合模糊/PI兩段控制方法,基于人工神經(jīng)網(wǎng)絡(
    發(fā)表于 05-28 15:53

    藍牙無線遙控小車

    藍牙無線遙控小車? ?各種無線遙控都有各自的優(yōu)缺點和用途,我們稍做對比:1.紅外遙控,需要固定方向,不能有物體遮擋,遙控距離一般在8米以內(nèi),性能穩(wěn)定;2.315M/433M無線遙控,方
    發(fā)表于 04-19 17:08 ?3次下載

    XD08M3232 接近感應單片機 —— 開啟智能感應新紀元

    在物聯(lián)網(wǎng)與自動化浪潮席卷全球的今天,精準、可靠的接近感應技術(shù)成為推動產(chǎn)業(yè)升級的核心動力。XD08M3232 接近感應單片機憑借突破性的技術(shù)創(chuàng)新,重新定義了感應領域的性能標桿,為智能安防
    發(fā)表于 04-07 19:46