分类: 智能硬件 & IOT

  • Arduino + 网络扩展板 制作NTP网络时钟

    时效性提醒:本文首次编写发布于10 年前。

    使用Arduino+网络扩展板和一个lcd1602来制作,每20s使用NTP同步一次时间,所以绝对无误差,不过必须要在又网络的地方才能用。

    首先会尝试使用DHCP来自动获取ip,如果失败则使用静态ip。

    点击查看大图

    (更多…)

  • 树莓派设置共享有线网络(软路由,NAT)

    时效性提醒:本文首次编写发布于10 年前。

    树莓派一直插着一个小无线网卡用,有线网口也就空了出来,正好树莓派附近有一台台式机,离路由器比较远,故用树莓派设置有线网络共享,也就是在树莓派上设置一个软路由,使那台电脑可以用网线接到树莓派上,然后通过树莓派的无线网卡上网。

     

    因为我把树莓派的图形界面咔嚓掉了,所以一下操作都使用纯命令的方式操作。由于只是使电脑能上网就可以了,所以我简单粗暴的直接都用静态ip。

    首先,先给树莓派的有线网卡设置一个ip,这个随便,只要是私有地址而且跟已有地址不冲突就可以了。我用了10.2.3.0/24这个网段。并把树莓派设置为10.2.3.1,树莓派在这个网段中作为网关。

    树莓派上执行:

    sudo ifconfig eth0 10.2.3.1 netmask 255.255.255.0

    然后在那台电脑上设置,电脑的ip为10.2.3.100,并把网关设置为树莓派的ip。(我的那台电脑也是linux)

    电脑上执行:

    sudo ifconfig etho 10.2.3.100 netmask 255.255.255.0
    sudo route add -net default netmask 255.255.255.0 gw 10.2.3.1

    这样,一个小小的局域网就建立了,但此时电脑仅能在这个小局域网里玩,要想访问外网,还需用在树莓派上设置nat。

    树莓派上执行:

    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    sudo iptables -t nat -A POSTROUTING -s 10.2.3.0/24 -o wlan0 -j SNAT --to 192.168.1.107

    然后再在电脑上设置一下DNS,编辑/etc/resolv.conf即可

    至此,完成。若想不必每次重启后都要执行这些命令,可以把他们分别加入各自的/etc/rc.local中(sudo去掉)

     

  • Raspberry Pi 2 功耗实测

    时效性提醒:本文首次编写发布于11 年前。

    最近入了个USB电流计,于是测测树莓派2带的功耗玩玩。

    测试环境:

    电源:小米2A充电器
    实测电压:5.2V
    树莓派:2代,并超频至1000MHz
    运行服务:lamp和mc spigot 1.8服务器
    系统:Raspbain
    其他外设:散热风扇(温度高时启动),无线网卡

    场景一

    低负载,CPU使用率5%左右,风扇关闭。

    实测电流:0.32A

    (更多…)

  • Home Spot Cube日本小方盒路由器救砖记

    Home Spot Cube日本小方盒路由器救砖记

    时效性提醒:本文首次编写发布于11 年前。

    人生最大的悲哀莫过于,刀头的电烙铁头找不到了,而尖头的又都氧化了。。。。。。

    –WuSiYu

    用ttl线刷,结果成砖了,只能用CH341A编程器把背面的SOP-8封装的spi的flash存储器给刷一下编程器固件给救回来。由于没有热风枪,所以我在taobao上买编程器时有同时买了个“SOP-8免拆测试夹”,说白了就是用测试夹接通芯片,然后在线刷。

    存储器位置:

    (此图片来自网络,因为我的手机相机太渣了照不清楚。。。)

    型号为MX25L6406E,容量为8MB

    夹子和编程器到货之后,我尝试用夹子直接加上去来在线刷,不过失败了,看了只能把它拆下来弄了。话说我用这个夹子来加硬盘控制板上的存储器是成功的。

    (更多…)

  • 使用树莓派+sshfs来“远程“放音乐

    时效性提醒:本文首次编写发布于11 年前。

    家中客厅有台音响,但音乐大多都在屋子里的电脑中,我总不能为了放个音乐而把台式机搬过去吧。。。

    于是,将树莓派放到音响旁边,音频输出脸上音响。然后通过sshfs连接电脑的文件系统,并用mplayer播放电脑上的音频。(注意:你的电脑的系统得是linux等能装ssh服务端的)

    sshfs是一个通过fuse实现的”通过SSH的文件系统”,它在客户端表现的就像一个文件系统一样,而在服务器端只需要能连ssh即可,无需任何修改。

    首先在电脑上安装openssh-server

    sudo apt-get install openssh-server

    之后在树莓派上安装sshfs和用于卸载的fusemount(若不装则只能通过sudo umount卸载):

    sudo apt-get install sshfs fusemount

    然后把自己添加到fuse组:

    sudo usermod -aG fuse pi

    然后新建一个空目录用于挂载(名字随便)

    mkdir remote

    然后就可以在树莓派上挂载电脑上存着音乐的目录了(wusiyu为我的电脑上的用户名,192.168.1.103为电脑的ip,后面一大坨为电脑上音乐的路径,最后的remote/是刚才建的空目录,要按照你的实际情况修改)

    sshfs wusiyu@192.168.1.103:/home/wusiyu/音乐/东方BGM/163/ remote/

    输入密码,然后不出意外的话,树莓派的remote/下已经有电脑上的文件了

    然后用mplayer放就可以了,可以在screen里放,省得一直占着终端。

    screen -dmS music mplayer -loop 0 *
  • 让树莓派根据温度自动控制散热风扇的启停

    时效性提醒:本文首次编写发布于11 年前。

    众所周知,我们一般给Pi装的散热时都是自己插在电源上的,要转就一直转。最近一直在Pi上开个MC的服务器,Pi2的CPU温度在不开风扇时经常飙到50+,而一直开着风扇有太吵,所以就有了这个让树莓派自动控制风扇的东西。

     

    原理

    硬件上用三极管使树莓派能通过gpio来控制风扇的启停。然后在Pi上写一个很简单的Python小程序,实现温度较高时启动风扇,较低时关闭。

    硬件连接

    如图所示

    软件部分

    #!/usr/bin/python2
    #coding:utf8
    
    #自动风扇控制程序,使用wiringPi的gpio命令来操作GPIO
    
    import commands, time
    
    #控制风扇的GPIO
    FAN_GPIO=15
    
    commands.getoutput('sudo gpio mode '+str(FAN_GPIO)+' output')
    
    while True:
    
        # 获取CPU温度
        tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
        cpu_temp_raw = tmpFile.read()
        tmpFile.close()
        cpu_temp = round(float(cpu_temp_raw)/1000, 1)
    
        #如果温度大于45`C,就启动风扇
        if cpu_temp>=45.0 :
            commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 0')
    
        #如果温度小于42`C,就关闭风扇
        if cpu_temp<42.0 :
            commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 1')
    
        time.sleep(5)

    温度判断部分使用了双阈值,防止老在临界点徘徊

     

  • 在Linux下使用sshfs来远程“挂载”树莓派的文件系统

    时效性提醒:本文首次编写发布于11 年前。

    sshfs顾名思义,就是通过ssh的fs,他与一般的sftp软件不同,它是一个“文件系统”,也就是与你挂载U盘之类真实的分区表现是一样的,也就是说,你可以使用任意的编辑器直接远程编辑pi上的文件,不需要编辑器具有sftp功能,因为对于编辑器而言,那个文件与在本机硬盘上的文件无异。

    废话少说,在电脑上使用sshfs,我们想要安装ssh-server和ssh-client

    sudo apt-get install openssh-server openssh-client

    然后安装sshfs本身

    sudo apt-get install sshfs

    然后通过如下命令来将pi的/home/pi目录挂载到我们本机的~/pi目录

    sshfs pi@192.168.1.107:/home/pi ~/pi/

    然后就想干啥干啥吧

  • 树莓派+LCD12864播放BadApple

    时效性提醒:本文首次编写发布于11 年前。

    制作流程

    注意:本制作只支持st7920控制器的LCD12864

    1.先把视频的每一帧都提成图片并压缩到适合显示屏大小,可以选择保持比例,我这里的图片压缩完后的大小是85×64;

    2.把每张图片的数据提出来,并转换成每横向8个点用一个数表示,方便直接传给显示屏,最后把数据按一定格式写到一个文本文件里。最后把所有文本文件拼起来。我用python+Image库实现的。

    3.写一个程序依次从刚才拼起来的文件中取出一张张图片的数据并传到显示屏上就可以了。

    源码下载

    主程序: http://ideone.com/4VXxQN
    视频数据文件: http://pan.baidu.com/s/1sjshtgx

  • 树莓派驱动LCD12864显示屏

    时效性提醒:本文首次编写发布于12 年前。

    适用于ST7920控制器的LCD12864显示屏,使用wiringPi GPIO库,C语言编写.

     

    (更多…)

  • 树莓派B+ GPIO详细对照表

    时效性提醒:本文首次编写发布于12 年前。
     +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+
     | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
     +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
     |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
     |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
     |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
     |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
     |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
     |  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 1 | IN   | GPIO. 1 | 1   | 18  |
     |  27 |   2 | GPIO. 2 |   IN | 1 | 13 || 14 |   |      | 0v      |     |     |
     |  22 |   3 | GPIO. 3 |   IN | 1 | 15 || 16 | 1 | IN   | GPIO. 4 | 4   | 23  |
     |     |     |    3.3v |      |   | 17 || 18 | 1 | IN   | GPIO. 5 | 5   | 24  |
     |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
     |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 1 | IN   | GPIO. 6 | 6   | 25  |
     |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 0 | IN   | CE0     | 10  | 8   |
     |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
     |   0 |  30 |   SDA.0 |   IN | 0 | 27 || 28 | 0 | IN   | SCL.0   | 31  | 1   |
     |   5 |  21 | GPIO.21 |   IN | 0 | 29 || 30 |   |      | 0v      |     |     |
     |   6 |  22 | GPIO.22 |   IN | 0 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
     |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
     |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
     |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
     |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
     +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
     | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
     +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+