六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等

  • 六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等
  • 六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等
  • 六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等
  • 六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等
  • 六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等

六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等

六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等

六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等

六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等

六轴DIY悬挂电池稳飞,附源码/原理图/调试及控制软件等


个性六轴采用原装全新元器件,高精度电阻电容,专业画板布线,使用手机蓝牙控制,能够稳定飞行,悬挂电池飞行也很轻松,适合各位喜欢DIY者、飞控入门、arduino学习开发等。附件内容提供六轴原理图,飞控程序,飞控调试软件及手机APP等资料,方便网友DIY只。六轴飞行器特点:

  • 基于arduino MWC开源平台,更多开放功能熟练实现
  • 预留IIC接口,可拓展传感器
  • 预留遥控器接口,可自行加入遥控
  • 默认手机蓝牙控制,方便便携,控制稳定;可自行或者后期加入通讯链接,控制距离实现可视距120m左右(手机蓝牙控制)
  • 自带失控保护,不至于飞行失控不见踪影
  • 各系列套餐,可满足不同需求DIY,逐步入门飞控

实物详情

附件内容提供资料截图:

试飞视频:

电路项目的主要芯片及数据手册

电路相关文件

电路图文件
飞控板原理图.7z
描述:实物原理图
源代码
飞控源程序.7z
描述:开源程序
教程
材料清单.7z
描述:包含整套清单
其他文件
全部制作资料必须.7z
描述:程序+资料+控制、调试软件
分享到:
收藏 (28)
电子硬件助手小程序 电子硬件助手小程序

电路城电路折扣劵获取途径:

电路城7~10折折扣劵(全场通用):对本电路进行评分获取;

电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。

(版权归BeTe所有)

版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击投诉本电路反馈给电路城。

使用说明:直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!

换一批 more>>

大家都在看:

继续阅读

  • 电池电压测试仪

    此电路主要用于测量干电池电压,纯硬件电路检测电压,无需采用单片机采集电压AD,核心电路是比较器电路。此电路采用8个指示灯直观指示当前电池电压(1V-1.7V),在无单片机控制的便携式设备中可参考此电路来显示电池剩余电量(这里说电量不太合适)。
    来自:DIY创意产品时间:2019-09-20 diy制作
  • Type-c接口的arduino MEGA2560_air

    arduino mega2560开发板 air版本。为学校的比赛特地设计。尺寸缩小,比信用卡还短一点。下载部分改为CH340方案。usb接口改为type-c。数据线插上即可使用。AD格式 pcb和原理图,提供PDF版本原理图。PCB:实物图:文件包括:与以太网模块连接:
    来自:DIY创意产品时间:2019-09-19 diy制作 arduino 开源
  • DIY指南,自己DIY Arduino无线气象站(原理图、PCB和源码)

    在这个DIY指南中,我将向您展示如何制作自己的无线气象站。硬件组件: Microchip ATmega328× 2 28插座× 2 16 MHz晶振× 2 电容器22 pF× 4 电容器100 nF× 2 电容10μF× 2 电阻10k欧姆× 2 螺钉端子2P 2.54mm× 2 针头1x5母头2.54mm× 4 基本8x2字符LCD - 绿色5V黑色× 1 微调电位器,20 kohm× 1 无线串行收发器模块HC12× 2 按钮× 1 直流电源连接器× 1 切换开关,切换× 1 Arduino USB 2串口微型× 1 软件应用程序和在线服务: Arduino IDEArduino Web编辑器 手动工具和制造机器: 剥线钳和切割器,18-10 AWG /0.75-4mm²容量线烙铁(通用)焊锡丝,无铅在这个DIY指南中,我将向您展示如何制作自己的无线气象站。在这个项目中,我决定制作自己的基于Arduino UNO微控制器的PCB - Atmega328p。电路城原创内容,未经同意,不得转载!
    来自:家用电器时间:2019-09-19 arduino 数据采集 无线气象站
  • 带遥控的伺服电机控制实现

    通过这个简单的Arduino项目,您可以使用遥控器伺服电机。硬件组件:Arduino UNO和Genuino UNO× 1 SG90微伺服电机× 1 红外接收器(通用)× 1 JustBoom IR遥控器× 1 跳线(通用)× 1 软件应用程序和在线服务:Arduino IDE通过这个简单的Arduino项目,您可以使用遥控器控制伺服。您所需要的只是Arduino Uno板,伺服电机,电视遥控器,IR接收器(TS0P1738)和一小块纸板。电路城原创内容,未经同意,不得转载!
    来自:基础电路时间:2019-09-18 arduino 遥控 伺服电机
  • 简易甲醛测量器

    4位数码管显示甲醛值 便携式锂电池供电
    来自:DIY创意产品时间:2019-09-14 diy制作
  • 自制Arduino nano兼容板

    之前项目需要就自制了一个Arduino nano的兼容版,可插可贴很舒服。
    来自:DIY创意产品时间:2019-08-29 arduino
  • 带Arduino的12v RGB LED(原理图,源码)

    使用Arduino编程12v RGB LED灯条,以及如何制作不同的颜色组合和渐变动画。硬件组件: Arduino Nano R3× 1 12v RGB LED灯条× 1 达林顿大功率晶体管× 3 电阻1k欧姆× 3 软件应用程序和在线服务: Arduino IDE手动工具和制造机器: 面包板,270针10 Pc。跳线套件,长5厘米在本教程中,我们将学习如何将12v RGB LED条带与Arduino连接,以及如何编程以制作不同的颜色组合和渐变动画。电路城原创内容,未经同意,不得转载!
    来自:照明与LED显示时间:2019-08-28 arduino led rgb
  • 注油机

    牙科专用手机注油机。时间显示、智能注油、智能吹风。多种选择,可以单个,也可以同时三个一起。
    来自:医疗电子时间:2019-08-27 diy制作
  • 如何使用Arduino制作超声波悬浮器

    今天我将向您展示如何使用Arduino Nano制作超声波悬浮液。硬件组件: Arduino Nano R3× 1 SparkFun双H桥电机驱动器L298× 1 超声波传感器模块(HC-SR04)× 1 软件应用程序和在线服务: Arduino IDE什么是超声波悬浮器?声悬浮(也称:声泳)是一种通过使用介质中强烈声波的声辐射压力将物质悬浮在介质中的方法。有时,超声波频率的声波可用于悬浮物体,从而不会产生人耳听到的声音,例如大冢实验室演示的声音,而其他人使用可听频率。有各种方式发射声波,从在物体下方产生波浪并将其反射回其源头,到使用(透明)坦克来产生大的声场。什么是超声波传感器?顾名思义,超声波传感器通过使用超声波测量距离。传感器头发射超声波并接收从目标反射回来的波。超声波传感器通过测量发射和接收之间的时间来测量到目标的距离。光学传感器具有发射器和接收器,而超声波传感器使用单个超声波元件用于发射和接收。在反射模型超声波传感器中,单个振荡器交替地发射和接收超声波。这使得传感器头的小型化成为可能。电路城原创内容,未经同意,不得转载!
    来自:其他时间:2019-08-26 arduino 超声波 悬浮器
  • Iot标签

    IoT 标 签源 起: 在我们小区门口,有一家不大的店~叫“福美家超市”。主打是卖菜,兼有副食品和小百货等。奇怪的是,旁边有几家类似功能的店,其他家多是冷冷清清,这一家却总是得排队付款。就算附近农村卖小菜的农民在附近围了一圈儿又一圈儿,似乎也没能冲淡这家店的生意! 今天,照例来到这家店里准备买菜,大家伙儿自觉地站了两排,向前推进得似火比平常慢了点。正在选菜中,老板娘不知对谁发了个话,“哎,大妈,您稍等会儿啊,今天缺两人没来吶”。今天小两口子一同协作:一个称重贴标签,另一个扫码收款(向多数老年人),年轻人常常是手机付款。时不时也有不想多等的年轻人离开店铺。 我的感觉是排队买菜的现象已经有几年了。有一次为关于他儿子学编程事聊了一会儿。他们每天3~4点就得起床,要赶往蔬菜集散中心采购,回到店里,还要不停地整理菜品,全家齐上阵,吃饭不定点,直到晚上23点接近24点才能睡觉。几乎天天如此,年年如此。所以老板的问题似乎也是我的问题,忽然自动激发了是不是可以利用最近学习人工智能技术,其中之一是机器学习,可以对各种菜品进行训练学习,达到一定次数后不难识别常见超市蔬菜瓜果等。由此制作一种能自动识别称重贴标的AI菜篮子。 这家店年轻的老板及老板娘怎么也不会想到,一位顾客会为他们店更高效地卖菜而想办法。哈哈,这就是创客吧。当然,小白的我对人工智能才刚刚接触,这个AI菜篮子当前仅存脑海里备档哟。 但是结合电子墨水屏制作未来超市的商品IoT标签并不难。 IoT标签: 一种在超市、便利店、药房、甚至员工胸牌等场景显示信息的电子类标签。随着人工智能时代的来临,将越来越多地替代传统纸质标签;每一个电子价签通过无线网络与商场计算机数据库或上云互连,实时、准确地显示不同区域商品最新的基本信息。IoT标签 VS 纸质标签:IoT标签纸质标签1、便利性:一次到位,仅几年后更换电池繁琐2、体验佳:改善顾客线上线下体验不一致,更可实物参照不同步3、节约成本:人力、时间、环保成本高,易出错4、易管理:随时更新,调整,云上操作不易出错,及时提供数据...... 目前制作IoT标签的最佳选择是电子墨水屏。什么是电子墨水屏?(参考:电子发烧友网~"传感器技术")电子墨水屏(E-link): 电子墨水屏技术最早可以追溯到 1996 年,它基于美国麻省理工学院媒体实验室(MIT Media Lab)的一项研究,利用电泳技术(EPD)实现显示,这类屏幕的显示效果十分接近传统纸张,因此也被成为“电子纸”。1997 年,麻省理工学院的教授 Joseph Jacobson 创立 E_Ink 公司,开始推动电子纸技术走向商业化,电子墨水技术成为电子纸的主流。 电子墨水与印刷使用的墨水很相似,都是用颜料所制,这也是为什么我们看到电子墨水屏和传统纸张显示效果相似的原因。电子墨水通常会制成薄膜,由大量微胶囊﹙microcapsules﹚组成,这些微胶囊只有人类头发的直径大小。微胶囊中的黑白小球是带不同电荷的色素颗粒,初始状态下,色素颗粒悬浮在微胶囊中,当施加一定方向的电场后,相应的色素颗粒被推到顶部,微胶囊就会显示不同的颜色,而不同颜色的微胶囊组成了各种文字和图案。电子纸显示屏是靠反射环境光来显示图案的,不需要背光,即使是在阳光底下,电子纸显示屏依然清晰可视,可视角度几乎达到了 180°。因此,电子纸显示屏非常适合阅读。 电子墨水屏基本结构如下图所示: ⒈上层;⒉透明电极层;⒊透明微胶囊;⒋带正电荷的白色颜料;⒌带负电荷的黑色颜料;⒍透明液体(油);⒎电极像素层;⒏基板;⒐光线;⒑白色;⒒黑色。电子墨水屏是由许多电子墨水组成,它是融合化学,物理和电子学的整体产生的一种新材料。电子墨水可以看成一个个胶囊的样子(如上图所示)。每一个胶囊(位置6)里面有液体电荷,其中正电荷染白色,负电荷染黑色。当在一侧(位置8)给予正负电压,带有电荷的液体就会被分别吸引和排斥。这样,每一个像素点就可以显示白色或者黑色了。因为电子墨水的刷新是不连续的,每一次刷新完成就可以保持现在的图形,即使拔掉电池也依旧保存,因为电子墨水具有双稳态效应(磁滞效应)。电子墨水屏的优点:1、省电(可用于低功耗场景)2、护眼(未来很可能替代纸质阅读)电子墨水屏当前的缺点:1、目前主要只有黑白产品,彩色有三色(黑白红)/(黑白黄)/4096色。2、不能快速响应一些动画类需求。3、彩色屏刷新过程中会闪屏。4、成本高。 微雪的柔性墨水屏祼屏(黑白):尺寸: 2.13 inch工作电压:3.3V/5V通信接口:SPI点距:0.229* 0.228分辨率:212*104显示颜色:黑、白灰度等级:2局部刷新 :0.3s全局刷新 :2s 注意事项(摘自微雪):1. 支持局刷的屏幕,注意使用的时候不能一直用局刷对屏幕进行刷新,需要在做几次局刷之后,对屏幕进行一次全刷清屏。否则会造成屏幕显示效果异常,无法修复。2. 三色的墨水屏,建议将屏幕刷白朝上存放,使用前,先上电做几次刷白操作。3. 注意屏幕不能长时间上电,在屏幕不刷新的时候,要将屏幕设置成睡眠模式,或者进行断电处理。否则屏幕长时间保持高电压状态,会损坏膜片,无法修复。4. 使用墨水屏的时候,建议刷新时间间隔至少是 180s, 并且至少每 24 小时做一次刷新,如果长期不使用墨水屏的话,要将墨水屏刷白存放。5. 屏幕进入睡眠模式之后,会忽略发送的图片数据,只有重新初始化才能正常刷新。6. 屏幕的 FPC 排线比较脆弱,注意使用的时候沿屏幕水平方向弯曲排线,不可以沿屏幕垂直方向弯曲排线。7. 墨水屏屏幕较为脆弱,注意尽量避免跌落,碰撞,用力按压。 DF~FireBeetle 三色电子墨水屏(黑白红):工作电压:3.3V数据总线:SPI颜色:黑白红三色屏幕尺寸:2.13 inch像素:212×104刷新时间:12~15s 背面(下角白色方块与微控制器上一致,是防呆防反插标志哟^_^): DF~FireBeetle 低功耗系列之一萤火虫 ESP32微控制器 (支持WiFi&Bluetooth):可以较方便地控制FireBeetle电子墨水屏。 DF为FireBeetle(三色)电子墨水屏提供的API列表:#include "DFRobot_IL0376F_SPI.h"DFRobot_IL0376F_SPI eink; //创建一个ePaper对象函数功能:设定字库和墨水屏片选引脚并初始化。void begin(const char cs_W21, const char cs_GT30, const char dc, busy);函数功能:清除屏幕为指定颜色。InkScreen_Error clear(uint8_t color);函数功能:显示图片(212*104),可以是红色、黑白、红白黑三色图片。void drawPicture(const unsigned char *pic_bw, const unsigned char *pic_red);函数功能:刷新屏幕显示。void flush(void);函数功能:显示字符串。void disString(uint8_t x, uint8_t y, char *ch, uint8_t color);函数功能:画点。InkScreen_Error drawPoint(const unsigned char x, const unsigned char y, const unsigned char color);函数功能:画线。InkScreen_Error drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color);函数功能:画矩形框。InkScreen_Error drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color)函数功能:画圆形边框或者填充圆形。InkScreen_Error drawFillRect(uint16_t x1, uint16_t y1, uint16_t width, uint16_t length, uint8_t color);参数1 (xc,yc): 圆心坐标 (xc∈(0,211),yc∈(0,103)。InkScreen_Error drawCircle(uint16_t xc, uint16_t yc, uint16_t r, uint16_t fill, uint8_t color);结合例程及上API对电子墨水屏~IoT货架标签进行界面布局:主要是在程序中对各种元素进行坐标定位、字号选择、颜色确定、图形绘制等。 测试电子墨水屏程序(Arduino): [C++] 纯文本查看 复制代码?010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172/*!* 08/19/2019测试电子墨水屏程序 * from file FigureDemo.ino* 分辨率:212*104*/#include "Arduino.h"#include "DFRobot_IL0376F_SPI.h"#define STOCK_PIN A2 // 这里可以利用环境光线传感器收集数据模拟商品“美福记”库存状态变化DFRobot_IL0376F_SPI epaper;#define EPAPER_CS D3#define Font_CS D6#define EPAPER_DC D8#define EPAPER_BUSY D7char foodName[]="";float price = 0.0;int stock_per = 100;void setup(void){Serial.begin(115200);//Select the corresponding pinsepaper.begin(EPAPER_CS, Font_CS, EPAPER_DC, EPAPER_BUSY);}void loop(void){epaper.fillScreen(WHITE);//Displays a string, black fontepaper.disString(1,5, 2,"食",BLACK);epaper.disString(1,45, 2,"品",BLACK);epaper.disString(0,83, 1,"FOOD",BLACK);//Let me draw 2 red dotLinesfor(uint8_t x=33,y=0; y<103; y+=2){epaper.drawPixel(x,y,RED);epaper.drawPixel(x+1,y,RED);} epaper.disString(35,1, 1,"品名:",BLACK);epaper.disString(35,18, 1,"Name",BLACK);epaper.disString(35,35, 1,"价格:",BLACK);epaper.disString(35,52, 1,"Price",BLACK);epaper.disString(35,69, 1,"库存:",BLACK);epaper.disString(35,86, 1,"Stock",BLACK);epaper.disString(78,1, 1,"美福记",RED);epaper.disString(78,30, 2,"29.8",RED);epaper.disString(140,45, 1,"¥/Kg",RED);epaper.disString(185,1, 1,"20%",RED);// Draw a down arrowepaper.fillRect(191,18, 12,40,RED);epaper.fillTriangle(184,50, 210,50, 197,70,RED);//Draw a black rectangle(x,y,l,r,c)epaper.drawRoundRect(75,75, 135,23,8,BLACK);epaper.drawRoundRect(76,76, 133,21,8,WHITE);epaper.drawRoundRect(77,77, 131,19,8,WHITE);stock_per =map(analogRead(A2),0,1023,0,100);epaper.fillRoundRect(78,78, 129*stock_per/100,17,7,RED);epaper.disString(185,1, 1,"20%",RED);//Refresh screen displayepaper.flush();delay(10000);}测试IoT程序(ARDUINO): [C++] 纯文本查看 复制代码?001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112#include <WiFi.h>#include <PubSubClient.h>#include <ArduinoJson.h>#include "DFRobot_Aliyun.h"#include "DFRobot_DHT11.h"#define DHT11_PIN D2 //定义传感器引脚,用于收集数据模拟库存数据/*配置WIFI名和密码*/const char * WIFI_SSID = "your ssid";const char * WIFI_PASSWORD = "your password";/*配置设备证书信息*/String ProductKey = "xxxxxxxxxx";String ClientId = "12345";String DeviceName = "STOCK";String DeviceSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxx";/*配置域名和端口号*/String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com";uint16_t PORT = 1883;/*需要操作的产品标识符(温度和湿度两个标识符)*/String TempIdentifier = "xxxxxxx";String HumiIdentifier = "xxxxxxxx";/*需要上报和订阅的两个TOPIC*/const char * subTopic = "xxxxxxxxxxxxxxxxxxxxxxxxx/property/set";//****setconst char * pubTopic = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/property/post";//******postDFRobot_Aliyun myAliyun;WiFiClient espClient;PubSubClient client(espClient);DFRobot_DHT11 DHT;void connectWiFi(){Serial.print("Connecting to ");Serial.println(WIFI_SSID);WiFi.begin(WIFI_SSID,WIFI_PASSWORD);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println();Serial.println("WiFi connected");Serial.print("IP Adderss: ");Serial.println(WiFi.localIP());}void callback(char * topic, byte * payload, unsigned int len){Serial.print("Recevice [");Serial.print(topic);Serial.print("] ");for (int i = 0; i < len; i++){Serial.print((char)payload[i]);[/i][i] }[/i][i] Serial.println();[/i][i]}[/i][i]void ConnectAliyun(){[/i][i] while(!client.connected()){[/i][i] Serial.print("Attempting MQTT connection...");[/i][i] /*根据自动计算的用户名和密码连接到Alinyun的设备,不需要更改*/[/i][i] if(client.connect(myAliyun.client_id,myAliyun.username,myAliyun.password)){[/i][i] Serial.println("connected");[/i][i] client.subscribe(subTopic);[/i][i] }else{[/i][i] Serial.print("failed, rc=");[/i][i] Serial.print(client.state());[/i][i] Serial.println(" try again in 5 seconds");[/i][i] delay(5000);[/i][i] }[/i][i] }[/i][i]}[/i][i]void setup(){[/i][i] Serial.begin(115200);[/i][i] /*连接WIFI*/[/i][i] connectWiFi();[/i][i] /*初始化Alinyun的配置,可自动计算用户名和密码*/[/i][i] myAliyun.init(ALIYUN_SERVER,ProductKey,ClientId,DeviceName,DeviceSecret);[/i][i] client.setServer(myAliyun.mqtt_server,PORT);[/i][i] /*设置回调函数,当收到订阅信息时会执行回调函数*/[/i][i] client.setCallback(callback);[/i][i] /*连接到Aliyun*/[/i][i] ConnectAliyun();[/i][i]}[/i][i]uint8_t tempTime = 0;[/i][i]void loop(){[/i][i] if(!client.connected()){[/i][i] ConnectAliyun();[/i][i] }[/i][i] /*一分钟上报两次温湿度(模拟福美记和福美佳两种商品的库存状态数据)信息*/[/i][i] if(tempTime > 60){[/i][i] tempTime = 0;[/i][i] DHT.read(DHT11_PIN);[/i][i] Serial.print("DHT.temperature=");[/i][i] Serial.println(DHT.temperature);[/i][i] Serial.print("DHT.humidity=");[/i][i] Serial.println(DHT.humidity);[/i][i] client.publish(pubTopic,("{\"id\":"+ClientId+",\"params\":{\""+TempIdentifier+"\":"+DHT.temperature+",\""+HumiIdentifier+"\":"+DHT.humidity+"},\"method\":\"thing.event.property.post\"}").c_str());[/i][i] }else{[/i][i] tempTime++;[/i][i] delay(500);[/i][i] }[/i][i] client.loop();[/i][i]}利用阿里云生成安卓APP:本应用采取 DHT11 温湿度传感器获取环境温度和湿度模拟商品库存状态,并将数据传输给手机 App 显示,从而实现远程实时监控库存的功能。应用目标:通过手机 App 实时监测超市商品库存情况。 所需元件:DHT11 温湿度传感器 x1FireBettle Board-ESP32 x1FireBettle Gravity 扩展板 x1DHT11x1智能手机 x1硬件连接:把 FireBettle Gravity 扩展板直插在 FireBettle Board-ESP32 主板上,再把 DHT11 温湿度模块接在扩展板的 D2 数字引脚上,确保电源引脚、接地引脚和信号引脚都连接正确。按以下我亲自成功的步骤进行即可:(或者参考官方教程)1.打开浏览器,输入网址 https://iot.aliyun.com,登录并进入物联网平台.2.创建一个名为“库存监测”的产品,如下图所示,若产品创建成功,会自动出现在产品列表中; 3. 为库存监测产品定义功能名分别为“美福记”和“美福佳”的属性,自定义产品标识符,美福记取值范围为0~100,美福佳为 0~100,如下图所示。功能添加完毕后,会自动出现在自定义功能栏下。 4.为库存监测产品添加一个名为 STOCK 的设备,如下图所示,设备添加完毕后,会自动出现在设备列表中。 5.将库存监测产品导入“我的智能云家庭管理”项目中,如下图所示: 6.创建移动应用开发APP:选中左侧导航栏的移动应用开发在右侧单击打开“新增可视化应用”,如下图所示: 7.点击自定义页面后的+号,编辑,将“自定义新增页 1”改为库存监测,用鼠标将可视化组建下的实时曲线控件拖动到中间的页面上,如下图所示: 8.选中其中一个实时曲线,点击数据->配置数据,在弹出的选项框里选择相应的选项,并点击确定。 9.修改样式,常常保存。 10.配置首页模块。这一步是为了设置一个导航栏,链接到上面设计的“库存监测”。选中[功能]首页模块->列表,如下图所示,选中新增页面入口,在弹出的“页面入口 1”下,完成相应信息的选择,将其链接到刚才设计的“库存监测“页面,如下图所示,点击确定完成配置后,别忘了点击保存。 11.安装包生成。在编辑页面,点击构建,选择 Andriod 构建或 iOS 发构建,如下图所示: 12.手机扫码,APP到手了! 13.我定义的APP~“IoT标签”界面: 以上测试程序合并为最终程序(ARDUINO): [C++] 纯文本查看 复制代码?001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166#include "Arduino.h"#include <WiFi.h>#include <PubSubClient.h>#include <ArduinoJson.h>#include "DFRobot_Aliyun.h"#include "DFRobot_DHT11.h"#include "DFRobot_IL0376F_SPI.h"/////////////////////////////////////////////DFRobot_IL0376F_SPI epaper;#define DHT11_PIN D2 //定义传感器引脚,用于收集数据模拟库存数据#define EPAPER_CS D3 //定义电子墨水屏相关#define Font_CS D6#define EPAPER_DC D8#define EPAPER_BUSY D7///////////////////////////////////////////////*配置WIFI名和密码*/const char * WIFI_SSID = "XXXXXXX";const char * WIFI_PASSWORD = "XXXXXXXXXX";/*配置设备证书信息*/String ProductKey = "XXXXXXXXXXX";String ClientId = "12345";String DeviceName = "STOCK";String DeviceSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";/*配置域名和端口号*/String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com";uint16_t PORT = 1883;/*需要操作的产品标识符(温度和湿度两个标识符)*/String TempIdentifier = "meifuji";String HumiIdentifier = "meifujia";/*需要上报和订阅的两个TOPIC*/const char * subTopic = "/sys/XXXXXXXXXXX/STOCK/thing/service/property/set";//****setconst char * pubTopic = "/sys/XXXXXXXXXXX/STOCK/thing/event/property/post";//******postDFRobot_Aliyun myAliyun;WiFiClient espClient;PubSubClient client(espClient);DFRobot_DHT11 DHT;///////////////////////////////////////////////void connectWiFi(){Serial.print("Connecting to ");Serial.println(WIFI_SSID);WiFi.begin(WIFI_SSID,WIFI_PASSWORD);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println();Serial.println("WiFi connected");Serial.print("IP Adderss: ");Serial.println(WiFi.localIP());}///////////////////////////////////////////////void callback(char * topic, byte * payload, unsigned int len){Serial.print("Recevice [");Serial.print(topic);Serial.print("] ");for (int i = 0; i < len; i++){Serial.print((char)payload[i]);[/i]}Serial.println();}///////////////////////////////////////////////void ConnectAliyun(){while(!client.connected()){Serial.print("Attempting MQTT connection...");/*根据自动计算的用户名和密码连接到Alinyun的设备,不需要更改*/if(client.connect(myAliyun.client_id,myAliyun.username,myAliyun.password)){Serial.println("connected");client.subscribe(subTopic);}else{Serial.print("failed, rc=");Serial.print(client.state());Serial.println(" try again in 5 seconds");delay(5000);}}}///////////////////////////////////////////////////void setup(){Serial.begin(115200);//Select the corresponding pinsepaper.begin(EPAPER_CS, Font_CS, EPAPER_DC, EPAPER_BUSY); /*连接WIFI*/connectWiFi();/*初始化Alinyun的配置,可自动计算用户名和密码*/myAliyun.init(ALIYUN_SERVER,ProductKey,ClientId,DeviceName,DeviceSecret);client.setServer(myAliyun.mqtt_server,PORT);/*设置回调函数,当收到订阅信息时会执行回调函数*/client.setCallback(callback);/*连接到Aliyun*/ConnectAliyun();}//////////////////////////////////////////////////uint8_t tempTime = 0;uint8_t stock_per = 100;void loop(){if(!client.connected()){ConnectAliyun();}/*上报温湿度(模拟福美记和福美佳两种商品的库存状态数据)信息*/DHT.read(DHT11_PIN);Serial.print("DHT.temperature= ");Serial.println(DHT.temperature);Serial.print("DHT.humidity= ");Serial.println(DHT.humidity);client.publish(pubTopic,("{\"id\":"+ClientId+",\"params\":{\""+TempIdentifier+"\":"+DHT.temperature+",\""+HumiIdentifier+"\":"+DHT.humidity+"},\"method\":\"thing.event.property.post\"}").c_str());client.loop();/*借用DH11传感器的温度数据显示福美记商品的库存状态信息*/stock_per = DHT.temperature;epaper.fillScreen(WHITE);//Displays a string, black fontepaper.disString(1,5, 2,"食",BLACK);epaper.disString(1,45, 2,"品",BLACK);epaper.disString(0,83, 1,"FOOD",BLACK);//Let me draw 2 red dotLinesfor(uint8_t x=33,y=0; y<103; y+=2){epaper.drawPixel(x,y,RED);epaper.drawPixel(x+1,y,RED);} epaper.disString(35,1, 1,"品名:",BLACK);epaper.disString(35,18, 1,"Name",BLACK);epaper.disString(35,35, 1,"价格:",BLACK);epaper.disString(35,52, 1,"Price",BLACK);epaper.disString(35,69, 1,"库存:",BLACK);epaper.disString(35,86, 1,"Stock",BLACK);epaper.disString(78,1, 1,"美福记",RED);epaper.disString(78,30, 2,"29.8",RED);epaper.disString(140,45, 1,"¥/Kg",RED);epaper.disString(185,1, 1,"20%",RED);// Draw a down arrowepaper.fillRect(191,18, 12,40,RED);epaper.fillTriangle(184,50, 210,50, 197,70,RED);//Draw a black rectangle(x,y,l,r,c)epaper.drawRoundRect(75,75, 135,23,8,BLACK);epaper.drawRoundRect(76,76, 133,21,8,WHITE);epaper.drawRoundRect(77,77, 131,19,8,WHITE);epaper.fillRoundRect(78,78, 129*stock_per/100,17,7,RED);epaper.disString(185,1, 1,"20%",RED);//Refresh screen displayepaper.flush(); delay(12000);}运行代码串口显示温度(库存)28: 再看电子墨水屏显示库存(指红色部分约28%):
    来自:Hackaday Prize 2019时间:2019-08-22 diy制作
销量
13
查看
8170
gdyn2

gdyn2

特约卖家
PCB设计制作,项目开发,电源,无刷电机
参数名 参数值
发布于 2017 年 09 月 06日
更新于 2017 年 09 月 06日
Moore8直播课堂

tracer