中级会员
- 积分
- 204
- 金钱
- 204
- 注册时间
- 2016-5-29
- 在线时间
- 44 小时
|
这里只是一个手机+ESP8266+STM32F407虚拟扫描枪的方法,仅供娱乐,不提供技术支持,需要有大量相关基础,.如果出现软硬件故障,本人概不负责..行动前三思.仅供娱乐!自己试过,稳定性太差,成本也高,app+esp8266有时候用来调试下条形码还是不错的.
实现原理:
手机上安装一个app:app的功能是调用摄像头拍摄条形码,二维码并处理转化成字符串,在连接到ESP8266的情况下向192.168.4.1:8266发送数据;
ESP8266开AP服务模式自己IP 192.168.4.1,监听8266端口,将收到的数据通过串口以115200bps的速率发送出去;
STM32F407将串口3接收到的数据(波特率115200)在虚拟成HID键盘鼠标的情况下操作电脑.
从而实现将二维码输入到电脑的方式.
app端:
手机连接到无线网络ESP-ap选择目标的ip 192.168.4.1和端口8266.(当然可以先连接到电脑的无线路由,然后用tcp/ip工具测试app是否能正常工作,输出字符串.)
(揉和了别人的二维码Zxing例子和tcp socket例子,现在连作者都忘了,实在抱歉.点 "连接\断开" 按钮会切换状态,但是是个假状态,实际情况未知,可以点"发送"按钮来发送字符串测试是否连接.点"扫描"按钮来进入扫描界面,自己不会Android,不会设计开闪光灯.有时候识别的很快,有时候又炒鸡慢.扫描成功后会返回解码后的字符串.有需要我再上传app源码)(扫描完成的字符串末尾加了"\r\n")
ESP8266端:
ESP8266烧录eagle.flash.bin到0x00000, eagle.irom0text.bin到0x40000,烧录方法参考esp8266官方文档.通电后自动建立ESP-ap的无线信号,开启severce服务并监听8266端口输入12345678密码连接.按照例程瞎改的TCP连接,很简单的几行代码,(好像esp8266好多东西都被封装了,不知道有没有dma).实测华为荣耀5x可以连接,但是Lenovo a750手机连不上这个固件.以纯工作室的app+固件,用原子esp8266例程的at固件+stm32f4却可以连接.(纯粹的无线ap转串口,用eclipse+cygwin编译的,有需求的话,我也可以上传代码,真的不值得看,最多只能改ap名,密码,波特率而已,我也很无辜啊)
至此就可以用usb转串口在PC端用串口调试工具收到信号了.由于固件问题:固件上电有乱码,检测到有设备加入/离开 ap主机会输出 设备加入/离开的信息.
USB端:
STM32F407 串口转键盘鼠标,我用的是stm32f407-discovery的开发板,和原子的板子不一样,很多管脚不一样,不能直接编译下载,需要屏蔽大量无用的函数.程序揉和了原子的stm32f4的usb hid的键盘鼠标程序,esp8266+stm32f4读取串口3的代码,其他自己外设的程序(如st 的lis302加速度计控制鼠标,最好屏蔽掉鼠标的上传HID数据包).用的时候在初始化上屏蔽大量无用的初始化代码,主程序屏蔽无用的状态机.程序在使用串口2的PA2和PA3作调试输出和输入.(一定要先看好管脚,配置好输入输出再下载程序,我主芯片现在发热厉害,估计受了内伤.)(PA0可以做一下测试按键,字符串通过usage ID转键盘后(大写会加shift,符号复用也会,但ctrl,alt==没加,用不上),自动加了"40"(回车键),"0"(按键全释放),)(纯粹的虚拟usb键盘,我也不知道扫描枪的具体HID怎么写,就这么糊弄一下吧)
当然,用南京沁恒的WCH的串口转USB键盘可以省掉这个设备,芯片好像就1-2块钱.不知道波特率是多少.
如果手头没有条码枪的同学,有兴趣的可以来测试一下.欢迎提出各种建议.
|
|