智能仓储
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
智能仓储是物流过程的一个环节,智能仓储的应用,保证了货物仓库管理各个环节数据输入的速度和准确性,确保企业及时准确地掌握库存的真实数据,合理保持和控制企业库存。通过科学的编码,还可方便地对库存货物的批次、保质期等进行管理。利用SNHGES系统的库位管理功能,更可以及时掌握所有库存货物当前所在位置,有利于提高仓库管理的工作效率。
一、智能仓储
1、智能仓储功能构成
全面物资管理 动态盘点:支持“多人+异地+同时”盘点,盘点的同时可出入库记账,盘点非常直观。 动态库存:重现历史时段库存情况,方便财务审计 单据确认:入库、出库、调拨制单后需要进行确认更新库存。 RFID手持机管理:使用手持机进行单据确认、盘点、查询统计。 库位管理:RFID关联四号定位(库架层位)。
2、智能仓储特点
主要有几个方面的特点:首先,感知技术应用情况比较的良好。在我国仓储业应用最多的物联网感知技术是RFID技术,在一些先进的仓储配送中心,RFID标签及智能无线射频(RF)手持终端有比较广泛的应用。这是因为,RFID技术与托盘系统结合,在仓储配送中心闭环应用,可以有效降低成本。我们也知道在普通的仓储系统中,除了基于条码的自动识别技术具有广泛应用外,“电子标签辅助拣选系统”也有一定的应用。这里所谓的电子标签指的不是RFID标签,而是采用电子指示标签进行拣选作业的系统。利用这一系统,将出入库订单经计算机系统分解后,传输到货架各货位,用电子显示技术引导拣货的辅助拣选系统。这一系统简洁实用,应用较广。 一些基于辅助语音拣选的系统也开始在国内得到应用。借助无线网络和戴在拣货员头上的耳机,向拣货员发出拣货指令,完成拣选作业
3、系统构成
二、工具介绍
1.STM32F103开发板介绍
■ 内核:ARM 32 位的Cortex?-M3 CPU ? 最高72MHz工作频率,在存储器的0等待周 期访问时可达1.25DMips/MHz(Dhrystone2.1) ? 单周期乘法和硬件除法 ■ 存储器 ? 从256K至512K字节的闪存程序存储器 ? 高达64K字节的SRAM ? 带4个片选的静态存储器控制器。支持CF卡、 SRAM、PSRAM、NOR和NAND存储器 ? 并行LCD接口,兼容8080/6800模式 ■ 时钟、复位和电源管理 ? 2.0~3.6伏供电和I/O引脚 ? 上电/断电复位(POR/PDR)、可编程电压监测器(PVD) ? 4~16MHz晶体振荡器 ? 内嵌经出厂调校的8MHz的RC振荡器 ? 内嵌带校准的40kHz的RC振荡器 ? 带校准功能的32kHz RTC振荡器 ■ 3 个12 位模数转换器,1μs 转换时间( 多达21个输入通道) ? 转换范围:0至3.6V ? 三倍采样和保持功能 ? 温度传感器 ■ 2 通道 12 位 位 D/A 转换器 ■ DMA :12 通道 DMA 控制器 ? 支持的外设:定时器、ADC、DAC、SDIO、I2S、SPI、I2C和USART ■ 调试模式 ? 串行单线调试(SWD)和JTAG接口 ? Cortex-M3内嵌跟踪模块(ETM) ■ 多达112 个快速I/O 端口 ? 51/80/112个多功能双向的I/O口,所有I/O口 可以映像到16个外部中断;几乎所有端口均 可容忍5V信号 ■ 多达11 个定时器 ? 多达4个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入 ? 2个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器 ? 2个看门狗定时器(独立的和窗口型的) ? 系统时间定时器:24位自减型计数器 ? 2个16位基本定时器用于驱动DAC ■ 多达13 个通信接口 ? 多达2个I 2 C接口(支持SMBus/PMBus) ? 多达5个USART接口(支持ISO7816,LIN,IrDA接口和调制解调控制) ? 多达3个SPI接口(18M位/秒),2个可复用为I 2 S接口 ? CAN接口(2.0B 主动) ? USB 2.0全速接口 ? SDIO接口 ■ CRC 计算单元,96
2.DHT11温湿度传感器介绍
2.1 DHT11温湿度传感器介绍
DHT11温湿度传感器是一种比较便宜的常见的温湿度传感器,它的内部由两个元件构成,一个是电阻式的感湿元件用来检测环境湿度,另一个是NTC测温元件来测量温度,在测得数据后,两个元件会将数据传送给内部一个集成的8位的处理器来对数据进行处理,并将它们转换为数字量,这些数据可以通过串口传送给主机。DHT11温湿度传感器有四个管脚,只有一条是数据线接口,所以在传输数据时仅需要1个I/O就能同时传输测得的温度以及湿度,在进行程序编写时更加简洁方便。因为DHT11集成度较好,体积比较小,所以消耗也很小,抗干扰能力更强,稳定性较好,不易受到外界干扰。
DHT11集成度很高,封装的很简洁,只有四个管脚,所以连接也是相对比较方便。DHT11管脚Pin1接一个3-5.5V的直流电源的正极,管脚Pin2为数据端,主要用于传输数据,但是在接线时需要加一个5KΩ的上拉电阻连接到主机MCU上,用来保证数据传输的稳定性,同时还要注意这个5KΩ是在管脚Pin2与主机之间的接线小于20m时才有用,在大于20m时就需要根据实际情况来确定需要加多大的上拉电阻来保持稳定性。管脚Pin3不起什么作用,只需要将其悬空不接线即可,管脚Pin4接地。
2.2 DHT11数据格式
DHT11和DS18B20不同,DHT11不需要配置,可以直接读取数据,一次完整的数据传输为40bit,先传输高字节的数据再传输低字节的数据,也就是低位后出,高位先出模式。 数据格式: 8bit湿度整数数据 + 8bit湿度小数数据 +8bit温度整数数据 + 8bit温度小数数据 +8bit校验和 数据传送正确时校验和数据等于 8bit湿度整数数据 + 8bit湿度小数数据 +8bit温度整数数据 + 8bit温度小数数据 所得结果的末8位。
2.3 DHT11读写时序图
数据线一开始处于高电平状态,用户MCU将总线电平拉低,表示用户要开始获取数据,然后将电平拉高并延时等待一段时间,等待DHT11回复,如果DHT11将总线拉低,表示已经收到主机信号,并响应主机信号,准备输出,然后将总线电平拉高,并延时一段时间,表示准备传输40bit的数据。然后将数据总线拉低一段时间开始传输数据,主要是进行2进制数据传输,传输0和1,并用不同的拉高电平延时时间来表示数据0和1。用户可以选择读取湿度还是温度,整数还是小数。并且数据传输是需要DHT11收到主机MCU发送的开始信号,才会开始采集数据传输数据,而且此时DHT11会转到低速模式。
2.4 DHT11数据读取
(1)DHT11用到的数据总线是PE6,接线时,DHT11数据线接到PE6; (2)我们需要用到的函数:DHT11_Init()为DHT11的初始化函数; uint8_t DHT11_Read_TempAndHumidity ( DHT11_Data_TypeDef * DHT11_Data ); 为DHT11的数据读取函数,这个函数会将读取到的数据赋值给DHT11_Data结构体里的变量,然后还会有一个返回值判断是否读取成功;
3. GY-30光照传感器介绍
3.1 GY-30光照传感器介绍
GY-30 BH1750FVI光照传感器采用的是BH1750FVI芯片,是一个16位的数字型的芯片,而且有三种分辨率可供用户选择,用户可以根据需要选择0.5、1、4lux的分辨率。而且GY-30 BH750FVI是一个已经集成好的模块,封装也比较简单,有五个引脚,用户接线比较方便,编程也相对简单。内部I2C总线传输时钟信号与数据信号,保证系统稳定性。 Pin1 连接3-5V供电电源 Pin2 是I2C总线的时钟引脚 Pin3 是I2C总线的数据端 Pin4 连接到BH1750的I2C设备地址端 Pin5 接地 (1)检测的数据范围很广,可以从1监测到65535lux光照强度 (2)电压范围较宽,3-5V电压均可以 (3)误差控制在±20%范围内,误差较小 (4)可以直接输出测得的数字量 (5)内部I2C总线上有时钟信号和数据信号,必须同时具备一定条件才能保证数据信号传输,保证信号稳定。
3.2. GY-30数据格式及读写命令
在“连续高分辨率”模式下,初始化时,主机会先向从机通过I2C总线发送一个起始信号,主机会向GY-30发送0x46即0100011的地址信号以及一个0的写信号,从机接收到之后会像主机发送一个应答信号表示已经接收到,主机收到应答后,会再向GY-30发送00010000的内部寄存器地址,GY-30接收到之后,会向主机发送一个应答信号,主机收到之后,会发一个停止指令,表示已经写操作完成。 在进行读取数据操作时,主机会先通过I2C总线向GY-30发送一个开始信号,然后接着就会向从机GY-30发送0x47即0100011的地址信号以及一个1的写指令的八位信号,发送完成后,GY-30会向从机发送一个应答信号,然后会采取高位先出的模式,先将高八位的数据到寄存器,STM32主机接收到数据后,会向GY-30发送一个应答信号表示已经接收到数据,GY-30收到应答信号后,会再向主机发送低八位的数据信号,发送完成后,主机会发送一个应答信号,也可以不发应答信号,直接发送一个终止信号,表示已经读取完成。
3.3 光照数据读取
(1)GY-30SCL时钟线接到PB6,SDA数据线接到PB7,ADDR地址线接到GND (2)我们需要用到的函数: Light_Init();对光照模块进行初始化 bh_data_send();括号里填的就是.h文件里所定义的宏,根据具体情况填写,t通过I2C通讯协议给光照模块发数据; bh_data_read();读取光照传感器的数据,会返回一个16位的数据。 想提高分辨率,可以将“bh_data_send(BHModeL)”的BHModeL换成其他宏定义,宏定义如下: BHModeH1 高分辨率 单位1lx 测量时间120ms BHModeH2 高分辨率模式2 单位0.5lx 测量时间120ms BHModeL 低分辨率 单位4lx 测量时间16m
4. LCD显示
4.1 LCD显示屏介绍
液晶显示器,简称 LCD(Liquid Crystal Display),相对于上一代 CRT 显示器(阴极射线 管显示器),LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成 为了现在的主流电子显示设备,其中包括电视、电脑显示器、手机屏幕及各种嵌入式设备 的显示器。 液晶本身是不发光的,所以需要有一个背光灯提供光源,光线经过一系列处理过 程才到输出,所以输出的光线强度是要比光源的强度低很多的,比较浪费能源(当然,比 CRT 显示器还是节能多了)。而且这些处理过程会导致显示方向比较窄,也就是它的视角较 小,从侧面看屏幕会看不清它的显示内容。另外,输出的色彩变换时,液晶分子转动也需 要消耗一定的时间,导致屏幕的响应速度低。
4.2. LCD基本参数
(1) 像素 像素是组成图像的最基本单元要素,显示器的像素指它成像最小的点,即前面讲解液 晶原理中提到的一个显示单元。 (2) 分辨率 一些嵌入式设备的显示器常常以“行像素值 x 列像素值”表示屏幕的分辨率。如分辨 率 800x480 表示该显示器的每一行有 800 个像素点,每一列有 480 个像素点,也可理 解为有 800 列,480 行。 (3) 色彩深度 色彩深度指显示器的每个像素点能表示多少种颜色,一般用“位”(bit)来表示。如单 色屏的每个像素点能表示亮或灭两种状态(即实际上能显示 2 种颜色),用 1 个数据位就可以表示像素点的所有状态,所以它的色彩深度为 1bit,其它常见的显示屏色深为 16bit、24bit。 (4) 显示器尺寸 显示器的大小一般以英寸表示,如 5 英寸、21 英寸、24 英寸等,这个长度是指屏幕对 角线的长度, 通过显示器的对角线长度及长宽比可确定显示器的实际长宽尺寸。 (5) 点距 点距指两个相邻像素点之间的距离,它会影响画质的细腻度及观看距离,相同尺寸的 屏幕,若分辨率越高,则点距越小,画质越细腻。如现在有些手机的屏幕分辨率比电 脑显示器的还大,这是手机屏幕点距小的原因;LED 点阵显示屏的点距一般都比较大, 所以适合远距离观看。
4.3 LCD屏显示
void ILI9341_Init ( void );
void ILI9341_Rst ( void );
void ILI9341_GramScan ( uint8_t ucOtion );
void ILI9341_Clear ( uint16_t usX, uint16_t usY, uint16_t usWidth, uint16_t usHeight );
void ILI9341_SetPointPixel ( uint16_t usX, uint16_t usY );
void FillRectangle ( uint16_t usX_Start, uint16_t usY_Start, uint16_t usWidth,
uint16_t usHeight, uint16_t color );
void LCD_DisplayChar(uint16_t x,uint16_t y,uint8_t word,uint8_t size);
void LCD_otherchar(uint16_t x,uint16_t y);
void LCD_DisplayString(uint16_t x,uint16_t y,uint8_t size,uint8_t *p);
void LCD_DisplayZhiNeng(uint16_t x,uint16_t y);
void LCD_DisplayStor(uint16_t x,uint16_t y);
void LCD_DisplayTemp(uint16_t x,uint16_t y);
void LCD_DisplayHum(uint16_t x,uint16_t y);
void LCD_DisplayIlim(uint16_t x,uint16_t y);
void Picture_Draw_Temp(uint16_t S_x,uint16_t S_y);
void Picture_Draw_Hum(uint16_t S_x,uint16_t S_y);
void Picture_Draw_Ilim(uint16_t S_x,uint16_t S_y);
void Picture_Draw_Stor(uint16_t S_x,uint16_t S_y);
5. WiFi数据上传
5.1 WiFi模块介绍
- ESP8266WiFi模块介绍
ESP8266是由乐鑫公司出品的一款物联网芯片,因为价格较低,性能稳定等收到很大关注。该芯片可工作于三种种模式下,分别是:AP模式,station模式以及混合模式,通过常用的AT指令进行控制。自芯片面世以来发行过多种型号。单单我用过的就有ESP8266-01,ESP8266-12F,ESP8266-12E这三种。当然,我没接触到过的型号还有很多。在使用这三种芯片时均是使其工作在AP模式下。所以,就拿这三个型号说一下ESP8266在AP模式下的配置吧(AP模式下通信协议为TCP,也就是说AP模式下的ESP8266相当于一个TCP服务器)。 ATK-ESP8266 模块采用串口(LVTTL)与 MCU(或其他串口设备)通信,内置 TCP/IP协议栈,能够实现串口与 WIFI 之间的转换。通过 ATK-ESP8266 模块,传统的串口设备只是需要简单的串口配置,即可通过网络(WIFI)传输自己的数据。 - ESP8266三种工作模式
- ATK_ESP8266模块支持STA/AP/STA+AP三种工作模式
1 STA 模式:ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。 2 AP 模式:默认模式ATK_ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制。 3 STA+AP模式:两种模式的共存模式,(STA模式)可以通过路由器连接到互联网,并通过互联网控制设备;(AP模式)也可以作为wifi热点,其他wifi设备连接到模块。这样实现局域网和广域网的无缝切换,方便操作。 在ESP8266模块与其他设备进行通讯时,最基本的就是AT指令集,形如:AT+,通过这些AT指令字符串,ESP8266模块就明白执行那些操作,
5.2 数据上传
void ESP8266_Init ( void );
void ESP8266_Rst ( void );
bool ESP8266_Cmd ( char * cmd, char * reply1, char * reply2, u32 waittime );
void ESP8266_AT_Test ( void );
bool ESP8266_Net_Mode_Choose ( ENUM_Net_ModeTypeDef enumMode );
bool ESP8266_JoinAP ( char * pSSID, char * pPassWord );
bool ESP8266_BuildAP ( char * pSSID, char * pPassWord, ENUM_AP_PsdMode_TypeDef enunPsdMode );
bool ESP8266_Enable_MultipleId ( FunctionalState enumEnUnvarnishTx );
bool ESP8266_Link_Server ( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id);
bool ESP8266_StartOrShutServer ( FunctionalState enumMode, char * pPortNum, char * pTimeOver );
uint8_t ESP8266_Get_LinkStatus ( void );
uint8_t ESP8266_Get_IdLinkStatus ( void );
uint8_t ESP8266_Inquire_ApIp ( char * pApIp, uint8_t ucArrayLength );
bool ESP8266_UnvarnishSend ( void );配置WF-ESP8266模块进入透传发送
void ESP8266_ExitUnvarnishSend ( void );配置WF-ESP8266模块退出透传模式
bool ESP8266_SendString ( FunctionalState enumEnUnvarnishTx, char * pStr, u32 ulStrLength, ENUM_ID_NO_TypeDef ucId );
char * ESP8266_ReceiveString ( FunctionalState enumEnUnvarnishTx );
5.3 传输流程
总结
这里面好多内容都是和上一篇重复的,只是换个表达方式罢了。要实现的功能有的是一样的,不过是换个方法来实现相应的功能。
|