回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

HUSKYLENS:AI无人售药机2.0 中等

头像 Hockel 2020.04.02 10478 20
project-image

步骤1 前言

之前在第二轮做了一个无人售卖机,上位机用的是电脑做的人脸支付功能。有了二哈(HUSKYLENS)之后,我的售卖机终于和放飞自我。摆脱了电脑的束缚,想怎么识别就怎么识别!本项目总体流程是:掌控板做上位机:药品的选择与人脸支付。通过mqtt协议发送到easyiot物联网平台!下位机arduino通过obloq物联网模块接收到的数据,做相应药品的出货。

project-image

材料清单

  • 掌控板 X1 链接
  • 百灵鸽拓展板 X2 链接
  • HUSKYLENS AI人工摄像头 X3 链接
  • 3M椴木板 X4

步骤2 设计流程

1,用laserbox制作上位机盒子模型

project-image
project-image

步骤3 硬件连接

project-image

步骤4 硬件组装

project-image
project-image
project-image

步骤5 程序设计

上位机程序设计

代码
/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <DFRobot_HuskyLens.h>

// 动态变量
volatile float mind_n_DangQianSuoZaiXuanXiang, mind_n_QueRenXuanZhongXuanXiang;
// 函数声明
void DF_TianChongJuXing(float mind_n_TianChongXuanXiang);
void DF_PanDuanXuanXiang(float mind_n_p0, float mind_n_p1);
// 静态常量
const String topics[5] = {"225lgQXWR","","","",""};
// 创建对象
DFRobot_Iot       myIot;
DFRobot_HuskyLens huskylens;


// 主程序开始
void setup() {
	mPython.begin();
	myIot.wifiConnect("Erised_Teach", "erised88");
	while (!myIot.wifiStatus()) {yield();}
	myIot.init("iot.dfrobot.com.cn","6fqog7JZR","","efqoRn1WRz",topics,1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	mind_n_DangQianSuoZaiXuanXiang = 1;
	mind_n_QueRenXuanZhongXuanXiang = 0;
	huskylens.beginI2CUntilSuccess();
	huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
}
void loop() {
	display.fillScreen(0);
	while (!(mind_n_QueRenXuanZhongXuanXiang>0)) {
		DF_PanDuanXuanXiang((analogRead(P0)), (analogRead(P1)));
		DF_TianChongJuXing(mind_n_DangQianSuoZaiXuanXiang);
		yield();
	}
	display.fillScreen(0);
	display.setCursor(20, 15);
	display.print("开始人脸支付");
	display.setCursor(20, 30);
	display.print("请对准摄像头");
	while (!(mind_n_QueRenXuanZhongXuanXiang==0)) {
		huskylens.request();
		if (huskylens.isLearned(1)) {
			if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
				myIot.publish(topic_0, mind_n_QueRenXuanZhongXuanXiang);
				mind_n_QueRenXuanZhongXuanXiang = 0;
				display.fillScreen(0);
				display.setCursor(42, 22);
				display.print("支付成功");
				delay(1000);
			}
		}
		yield();
	}
}


// 自定义函数
void DF_TianChongJuXing(float mind_n_TianChongXuanXiang) {
	if ((mind_n_DangQianSuoZaiXuanXiang==1)) {
		display.setCursor(94, 10);
		display.print("药品1");
		display.setCursor(100, 25);
		display.print("5元");
		display.rect(0, 0, 86, 64, false);
		display.rect(2, 2, 40, 29, true);
		display.setCursor(5, 8);
		display.print("药品1");
		display.rect(44, 2, 40, 29, false);
		display.setCursor(49, 8);
		display.print("药品2");
		display.rect(2, 32, 40, 29, false);
		display.setCursor(5, 37);
		display.print("药品3");
		display.rect(44, 32, 40, 29, false);
		display.setCursor(49, 37);
		display.print("药品4");
	}
	if ((mind_n_DangQianSuoZaiXuanXiang==2)) {
		display.setCursor(94, 10);
		display.print("药品2");
		display.setCursor(100, 25);
		display.print("10元");
		display.rect(0, 0, 86, 64, false);
		display.rect(2, 2, 40, 29, false);
		display.setCursor(5, 8);
		display.print("药品1");
		display.rect(44, 2, 40, 29, true);
		display.setCursor(49, 8);
		display.print("药品2");
		display.rect(2, 32, 40, 29, false);
		display.setCursor(5, 37);
		display.print("药品3");
		display.rect(44, 32, 40, 29, false);
		display.setCursor(49, 37);
		display.print("药品4");
	}
	if ((mind_n_DangQianSuoZaiXuanXiang==3)) {
		display.setCursor(94, 10);
		display.print("药品3");
		display.setCursor(100, 25);
		display.print("15元");
		display.rect(0, 0, 86, 64, false);
		display.rect(2, 2, 40, 29, false);
		display.setCursor(5, 8);
		display.print("药品1");
		display.rect(44, 2, 40, 29, false);
		display.setCursor(49, 8);
		display.print("药品2");
		display.rect(2, 32, 40, 29, true);
		display.setCursor(5, 37);
		display.print("药品3");
		display.rect(44, 32, 40, 29, false);
		display.setCursor(49, 37);
		display.print("药品4");
	}
	if ((mind_n_DangQianSuoZaiXuanXiang==4)) {
		display.setCursor(94, 10);
		display.print("药品4");
		display.setCursor(100, 25);
		display.print("20元");
		display.rect(0, 0, 86, 64, false);
		display.rect(2, 2, 40, 29, false);
		display.setCursor(5, 8);
		display.print("药品1");
		display.rect(44, 2, 40, 29, false);
		display.setCursor(49, 8);
		display.print("药品2");
		display.rect(2, 32, 40, 29, false);
		display.setCursor(5, 37);
		display.print("药品3");
		display.rect(44, 32, 40, 29, true);
		display.setCursor(49, 37);
		display.print("药品4");
	}
}
void DF_PanDuanXuanXiang(float mind_n_p0, float mind_n_p1) {
	if (((mind_n_p0>0) && (mind_n_p0<1800))) {
		if ((mind_n_DangQianSuoZaiXuanXiang==2)) {
			display.fillScreen(0);
			mind_n_DangQianSuoZaiXuanXiang = 1;
		}
		else {
			if ((mind_n_DangQianSuoZaiXuanXiang==4)) {
				display.fillScreen(0);
				mind_n_DangQianSuoZaiXuanXiang = 3;
			}
		}
	}
	else {
		if (((mind_n_p0>2000) && (mind_n_p0<4100))) {
			if ((mind_n_DangQianSuoZaiXuanXiang==1)) {
				display.fillScreen(0);
				mind_n_DangQianSuoZaiXuanXiang = 2;
			}
			else {
				if ((mind_n_DangQianSuoZaiXuanXiang==3)) {
					display.fillScreen(0);
					mind_n_DangQianSuoZaiXuanXiang = 4;
				}
			}
		}
		if (((mind_n_p1>0) && (mind_n_p1<1900))) {
			if ((mind_n_DangQianSuoZaiXuanXiang==1)) {
				display.fillScreen(0);
				mind_n_DangQianSuoZaiXuanXiang = 3;
			}
			if ((mind_n_DangQianSuoZaiXuanXiang==2)) {
				display.fillScreen(0);
				mind_n_DangQianSuoZaiXuanXiang = 4;
			}
		}
		if (((mind_n_p1>2000) && (mind_n_p1<4100))) {
			if ((mind_n_DangQianSuoZaiXuanXiang==3)) {
				display.fillScreen(0);
				mind_n_DangQianSuoZaiXuanXiang = 1;
			}
			if ((mind_n_DangQianSuoZaiXuanXiang==4)) {
				display.fillScreen(0);
				mind_n_DangQianSuoZaiXuanXiang = 2;
			}
		}
	}
	if (((analogRead(P2))==0)) {
		mind_n_QueRenXuanZhongXuanXiang = mind_n_DangQianSuoZaiXuanXiang;
	}
}

下位机程序设计

代码
/*!
 * MindPlus
 * uno
 *
 */
#include <UNO_Obloq.h>
#include <SoftwareSerial.h>

// 动态变量
String mind_s_value;
// 静态常量
const String topics[5] = {"gsjELPXWR","","","",""};
// 创建对象
UNO_Obloq      olq;
SoftwareSerial softSerial(2, 3);


// 主程序开始
void setup() {
	softSerial.begin(9600);
  olq.startConnect(&softSerial, "Erised_Teach", "erised88", "kkuQ6XoZR", "zzXweuTZRz", topics, "iot.dfrobot.com.cn", 1883);
}
void loop() {
	if ((olq.available(olq.topic_0))) {
		mind_s_value = olq.getMessage(olq.topic_0);
		if ((mind_s_value=="1")) {
			digitalWrite(4, HIGH);
			analogWrite(5, 200);
			delay(1000);
			digitalWrite(4, HIGH);
			analogWrite(5, 0);
		}
		if ((mind_s_value=="2")) {
			digitalWrite(7, HIGH);
			analogWrite(6, 200);
			delay(1000);
			digitalWrite(7, HIGH);
			analogWrite(6, 0);
		}
		if ((mind_s_value=="3")) {
			digitalWrite(8, HIGH);
			analogWrite(9, 200);
			delay(1000);
			digitalWrite(8, HIGH);
			analogWrite(9, 0);
		}
		if ((mind_s_value=="4")) {
			digitalWrite(10, HIGH);
			analogWrite(11, 200);
			delay(1000);
			digitalWrite(10, HIGH);
			analogWrite(11, 0);
		}
	}
}

步骤6 视频演示

评论

user-avatar
  • 庞老师12

    庞老师122023.12.09

    你好,可以加一下联系方式吗?想向您咨询一下。原来的联系方式加不上了

    0
    • silJEzhj9ZE3

      silJEzhj9ZE32022.04.01

      作者你好,可以加个联系方式吗,程序上有些问题想咨询你一下

      1
      • Xh

        Xh2022.04.19

        Aym030 加下WX 互相讨论交流一下

    • 舵机缔造

      舵机缔造2021.12.28

      我这边是专门做舵机的,工业/机器人,玩具型号都有,有需要的朋友可以加我微信了解13202713017

      0
      • 赵文栋

        赵文栋2021.09.20

        我这边是做科技教育培训行业的,想要获得你的联系方式,是否方便添加一下微信13701338504,这个是我的微信,看合作一下

        0
        • 志中

          志中2021.08.10

          出货方式厉害

          0
          • 士大夫大师傅

            士大夫大师傅2021.01.31

            兄弟,可否留下一个联系方式,有些地方不太懂,想请教一下

            1
            • Xh

              Xh2022.02.23

              兄弟 做出来了吗

          • 士大夫大师傅

            士大夫大师傅2020.12.29

            好!,我研究一下怎么做

            0
            • DFS1w2cb8o8

              DFS1w2cb8o82020.08.07

              厉害厉害

              0
              • ST东东东

                ST东东东2020.06.30

                用什么切割的木板啊?

                0
                • DFryr8_UMhI

                  DFryr8_UMhI2020.06.03

                  中药的售药机就更好了

                  0
                  • 对方已恢复

                    对方已恢复2020.05.09

                    0
                    • 可爱小李子

                      可爱小李子2020.04.26

                      那这样触碰频率太高啦呀,可以弄语音识别吗

                      0
                      • DFHJM_IpFmV

                        DFHJM_IpFmV2020.04.24

                        点赞

                        0
                        • DFHJM_IpFmV

                          DFHJM_IpFmV2020.04.24

                          哈哈,真棒!

                          0
                          • DFr18f9QI4U

                            DFr18f9QI4U2020.04.21

                            赞赞赞赞

                            0
                            • 木子呢

                              木子呢2020.04.02

                              赞啊

                              0
                              • 且歌且行

                                且歌且行2020.04.02

                                真好,万物皆能造!

                                0
                                • rzyzzxw

                                  rzyzzxw2020.04.02

                                  哈哈,很棒啊。

                                  0