zyzand 发表于 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:}


老胖熊 发表于 2014-8-29 11:19:06

很好,赞一个。
其实,pro mini内存不小了,就是arduino的库太占地了,有点蛋疼。

沧海笑1122 发表于 2014-8-29 12:11:20

:)继续坚持,前途未可限量。

老胖熊 发表于 2014-8-29 12:40:31

确实不够用,我觉得是arduino的库占用了太多的空间,所以不够了。oled的库启示也挺占地方,我自己阉割了库,能省1k多,还可以继续割。

wing 发表于 2014-8-29 12:43:34

神马学校不能带手机啊?
隔壁五岁的小女孩上幼儿园都带着手机呢

zyzand 发表于 2014-8-29 12:47:32

本帖最后由 zyzand 于 2014-8-29 12:51 编辑

老胖熊 发表于 2014-8-29 12:40 static/image/common/back.gif
确实不够用,我觉得是arduino的库占用了太多的空间,所以不够了。oled的库启示也挺占地方,我自己阉割了库, ...

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

zoologist 发表于 2014-8-29 12:57:13

小朋友好厉害,继续加油啊!!

老胖熊 发表于 2014-8-29 14:52:28

zyzand 发表于 2014-8-29 12:47 static/image/common/back.gif
可否分享一下你的OLED库?把什么割下去了?能否说明一下它的初始化界面在哪设置?

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

老胖熊 发表于 2014-8-29 15:16:18

zyzand 发表于 2014-8-29 12:47 static/image/common/back.gif
可否分享一下你的OLED库?把什么割下去了?能否说明一下它的初始化界面在哪设置?

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

static uint8_t buffer = {
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的,
你好幸福啊!
页: [1]
查看完整版本: 开学啦,做了个手机,呃,或者说是个闹钟