你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Smarty手表 - Arduino Smartwatch

[复制链接]
点点&木木 发布时间:2019-1-28 20:48
黑客智能手环使用Arduino IDE。
1.jpg
硬件组件
STM32 debuger  ×        1      
智能手表  ×         1      
介绍
经过一番挣扎,我能够唤醒手表。它已经完全死了,但当我取出电池时,我可以看到Raspberry调试器并加载新固件。
2.jpg
Arduino编程
首先我发现可以从Arduino编程。
Roger Clark 有很好的教程如何让Arduino工作,并且有一个如何获得便宜的USB程序员调试器:Arduino on BLE。我已经从eBay 获得了最低系统开发板,所以我决定尝试一下。STM32F103C8T6ARMSTM32
3.jpg
所以我现在尝试过,但我遇到了问题我无法上传样本。
4.jpg
调试器已安装:
5.jpg
一切似乎都可以:
6.jpg
有人建议我需要在注册表中更改ID,但我没有这样做。
7.jpg
所以我用Raspberry手表装载了Arduino样品,以检查我是否在正确的轨道上。并且nRF接受了闪存:
8.jpg
我没时间测试它,因为它是星期四,我需要赶到我的Maker Space radiona.org。
我只是浏览了一下,在一些图片中我看到,当使用类似的调试器进行编程时,他们不使用在板上命名的SWD引脚,他们使用了引脚A4和A5,这就是宾果游戏。我现在能够从Arduino上传样本。
9.jpg
但是使用Arduino的样本不起作用我无法在P0_07上闪烁(在该引脚上有一个振动电机)所以它应该在HIGH时振动。
我已经搜索了如何测试它是否正常工作并找到了ARM®mbed ™物联网设备平台,所以我决定尝试一下:https ://developer.mbed.org/
10.jpg
我很容易在MBED中开始编程,我只是选择了一些加载的北欧板并写了一个闪烁的led,这很有用。引脚P0_04上的按钮也可以工作。
OLED
接下来是让OLED工作。我搜索了MBED库并在此处找到了这个:https ://developer.mbed.org/users/synvox/code/SFE_MicroOLED/
我测试了它,LCD屏幕上只有垃圾醒来。然后我联系了图书馆的作者Nenad,帮助我在屏幕上获取内容。以下是他的回答:
“你好Goran,首先你必须确保你的OLED SSD1306控制器配置为SPI接口。我的改编库仅支持SPI,因此不适用于为I2C配置的OLED。
其次,你会想改变LCDWIDTH ,并LCDHEIGHT在SFE_MicroOLED.h您的实际OLED的尺寸。如果是64 x 32,则必须将其设置为。您也可以尝试更改LCDCOLUMNOFFSET为不同于32的值。通常在具有SSD1306控制器且宽度小于128像素的OLED上,实际像素排列在SSD1306内存宽度的中间。因此,宽度为64像素的OLED通常在控制器存储器中以32的偏移进行映射。但是对于您的特定OLED可能会有所不同,因此您可以尝试偏移0或8的任意倍数。
第三,您应该将init序列调整SFE_MicroOLED.cpp为您的OLED值。我从你附加的数据表中看到的,有些值是不同的:command(SETMULTIPLEX,0x2F) 应该是1F而不是2F(因为你的高度是32而不是48像素)。command(SETCOMPINS,0x12)应该是00或02而不​​是12. command(SETCONTRAST,0x8F)根据你的数据表是4F而不是8F,但我怀疑这会导致问题。command(SETPRECHARGE,0xF1)根据你的数据表是1F而不是F1。我不确定这是重要的,甚至可能是数据表中的错字。
OLED的数据表在这里:http ://microco.sm/out/cEAZg
经过一些改变后,我能够在屏幕上获得Hello world。
加速度计
因此,真正实现Smarty的下一步是让加速度计工作。
但是没有用,我试过I2C扫描器来检查我是否使用错误的I2C地址,但这也不起作用。然后我读取所有连接到加速度计的引脚。
//P0_16SCL     — default HIGH probably pull up //P0_15 SDO/ADR — default HIGH probably pull up//P0_14 SDI/SDA — default HIGH probably pull up //P0_13 Trigger — default LOW //P0_12 INT1    — default LOW //P0_11INT2    — default HIGH probably pull up //P0_10nCS     — default HIGH probably pull up — from datasheet is this pin is high I2C is enabled so this is ok // The Slave  Address associated  with  the KX022 is 0011111X, // where  the  programmable  bit,  X,  is  determinedby  the  assignment  of ADDR (pin 1) to GND or IO_Vdd. // So in this case we have adress 0011111 // 1Fh 3Fh 00111111
但没有任何效果。
所以我向Roger报告,他向我指出了nRF的一些I2C问题。它可能是I2C扫描器无法工作,因为我认为它使用了一些技巧。但是我发现这链接到了这个。所以也许你可以尝试那些代码,即使你必须使用mbed。
我试过,从加速度计及其地址得到响应。它使用了一些与I2C不兼容的线程库,我无法轻松地使原始KX022库工作。
所以我只是测试了寄存器并得到了响应,然后我决定在主文件中逐行写入,我得到了MBED中加速度计X轴的响应。
11.jpg
正在进行的工作
当我与MBED合作时,Roger致力于修复Arduino以接受所有引脚,并改变适合Smarty的引脚排列。他建议我们打开聊天室,以便其他人可以加入,所以我这样做了。聊天:https ://gitter.im/nRF51822-Arduino-Mbed-smart-watch/Lobby
Roger使用Smarty pinout创建了存储库:https ://github.com/rogerclarkmelbourne/Arduino_nrf51822
在我的手表上我打破了引脚18所以现在我使用引脚17作为TX引脚,你可以改变它
ble-nrf51822-master\RBL_nRF51822\variants\Smartwatch\pins_arduino.h
将一些代码从MBED移植到Arduino很容易,所以现在我们都在MBED上工作了。OLED仍然不能很好地工作。屏幕上还有一些垃圾,加速度计没有库,它都在主.ino文件中。它不使用智能的东西,如轻敲双击翻转中断。加速度计可以唤醒nRF以节省电池寿命等。
我已经在git上推了一些样本,你可以在Smartwatch示例中检查和修复。
12.jpg
要做的想法
Flash旧手机(三星Galaxy Fame)到可以做BLE的固件 - 在CM12.1上完成我可以用手链连接
增加脉冲传感器或肌肉传感器等传感器
癫痫发作检测
在威胁呼叫或发送短信
盲目私下读短信
Troll其他手链配Smarty手链
一条手镯来统治它们
代码---- Arduino_nrf51822-master.zip (4.15 MB, 下载次数: 1)
收藏 评论0 发布时间:2019-1-28 20:48

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版