主页 > 程序人生 > 趣味玩意,用Arduino开发板做CPU监视器

趣味玩意,用Arduino开发板做CPU监视器

Arduino是什么?
不知道自己google去,简单的说就是一个给我这种嵌入式完全不懂的文盲来做机器人之流的电子小玩意的平台,开发很简单,就是类似与c语言的语法,上手极快,关键是还可以通过一定的手段和Andriod联动。
好吧,这次和Andriod无关,只是我突发奇想罢了。我一直希望有个小屏幕可以监视我的系统状态,比如CPU占用,内存占用等等。可惜最便宜的usb屏幕也要1000多块,太贵了,不实惠,于是就萌发用Arduino自己做一个。
设备很简单,就是一块Arduino的板子,一块LCD1602屏幕,一台MAC。我就只做了一个简单的CPU占用的东西,如图:

IMG_9191

先说说我的思路吧,首先从Mac上通过一个程序读取到CPU占用率,然后通过串口发送到板子上,板子上缓冲一下,再输出到LCD屏幕。流程非常简单。不过问题还是蛮多。
首先,怎么读取CPU占用率?
我先是打算用Cocoa的系统函数来调用,查了半天Mac的资料后果断放弃,太复杂了,而且我Object-c又不是很熟悉。之后的想法是打算利用shell程序来完成,通过C和shell中的top命令交互来实现。这里有个小插曲,因为Linux下面其实读取这些可以直接去/proc/这个虚拟目录下读取,但是Mac这类系统是没有这个虚拟目录的,所以只能用top,而且Mac的top函数的参数又和Linux之类的GNU的top不同。总之折腾了很久,才有了下面这句销魂的shell命令

1
$ top -n0 -l1

啥意思?很简单,就是不要显示进程,top执行一次就自动退出,就那么简单。至于为什么可以达到这样的效果,请有mac或者别的BSD系统的同学man top一下就好。
有了这个就方便的多了,c语言部分去掉串口通讯的就只很简单的一部分了,就是调用shell函数,返回,字符串处理,这几个问题。串口通讯的代码早就很熟悉了,最近一直开发这种东西(其实python下面串口通讯会简单的多,不过我比较熟悉C,所以还是选择了C)
关键代码如下:

1
2
3
4
FILE *fp;
char a[256];
fp=popen("top -n0 -l1","r");
fgets(a,sizeof(a),fp)

之后的过程势如破竹,Arduino平台上的更加容易,就是简单的读写罢了。直接上代码就好:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27,16,2);
byte line = 0;               // track which line of the display we are on
 
void setup(){
    // set up the LCD's number of columns and rows: 
    lcd.init();
    lcd.backlight();
  // initialize the serial communications:
  Serial.begin(9600);
     lcd.setCursor(0,0);
   lcd.clear();
 
}
 
void loop()
{
 char input; 
  while(Serial.available() > 0) {
    input = Serial.read();
    switch(input) {
      case 0:                   // line feed
        lcd.clear();
        break;
      default:
         if(input>31)
          lcd.print(input);       
    }
  }
 
}

最后再上一个图~哈:

IMG_9194

相关日志

, , , , ,

评论:7

参与评论
  1. 回复 Eric
    10/12/27

    这个貌似有点像C开发简单的单片机模型

    • 回复 混沌的云
      10/12/27

      是的,的确是用C开发的,Arduino,很有名的~

  2. 回复 木水
    10/12/28

    你的1602用哪种方式接线?貌似没有多少根,图片有点暗看不清。

  3. 回复 木水
    10/12/28

    呵呵,看到了,I2C。

  4. 回复 physiotherapy jobs
    11/01/22

    Beneficial info and excellent design you got here! I want to thank you for sharing your ideas and putting the time into the stuff you publish! Great work!

  5. 回复 veterinary technician
    11/01/25

    Thanks for an idea, you sparked at thought from a angle I hadn’t given thoguht to yet. Now lets see if I can do something with it.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:7

下面所列的是引用到本博客的链接
趣味玩意,用Arduino开发板做CPU监视器 来自 混沌的云
pingback 来自 Tweets that mention 趣味玩意,用Arduino开发板做CPU监视器: Arduino是什么? 不知道自己google去,简单的说就是一个给我这种嵌入式完全不懂的文盲来做机器人之流的电子小玩意的平台,开发很简单, 2010/12/28

[...] This post was mentioned on Twitter by Vincent Soul, Arbalest Knight. Arbalest Knight said: 趣味玩意,用Arduino开发板做CPU监视器: Arduino是什么? 不知道自己google去,简单的说就是一个给我这种嵌入式完全不懂的文盲来做机器人之流的电子小玩意的平台,开发很简单,就是类似与c语言的语法,上手极快… http://bit.ly/eeveLa [...]

pingback 来自 TearDrop:纸上运算的世界 - 爱范儿 · Beats of Bits - 发现创新价值的科技媒体 2011/12/29

[...] Arduino。Arduino 可以制作很多用途不同的电子小玩意,比如 CPU 监视器。假如通过 Arduino 制作了一个机器人,那么通过一个安装了 Amarino [...]

pingback 来自 TearDrop:纸上运算的世界 « 清泉石上流 2011/12/29

[...] Arduino。Arduino 可以制作很多用途不同的电子小玩意,比如 CPU 监视器。假如通过 Arduino 制作了一个机器人,那么通过一个安装了 Amarino [...]

pingback 来自 TearDrop:纸上运算的世界 | 生活感悟--每天都有新发现 2011/12/29

[...] Arduino。Arduino 可以制作很多用途不同的电子小玩意,比如 CPU 监视器。假如通过 Arduino 制作了一个机器人,那么通过一个安装了 Amarino [...]

pingback 来自 TearDrop:纸上运算的世界 - 皓月星辉 2011/12/30

[...] Arduino。Arduino 可以制作很多用途不同的电子小玩意,比如 CPU 监视器。假如通过 Arduino 制作了一个机器人,那么通过一个安装了 Amarino [...]

pingback 来自 TearDrop:纸上运算的世界 | IT & 数码 2011/12/30

[...] Arduino。Arduino 可以制作很多用途不同的电子小玩意,比如 CPU 监视器。假如通过 Arduino 制作了一个机器人,那么通过一个安装了 Amarino [...]

pingback 来自 Google Reader Share: TearDrop:纸上运算的世界 « Kailai's Lifestream 2011/12/30

[...] Arduino。Arduino 可以制作很多用途不同的电子小玩意,比如 CPU 监视器。假如通过 Arduino 制作了一个机器人,那么通过一个安装了 Amarino [...]

顶部