智能滅火小車

基於嵌入式Linux的智能滅火小車php

1、項目背景

  現在,火災在生活中是很是廣泛的,它被稱爲三大天然災害之一。消防人員時時刻刻衝到第一線,每個人都冒着生命的危險,在這種背景之下,咱們小組基於嵌入式Linux」的設計,作了一輛智能滅火小車,在必定的程度上實現了對安全安全防禦的質的提升,也下降了消防人員的危險。java

2、設計原理

1. 智能滅火小車的設計原理及思路python

  經過Arduino UNORPI兩大開源硬件搭建一個能夠遠程控制的平臺,在這個地方不考慮成本爲題。RPI做爲鏈接物聯網微型計算機,主要負責鏈接網絡,Arduino做爲主控芯片,控制小車行駛和檢測火光;一樣咱們也根據不一樣的工做壞境分別編寫了AndroidQT,二者的鏈接原理基本相同,主要是在樹莓派上寫一個socket服務器,AndroidQT分別寫一個socket客戶端,兩邊約定好相同的指令(例如本次在Android上是把「Forward」定義向前),客戶端負責發送,樹莓派負責接收命令,而後再向Arduino UNO下發相應的命令。流程以下:linux

3、樹莓派微型計算機的搭建

  樹莓派板載沒有配置FLASH,因此支持SD卡啓動,所以須要下載相應的鏡像,並將其燒錄在SD卡上,啓動系統便可。利於方便開發,咱們須要對樹莓派進行遠程操做,經常使用的遠程控制主要有如下三種:git

(1) 遠程桌面:Windows自帶的遠程桌面控制,知道樹莓派鏈接網絡的IP,即可以對樹莓派進行遠程操做;編程

(2) VNCVNCLinux下最經常使用的遠程桌面,它能夠在WindowsUinx的主機上經過網絡遠程主機,不須要額外的顯示器。一樣須要知道IP和配置的密碼;windows

(3) SSHSSH經過在網絡中建立安全隧道來實現SSH客戶端與服務器之間的鏈接。任何網絡服務均可以經過SSH實現安全傳輸,SSH最多見的用途是遠程登陸系統,可利用SSH來傳輸命令行界面和遠程執行命令;安全

(4) 樹莓派的默認帳戶和密碼分別是:piraspberry服務器

4、樹莓派與Arduino串口通信

1. drduino IDE的安裝網絡

     Arduino開發環境搭建比較簡單,在Arduino官網下載相應的安裝包,根據提示即可以完成安裝。搭建的途中若是遇到沒法運行,能夠先搭建JAVA的開發環境,進行JDK變量配置。啓動IDE,進入初始化界面,

2.串口驅動

     Arduino驅動程序在Arduino IDEdrivers文件夾下,也能夠在官網下載;在MACOSLinux系統下,均是不要驅動程序的,你只需直接插上,便可使用。但在Windows系統中,你須要爲Arduino安裝驅動配置文件,纔可正常驅動Arduino。找到下載IDE的安裝包,進入drivers文件夾,找到驅動雙擊計算機會自動完成,雙擊是注意本身的操做系統是多少位的。提供的有32位和64位。驅動安裝成功後,當串口鏈接電腦會顯示串口設備,以下圖:顯示Arduino所鏈接的串口號。

 

3.安裝Python

   本次的設計中,嵌入式Linux中主要的語言是Python語言,所以須要搭建Python語言環境,樹莓派部分鏡像中已經搭建好的,此處即可以忽略。安裝步驟以下:

$ sudo apt-get update

$ sudo apt-get install python

4.安裝PythonGPIO模塊

  GPIO (General Purpose Input/Output) 的意思就是通用型輸入輸出,GPIO模塊庫是Python的第三方庫,利用該庫進行樹莓派的引腳控制,在編程時,須要選擇編號系統,對於Python GPIO,能夠選擇兩種編號系統,分別是:BCMBOARD該項目選用BCM。編碼格式爲:GPIO.setmod(GPIO.BCM)GPIO.setmod(GPIO.BOARD)

GPIO庫安裝步驟:

$ Wget https://sourceforge.net/projects/raspberry-gpio-python/files/RPi.GPIO-0.6.2.tar.gz

$ tar xvzf RPi.GPIO-0.6.2.tar.gz  

$ cd RPi.GPIO-0.6.2  

$ sudo python setup.py install  

5.安裝serial

$ sudo apt-get install python-serial

到此,樹莓派與ArduinoUSB串口通訊便完成,通過測試能夠通訊。測試部分以下:

(1) 先在IDE中編寫通信代碼,上傳代碼到Arduino中,USB與樹莓派鏈接。通信代碼:

 

(2) 樹莓派端:

 

 

 在樹莓派終端運行程序,樹莓派向Arduino發送一個字符‘s’Arduino向樹莓派回覆字符串「hello raspberryI am Arduino」

、程序功能的實現

1. 小車行駛控制

      L298N模塊能夠直接驅動兩路直流電機,控制電機須要使用該模塊的三個端口:使能端、方向端IN1和IN2,使能端高電平是電機才能轉動,IN1IN2一高一低控制方向的正轉和反轉。採用數字針腳控制小車的正反轉,採用PWM針腳控制使能端。DigitalWarite()函數是Arduino自帶的函數,能夠在Arduino相應的針腳寫入高電平或低電平滅火小車行駛部分代碼:

 

 

 

2. 舵機和抽水電機的控制

    舵機爲可旋轉180度的9G舵機,三線制,能夠直接驅動,無需驅動電路。抽水電機的最大電流爲100毫安,工做電流爲80毫安,Arduino引腳電流爲40毫安,不能直接驅動,採用三極管放大電流驅動。舵機的旋轉位置由定義的pos控制,90度爲舵機的正中位置,抽水電機低電平關閉,高電平打開

驅動程序以下:

#include <Servo.h>    // 聲明調用Servo.h

Servo myservo;        // 建立一個舵機對象

myservo.attach(3);    //控制舵機的引腳

int pos = 90;         //舵機初始化位置

int shui = 9;         //抽水機控制引腳

3. 火光實時檢測

  該部分使用火焰傳感器實現,檢測到火光是,數據的模擬值會急速變小,能夠根據這一特性肯定是否周邊有火光。當檢測到火光是,抽水機的針腳自動改成高電平,到達滅火的功能。部分程序設計以下:

num=(analogRead(A0));//串口發送模擬電壓值

  if(num<100)

{

    digitalWrite(shui, HIGH);

}

4. arduino接收串口數據:

if(Serial.available()){     //即能接收到串口傳來的信息

String ans = Serial.readString();

5. 樹莓派接收數據和獲取IP

  這裏採用網絡編程中的Socket套接字,綁定端口和IP到達通訊。通訊協議採用TCP協議。Python語言實現,具體以下:

 

 

 

 

6. 系統IP地址

、電路設計部分

1. 穩壓電路

穩壓電路是保證智能小車可靠運行的基礎。該系統中電源負責控制中心和外圍設備提供能源並未車輪電機提供動力。供電質量的高低直接影響整個系統的穩定性。交流轉直流的電源適配器顯然不適合用於輪式智能小車。考慮到系統中點擊驅動電源爲12.6V,其電源能夠經過電壓變換獲得,設計選用一節輸出電壓12.6V,容量爲2000mAh的可充電鋰電池做爲系統供電電源。外圍器件所需5V電源可經過LM2596S穩壓芯片(DC-DC直流可調降壓電源模塊穩壓板3A 12/2412/5/3.3V)獲得,由於外圍元器件少,LM2596S穩壓芯片,使用方便,可靠性高,價格便宜。

2. 樹莓派

它像是一臺運行Linux 系統的臺式計算機或者便攜式計算機那樣,利用Raspberry Pi 能夠作不少事情。固然,也不免有一點點不一樣。普通的計算機主板都是依靠硬盤來存儲數據,可是Raspberry Pi 來講使用SD 卡做爲硬盤,你也能夠外接USB 硬盤利用Raspberry Pi 能夠編輯Office 文檔、瀏覽網頁、玩遊戲即便玩須要強大的圖形加速器支持的遊戲也沒有問題,如刺激戰場。

Raspberry Pi 的低價意味着其用途更加普遍,將其打形成卓越的多媒體中心也是一個不錯的選擇。

 

樹莓派

 

 

3. 電機驅動模塊

(1) 應用範圍

L298N是一種高電壓,大電流電機驅動芯片。該芯片採用15腳封裝。主要特色是:工做電壓高,峯值工做電壓可達46V;輸出電流大,瞬間峯值電流可達3A,持續工做電流爲2A;額定功率爲25W。內含兩個H橋的高電壓大電流全橋式驅動器,能夠用來驅動直流電動機和步進電機、繼電器線圈等感性負載;採用標準邏輯電平信號控制;具備兩個使能控制端,在不受輸入信號影響的狀況下容許或禁止器件工做有一個邏輯電源輸入端,使內部邏輯電路部分在低電壓下工做,能夠外接檢測電阻,將變化量反饋給控制電路。使用L298N芯片驅動電機,也能夠驅動兩臺直流。

(2) 產品參數

漠塊名稱  H橋電機驅動模塊

主控芯片  L298N

邏輯電壓  5V

邏輯電流  0-36mA

存儲溫度  -20攝氏度至+135攝氏度

工做模式  H橋驅動(雙路)

驅動電壓  5V-35V

驅動電流  2A(MAX單橋)

峯值功率  25W

模塊尺寸  44* 44mm

4. 傳感器的選擇

(1) 原理

火焰傳感器;由各類燃燒生成物、中間物、高溫氣體、碳氫物質以及無機物質爲主體的高溫固體微粒構成的。火焰的熱輻射具備離散光譜的氣體輻射和連續光譜的固體輻射。不一樣燃燒物的火焰輻射強度、波長分佈有所差別,但整體來講,其對應火焰溫度的近紅外波長域及紫外光域具備很大的輻射強度,根據這種特性可製成火焰傳感器。

(2) 功能

火焰傳感器是機器人專門用來搜尋火源的傳感器,固然火焰傳感器也能夠用來檢測光線的亮度。火焰傳感器利用紅外線對對火焰很是敏感的特色,使用特製的紅外線接受管來檢測火焰,而後把火焰的亮度轉化爲高低變化的電平信號,輸入到中央處理器中,中央處理器根據信號的變化作出相應的程序處理

5. ARDUINO模塊

(1) 功能與特色

能夠快速使用ArduinoAdobe Flash, processing, Max/MSP, Pure Data, SuperCollider等軟件結合,做出互動做品。 Arduino可使用現有的 電子元件例如開關或者傳感器或者其餘控制器件、 LED、步進馬達或其餘輸出裝置。

特色跨平臺、簡單清晰、開放性、發展迅速。

6. 舵機和測速碼盤

(1) 舵機特色穩定性、耐用性、扭矩大、速度快、高精度、用途普遍。

(2) 測速碼盤

採用槽型對射光電傳感器,它由一個紅外發光二極管和一個NPN光電三極管組成,槽寬度爲5.9mm,只要非透明物體經過槽型便可觸發輸出TTL低電平。採用施密特觸發器去抖動脈衝,很是穩定,可用於小車測轉速,測距離等等應用,兩端帶M3螺絲安裝孔。

(3) 產品參數

工做電壓:3.3V-5V

輸出形式:數字開關量OUT輸出(01

7. PCB電路製做

(1) PCB做用

電子設備採用印製板後,因爲同類印製板的一致性,從而避免了人工接線的差錯,並可實現電子元器件自動插裝或貼裝、自動焊錫、自動檢測,保證了電子設備的質量,提升了勞動生產率、下降了成本,並便於維修。

(2) KiCad

KiCad是一種免費、開源的EDA設計工具,它可以建立電路原理圖並進行PCB佈局佈線,它具備一個集成化的開發環境,在其之下KiCad包含了以下很是精緻、獨立的軟件工具。

(3) KiCad設計的PCB板圖

3D PCB查看功能基於VRML模型,能夠導出板模型以進行CAD集成。KiCad對板子的大小沒有限制,很容易支持到32銅層的電路板,到最多14層技術層和最多4層附加層。它可以產生用於生產製造PCB板的全部必要文件:用於光繪的Gerber文件、鑽孔文件、元器件定位文件等等。

8. 原理圖的製做流程

 

(1) 新建工程

一個項目通常不止一個文件,須要建立工程統一管理這些文件。依此點擊文件>new project>new projec建立新工程。

2)繪製原理圖

首先在kicad上將相應的元器件擺放好合理的位置,畫出芯片的各個引腳,鏈接好相應的IO接口,把剩餘的沒有用到的接口封閉,檢查原理圖沒有問題。原理圖以下圖:

 

3)匹配封裝 

 

在原理圖編輯器中,點擊上圖從右至左第三個按鈕運行匹配封裝匹配工具cvpcb,封裝匹配好後回到原理圖編輯器,點擊上圖中有「NET」字樣的按鈕生成網表文件(*.net

4PCB佈局和連線

a.讀取網絡列表;

b.放置原件封裝;

c.連線(有過孔的步驟);

d.肯定PCB板的大小;

e.覆銅。

5)導入網表和繪製PCB

運行pcb編輯器;在主界面雙擊kicad_pcb或點擊pcb編輯器也可運行pcb編輯器。在pcb編輯器中,點擊「NET」字樣的按鈕導入網表文件,開始;到此就能獲得pcb圖了。

6)生成Gerber文件和鑽孔文件。

7、QT部分

1. TCP/IP通訊過程

(1) 創建鏈接階段

調用socket(),分配文件描述符;

調用connect(),向服務器發送創建鏈接請求。

(2) 數據交互階段

調用write(),將請求發送給服務器;

調用read(),阻塞等待服務器應答。

(3) 關閉鏈接

當沒有數據發送的時候,調用close()關閉鏈接套接字,即關閉鏈接,向服務器發送FIN數據報。

2. QT實現過程

(1) QT系統的信號與槽機制介紹

信號與槽機制是QT的一箇中心特徵而且也是QT與其它工具包的最不相同的部分。在圖形用戶界面編程中,咱們常常但願一個窗口部件的。一個變化被通知給另外一個窗口部件。更通常地,咱們但願任何一類的對象能夠和其它對象進行通信。較老的工具包使用一種被稱做回調的通信方式來實現同一目的。回調是指一個函數的指針,因此若是你但願一個處理函數通知你的事件,你能夠把另外一個函數(回調)的指針傳遞給處理函數。處理函數在適當的時候調用回調有缺點。首先他們不是類型安全的。咱們歷來都不能肯定處理函數使用了正確的參數來調用回調。所以容易形成進程崩潰。

(2) QT界面設計

 本文主要用到UI界面裏面的Push Button(按鈕)、Line Edit(線性標籤)、Text Line Edit(文本標籤)、Label(標籤)。每一個Push Button分別用來控制小車和噴水,地址和端口標籤是服務器的地址和端口,最終的設計界面如圖所示:

 

3. QT通訊過程

QT通訊過程是利用TCP/IP通訊的工做流程來實現的,經過Socket鏈接到服務器,具體步驟以下:

使用QT的網絡套接字須要在.pro文件中加入一句:QT += network,還須要加一個頭文件#include<QTcpSocket>,定義一個私有的QTcpSocket *socket;

(1) 建立QTcpSocket套接字對象:

socket = new QTcpSocket();

(2) 使用這個對象鏈接服務器:

ui->lineEdit_IP->setText("127.0.0.12"); ui->lineEdit_Port->setText("8888");

(3) 經過信號與槽,使用write函數向服務器發送數據控制小車和噴水的指令:

void Widget::on_pushButton_qj_clicked()

{

    socket->write("DirForward");//控制小車前進

}

void Widget::on_pushButton_zz_clicked()

{

    socket->write("DirLeft");//控制小車左轉

}

void Widget::on_pushButton_yz_clicked()

{

    socket->write("DirRight");//控制小車右轉

}

void Widget::on_pushButton_ht_clicked()

{

    socket->write("DirBack");//控制小車後退

}

void Widget::on_pushButton_tz_clicked()

{

    socket->write("DirStop");//控制小車中止

}

void Widget::on_pushButton_djz_clicked()

{

    socket->write("SGLeft");//控制噴水左轉

}

void Widget::on_pushButton_djy_clicked()

{

    socket->write("SGRight");//控制噴水右轉

}

void Widget::on_pushButton_sg_clicked()

{

    socket->write("WarteOff");//控制噴關

}

void Widget::on_pushButton_sk_clicked()

{

    socket->write("WarteOn");//控制噴水開

}

(4) Socket接收緩衝區有新數據到來時,會發出readRead()信號,所以爲該信號添加槽函數以讀取數據:

QObject::connect(socket,&QTcpSocket::readyRead,this,&MainWindow::socket_Read_Data);

void MainWindow::socket_Read_Data()

{

    QByteArray buffer;

    //讀取緩衝區數據

    buffer = socket->readAll();

}

(5) 斷開與服務器的鏈接close()和disconnectFromHost()

socket->disconnectFromHost();

4. QT鍵盤事件

QT鍵盤事件也是經過信號與槽機制實現,經過得到鍵盤的焦點,並在頭文件裏面申明鍵盤#include <QKeyEvent>,在信號與槽裏面實現鍵盤功能:

void Widget::keyPressEvent(QKeyEvent *ev){

    if(ev->key() == Qt::Key_Home)//HOME鍵控制小車前進

        {

           on_pushButton_qj_clicked();

           return;

        }

    else if(ev->key() == Qt::Key_End) //END鍵控制小車後退

    {

        on_pushButton_ht_clicked();

        return;

}

else if(ev->key() == Qt::Key_Delete) //Delete鍵控制小車左轉

    {

        on_pushButton_zz_clicked();

        return;

    }

    else if(ev->key() == Qt::Key_PageDown) // PageDown鍵控制小車右轉

    {

        on_pushButton_yz_clicked();

        return;

    }

    else if(ev->key() == Qt::Key_PageUp) // PageUp鍵控制小車中止

    {

        on_pushButton_tz_clicked();

        return;

    }

    else if(ev->key() == Qt::Key_Q) // Q鍵控制噴水左轉

    {

        on_pushButton_djz_clicked();

        return;

    }

    else if(ev->key() == Qt::Key_W) // W鍵控制噴水開

    {

        on_pushButton_sk_clicked();

        return;

    }

    else if(ev->key() == Qt::Key_E) // E鍵控制噴水右轉

    {

        on_pushButton_djy_clicked();

        return;

    }

    else if(ev->key() == Qt::Key_S) // S鍵控制噴水關

    {

        on_pushButton_sg_clicked();

        return;

    }

5. 成功和服務器創建鏈接的QT客戶端

打開服務器和客戶端創建鏈接,保證客戶端的IP和端口和服務器的一致,點擊鏈接就會成功的和服務器鏈接,如圖所示是客戶端經過鍵盤發送控制小車和噴水機的指令截圖。

 

 

 

 

 

8、Android部分

1. 界面結構

(1) 鏈接服務器界面是兩個線性佈局「LinearLayout」、兩個「TextView」、兩個「EditText」和一個「button」,分別用於輸入IP地址界面、輸入端口號界面和跳轉控制小車運動的界面。

 

(2) 鏈接服務器後,會跳轉到小車的控制界面;在這裏面也是由一個線性佈局「LinearLayout」,在這裏面嵌套了兩個相對佈局「RelativeLayout」,每個相對佈局裏面五個「button」,分別定義爲向前、向後、向左、向右、close;開水、關水、舵機左、舵機右、shutdown」

 

 

 

 

2.編寫過程

(1) java中,主要編寫了「MainActivityStartActivityTcpCommandserviceUDPFrameRecService」

 

 

 

  

(2) MainActivity中主要對各類事件進行定義。

    public void initButtons()

    {

        Button buttonDirFor=(Button)findViewById(R.id.buttonDirForward);

        buttonDirFor.setOnTouchListener(new ButtonListener("DirStop","DirForward"));

        Button buttonDirBack=(Button)findViewById(R.id.buttonDirBack);

        buttonDirBack.setOnTouchListener(new ButtonListener("DirStop","DirBack"));

        Button buttonDirLeft=(Button)findViewById(R.id.buttonDirLeft);

        buttonDirLeft.setOnTouchListener(new ButtonListener("DirStop","DirLeft"));

        Button buttonDirRight=(Button)findViewById(R.id.buttonDirRight);

        buttonDirRight.setOnTouchListener(new ButtonListener("DirStop","DirRight"));

        Button buttonCamUp=(Button)findViewById(R.id.buttonWaterOn);

        buttonCamUp.setOnTouchListener(new ButtonListener("CamStop","WaterOn"));

        Button buttonCamDown=(Button)findViewById(R.id.buttonWaterOff);

        buttonCamDown.setOnTouchListener(new ButtonListener("CamStop","WaterOff"));

        Button buttonCamLeft=(Button)findViewById(R.id.buttonSGLeft);

        buttonCamLeft.setOnTouchListener(new ButtonListener("CamStop","SGLeft"));

        Button buttonCamRight=(Button)findViewById(R.id.buttonSGRight);

        buttonCamRight.setOnTouchListener(new ButtonListener("CamStop","SGRight"));

        Button buttonClose=(Button)findViewById(R.id.buttonClose);

        buttonClose.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                sendCommandBinder.closeOrShutdown("Close");

//通知小車此客戶端將關閉鏈接

            }

        });

        Button buttonShutdown=(Button)findViewById(R.id.buttonShutdown);

        buttonShutdown.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                sendCommandBinder.closeOrShutdown("Shutdown");

//通知小車自動停車

            }

        });

    }

(3) 通知TcpcommandService發送 開啓和關閉命令。

public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()){

                case MotionEvent.ACTION_UP:

                    //通知TcpCommandService發送開啓命令

                    sendCommandBinder.sendCommand(buttonUpCommand);

                    break;

                case MotionEvent.ACTION_DOWN:

                    //通知TcpCommandService發送關閉命令

      sendCommandBinder.sendCommand(buttonDownCommand);                

                 break;

                default:

                    break;

            }

            return false;

        }

    }

(4) IP地址和端口號,主要是靠手動輸入,而並不能自動獲取;這一部分主要在StartActivity.java中,它具備記憶功能,可以保存IP地址和端口號,然後將最後一個IP地址和端口值顯示出來,這樣就能夠省得每次都要輸入IP地址和端口號。

buttonEnter.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                host=textViewIP.getText().toString();

port=Integer.parseInt(textViewPort.getText().toString());

Intent startMainActivityIntent=new Intent(StartActivity.this,MainActivity.class);

                startMainActivityIntent.putExtra("tcpHost",host);

                startMainActivityIntent.putExtra("tcpPort",port);

                startActivity(startMainActivityIntent);

                //保存ip和端口值

                setInfoFromSharedPreference();

                finish();

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_start);

        //獲取最後一個IP和端口值,並顯示出來

(5) tcpcommandservice.java是用來作與服務器通訊的,咱們能夠藉助它向服務器發送控制命令,在由服務器發送相應的命令給小車,從而達到APP控制小車的目的;下面就是初始化套件制,併發送相關消息。

protected void initCommandSocket(){

        new Thread(new Runnable() {

            @Override

            public void run() {

                try{

                    commandSocket=new Socket();

                  sendMessageToActivity(MainActivity.TOAST_TEXT,"try to connect tcp server");

                    commandSocket.connect(new InetSocketAddress(host,port),6000);

                    sendMessageToActivity(MainActivity.TOAST_TEXT,"connect successfully");

                }catch (IOException e){

                    sendMessageToActivity(MainActivity.TOAST_TEXT,"connect tcp server failed");

                    commandSocket=null;

                    e.printStackTrace();

                }

            }

        }).start();

3.運行結果

 

 

 

 

 9、外殼的設計

1. freeCAD軟件

FreeCAD是一個3D效果圖製做軟件,該軟件基於OpenCASCADE的開源CAD/CAE工具,能通用基於特徵的參數化三維建模的CADMCADCAXCAEPLM。它能夠用在機械工程和產品設計中,也能夠用在工程中。它運行於windows以及linux系統環境下,FreeCAD是一種通用的3D建模。

2. 智能滅火小車模型設計

(1) 模塊組成

智能滅火小車模型由樹莓派、arduino板、小車底板、電路板、穩壓模塊、L298N電機驅動模塊、舵機、直流電機、萬向輪、車輪、12V電池、水箱組成。

(2) 模塊構建

經過KiCad軟件繪製電路板模塊而且導出爲wrl文件。

電路板 

(3) 經過FreeCAD軟件分別繪製小車底板、12V電池、水箱模塊。(如所示


4. 在網上分別下載萬向輪、車輪樹莓派、arduino板、穩壓模塊、L298N電機驅動模塊、舵機、直流電機3D模型分別以下圖所示而且存爲step文件。

  

3.模塊拼接

根據智能滅火小車的硬件實物圖的大體位置對各個模塊進行拼接,得出智能滅火小車模型。

 

4. freeCAD繪製三維步驟

(1) 打開開源軟件freeCAD新建一個工程

(2) 打開Part design工做臺建立實體

(3) 建立草圖(選擇xy基準平面)

(4) 對草圖進行設計

(5) 完成三維模型

5. 外殼草圖的繪製

根據設計的智能滅火小車模型和部分模塊須要留在外殼外進行綜合佈局,從而在xy平面上可初步繪製出盒子草圖,並標明盒子大小。

 

 

 

 

6. 盒子設計

草圖完成後,設置高爲25mm的立方體。而後對盒子和車輪口進行設計,最後造成盒子的三維模型。

 

7. 蓋子設計

根據盒子、舵機模塊、L298N電機驅動模塊進行蓋子的設計,最後造成蓋子的三維模型。

 

8. 合併工程

前兩步完成了外殼的盒子和蓋子設計,最後就把這兩個工程進行合併,這兩個工程是否能合併還須要工做臺(assembly)來檢測。經過新建工程,將這兩個工程添加在新建工程裏面,就完成了整個外殼的設計。

 

9. 智能滅火小車總體模型

將小車模型和小車外殼進行合併,最終獲得智能滅火小車的總體模型。

 

 

 

、總結

   通過一個學期的努力學習終於把智能滅火小車作出來了,咱們5個隊員分工合做,3D外殼的製做,服務器,QT客戶端和安卓客戶端,分別用來控制小車、舵機以及抽水,。本次做品利用QTAndroid製做的客戶端鏈接樹莓派上搭建服務器,QT客戶端能夠經過鍵盤來控制小車、舵機、抽水機,Android客戶端則利用手機控制小車、舵機、抽水機。

在剛開始時,咱們查了許多資料,都沒有找到完成項目的方法,感受沒有什麼但願的。但在咱們堅持不懈的努力之下,終於黃天不負有心人,此次項目在咱們小組的合做之下,實現了相應的功能,最終算是完成了,也但願是老師想要的答卷。

相關文章
相關標籤/搜索