0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DIY智能暂存柜,助你无接触取快递

智能物联研习社 来源:智能物联研习社 作者:智能物联研习社 2021-09-28 16:44 次阅读

近年来,智能暂存柜在物流、服务行业大放异彩。例如顺丰蜂巢快递柜、菜鸟驿站智能柜等,不但解决了快递行业的最后一公里理念,还能在特殊的时期(例如疫情期间)避免人流聚集。

基于涂鸦IoT开发平台,使用涂鸦三明治Wi-FiMCU通信板(WB3S)、涂鸦三明治电源板、STM32开发板、门锁驱动、以及其他零部件,借助涂鸦MCUSDK低代码开发方式,您可以跟随本教程快速开发一个校园智能暂存柜产品原型。

本教程内容均为涂鸦开发者@何权燊提供,经其授权编辑发布。

物料清单:

1、涂鸦三明治Wi-FiMCU通信板(WB3S)数量:1

适用于涂鸦IoT自定义方案中,照明、台灯、灯丝灯、调光器、照明遥控器、排插、开关、家电、运动健康、传感类产品原型。

2、涂鸦三明治直流供电电源板数量:1

用于给涂鸦三明治其余相关的部件供电。

3、STM32开发板数量:1

支持评估高成本效益的超低功耗LPWAN远距离物联网连接。

4、门锁驱动板数量:1

根据认证信号或钥匙动作,决定是否将内侧门把手轴和外侧门把手轴联接。

步骤

第1步:产品框架

智能校园寄存柜管理系统由以下IoT组件组成:智能暂存柜设备:门锁驱动板、涂鸦三明治通讯板、涂鸦三明治电源板、STM32开发板

涂鸦云开发平台:设备管理、设备控制

微信小程序(经由涂鸦小程序SDK开发):用户扫码开柜存放、用户取用存

管理后台(由开发者服务器运行):用户列表、存放记录、管理员授权开柜、设备列表

第2步:组装设备PCBA和开发嵌入式软件

暂存柜硬件部分

暂存柜分为四部分:

门锁驱动板,门锁驱动原理如下图所示:

7b67318be8264c6ea453e2565dce202b~tplv-tt-shrink:640:0.image

涂鸦三明治通讯板

STM32开发板

涂鸦三明治电源板

暂存柜嵌入式软件部分

作品使用的涂鸦智能MCU接入方式接入:

1、在涂鸦IoT平台上参考选品类创建产品创建一个四路排查(升级版)_Wi-Fi_BLE产品。产品的模型使用的是插排,该排插硬件方案与作者定义的智能暂存柜具备相似的DP(DataPoint)定义。

2、在功能定义页面,根据智能暂存柜的相关功能定义设置DP。

作者添加了4个DP,分别对应4个柜锁。

3、在硬件开发页面,选择一款模组,例如WBR3模组,然后在下载资料区域下载MCU_SDK。

4、配置开发板,移植SDK。

作者使用的STM32官方开发板,采用STM32CubeMX+CLion方式进行单片机开发

作者使用了一个串口用于涂鸦开发板通讯,以及四个GPIO分别控制对应的门锁继电器。对接涂鸦MCU_SDK时,作者主要使用了以下功能:

串口接收和发送

SDK初始化以及运行

网络状态以及配网

串口接收和发送

串口发送使用的寄存器方式发送数据:

c7bfbf59141e40679a590d292456f25a~tplv-tt-shrink:640:0.image

将这个发送函数填入到SDK的Protocol.c中:

3c857d38865e4b8687378dfa0a9c7957~tplv-tt-shrink:640:0.image

使用串口中断接收进行串口数据的接收:

21bab5d812f444fbb8cc3ca6db28aa96~tplv-tt-shrink:640:0.image

并且在main里面启用串口中断接收:

__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);

SDK初始化以及运行

主要是在main和主循环里面分别填入wifi_protocol_init和wifi_uart_service。

6545beff2315408fb8d51b47ca5eada1~tplv-tt-shrink:640:0.image

获取网络状态以及配网,使用mcu_get_wifi_work_state即可获取当前模组的网络状态。

3d030f8458aa45d4ab3a17e843f5b470~tplv-tt-shrink:640:0.image

复位配网

涂鸦提供了Wi-Fi快连配网和热点配网两种配网方式。

调用SDK的mcu_api.c中的mcu_reset_wifi()即可对模组进行复位并且进入配网状态。

控制继电器开锁

原理是给GPIO一个250ms的高电平使锁芯通电弹出锁钩。以开关1为例,其他以此类推。

56e3d2676ea24142abf63ecc6956a2c1~tplv-tt-shrink:640:0.image

第3步:连接涂鸦云开发平台

作者调用了涂鸦云开发平台的设备信息查询和设备控制能力进行后端环境开发。因为涂鸦云开发平台的主要SDK为JavaSDK,而作者的后端环境的使用的是PHP,所以作者自行调用云开发平台API写了一个类,实现了是简单的鉴权和获取设备信息、设备控制。

实现代码如下:

get_devices($devicesid);$data=json_decode($data,true);//var_dump($data);if($data['success']){foreach($data['result']['status']as$lock){if(!$lock['value']){$data=$this->set_device($devicesid,$lock['code'],true);$data=json_decode($data,true);if($data['success']){return$lock['code'];}}}}returnfalse;}publicfunctionRequestclose($devicesid,$lockcode){$data=$this->set_device($devicesid,$lockcode,false);$data=json_decode($data,true);return$data['success'];}publicfunctionget_devices($devicesid){$this->get_token();$data=$this->queryheader_business();$requestdata=$this->query_curl("GET",APIURL."/v1.0/devices/".$devicesid,$data,"");return$requestdata;}publicfunctionget_devices_list($page_no,$page_size,$product_id){$this->get_token();$data=$this->queryheader_business();$requestdata=$this->query_curl("GET",APIURL."/v1.0/devices?page_no=".$page_no."&page_size=".$page_size."&product_id=".$product_id,$data,"");return$requestdata;}publicfunctionset_device($devicesid,$comkey,$state){$postdata=array();$postdata["commands"][0]["code"]=$comkey;$postdata["commands"][0]["value"]=$state;$postdata=json_encode($postdata);$this->get_token();$data=$this->queryheader_business();$requestdata=$this->query_curl("POST",APIURL."/v1.0/devices/".$devicesid."/commands",$data,$postdata);return$requestdata;}privatefunctionaccess_token(){$data=$this->queryheader_token();$requestdata=$this->query_curl("GET",APIURL."/v1.0/token?grant_type=1",$data,"");$arraydata=json_decode($requestdata,true);if($arraydata['success']=="true"){$this->access_token=$arraydata['result']['access_token'];$this->refresh_token=$arraydata['result']['refresh_token'];$this->expire_time=time()+$arraydata['result']['expire_time'];$this->uid=$arraydata['result']['uid'];$tokendata=array();$tokendata['access_token']=$this->access_token;$tokendata['refresh_token']=$this->refresh_token;$tokendata['expire_time']=$this->expire_time;$tokendata['uid']=$this->uid;$tokendata=json_encode($tokendata);$this->set_token($tokendata);returntrue;}returnfalse;}privatefunctionget_token(){$redis=newRedis();//$redis->connect(redisarr,6379);//$redis->auth('demo');$data=$redis->get('token');$arraydata=json_decode($data,true);$this->access_token=$arraydata['access_token'];$this->refresh_token=$arraydata['refresh_token'];$this->expire_time=$arraydata['expire_time'];$this->uid=$arraydata['uid'];if($this->expire_time-time()access_token();}//$redis->close();}privatefunctionset_token($data){$redis=newRedis();//$redis->connect(redisarr,6379);//$redis->auth('demo');$redis->set('token',$data);//$redis->close();}privatefunctionqueryheader_business(){list($t1,$t2)=explode('',microtime());$time=(float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);$Message=client_id.$this->access_token.$time;$sha256data=hash_hmac('sha256',$Message,secret,false);$sign=strtoupper($sha256data);$headerdata=array('client_id:'.client_id,'sign:'.$sign,'sign_method:HMAC-SHA256','t:'.$time,'lang:ch','access_token:'.$this->access_token,'Content-Type:application/json');return$headerdata;}privatefunctionqueryheader_token(){list($t1,$t2)=explode('',microtime());$time=(float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);$Message=client_id.$time;$sha256data=hash_hmac('sha256',$Message,secret,false);$sign=strtoupper($sha256data);$headerdata=array('client_id:'.client_id,'sign:'.$sign,'t:'.$time,'sign_method:HMAC-SHA256','lang:ch');return$headerdata;}privatefunctionquery_curl($typequery,$url,$headerdata=array(),$bodydata=array()){$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_HTTPHEADER,$headerdata);curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);curl_setopt($curl,CURLOPT_HEADER,false);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);//curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);if($typequery=="POST"){curl_setopt($curl,CURLOPT_POST,true);curl_setopt($curl,CURLOPT_POSTFIELDS,$bodydata);}else{curl_setopt($curl,CURLOPT_POST,false);}$tmpInfo=curl_exec($curl);curl_close($curl);return$tmpInfo;}}

第4步:开发微信小程序

用户开柜存放

实现原理:扫码存放-用户扫码-把用户ID和设备ID(扫码结果)-云端请求开锁-完成

实现代码:

用户取出存放

实现原理:用户点击取出存放-云端查询是否存在未取出的存放-如有请求开柜,若无反馈无存放。

实现代码:

第5步:开发管理后台

智能暂存柜管理后台使用ThinkPHP5框架和Xadmin前端框架进行开发。

用户列表

实现原理:用户授权小程序获取用户信息后,调用后端接口对用户的注册并写入数据库,用户列表只是遍历数据库表的数据。

实现代码:

c4412172bb2c4507b92b3cf068146eda~tplv-tt-shrink:640:0.image

e9336cab78c7440f92a6b571c7bcb305~tplv-tt-shrink:640:0.image

存放记录

实现原理:获取数据库设备存储记录表的数据并且遍历出来,而管理员开柜是通过传递ID给前端,当管理员按开柜的按钮即可把列表ID传后端,通过ID在数据库中查找设备ID和开柜号,并调用SDK控制设备开柜。

实现代码:

f51e04cad1cc40e1915ae2afbb78b278~tplv-tt-shrink:640:0.image

设备列表实现原理:通过SDK获取设备列表,并传递到前端进行遍历。

实现代码:

cce90f3e1f0d45dab6009dc0f532afb6~tplv-tt-shrink:640:0.image

涂鸦物联网开发平台为开发者提供了便捷的IoT开发工具与服务,助力开发者更高效的完成设备接入,并为开发者提供物联网应用开发及场景服务能力。

看到这里你是否也很心动?不如亲手实践,自己手动一个校园暂存柜吧~

auth.tuya.com/?from=https%3A%2F%2Fiot.tuya.com%2F&_source=795a75d7c1af33f95d8ea55409e4b22e

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17149

    浏览量

    351226
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    356092
  • wi-fi
    +关注

    关注

    14

    文章

    2144

    浏览量

    124522
  • 调光器
    +关注

    关注

    4

    文章

    146

    浏览量

    23345
收藏 人收藏

    评论

    相关推荐

    扫描模块体积太大太厚难以嵌入快递?不妨试试LV30二维码模组

    在现代物流服务设施迅猛发展的当下,智能快递的重要性不言而喻。然而,很多扫描模块因体积和厚度问题难以嵌入快递,这一问题困扰着相关的生产和安
    的头像 发表于 12-12 15:39 113次阅读
    扫描模块体积太大太厚难以嵌入<b class='flag-5'>快递</b><b class='flag-5'>柜</b>?不妨试试LV30二维码模组

    RFID智能管控的应用分析

    在资料文件管理领域,安全问题始终是重中之重。RFID 载体智能管控设备犹如一位忠诚的卫士,为资料文件安全保驾护航。 鲲鹏·卓识系列RFID智能管控是高性能载体智能管控设备,内置RFI
    的头像 发表于 11-22 13:25 157次阅读
    RFID<b class='flag-5'>智能</b>管控<b class='flag-5'>柜</b>的应用分析

    智能快递中的嵌入式一体机解决方案

    随着电子商务的快速发展和消费者对便捷服务需求的不断增长,智能快递作为物流末端的重要设施,正逐渐成为城市生活的一部分,解决了传统快递配送中存在的最后一公里难题,不仅提升了物流配送效率,
    的头像 发表于 10-08 10:05 240次阅读
    <b class='flag-5'>智能</b><b class='flag-5'>快递</b><b class='flag-5'>柜</b>中的嵌入式一体机解决方案

    芯伯乐智能方案的应用设计

    文章前言智能储物,物品保管,是对传统钥匙的升级换代产品,智能储物采用与员工工牌一卡通的模
    的头像 发表于 09-24 08:06 224次阅读
    芯伯乐<b class='flag-5'>智能</b><b class='flag-5'>柜</b>方案的应用设计

    智能开关柜是什么

    蜀瑞创新为大家科普:智能开关柜是一种综合电气设备,它是传统开关智能化升级版本。这种设备结合了现代电气控制技术和数字信号处理技术,能够实现对电力系统的控制、保护、测量、通信和监测等多种功能。
    的头像 发表于 09-10 14:36 397次阅读
    <b class='flag-5'>智能开关柜</b>是什么

    PID光离子气体传感器在实验室危险化学废弃物暂存中的应用

    在现代实验室管理中,危险化学废弃物的安全暂存与环保处理是至关重要的一环。随着国家和地方政府对危险化学品管理法律法规的不断完善,实验室暂存的改进与优化成为了保障实验室安全、防止环境污染的必要措施。工
    的头像 发表于 08-01 10:44 513次阅读
    PID光离子气体传感器在实验室危险化学废弃物<b class='flag-5'>暂存</b><b class='flag-5'>柜</b>中的应用

    带你快速了解FSC扰动周波快速切换

    小编根据小伙伴们的反馈汇总了关于FSC扰动周波快切的关键问题,那就跟随这些问题一起来快速了解FSC扰动周波快切吧。
    的头像 发表于 07-19 11:02 237次阅读

    智能软启动怎么设置

    软启动的设置方法和步骤。 一、智能软启动的组成 主电路:智能软启动的主电路主要由晶闸管、接触
    的头像 发表于 06-18 14:31 1075次阅读

    4G工业路由器快递应用案例(覆盖所有场景)

    快递展示图 随着电商的蓬勃发展,快递行业迎来高速增长。为提高快递效率、保障快件安全,智能快递
    的头像 发表于 05-07 17:14 424次阅读
    4G工业路由器<b class='flag-5'>快递</b><b class='flag-5'>柜</b>应用案例(覆盖所有场景)

    嵌入式工业一体机在快递设备上的应用

    随着电子商务的蓬勃发展,快递作为一种高效的自助包裹存取服务,已经成为城市物流不可或缺的一部分。在这种背景下,嵌入式工业一体机的应用,为快递设备带来了更高的效率和可靠性。佳维视嵌入式
    的头像 发表于 04-19 10:43 399次阅读
    嵌入式工业一体机在<b class='flag-5'>快递</b><b class='flag-5'>柜</b>设备上的应用

    乐华嵌入式工控一体机有哪些特点?

     相信大家应该都到丰巢快递快递,而快递柜上面的屏幕就是嵌入式工控一体机,智能
    的头像 发表于 04-16 11:16 311次阅读

    工控机的无限可能2--智慧城市

    一、智能 随着网络技术的发展,网购因方便快捷、价格优惠、不受时空限制等优势已成为用户重要的消费方式。快递员因满,或型单一不能投递,只能
    的头像 发表于 03-18 11:40 347次阅读
    工控机的无限可能2--智慧城市

    智能工具柜-RFID智能工具柜管理系统

    ,采用RFID技术实现信息化已经成为了必要性。RFID技术可以实现对工具的 自动识别感应 、追踪和管理,从而提高工具管理的效率和准确性。 智能工具柜参数: 1)东识智能工具柜DW-G104R通过对工具上的RFID标签进行非接触
    的头像 发表于 03-17 16:39 797次阅读

    快递预约上门件API免费接口

    功能说明 通知快递公司快递员上门揽件 号和下单都由揽件网点执行,用于散客件 若已和网点签约并开通大客户下单账号,可使用 电子面单 接口下单 接口信息 接口指令 1001 批量请求
    的头像 发表于 01-24 14:43 393次阅读

    揭秘快递24H*7连续供电的奥秘:YM系列工业级连接器更适合

    快递快递行业解决最后一公里配送问题的智能终端设备,它为灵活件、简化配送带来了高效体验。快递
    的头像 发表于 01-12 08:13 416次阅读
    揭秘<b class='flag-5'>快递</b><b class='flag-5'>柜</b>24H*7连续供电的奥秘:YM系列工业级连接器更适合