查看: 14514|回复: 20

[原创] 将树莓派变身成为微博Robot,你只需要简单的几步

  [复制链接]
  • TA的每日心情

    2021-4-23 14:54
  • 签到天数: 489 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-4-8 10:47:12 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 xinxincaijq 于 2013-4-8 10:50 编辑

    先挖个坑,慢慢填教程吧,放出我的微博http://weibo.com/u/2769230764
    ID:萝卜he芭蕉,欢迎大家来关注

    第一步,你得有一个树莓派

    第二部,先上照片
    y_CxpXmvz8isQURGl8-O5ufyZh9WUCfxB2gyACssv1RABgAAqwQAAEpQ_480x358.jpg

    温度传感器用的是DS18B20,由于树莓派是工作在linux下,所以无法直接使用C来做驱动,因此我使用的是国外大牛做好的驱动,直接编译进内核
    具体方式,进入命令行(通过ssh或者直接连显示器)
    输入如下命令
    sudo wget http://www.frank-buss.de/raspberrypi/kernel-rpi-w1.tgz
    sudo tar -xzf kernel-rpi-w1.tgz
    sudo rm -f kernel-rpi-w1.tgz
    sudo cd /lib/modules
    sudo wget http://www.frank-buss.de/raspberrypi/modules-rpi-w1.tgz
    sudo tar -xzf modules-rpi-w1.tgz
    sudo rm -f modules-rpi-w1.tgz
    sudo sync
    sudo reboot

    然后等待机器重启重新加载1-wire设备的驱动,也就是给18b20的驱动。

    重启完成之后,按图所示连接18B20和树莓派
    SCe-ZqjIdJeTog3r28g8Ji5COD9U1lS3vnoHAB13aIvdAwAAYAIAAEpQ_480x295.jpg
    接下来,在命令行输入
    sudo modprobe w1-gpio
    sudo modprobe w1-therm
    (以上两条命令需要在/etc/rc.loca这个启动脚本里添加,添加的时候去掉sudo,这样可以不用每次启动都要手动加载w1模块了)
    ls /sys/bus/w1/devices/w1\ bus\ master
    会显示
    hPLofGpZFqcQaej6YwxsSZap7U2O0P9VKxPy14mv8Qe1AgAAgwAAAEpQ_480x90.jpg
    其中28开头的就是28b20设备了

    读取温度则用如下命令
    cat /sys/bus/w1/devices/w1\ bus\ master /28-*/w1_slave
    GLfFk_sACOeVzCsVLtDttXlNTODv6-rWY8Ps3X-hW0NlAgAARgAAAEpQ_480x54.jpg
    t的值就是温度,除以1000就是摄氏度


    再接下来就是程序部分了,树莓派是运行在linux下的,同时又带有python的解释器.于是我打算写一个python脚本来登录新浪微博,然后发表状态.网上搜了一圈,对于python实在是无力,看到别人用新浪微博python SDK做的脚本,就是不知道怎么移植过来.万般无奈之下,用了一个别人写的模拟登陆新浪微博的脚本,只修改了里面的账户和密码,当然改成我自己的了,发现居然可以登录.运行脚本,显示 Login success!(晚上公司的路由的动态DNS又挂了,家里没法连上树莓的FTP,脚本文件暂时明天上传)

    既然能登陆上去,我就可以干别的事了,比如发个状态.

    这里必须要先提到一点,新浪微博的开放平台是一个提供各种接口给各种各样的应用访问微博的地方.我们需要申请一个应用用来获得一个Access Token,这里我选择申请的移动应用开发
    3BXq8v983Df-NpMPyodM07KhpT5gUYibzuRJtfBe-gDvAwAA6wAAAEpQ_480x112.jpg

    aPuGZoKsNz_DFhTN8pgaxHABsfD_qMHT7wBsqxhYx-7OAwAA1wAAAEpQ_480x105.jpg

    然后就是各种填表格申请,完成之后就会有一个access token,但是此时这个access token只是一个测试用途的,你需要逐步完善你的应用,通过审核,否者在后面的提交微博请求的时候,就会一直显示"来自未通过审核应用"
    目前我还是这样的
    TxBKIdqXOJGcviPU_9OocO-T2217AgcTNNFTQaJPSV7WAAAAJAAAAEpQ.jpg

    接前面说的,用脚本登陆之后,你需要发微博,这里就要对微博的发状态接口发请求了
    http://open.weibo.com/wiki/2/statuses/update
    这是新浪微博的发状态接口,从API文档里可以看到,access token参数和内容参数status是必须的
    请求参数

    Z2-gb2Z-haUWvFB5aUTUU_ltWBTtK7S9T5XlGaqAN1vMAgAAOAEAAEpQ_480x209.jpg
    因此我构造了一条请求

    通过这个请求我可以把任意的内容(少于140个字)发到我的微博状态上去.
    (代码的百度网盘地址 http://pan.baidu.com/share/link?shareid=553963&uk=3506924485
    下载到树莓派桌面上,按图所示连接好DS18B20即可使用,注意要在moni.py文件中把新浪微博的账号和密码改为自己的)

    然后,我需要获取系统当前时间和读我之前接上的温度传感器的数据.这里有两条python的函数,一个是用来获取系统时间并以格式化输出形式显示出来,一个是在python中执行linux的系统命令并获取返回值.(代码明天粘贴上来)

    当然,温度传感器的数据需要进行一下处理,取最后的几位,进行一下运算,得到一个1位小数的浮点数

    这样,我就可以把时间和温度这两个值,作为status参数通过微博的接口提交到新浪微博了

    但是,这样的的脚本运行一次才提交一次,我想要的是定时运行脚本来发微博,这里需要用到linux下的一个计划任务工具cron,具体的使用方法网上非常非常多,这里我就不赘述了,只贴出我的配置就行(同上,明天粘贴)

    PS:以上代码,完全不需要任何库来支持,将代码中的账号密码和acces token换成自己的,就可以实现登陆和发微博,发的内容可以自己改,没有树莓派和温度传感器的朋友,可以只发个时间,而且可以在其他的python解释器环境下来运行这个脚本.
    (作者注:似乎acces token的作用是用来表示请求来源的身份的,也就是说大家也可以用我找个access token来提交,目前还是会显示未通过申请的应用,但是等我的审核通过了,就会显示我这个应用的申请名称<树莓派_微博小派>)
    最后,祝各位技术宅们在新春长假期间玩的开心!

    最后展示一张效果图

    HE60PvrmdQ5mPFB9Gyb3I64Wy-cF6hsc6mWRFAwfUbrvBAAAyxEAAEpQ_480x1731.jpg


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-1-28 16:20
  • 签到天数: 980 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-4-8 11:07:37 | 显示全部楼层
    厉害                                         
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-4-8 11:11:35 | 显示全部楼层
    用来发微博么?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-4-8 11:12:53 | 显示全部楼层
    高端的产品没玩过
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-4-8 11:13:38 | 显示全部楼层
    这个牛,顶下,哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-4-8 11:55:14 | 显示全部楼层
    你说你用它发微博,@你的人得多纠结呀,一刷全是温度。。哈哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-12-14 11:43
  • 签到天数: 556 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-4-8 12:54:33 | 显示全部楼层
    已经关注         
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-4-23 14:54
  • 签到天数: 489 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-4-8 14:45:15 | 显示全部楼层
    ukonline2000 发表于 2013-4-8 11:55
    你说你用它发微博,@你的人得多纠结呀,一刷全是温度。。哈哈哈

    我用树莓派做了计划任务,设定每个小时发一次
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-4-23 14:54
  • 签到天数: 489 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-4-8 14:45:51 | 显示全部楼层
    ukonline2000 发表于 2013-4-8 11:55
    你说你用它发微博,@你的人得多纠结呀,一刷全是温度。。哈哈哈

    我现在没开了,TF卡送给女朋友了,以前做的全给我格式化掉了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-4-8 15:44:04 | 显示全部楼层
    powerdruy 发表于 2013-4-8 14:45
    我现在没开了,TF卡送给女朋友了,以前做的全给我格式化掉了

    TF卡都送了。。。。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 08:48 , Processed in 0.186910 second(s), 33 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.