极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16542|回复: 9

开学啦,做了个手机,呃,或者说是个闹钟

[复制链接]
发表于 2014-8-29 10:47:09 | 显示全部楼层 |阅读模式
本帖最后由 zyzand 于 2014-8-29 12:42 编辑

本人初中毕业生一个,明天就要上高一,听说高中还是不让带手机(虽然还是有好多带的),所以突发奇想,为何不用Arduino做一个呢?于是......
思路非常简单,但还是遇到了好多问题,谢谢各位热心网友的帮助。由于时间不多了,还要准备一些住校的东西,所以本帖只是展示思路,不能提供教程!有兴趣的朋友可以自己做一个。非常抱歉{:soso_e149:}
一星期左右的成果如下:

表:


面包板上的:



用到的GSM模块:SIM900A


成果:

电话中...



时间状态



特写



背面



效果



按键板



按键板背面



安上按键板



打开电池盖



打电话



打电话2



现在表的里面已经是乱七八糟,不便于拆开,拆开后就安不上了。

后面的灯光按键是复位(为什么呢?因为有时会死机{:soso_e110:} )
闹铃开关是总电源。关闭时只有时钟模块运行,几乎不耗电
打电话或接电话要用按键板(可以藏到电池盖里)

供电用的手机电池,通过电池盖下面的线可以充电和升级。
CPU用的Arduino pro mini,内存太小了,所已发短信的功能装不下了{:soso_e109:}
显示屏用的0.96寸的OLED,i2c通信,与时钟级联(OLED的库很大,会用掉60%的内存,所以不建议使用)

明天,也就是2014年的8月30号,是个伟大日子——我正式成为一名高中生啦{:soso_e104:}
各位大仙,三年之后见!{:soso_e139:}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-8-29 11:19:06 | 显示全部楼层
很好,赞一个。
其实,pro mini内存不小了,就是arduino的库太占地了,有点蛋疼。
回复 支持 反对

使用道具 举报

发表于 2014-8-29 12:11:20 | 显示全部楼层
继续坚持,前途未可限量。
回复 支持 反对

使用道具 举报

发表于 2014-8-29 12:40:31 | 显示全部楼层
确实不够用,我觉得是arduino的库占用了太多的空间,所以不够了。oled的库启示也挺占地方,我自己阉割了库,能省1k多,还可以继续割。
回复 支持 反对

使用道具 举报

发表于 2014-8-29 12:43:34 | 显示全部楼层
神马学校不能带手机啊?
隔壁五岁的小女孩上幼儿园都带着手机呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 12:47:32 | 显示全部楼层
本帖最后由 zyzand 于 2014-8-29 12:51 编辑
老胖熊 发表于 2014-8-29 12:40
确实不够用,我觉得是arduino的库占用了太多的空间,所以不够了。oled的库启示也挺占地方,我自己阉割了库, ...


可否分享一下你的OLED库?把什么割下去了?能否说明一下它的初始化界面在哪设置?
回复 支持 反对

使用道具 举报

发表于 2014-8-29 12:57:13 | 显示全部楼层
小朋友好厉害,继续加油啊!!
回复 支持 反对

使用道具 举报

发表于 2014-8-29 14:52:28 | 显示全部楼层
zyzand 发表于 2014-8-29 12:47
可否分享一下你的OLED库?把什么割下去了?能否说明一下它的初始化界面在哪设置?

你用的i2c,我用的spi,所以不好直接分享。思路在下面。
首先,把初始化图片割了,这个就1k,然后裁减了一些函数,不需要的基本都干掉,自己加了中文字符表和显示函数,英文字符表切了一部分,还可以继续切。
我没研究它的初始化和操作过程,得好好看看手册才行。其实如果把这些弄明白,完全可以抛开库,在程序里直接操作。那样才能作到最小化,不过就不是arduino的风格了。
回复 支持 反对

使用道具 举报

发表于 2014-8-29 15:16:18 | 显示全部楼层
zyzand 发表于 2014-8-29 12:47
可否分享一下你的OLED库?把什么割下去了?能否说明一下它的初始化界面在哪设置?

初始化界面是一张图片,12864的屏要占1k内存,在库文件的开头,不知道你用的哪个库,我用的是Adafruit_SSD1306,引用了Adafruit_GFX。
cpp文件里有这样开头的一段:
// the memory buffer for the LCD

static uint8_t buffer[SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80,
。。。。。。
这里就是那张初始化图片,别的库也类似。如果你想替换你自己的初始化界面,就把你的图片放在这里,当然需要做转换处理,软件有很多,很容易找到。

字符表在GFX,显示中文的代码我也写在GFX里了。

其他模块的库都被我干掉了,只有这个oled的,看起来有些复杂,我还没搞明白,所以只好暂时保留。好像一共省了差不多3k吧,原来程序编译完是23多少,现在是20多少。
回复 支持 反对

使用道具 举报

发表于 2014-8-29 15:39:37 | 显示全部楼层
楼主好屌啊!初中就玩arduino了,我们这些大学的学长,12年上了大一才接触到arduino的,
你好幸福啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 21:46 , Processed in 0.067095 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表