在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

聚豐項(xiàng)目 > 基于IDT 15W的智能小車站臺(tái)充電小系統(tǒng)

基于IDT 15W的智能小車站臺(tái)充電小系統(tǒng)

該系統(tǒng)旨在給藍(lán)牙遙控智能小車進(jìn)行停靠充電功能。底板使用12V直流供電,小車使用12V7AH蓄電池供電。IDT充電板安裝在小車的車頭,當(dāng)小車駛向充電站臺(tái)時(shí),IDT充電板和IDT底板接觸,底板就將12V電壓通過線圈傳給蓄電池充電。充電時(shí),小車電路板與12V蓄電池相連的動(dòng)力系統(tǒng)切斷,以防意外發(fā)生。(本項(xiàng)目采用的是IDT 15W無線充電開發(fā)套件)

donatello1996 donatello1996

分享
3 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

donatello1996 donatello1996

團(tuán)隊(duì)成員

李明 創(chuàng)客

分享
項(xiàng)目簡介
該系統(tǒng)旨在給藍(lán)牙遙控智能小車進(jìn)行停靠充電功能。底板使用12V直流供電,小車使用12V7AH蓄電池供電。IDT充電板安裝在小車的車頭,當(dāng)小車駛向充電站臺(tái)時(shí),IDT充電板和IDT底板接觸,底板就將12V電壓通過線圈傳給蓄電池充電。充電時(shí),小車電路板與12V蓄電池相連的動(dòng)力系統(tǒng)切斷,以防意外發(fā)生。(本項(xiàng)目采用的是IDT 15W無線充電開發(fā)套件)
硬件說明

IDT無線充電套件,負(fù)責(zé)停靠時(shí)充電;

HC-05模塊兩個(gè);

Nucleo-F446RE開發(fā)板,用作小車控制板;IMG_20171029_212334R.jpg

L298N模塊,驅(qū)動(dòng)小車的動(dòng)力輪和轉(zhuǎn)向輪;

IMG_20171029_212342R.jpg

小車動(dòng)力輪電機(jī);

IMG_20171029_212507R.jpg

小車轉(zhuǎn)向輪電機(jī);

IMG_20171029_212353R.jpg

12V轉(zhuǎn)5V轉(zhuǎn)接板,用于蓄電池給Nucleo-F446RE開發(fā)板供電和動(dòng)力輪供電;

IMG_20171029_212522R.jpg

Nucleo-F412ZG開發(fā)板,用作遙控板。

IMG_20171029_225222R.jpg


軟件說明

小車遙控板代碼:

#include <stdio.h>

#include <stdlib.h>

#include "stm32f4xx.h"

#include "usart.h"

#include "delay.h"

#include "adc.h"


int main()

{

int adcval,pwmval=0,pres;

uint8_t dir;

HAL_Init();

SystemClock_Config();

USART2_Init(115200);

USART3_Init(115200);

ADC1_Init(2);

while(1)

{

ADC1_GetValue();

if(x_val>1000&&x_val<3000&&y_val>1000&&y_val<3000)

dir='0';

if(x_val>1000&&x_val<3000&&y_val<1000)

dir='1';

if(x_val>3000&&y_val<1000)

dir='2';

if(x_val>3000&&y_val>1000&&y_val<3000)

dir='3';

if(x_val>3000&&y_val>3000)

dir='4';

if(x_val>1000&&x_val<3000&&y_val>3000)

dir='5';

if(x_val<1000&&y_val>3000)

dir='6';

if(x_val<1000&&y_val>1000&&y_val<3000)

dir='7';

if(x_val<1000&&y_val<1000)

dir='8';

HAL_UART_Transmit(&UART2_Handler,&dir,1,0);


}

}


小車控制板代碼:

#include "stm32f4xx.h"

#include "usart.h"

#include "mico_periph.h"

#include "hts221.h"

#include "uvis25.h"

#include "oled.h"

#include "adc.h"

#include "lps25hb.h"

#include "exti.h"

#include "spi1.h"


#define B1_Pin GPIO_PIN_13

#define B1_GPIO_Port GPIOC

#define LD2_Pin GPIO_PIN_5

#define LD2_GPIO_Port GPIOA


int motor_status=0;


void SystemClock_Config()

{


  RCC_OscInitTypeDef RCC_OscInitStruct;

  RCC_ClkInitTypeDef RCC_ClkInitStruct;

  __HAL_RCC_PWR_CLK_ENABLE();

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

  RCC_OscInitStruct.HSIState = RCC_HSI_ON;

  RCC_OscInitStruct.HSICalibrationValue = 16;

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;

  RCC_OscInitStruct.PLL.PLLM = 8;

  RCC_OscInitStruct.PLL.PLLN = 180;

  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

  RCC_OscInitStruct.PLL.PLLQ = 2;

  RCC_OscInitStruct.PLL.PLLR = 2;

  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  HAL_PWREx_EnableOverDrive();

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;


  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);

  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);

}


static void MX_GPIO_Init()

{


  GPIO_InitTypeDef GPIO_InitStruct;


  __HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();

  __HAL_RCC_GPIOC_CLK_ENABLE();

  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);


  GPIO_InitStruct.Pin = B1_Pin;

  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);


  GPIO_InitStruct.Pin = LD2_Pin;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  HAL_GPIO_Init(LD2_GPIO_Port,&GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;

  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

  GPIO_InitStruct.Pull = GPIO_PULLUP;

  HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_6;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_PULLDOWN;

  HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_PULLDOWN;

  HAL_GPIO_Init(GPIOB,&GPIO_InitStruct);


}


char Get_Direction()

{

if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_9)==0&&HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_8)==1)

return 'L';

else if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_9)==1&&HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_8)==0)

return 'R';

else return 'M';

}


void Turn_Left()

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,1);

HAL_Delay(300);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}


void Turn_Right()

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,1);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

HAL_Delay(300);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}


void Fix_Forword()

{

if(Get_Direction()=='L')

while(Get_Direction()=='L'||Get_Direction()=='M')

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,1);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}

if(Get_Direction()=='R')

while(Get_Direction()=='R'||Get_Direction()=='M')

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,1);

}

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}


int tflag=0;


void Car_Directions(int dir)

{


switch(dir)

{

case 0://停止

tflag=0;

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,0);

Fix_Forword();

break;

case 1://前進(jìn)

tflag=0;

Fix_Forword();

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,1);

break;

case 2:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,1);

if(tflag==0)

{

tflag=1;

Turn_Right();

}

else if(tflag==1)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}

break;

case 3:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,0);

if(tflag==0)

{

tflag=1;

Turn_Right();

}

else if(tflag==1)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}

break;

case 4:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,1);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,0);

if(tflag==0)

{

tflag=1;

Turn_Right();

}

else if(tflag==1)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}

break;

case 5://后退

tflag=0;

Fix_Forword();

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,1);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,0);

break;

case 6:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,1);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,0);

if(tflag==0)

{

tflag=1;

Turn_Left();

}

else if(tflag==1)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}

break;

case 7:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,0);

if(tflag==0)

{

tflag=1;

Turn_Left();

}

else if(tflag==1)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}

break;

case 8:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,1);

if(tflag==0)

{

tflag=1;

Turn_Left();

}

else if(tflag==1)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,0);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,0);

}

break;

default:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,0);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,0);

Fix_Forword();

break;

}

}


int main()

{

uint8_t s='0';

HAL_Init();

     SystemClock_Config();

    MX_GPIO_Init();

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,0);

    USART2_Init(115200);

USART3_Init(115200);

Motor_Init();

OLED_Init();

HTS221_Init();

HTS221_Calibration();

UVIS25_I nit();

RGBLED_Init();

RGB_LED_Set(10,10,20);

 

    ADC1_Init();

EXTI_IRQHandler_Config(0,0);

Fix_Forword();

while(1)

  {

HAL_UART_Receive(&huart3,&s,1,1);

printf("%c\n",s);

Car_Directions(s-'0');

  }

}


void SysTick_Handler()

{

  HAL_IncTick();

  HAL_SYSTICK_IRQHandler();

}


演示效果

初始化,打開小車12V供電和遙控板5V供電,小車控制板循環(huán)接收遙控板的指令,遙控板使用一個(gè)ADC搖桿發(fā)送小車行動(dòng)指令,控制小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止。

評(píng)論區(qū)(1 )
  • snake7674: 好大的蓄電池啊

    回復(fù)

主站蜘蛛池模板: 久久精品免费| 一区二区视频| av网站免费线看| 男人的天堂免费网站| 午夜免费观看福利片一区二区三区| bt天堂在线最新版在线| 亚洲综合色丁香婷婷六月图片| 女人精aaaa片一级毛片女女| 特污兔午夜影院| 国产拳头交一区二区| 免费一级毛片女人图片| 色惰网站| 2021国产成人精品国产| 久久黄色视屏| 狠狠操狠狠搞| 亚洲成人网在线观看| 成人性欧美丨区二区三区 | 国产色婷婷亚洲| www.久操| 色婷婷在线观看视频| 综合免费视频| 视频三区| 黄色短视频免费看| 在线观看黄的网站| 日韩毛片在线看| 人人干天天干| 亚洲天堂网站在线| www色视频| 亚洲一区二区中文| 久久夜色精品| 777精品视频| 日本免费黄色| 久久综合视频网| 四虎影视在线看| 手机福利视频| 亚洲国产成人久久99精品| 在线免费看黄的网站| 久久99热国产这有精品| 国产一区二区影院| 中文字幕第二区| 久久狠色噜噜狠狠狠狠97|