|
黑客智能手环使用Arduino IDE。
硬件组件 STM32 debuger × 1 智能手表 × 1 介绍 经过一番挣扎,我能够唤醒手表。它已经完全死了,但当我取出电池时,我可以看到Raspberry调试器并加载新固件。
从Arduino编程 首先我发现可以从Arduino编程。 Roger Clark 有很好的教程如何让Arduino工作,并且有一个如何获得便宜的USB程序员调试器:Arduino on BLE。我已经从eBay 获得了最低系统开发板,所以我决定尝试一下。STM32F103C8T6ARMSTM32
所以我现在尝试过,但我遇到了问题我无法上传样本。
调试器已安装:
一切似乎都可以:
有人建议我需要在注册表中更改ID,但我没有这样做。
所以我用Raspberry手表装载了Arduino样品,以检查我是否在正确的轨道上。并且nRF接受了闪存:
我没时间测试它,因为它是星期四,我需要赶到我的Maker Space radiona.org。 我只是浏览了一下,在一些图片中我看到,当使用类似的调试器进行编程时,他们不使用在板上命名的SWD引脚,他们使用了引脚A4和A5,这就是宾果游戏。我现在能够从Arduino上传样本。
但是使用Arduino的样本不起作用我无法在P0_07上闪烁(在该引脚上有一个振动电机)所以它应该在HIGH时振动。 我已经搜索了如何测试它是否正常工作并找到了ARM®mbed ™物联网设备平台,所以我决定尝试一下:https ://developer.mbed.org/
我很容易在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轴的响应。
正在进行的工作 当我与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示例中检查和修复。
要做的想法 Flash旧手机(三星Galaxy Fame)到可以做BLE的固件 - 在CM12.1上完成我可以用手链连接 增加脉冲传感器或肌肉传感器等传感器 癫痫发作检测 在威胁呼叫或发送短信 盲目私下读短信 Troll其他手链配Smarty手链 一条手镯来统治它们 代码----
Arduino_nrf51822-master.zip
(4.15 MB, 下载次数: 1)
|
微信公众号
手机版