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

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

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

通過機器學習檢測葉子顏色并對其健康狀態(tài)作出判斷

電子森林 ? 來源:Aduino Project Hub ? 作者:Arduino “having11” ? 2021-04-01 10:10 ? 次閱讀

前提

就像人類一樣,植物也可能染病,比如植物的葉子可能會因真菌或其他病原體而發(fā)黃或出現(xiàn)斑點。因此,通過機器學習的力量,可以掃描顏色,然后將其用于訓練一個模型,該模型可以檢測葉子的顏色并對其健康狀態(tài)作出判斷。

硬件

這個項目主要用Arduino Nano 33 BLE Sense,它之所以被選中主要是它具有一組功能強大的傳感器,包括9DoF IMU,APDS-9960(顏色,手勢,接近度和亮度),麥克風以及溫度/濕度/壓力傳感器組合。為了使電路板圍繞植物的葉子移動并進行測量,將一對步進電機與一對DRV8825驅(qū)動器板配合使用。

設置TinyML

對于此項目,列出的針對Arduino Nano 33 BLE Sense on Edge Impulse的內(nèi)置傳感器將不起作用,這意味著將我們必須使用data forwarder而不是serial daemon。

首先,創(chuàng)建一個新項目并將其命名。接下來需要通過Node.js以及NPM來安裝EdgeImpulse CLI。然后運行:

npm install -g edge-impulse-cli

如果找不到安裝路徑,則可能需要將其安裝路徑添加到PATH環(huán)境變量中。接下來,運行

edge-impulse-data-forwarder

并確保其有效,然后按Ctrl + C退出。

d97068ba-9245-11eb-8b86-12bb97331649.jpg

顏色識別

APDS-9960的工作原理是:通過物體表面所反射的光線波長來讀取顏色。為了與傳感器通信,最好安裝Arduino APDS9960庫,該庫可以訪問一些有用的功能。

在代碼中,首先初始化APDS-9960,然后程序進入循環(huán)功能,等待直到有顏色數(shù)據(jù)出現(xiàn)。如果有讀數(shù),則使用

APDS.readColor()

以及與表面的接近程度來讀取顏色。每個RGB分量都從0-2 ^ 16-1數(shù)轉(zhuǎn)換為其值與總和的比率。

掃描儀

掃描葉子的顏色是通過在兩個軸上移動裝備以使葉子在車載APDS-9960下方經(jīng)過的各個位置進行的。通過沿順時針或逆時針方向旋轉(zhuǎn)絲杠來移動每個軸,以使程序段沿任一方向平移。整個系統(tǒng)是在Fusion 360中設計的,下面是這些設計的一些渲染圖:

X軸位于Y軸的頂部,從而使頂部程序段在兩個軸上移動。Y軸上有一個附加的V輪,以支撐步進電機的重量。零件是使用PLA打印的,填充量約為45%。

收集數(shù)據(jù)

當系統(tǒng)首次啟動時,步進電機是不知道它的初始位置的,因此我們必須進行原點復位,(可通過限位開關實現(xiàn))。接下來初始化APDS-9960。有一個定義為兩個元素的數(shù)組的邊界框,它們包含一個框的相對角。在這兩個位置之間選擇一個隨機點,然后將步進器運行到該位置,同時讀取它們之間的顏色。

處理和發(fā)送顏色信息

如前所述,使用

APDS.readColor()

來讀取顏色。計算總和后,將計算百分比,然后通過調(diào)用

Serial.printf()

的方法通過USB發(fā)送百分比。值用逗號分隔,每個讀數(shù)用換行符分隔。數(shù)據(jù)轉(zhuǎn)發(fā)器程序接收到數(shù)據(jù)后,會將其作為帶有給定標簽(健康或不健康)的訓練數(shù)據(jù)發(fā)送到Edge Impulse云端。

訓練模型

收集完所有訓練數(shù)據(jù)后,就該建立一個可以區(qū)分健康葉子和不健康葉子的模型了。我使用了由三軸時間序列,頻譜分析模塊和Keras模塊組成的脈沖。查看以下屏幕截圖可以了解我如何從數(shù)據(jù)中生成這些功能:

測驗

為了測試新模型,這次我收集了一些新的測試數(shù)據(jù),這是不健康的。該模型的準確性約為63%,并且在通過一些測試功能后,能夠在大多數(shù)時間正確地對葉子進行分類。

可以通過添加更多訓練數(shù)據(jù)并減慢訓練速度來提高此準確性。

代碼

#include 《Arduino_APDS9960.h》#include 《AccelStepper.h》#include 《MultiStepper.h》#include “pinDefs.h” int r, g, b, c, p;

float sum;

AccelStepper xStepper(AccelStepper::DRIVER, STEPPER_1_STEP, STEPPER_1_DIR);

AccelStepper yStepper(AccelStepper::DRIVER, STEPPER_2_STEP, STEPPER_2_DIR);

MultiStepper steppers;// a random location will be chosen within the bounding box

const long boundingBox[2][2] = { {0,0}, {40,40}};

void setup(){ Serial.begin(115200); while(!Serial);

if(!APDS.begin()) { Serial.println(“Could not init APDS9960”); while(1); }

pinMode(X_AXIS_HOMING_SW, INPUT_PULLUP); pinMode(Y_AXIS_HOMING_SW, INPUT_PULLUP); //Serial.println(digitalRead(X_AXIS_HOMING_SW) + digitalRead(Y_AXIS_HOMING_SW)); xStepper.setPinsInverted(X_AXIS_DIR); yStepper.setPinsInverted(Y_AXIS_DIR); xStepper.setMaxSpeed(150); yStepper.setMaxSpeed(150); steppers.addStepper(xStepper); steppers.addStepper(yStepper); homeMotors();}

void loop(){ long randomPos[2]; randomPos[0] = random(boundingBox[0][0], boundingBox[1][0]) * STEPS_PER_MM; randomPos[1] = random(boundingBox[0][1], boundingBox[1][1]) * STEPS_PER_MM; steppers.moveTo(randomPos);

while(steppers.run()) { if(!APDS.colorAvailable() || !APDS.proximityAvailable()){} else { APDS.readColor(r, g, b, c); sum = r + g + b; p = APDS.readProximity();

if(!p && c 》 10 && sum 》= 0) { float rr = r / sum, gr = g / sum, br = b / sum; Serial.printf(“%1.3f,%1.3f,%1.3f

”, rr, gr, br); } } }}

void homeMotors(){ // home x //Serial.println(“Now homing x”); while(digitalRead(X_AXIS_HOMING_SW))

xStepper.move(-1);

// home y //Serial.println(“Now homing y”); while(digitalRead(Y_AXIS_HOMING_SW)) yStepper.move(-1); xStepper.setCurrentPosition(0); yStepper.setCurrentPosition(0);}

原理圖

dae9a12a-9245-11eb-8b86-12bb97331649.png

原文標題:Arduino使用TinyML掃描植物的葉子確定植物的健康

文章出處:【微信公眾號:FPGA入門到精通】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

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

    關注

    2546

    文章

    50482

    瀏覽量

    751178
  • 驅(qū)動器
    +關注

    關注

    52

    文章

    8107

    瀏覽量

    145840
  • 機器學習
    +關注

    關注

    66

    文章

    8355

    瀏覽量

    132324

原文標題:Arduino使用TinyML掃描植物的葉子確定植物的健康

文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    晶體管的工作狀態(tài)判斷方法

    晶體管的工作狀態(tài)判斷是電子工程領域中的一項重要技能,它對于確保電路的正常運行和性能優(yōu)化至關重要。晶體管的工作狀態(tài)通常根據(jù)其內(nèi)部PN結的偏置情況來判斷,主要包括截止
    的頭像 發(fā)表于 09-23 18:16 ?1134次閱讀

    基于機器學習的IWR6843AOP跌倒和姿態(tài)檢測實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于機器學習的IWR6843AOP跌倒和姿態(tài)檢測實現(xiàn).pdf》資料免費下載
    發(fā)表于 09-03 10:02 ?1次下載
    基于<b class='flag-5'>機器</b><b class='flag-5'>學習</b>的IWR6843AOP跌倒和姿態(tài)<b class='flag-5'>檢測</b>實現(xiàn)

    時序邏輯電路中如何判斷有效狀態(tài)和無效狀態(tài)

    在時序邏輯電路中,有效狀態(tài)和無效狀態(tài)判斷是電路分析和設計的重要環(huán)節(jié)。有效狀態(tài)是指電路在實際工作過程中被利用到的狀態(tài),它們構成了電路的有效循
    的頭像 發(fā)表于 08-12 15:51 ?953次閱讀

    【「時間序列與機器學習」閱讀體驗】全書概覽與時間序列概述

    如何通過根因分析技術獲得導致故障的維度和元素,包括基于時間序列異常檢測算法的根因分析、基于熵的根因分析、基于樹模型的根因分析、規(guī)則學習等。 ●第7章“智能運維的應用場景”:介紹智能運維領域的應用,包括
    發(fā)表于 08-07 23:03

    mesh中的非葉子節(jié)點是如何配置的?

    mesh中的非葉子節(jié)點是如何配置的?是mesh網(wǎng)絡自動生成嗎?
    發(fā)表于 07-11 08:28

    深度學習在工業(yè)機器視覺檢測中的應用

    隨著深度學習技術的快速發(fā)展,在工業(yè)機器視覺檢測中的應用日益廣泛,展現(xiàn)出巨大的潛力。工業(yè)機器
    的頭像 發(fā)表于 07-08 10:40 ?927次閱讀

    機器學習算法原理詳解

    機器學習作為人工智能的一個重要分支,目標是通過讓計算機自動從數(shù)據(jù)中學習改進
    的頭像 發(fā)表于 07-02 11:25 ?684次閱讀

    怎么判斷MOS管的工作狀態(tài)

    MOS管(Metal-Oxide-Semiconductor Field-Effect Transistor,金屬-氧化物半導體場效應晶體管)是現(xiàn)代電子電路中常見的關鍵元件,工作狀態(tài)直接影響電路的性能和穩(wěn)定性。本文將詳細探討如何判斷
    的頭像 發(fā)表于 05-30 16:42 ?1539次閱讀

    實例分享:如何使用阿童木顏色傳感器檢測轉(zhuǎn)動軸的轉(zhuǎn)向

    摘要本案例描述了如何利用顏色傳感器來檢測轉(zhuǎn)動軸的轉(zhuǎn)向。河北省客戶提出了一個問題,希望能夠判斷他們的轉(zhuǎn)向軸是正轉(zhuǎn)還是反轉(zhuǎn),轉(zhuǎn)速并不快。阿童木工程師提供解決方案,通過在圓柱體上貼上三種不同
    的頭像 發(fā)表于 05-23 13:50 ?243次閱讀
    實例分享:如何使用阿童木<b class='flag-5'>顏色</b>傳感器<b class='flag-5'>檢測</b>轉(zhuǎn)動軸的轉(zhuǎn)向

    機器視覺如何檢測橡膠圈外觀尺寸檢測?

    外觀檢測 機器視覺系統(tǒng)可以檢測橡膠圈表面的缺陷,裂紋、氣泡、凹陷等。通過圖像處理算法,系統(tǒng)能夠準確識別標記出這些缺陷。系統(tǒng)能夠精確識別
    的頭像 發(fā)表于 03-15 17:24 ?530次閱讀

    如何判斷rlc串聯(lián)電路達到諧振狀態(tài)

    判斷RLC串聯(lián)電路達到諧振狀態(tài)是一個重要的問題,在電路設計和實際應用中有著廣泛的應用。要準確判斷RLC串聯(lián)電路是否達到諧振狀態(tài),需要從電路的特性、頻率響應和振蕩條件等多個方面進行綜合分
    的頭像 發(fā)表于 03-09 09:07 ?3427次閱讀

    軌道式智能巡檢機器通過搭載各項檢測設備進行環(huán)境采集

    在電力場所內(nèi)內(nèi),智能巡檢機器通過搭載雙光譜紅外熱成像儀沿著軌道穩(wěn)穩(wěn)經(jīng)過,可對變電站保護壓板狀態(tài)、變電站二次開關等設備狀態(tài)等進行圖像信息采集;
    的頭像 發(fā)表于 03-06 09:46 ?471次閱讀
    軌道式智能巡檢<b class='flag-5'>機器</b>人<b class='flag-5'>通過</b>搭載各項<b class='flag-5'>檢測</b>設備進行環(huán)境采集

    顏色傳感器實時檢測轉(zhuǎn)動軸轉(zhuǎn)向

    摘要 本案例描述了如何利用顏色傳感器來檢測轉(zhuǎn)動軸的轉(zhuǎn)向。河北省客戶提出了一個問題,希望能夠判斷他們的轉(zhuǎn)向軸是正轉(zhuǎn)還是反轉(zhuǎn),轉(zhuǎn)速并不快。阿童木工程師提供解決方案,通過在圓柱體上貼上三種不
    的頭像 發(fā)表于 02-26 13:52 ?319次閱讀
    <b class='flag-5'>顏色</b>傳感器實時<b class='flag-5'>檢測</b>轉(zhuǎn)動軸轉(zhuǎn)向

    如何判斷機器視覺的照明的好壞?

    判斷機器視覺的照明的好壞,首先必須了解什么是光源需要做到的!顯然光源應該不僅僅是使檢測部件能夠被攝像頭“看見”。有時候,一個完整的機器視覺系統(tǒng)無法支持工作,但是僅僅優(yōu)化一下光源就可以使
    發(fā)表于 11-21 10:24 ?293次閱讀

    Flash的健康狀態(tài)監(jiān)測在工業(yè)應用上的優(yōu)勢

    健康狀態(tài)監(jiān)測——Smartfunction在工業(yè)上的應用健康狀態(tài)監(jiān)測——Smartfunction在SSD上主要作用是壽命預測、性能優(yōu)化、錯誤檢測
    的頭像 發(fā)表于 11-14 08:13 ?325次閱讀
    Flash的<b class='flag-5'>健康</b><b class='flag-5'>狀態(tài)</b>監(jiān)測在工業(yè)應用上的優(yōu)勢