树莓派4B 更新wiringPi库到2.52的方法

最新发布的树莓派4B在烧录了官方系统buster以后,如果直接使用gpio readall去查看GPIO会出现错误。无法识别的情况,需要根据以下步骤进行wiringPi的更新:

登陆后打开一个终端输入:

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

然后再使用

gpio -v

检查版本信息,确保版本为:2.52即可。

然后再执行:gpio readall

这时候就可以继续像往常那样使用GPIO的引脚进行编程了。

我们尝试一下使用gpio 引脚点亮一个LED灯。LED灯接在物理引脚12号,名称GPIO.1 针对WPi 引脚为1, BCM引脚为18号。

编写一个C源码:led.c

调用gcc编译:

gcc -o led -lwiringPi led.c

执行:

./led

终端显示:

由于手头的电阻阻值比较大,效果不明显,所以去掉了电阻,实际上大家应该加个220欧姆的电阻来保护LED。

兼容树莓派4B的好产品

最近树莓派4B像一颗重磅炸弹投入了平静的湖面, 一石激起千层浪的感觉,树莓派4B以其大内存,双4k60fps的HMDI,千兆网卡,usb3.0 , 蓝牙5.0 BLE的强大特性让很多小伙伴趋之若鹜。

大部分的朋友还在疯狂测试性能,做评测的时候,我们的NightLight板和4路继电器板已经可以完美兼容树莓派4B的主板了!

给大家看看这些产品的样子:


这个小夜灯的灯板制作非常精美,通过GPIO引脚进行控制,代码非常简单,并且随机赠送的亚克力板也可以进行自行DIY,12颗高品质ws2812灯珠光线耀眼,通过程序控制RGB三种颜色的变化随心所欲,由于结合了树莓派,还可以联网进行远程控制,如果熟悉阿里云,腾讯云,百度云这些云平台的小伙伴们,就更加得心应手了,可以完美打造自己的IoT应用。
再看看4路继电器板:




这款继电器板既能够支持堆叠,又能够像Nightlight板一样接入云平台,高精度的继电器模块是你智能家居的好伙伴,同样也是能够无缝支持树莓派4B主板,通过I2C即可进行控制,如果堆叠4层继电器板就可以管理16路电路的通断,非常适合办公,工厂,学校等场景的灯路控制,通过部署到云平台,还可以实现虚拟化按钮控制, 是开关型产品的智能家居产品不二之选。
为了能够更好的供电,我们还推出了为这些板子供电的供电板,能够提供5v/4A的大电流供电,确保树莓派正常工作的同时,还能够为堆叠的开发板进行供电,非常强大!

淘宝链接: https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-4076757772.9.2a7c25a2dgUxjI&id=596936971926


支持远程安全开关机,支持12v电源输入,提供5v/4A的供电,同时还具有独特的超静音风扇进行散热,让你的一体化部署成为可能!
喜欢的小伙伴,快去官方淘宝店咨询:

52pi.taobao.com

树莓派4B发布后续

这几天一直看着树莓派4B发布以来,各路渠道都是沸沸扬扬,各种欢呼呐喊,各种吐槽不满,各种期待焦灼的等待都不断在身边上演。

硬件上面做了什么改动么?有什么特别值得购买的么,我觉得唤醒你的树莓派3B+和3B才是王道,这个待会儿再聊~

先看看新pi的特别之处。。

Raspberry Pi 4型号B.

以下是亮点:

  • 1.5GHz四核64位ARM Cortex-A72 CPU(~3 × 性能
  • 1GB,2GB或4GB的LPDDR4 SDRAM
  • 全吞吐量千兆以太网
  • 双频802.11ac无线网络
  • 蓝牙5.0
  • 两个USB 3.0和两个USB 2.0端口
  • 双显示器支持,分辨率高达4K
  • VideoCore VI显卡,支持OpenGL ES 3.x.
  • HEVC视频的4Kp60硬件解码
  • 与早期的Raspberry Pi产品完全兼容

好吧,我这里不做评测,其实我更关心跑树莓派的兼容系统, 下面带领大家好好了解一下新版树莓派系统的过往。

巴斯特 – Raspbian的新版本

官方一直试图保持软件向后兼容旧硬件,因此所有Raspberry Pi型号的标准Raspbian映像现在都基于Debian Linux的最新版本Buster。

Buster?Excuse me ? 好吧,官方给了解释就算了。

为何选择巴斯特?

首先要提到的是巴斯特(皮克斯的“玩具总动员”电影中真正的狗,而不是用Slinky制作的玩具……)实际上是在官方Debian发布日期之前悄悄发布的。原因是Raspberry Pi 4的一个重要新功能是默认使用开源OpenGL视频驱动程序,这是使用最新版本的Debian开发的。将它所需要的东西移植到Raspbian Stretch上会有很多工作要做,所以我们决定在Raspbian Buster上启动 – 唯一的问题是Buster是否会在硬件出现之前做好准备!

事实上,准备的还算充分,不至于开机就黑屏,但是朋友测试teamviewer好像就出了问题。。。这么巧。

事实证明,事实并非如此。巴斯特的官方发布日期是7月7日,所以官方提前几周。也就是说,巴斯特现在处于“冻结”状态已有几个月了,只做了很小的改动,因此官方发布的版本与Debian将于7月7日正式发布的版本完全相同。

今年1月据说官方就开始在内部使用Buster,因此它已经在Pi上进行了大量测试,说它稳定而且功能强大,可以使用apt来更新从现在到7月7日之间发生的任何更改,而无需重新安装所有内容。

官方桌面图

Debian Stretch和Debian Buster之间没有太大的区别。令人遗憾地反映出当今世界的方式,大多数差异都是旨在使巴斯特难以入侵的安全变化。任何其他差异大多是小的增量变化,大多数人都不会注意到, 那就是说,基本上没啥变化。

当官方从Jessie搬到Stretch时,许多人评论说这两款操作系统实际上看不出任何差异 – 因为大多数变化都是“幕后”,桌面和应用程序看起来都是一样的。

桌面的整体外观在几年内没有显着变化,并且开始看起来有点陈旧,所以官方自己认为给Buster的外观做小小的刷新会很好。然后人们至少可以看到他们闪亮的新操作系统与旧的操作系统有所不同!其实就是用了一张柬埔寨的图换了以前的高速公路,其实我觉得还可以更好的…

新的外观

近年来,大多数计算机图形用户界面的设计出现了明显的趋势,就是扁平化; 减少装饰量,使按钮变成普通盒子而不是类似物理按钮的东西。可以在Windows等桌面操作系统和iOS等移动操作系统中看到这一点,因此官方决定做点儿类似的事了。(赤果果的抄袭吗?)

外观

大多数界面元素的整体外观已经简化; 减少了角落的曲率和用于给按钮之类的东西提供伪3D效果的阴影渐变。这种“更平坦”的设计看起来更干净,更现代,但这是一种取巧的行为; 它太容易走得太远,让事情看起来完全平淡无奇,据说Eben和UI设计师 对此还产生了分歧 ,Eben想要尽可能多的平整度,UI设计师想保留至少一点曲率,所以他们俩最后还是在某个中间点达成了共识。

这个桥段怎么看起来这么像乔布斯?我怎么觉得eben这个大头鬼在复刻乔布斯呢?pi store搞得很像apple store有没有? 发布会搞得也像apple的发布会有没有? 产品原型设计时的小冲突也和乔布斯当年的追求完美时遇到的一样有没有?

我觉得最像的是这系统越来越闭源的感觉有没有?专有硬件跑专有软件, 是不是有点儿当年Next的感觉~

官方还更改了Greg Annandale的新照片的默认桌面,已经转为灰色高亮颜色。

(如果你真的不喜欢新的外观,很容易恢复以前的外观 – 旧的桌面图片仍然安装,旧的UI主题也是如此。)

其他变化

官方系统一直在Raspbian中包含优秀的Thonny Python开发环境。在这个版本中,它现在是我们的默认Python编辑器,为此,默认情况下不再包括IDLE。

thonny

官方对任务栏进行了一些小的调整。现在,只有当您要弹出设备时,才会显示用于删除USB设备的“弹出”图标; 它剩下的时间都被隐藏了。同样,如果你使用的是较早的Pis而没有蓝牙支持,则现在隐藏蓝牙图标而不是灰色显示。此外,默认情况下,任务栏上不再显示CPU活动量表,因为在更强大的最新Raspberry Pi型号上,这一点已变得不那么必要了。如果仍想使用它,可以将其添加回来 – 右键单击​​任务栏并选择“添加/删除面板项”。按“添加”按钮,你会发现它被列为“CPU使用率监视器”。找到新的“CPU温度监视器”,如果有兴趣了解CPU的最新信息,可以添加它。

目前巴斯特失踪的一个项目是Mathematica。别担心 – 这只是暂时的删除!Wolfram正致力于让Mathematica与Buster一起正常工作,一旦准备好,它就可以从推荐软件安装。意味着有些就看重mathematica的朋友要失望了。

新的OpenGL驱动程序目前不支持旧的非OpenGL视频驱动程序的一些功能(例如像素加倍和欠扫描),因此如果正在使用GL驱动程序,则这些设置将隐藏在Raspberry Pi配置中。(GL驱动程序是Raspberry Pi 4的默认驱动程序 – 较旧的Pis默认情况下仍会使用非GL驱动程序。另外,如果使用Raspberry Pi 4无头驱动程序,我们建议切换回非GL驱动程序 – 选择’Legacy’在raspi-config中的“高级选项”中的“GL驱动程序”设置下。)

如果正在使用GL驱动程序,则会有一个新的“屏幕配置”工具 – 这使得你可以在Raspberry Pi 4上设置多个监视器的排列。它还可以用于设置自定义监视器分辨率,可用于模拟像素倍增的效果。


最后,“Raspberry Pi配置”中有几个新按钮控制Raspberry Pi 4的视频输出选项。(在Raspberry Pi的早期型号上运行时,这些按钮不会显示。)

Raspberry Pi 4上不可能同时具有模拟复合视频(通过3.5mm插孔)和HDMI输出,

因此默认情况下禁用模拟视频输出。

默认情况下,HDMI上的4Kp60分辨率也被禁用,因为这需要更快的时钟速度,从而导致更高的工作温度和更高的功耗。你懂的,买前树莓派,买后暖手派。

新按钮可以在根据需要启用这些选项中的任何一个中进行选择。

强烈不建议将现有的Stretch(或更早版本)系统升级到Buster。

官方无法知道我们对自己系统所做的更改,因此不知道当你迁移到Buster时可能会破坏什么。但是,官方已经测试了以下升级过程,它适用于官方发布的最后一个Stretch映像的纯净版本。而且官方不保证这个镜像能在你的系统上运行,所以建议买张新卡重新烧录。

官方在 Buster上安装了几个不支持的新应用程序。要删除它们,请打开终端窗口

sudo apt purge timidity lxmusic gnome-disk-utility deluge-gtk evince wicd wicd-gtk clipit usermode gucharmap gnome-system-tools pavucontrol

删除掉这些新应用程序就好了。

具体就期待新的树莓派4B到大陆吧!

Docker Pi系列之智能家居硬件装备

# 现在看电子产品,如果不带点儿智能二字都不好意思出来跟人打招呼~

今天就来给大家安利一款52Pi团队出品的Docker Pi系列产品之智能家居雏形硬件- 4路继电器板, 大家知道继电器的作用是用低电压控制高电压设备。 而这也是制作家庭级别的智能设备的最廉价和最安全的方式之一。

首先给大家看看设备的样子:

Relay DDL 就是继电器叠叠乐的简写

同事比较皮,所以丝印里面有个DDL,就是叠叠乐的简称。

这个能够和树莓派怎么结合在一起呢?

如果只需要控制四路电路开关,就只需要一个叠叠乐就可以搞定了,安装简单到没有朋友,直接扣在树莓派上,用螺丝铜柱锁死就好了,如果有产品洁癖,就可以自行设计一个外壳,将其包裹起来,就更加帅气了,切忌用金属外壳,因为会屏蔽树莓派的wifi信号的哟~

如果觉得一层不够用,我们推荐最多可以堆叠4层,就是所谓的叠叠乐电源控制中心了, 16路继电器每个都有自己独立的地址,通过程序可以精准控制每个继电器的开合。

每个板子上都有一个拨码开关,可以调试继电器的基地址:


四路继电器可以同时控制也可以分开控制就看你怎么去调试拨码开关了。当然为了让大家找到入门的方法,我们专门提供了多种编程语言的支持,C, python, java, shell 也可以。

接驳高压电路的方法:

要注意,由于继电器NC 就是Normal Close 常闭, NO是 Normal Open,常开, Common就是接零线的部分,类似右图, 接线的时候注意关闭总电源,避免触电。切记切记! 安全第一。

上面演示的是一路继电器的接驳方式,想象一下,家里的电箱里面如果有了这个设备,就完全可以在不关闭电箱的情况下轻松通过网络来进行控制了?

接驳好了以后我们看看树莓派上要做些什么吧?

树莓派需要安装Raspbian 系统,并且连入网络,打开ssh服务(sudo raspi-config)

然后利用 i2cdetect -y 1 检查当前设备的基地址: 一般是0x10

如果你的树莓派没有这条命令,也不要慌:

sudo apt-get update 
sudo apt-get -y install i2c-tools

通过上面的命令就可以安装i2c工具组件,就可以检测了。
然后我们就可以通过命令行输入:
i2cset -y 1 0x10  0x01  0xff
来打开第一个继电器了。
这里解释一下: -y 1 是定义i2c总线,意思是:bus 1 
0x10 是基地址就是设备在树莓派上识别出来的地址。
0x01 是第一个继电器,0x02 , 0x03, 0x04 就分别是第二个继电器,第三个,第四个。。
0xff 是开启继电器,相反,0x00 就是关闭继电器。 

如果你写个shell脚本:


然后执行, chmod +x relay.sh && ./relay.sh

就会发现四个继电器来回开合,当然我建议继电器的开关不要这么玩儿,实际上我们不会让大家这样开灯关灯折磨它对吗?我们需要它更智能一些,例如,当房间温度超过25°的时候,打开风扇的开关,自动来完成,就可以将风扇的电缆接入继电器,然后再找一个DHT11的温湿度传感器,用程序读取温度信息,然后做判断,当温度大于25°就执行 i2cset -y 1 0x10 0x01 0xff这样的命令。。

当然,树莓派可以支持的语言非常多,大家可以用自己熟悉的语言来做开发。

例如:用C:

编译执行:

gcc relay.c -lwiringPi -o relay && ./relay

或者是python, 当然使用python的时候要注意安装一个库:

sudo pip3 install smbus2

执行:

chmod +x relay.py 
./relay.py 

如果侥幸你还有腾讯云,阿里云,或者机智云的云平台,那么更加棒的事情就是通过这些云平台来对你的设备进行控制,将树莓派接入云平台请访问我们的公众号,获取最新的一期推送,就可以看到详细福利了,这里我就不赘述了!

听说有人要用这个板子接四路激光头,让家里的喵星人活动活动筋骨, 有人要用这个板子来控制家里鱼缸的灯光,加温棒和加氧泵, 还有人要用来控制教室里面的日光灯管,节约能源, 甚至还有人想用来给家里的4块移动硬盘做电源开关, 脑洞真是无限大~

欢迎大家前往52pi.taobao.com进行咨询和选购。 期待大家更好的玩儿法!

开源智能家居系统 Home Assistant 从听说到入坑

首先声明一下,感谢来自北京的熊小猫发来的稿件,非常人性化,用了markdown语法,在这里我代表我和52Pi全体编辑向你表示感谢!

和你的座右铭一样,一个脱离了高级趣味的人写的文章一定是有含金量的!!表示1000个赞送给你!

Home Assistant 是什么?

Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.

这是官方的原话,如果你看懂了就懂了,没看懂就听我给你编。说白了就是一款基于 Python3 的开源智能家居系统,非常适合运行在树莓派或本地服务器上。它集成了众多优秀的产品,比如 IFTTT 、 Arduino 、Google Assistant 、 Home Kit 、 MQTT 等。

好了,废话就这么多,让我们动手安装吧。

系统(基于 Python 虚拟环境,硬件 Raspberry Pi )

安装

安装 Python3

sudo apt-get install python3-pip python3-venv

坑:You may also need to install development libraries using 您可能还需要使用安装开发库。在各种文档里,基本都是在说安装Python,几乎没有提及到需要的其他依赖,所以我们需要安装几个依赖包。

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

源替换

由于网络等原因,建议 pip 使用国内镜像,编辑 /etc/pip.conf 文件(据说此文件针对树莓派的)
复制粘贴以下内容并保存:

[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/

创建名为 homeassistant 的用户

sudo useradd -rm homeassistant

创建安装文件夹

cd /srv
sudo mkdir homeassistant
sudo chown homeassistant:homeassistant homeassistant

创建虚拟环境

sudo su -s /bin/bash homeassistant
cd /srv/homeassistant
python3 -m venv .
source bin/activate

安装 Home Assistant

pip3 install homeassistant

初次启动 Home Assistant

hass

等待几分钟让后台下载依赖,之后你便可访问 http://ip:8123,进入 Home Asssitant

自启动

sudo nano -w /etc/systemd/system/home-assistant@homeassistant.service

粘贴一下内容:

[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=%i
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"

[Install]
WantedBy=multi-user.target

重新加载进程管理

sudo systemctl --system daemon-reload

启用服务

sudo systemctl enable home-assistant@homeassistant

更新软件版本

进入虚拟环境

sudo su -s /bin/bash homeassistant
cd /srv/homeassistant
source bin/activate

更新

pip3 install --upgrade homeassistant

指定版本

pip3 install homeassistant==X.XX.X

开发版本

pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev

至此,你的 Home Assistant 系统已经正常的运行起来了,接下来呢?是不是接入硬件或软件了呢?没错!!本节我们从最简单的开始,我们把特斯拉汽车接入进来。首先,我买不起特斯拉,哪位老板可以赞助一台,以便我把这篇文档个写完。言归正传,下一节,我们开始介入各种设备。

编者最后的意思是??特斯拉我们赞助不了,你要不要苏27呢?

USB 接口 GPS 在树莓派上的正确使用姿势~

产品说明:

Gps4.jpg
  • 支持Raspberry Pi型号A,B,A +,B +,Zero,2,3,内置L80-39 GPS芯片。
  • 使用UART或USB通信, 默认波特率 9600bps。
  • USB 接口采用CP2102作为USB转UART桥接芯片,稳定且速度更快。
  • L80-39具有66个搜索通道和22个同步跟踪通道,它可以在室外的最短时间内采集和跟踪卫星。我这里要强烈强调一下, 室内你搜不到星的哦, 一定要在室外,人家手册上这么写,你就去室外操作好吗? 别问为啥, 用脑子想想啊,卫星在天上,你要搜星,你喵在家里搜哪门子的星?

注意 我再次强调该模块适合户外操作。请把Antana(就是传说中的天线)放在露天。


兼容性列表(基本上只要支持串口通信的设备基本上都能支持,例如 各种 MCU, 51 单片机,arduino, 树莓派,香蕉派, Tinker board 等…

  • 兼容性
平台USB端口GPS模块
Raspberry Pi 3型号B Plus
树莓派零
Raspberry Pi零W
Raspberry Pi 3型号B.
Raspberry Pi 2模型B.
Raspberry Pi Model B +

功能

  • -165 dBm灵敏度,1Hz(默认),最高5Hz,66个通道
  • 启动时至少消耗100mA电流。
  • PPS输出可用于与卫星协调时间。
  • 定时精度: 1PPS输出 15ns
  • 内部贴片天线在室外使用时工作良好
  • 金属的SMA连接器用于外部有源天线,可以在室内使用,但是天线必须放置在室外.
  • fix状态LED闪烁,让您知道GPS何时确定当前坐标
  • EASY™,先进的AGPS技术,无需外部存储器
  • 支持时间服务应用程序,可通过PPS同步NMEA功能实现
  • 内置LNA可提高灵敏度
  • RTC电池兼容
  • 1×8公头,USB micro接口
  • 包括CP2102模块串行转换器USB 2.0到TTL UART

参数

类型
卫星66个接受通道,22个跟踪通道
工作电压4.5-5.5V
重量4.35克
最大电流最大100mA
工作温度-40〜+ 85℃
规模16.6x26x18.6(毫米)
全球定位系统L80-M39
贴片天线尺寸15.0 x 15.0 x 4.0mm
位置准确性<2.5M CEP
速度准确度<1.0米/ s的
没有ESEY的暖/冷启动<35S
ESEY热/冷启动<15秒
获取灵敏度-148dBm
跟踪灵敏度-165dBm
更新率1Hz(默认)高达5Hz
波特率4800~115200 bps默认为9600bps
协议NMEA 0183
安装电缆1 * 8堆叠标头USB微数据线
GPS的schama.png

如何连线

第一种方法:


这是使用 usb-to-ttl 的线缆接入 GPS的 Uart 引脚.

Uart风格接法:

由于Raspberry Pi 3,Model B的串口问题,它可能会导致意外问题,我们建议您不要将带有Raspberry Pi的GPS模块直接连接到GPIO引脚。当然,如果你要坚持用,也是可以的,只是需要将树莓派3B 和3B+的蓝牙功能关闭, 然后再将/dev/ttyAMA0设备释放出来,即可用树莓派的 GPIO 引脚和设备通信而不用占用 USB口了,操作步骤我大致讲解一下:

  1. 在树莓派上通过 sudo raspi-config 找到接口设置然后打开串口设备,机器上会出现一个/dev/ttyS0设备.
  2. 在树莓派上编辑/boot/config.txt 配置文件,检查 enable_uart=1 是否存在.
  3. 在树莓派上编辑/boot/cmdline.txt 配置文件,将整行复制后注释掉一行, 并将未注释行的 console=/dev/ttyAMA0, 115200 信息删除.
  4. 重启树莓派并在启动后安装适合自己的串口软件例如 minicom 或者别的.
  • 1.如果是使用一根USB-to-TTL线连接GPS模块和Raspberry Pi,你可以像这张图表一样连线:
GPS模块电线颜色
VCC红线
GND黑丝
TXD绿线
RXD白线
  • 2.重启 Raspberry Pi并登录,如果在桌面环境中使用raspberry Pi,请打开终端并按照后面步骤操作。

USB风格接法:

  • 只需使用microUSB电缆连接Raspberry Pi USB端口和GPS模块,并在Raspberry Pi上供电。
Gps1.jpg

如何使用

1.上电后登录系统。您可以打开终端并输入以下命令来安装GPS模块的包。
sudo apt-get update && sudo apt-get -y install gpsd gpsd-clients python-gps 
2.启动gpsd服务并对其进行控制。
启用它: sudo systemctl enable gpsd.socket 
启动它: sudo systemctl start gpsd.socket 
重新启动它: sudo systemctl restart gpsd.socket 
检查状态: sudo systemctl status gpsd.socket 

4.配置文件是在/ etc / default / gpsd中
修改gpsd的配置文件根据/ dev文件夹中串口的名称修改“DEVICE”参数。
如果通过USB电缆将其连接到Raspberry Pi,通常将其命名为“/ dev / ttyUSB0”。
您可以使用“nano”或“vim.tiny”编辑器来完成它。

我下面是写好的一个例子,我只是用 grep -v “#” /etc/default/gpsd | grep -v “^$” 过滤掉了配置文件中的注释和空行, 你们的配置如果是用 USB 接 micro USB口,然后直接插树莓派的 USB 口的,和我的配置基本是差不多的,除非你树莓派上还接了好多 USB设备,否则默认第一个设备就是/dev/ttyUSB0 , 参数 GPSD_OPTIONS= ” -F /var/run/gpsd.sock” 你这里定义啥名字就用啥名字行么?别乱改..否则找不到文件又是一顿刺挠, 你又要到群里喊叫代码不行,用不了.看仔细了哦~

Gpsconfig4.jpg

重启服务:
sudo systemctl restart gpsd.socket 
最后,使用此命令从GPS模块获取信息。
sudo cgps -s

一般情况下,如果不出幺蛾子,那么你会看到如下的信息,但是如果搜不到卫星的时候也很正常,你以为卫星时时刻刻都在你头顶上呢? 也许它跑开了一会儿,耐心等待, 基本上我们搜星也都是 30 多秒-5 分钟左右很正常, 这是 GPS 不是北斗, 自从美国出了个川普,GPS 就没有好用过….
5. GPS状态如下:

Gpsresult.png

客户端C中的示例代码

#include <gps.h> 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
int main()
{
int rc;
struct timeval tv;
struct gps_data_t gps_data;
if ((rc = gps_open("localhost", "2947", &gps_data)) == -1)
{
printf("code: %d, reason: %s\n", rc, gps_errstr(rc));
return EXIT_FAILURE;
}
gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

while (1)
{
/* wait for 2 seconds to receive data */
if (gps_waiting (&gps_data, 2000000))
{
/* read data */
if ((rc = gps_read(&gps_data)) == -1)
{
printf("error occured reading gps data. code: %d, reason: %s\n", rc, gps_errstr(rc));
}
else
{
/* Display data from the GPS receiver. */
if ((gps_data.status == STATUS_FIX) && (gps_data.fix.mode == MODE_2D || gps_data.fix.mode == MODE_3D) && !isnan(gps_data.fix.latitude) && !isnan(gps_data.fix.longitude))
{
/* gettimeofday(&tv, NULL); EDIT: tv.tv_sec isn't actually the timestamp! */

printf("latitude: %f, longitude: %f, speed: %f, timestamp: %lf\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);
//EDIT: Replaced tv.tv_sec with gps_data.fix.time
}
else
{
printf("no GPS data available\n");
}
}
}
sleep(3);
}
/* When you are done... */
gps_stream(&gps_data, WATCH_DISABLE, NULL);
gps_close (&gps_data);
return EXIT_SUCCESS;
}
  • 编译并运行它。
gcc -o gps gps.c -lm -lgps 
sudo ./gps

GPS客户端的Python解决方案

  • 在Raspberry Pi上用 python 来接受 GPS 数据是最简单的,但是需要你安装一个 pyserial 的模块.

以下是三个如何使用python从连接到Raspberry Pi的GPS接收器获取GPS数据的示例。

思路: 使用GPSD客户端库, 然后手动解析NMEA句子或者使用pynmea2解析NMEA句子,也可以使用GPSD客户端库 

gpsd客户端库基于JSON。JSON对象具有“类”属性(例如TPV,SKY,DEVICE.etc …),可用于过滤不同的信息。
请参阅:[ http://www.catb.org/gpsd/gpsd_json.html | gpsd_json]

  • 本指南介绍了如何在Raspberry Pi上运行gpsd。
  • 下面的示例python脚本在TPV类上过滤,即时间位置速度报告,然后打印出相关信息。
由于 python 代码是需要考虑缩进的.所以我这里就截图给你看了.
下面是另一种方式,需要安装 gps 的库
这个就需要 pyserial 的库, 需要你 pip install pyserial 安装一下.
  • 使用pynmea2解析NMEA句子

下面的python脚本显示了如何通过直接连接到串行接口来访问GPS数据。
它过滤$ GPGGA NMEA句子,然后使用pynmea2来解析数据。
Pynmea2可以安装:

pi@raspberrypi ~ $ pip install pynmea2

这个方法比较简单, 另外还有一种方法就是直接自己解析数据结构,只用一个库,就是 pyserial.
尝试看看,对于其刷新速度,已经在产品特性里面介绍到了很多都是直接来自官方文档的内容,例如串口更新速率从 4800~115200bps ,默认是 9600bps, 更新率 1HZ 默认, 最高到 5Hz, 支持的协议 NMEA 0183 , 你们拿到数据后,如果是要用在一些网站的 api 上,需要转化一下格式的.
这个看 tater.li 之前帖子.

到这里就先告一段落. 下一篇帖子我做一个和高德地图 API 结合的例子.

树莓派鼠标电脑了解一下?

​hi,大家好,今天看到一个国外牛人用树莓派结合3D打印机制作了一款小巧的鼠标电脑,如下图:

TIM截图20190117113239.jpg

换个角度再看一下:

TIM截图20190117113338.jpg

屏幕看上去很小,感觉看起来比较费劲,但是直接集成在鼠标上也是非常酷的操作啊!这波操作可以说是很6了。

那么有人会说没有键盘怎么操作啊??

TIM截图20190117113520.jpg

原来它被藏在鼠标的内部了,白色外壳拉出来就是键盘了,呃, 怎么感觉这么反人类呢,横着怎么打字? 不过歪果仁脑洞大是出了名的。我们就忍了吧。

TIM截图20190117113656.jpg

右下角这个开关电源是不是显得很大气啊?哈哈,我觉得手大的人会误操作。

TIM截图20190117113834.jpg

外壳的制作是使用fusion360的,据说很好用,有兴趣的可以自我尝试。

TIM截图20190117114002.jpg

单手操作的姿势是这样的,另一只手就可以拿着手机拍照了么?不知道做这个的初衷是什么?知道的小伙伴评论区见。

操作界面是这个画风:

TIM截图20190117114223.jpg

屏幕很小,看字打游戏都有点儿困难,但是很迷你的小玩意儿总是会吸引一部分人注意,我是觉得听好玩儿的。看这个DIY的大小,我推断鼠标外壳的下面藏着的是树莓派zero的板子,一个迷你小键盘。这个屏幕看上去是tft2.2非触摸屏,

然后如果想要打字,是这样的:

TIM截图20190117114536.jpg

如果玩儿我的世界, 得用个放大镜看比较舒服。。。

TIM截图20190117114618.jpg

这样的项目,大概用个三五天就可以完成了,大家可以猜测一下它的这个项目都用了什么器件?

可以在评论区留言哟!

另外,年前有一大波piboxy来袭,快去抢购, 抢购链接猛戳这里:

piboxy购买链接

TIM截图20190117134045.jpg

Piboxy复古游戏机外壳

80后集体的记忆中肯定有过这样一段快乐的时光,就是在家玩儿游戏机,任天堂,红白机的时代,每每响起这些经典的音乐,我们的内心都会泛起一丝童年的记忆~

还有最酷的就是带个遥控器哦!

这是Raspberry Pi的升级NES风格的外壳,包含了安全电源控制和重置按钮可以防止SD卡上系统的损坏。Raspberry Pi可以通过红外遥控器打开/关闭, 远程开关机是不是很爽啊!当你购买的树莓派还在吃灰,赶紧拿出来DIY一个属于自己童年记忆的NES吧!Retropie官方支持许多复古游戏操作系统,如batocera, Retropie, Lakka等。

这款称为Piboxy的树莓派外壳是Raspberry Pi最强功能性的NESPI案例。

支持的树莓派型号:

  • RASPBERRY PI 3模型B.
  • RASPBERRY PI 2 B型
  • RASPBERRY PI 1型号B +

就是下面这些:

盒子的正面看上去这样的:

原始LAN端口和USB端口

保留原始LAN端口和USB端口,可直接使用。配置Raspberry pi只需要一行命令。

改进的HDMI和音频输出

保留了原有的HDMI和音频输出连接器,并在底部增加了散热孔。

Micro SD卡插槽

为背面的Micro SD卡提供插槽。特别设计,方便您插入micro SD卡。

微型USB电源输入

我们将电源输入接口放在独立的一边,以便为您提供更多空间,让您更自由地操作。

定制特性

我们量身定制此外壳,完美匹配您的Raspberry Pi PCB,数据线和风扇是定制和专用的。
请务必注意数据线和风扇的正确方向和位置。橙色的位置是你的树莓派哦!

技术规格

产品包含:

 

  • Piboxy案例x 1
  • 电源控制板x 1
  • GPIO 2 * 6电缆x 1
  • 螺丝x 5(备用1个)
  • 型号2507风扇x 1
  • 螺丝刀x 1
  • 红外遥控器x 1
  • 使用说明书x 1

通过这个外壳,可以将你的树莓派重新复活!你还可以购买2个USB手柄,从网络上下载游戏的ROM,然后上传到树莓派的TF卡中,重启一下设备就可以开始你的复古游戏之旅了!

安装驱动的方法也是简单到爆, 在retropie的字符界面执行:

curl -sSL  piboxy.com/install | bash

等待个几分钟就可以完成配置了,当然,在安装驱动前要保证网络畅通哦!

 

 

树莓派上搭建自己的 python 开发环境

一般情况下,在烧录完镜像以后就可以直接在树莓派上通过 thony idle 去进行 python 的开发了.

但是用惯了 pycharm 和习惯了 vim 编程的我怎么可以直接用文本编辑器写代码呢?

效率完全没有了啊!

安装完镜像环境后,就可以在树莓派上开发了,为了开发opencv for python,我在树莓派上搭建了vim的python开发环境,除了配置.vimrc以外还要给各位小伙伴安利一款VIM python 自动补全插件:pydiction。

这是在纯shell环境下进行python编程的一款利器, 全屏编辑器结合这款利器各种 python 补全不再是问题。
pydiction可以实现下面python代码的自动补全:

简单python关键词补全
python 函数补全带括号
python 模块补全
python 模块内函数,变量补全
from module import sub-module 补全


  1. 安装 vim

sudo apt-get  update

sudo apt-get -y install vim git

2. 下载插件

mkdir -p ~/.vim/bundle

cd ~/.vim/bundle

git clone https://github.com/rkulla/pydiction.git

3. 配置~/.vimrc

vim ~/.vimrc

4. 在配置文件最下面填写

#载入文件类型插件

filetype plugin on

#配置插件路径

let g:pydiction_location = ‘~/.vim/bundle/pydiction/complete-dict’

#设置补全菜单的高度

let g:pydiction_menu_height = 3

然后就可以通过 vim 进行代码编写了.这时候就有了自动补全的功能.

#配色方案(可用 :highlight 查看配色方案细节)

colorscheme murphy

#打开语法高亮

syntax on

#侦测文件类型

filetype on

#载入文件类型插件

filetype plugin on

#为不同文件类型使用不用缩进

filetype indent on

#显示行号

set number

#打开自动缩进

set autoindent

#使用 C/C++ 的缩进方式

set cindent

#为 C 程序提供自动缩进

set smartindent

#设置自动缩进长度为四个空格

set shiftwidth=4

#按退格键时可以一次删掉 4 个空格

set softtabstop=4

#设定 tab 键长度为 4

set tabstop=4

#将 tab 展开为空格

set expandtab

#去掉输入错误时的提示声音

set noerrorbells

#右下角显示光标位置

set ruler

#总是显示状态行

set laststatus=2

#自定义状态行
set statusline=%F%m%r%h%w[%L][%{&ff}]%y[%p%%][%04l,%04v]

#当前列数+当前行数+当前光标位置百分比+使用的语法高亮器+文件格式+文件总行数+预览标志+帮助文件标志+只读标志+已修改标志+当前文件绝对路径

#强调匹配的括号

set showmatch

#光标短暂跳转到匹配括号的时间, 单位是十分之一秒

set matchtime=2

#显示当前正在键入的命令

set showcmd

# 设置自动切换目录为当前文件所在目录,用 :sh 时候会很方便

set autochdir

# 搜索时忽略大小写

set ignorecase

#随着键入即时搜索

set incsearch

#有一个或以上大写字母时仍大小写敏感

set smartcase

#代码折叠

set foldenable

set foldmethod=indent

#在左侧显示折叠的层次

set foldcolumn=4

#针对 Python 文件的设定

if has(“autocmd”)

autocmd FileType python set tabstop=4 shiftwidth=4 expandtab

endif

#配置pydiction插件路径

let g:pydiction_location = ‘/home/pi/.vim/bundle/pydiction/complete-dict’

#设置pydiction补全菜单的高度

let g:pydiction_menu_height = 3

希望对大家有用,谢谢!

利用树莓派和官方摄像头实现延时摄影

最近看了一个朋友用树莓派做的延时视频,感觉挺不错的,突然也想做一个. 手头正好有树莓派和摄像头,所以也尝试着做了一下,非常简单.

首先说明一下什么是延时摄影:

要创建延时视频,只需将Raspberry Pi配置为定期拍摄照片(例如每分钟),然后使用应用程序将图片拼接成视频。原理就这么简单.

有两种方法可以做到这一点。如果是官方摄像头,实现起来就更加简单了.

使用Raspistill的内置延时模式

raspistill应用程序具有内置的延时模式,使用--timelapse(或-tl)命令行开关。

切换之后的值是拍摄之间的时间(以毫秒为单位)。

raspistill -t 30000 -tl 2000 -o image%04d.jpg

请注意%04d输出文件名中的数字:这表示文件名中要显示照片编号。因此,例如,上面的命令将每隔两秒(2000毫秒)产生一次照片的捕获,总时间为30秒(30000毫秒),名为image0001.jpg,image0002.jpg,依此类推,直到image0015.jpg。

%04d指示四位数字,有前导零添加,以弥补所需的位数。因此,例如,%08d会产生一个八位数的数字。0 这个位,如果你不想要前导零,你可以不加。

如果输入的- t 为0,则应用程序将以其最小时间间隔进行拍摄照片。请注意,捕获之间存在大约30毫秒的最小强制暂停,以确保可以进行曝光计算。

使用cron(计划任务)

使用自定义拍照的好方法是使用cron

打开cron 表进行编辑:

crontab -e

这将询问您要使用哪个编辑器,或者在默认编辑器中打开。在编辑器中打开文件后,添加以下行以安排每分钟拍照.

camera.sh 可以自己写个拍摄的脚本,其中2>&1是将错误输出输入到标准输出上.

* * * * * /home/pi/camera.sh 2>&1

保存并退出,您应该看到以下消息:

crontab: installing new crontab

确保您的脚本不保存使用相同文件名拍摄的每张照片。否则将每次覆盖原有的图片。

将图像拼接在一起

现在,您需要将照片拼接成一个视频。

你可以在Pi上使用,mencoder非常赞, 但处理速度很慢。也可以将图像文件传输到台式计算机或笔记本电脑并在那里处理视频,那样会快一些,因为如果你拍摄了24小时的图片,每小时的每分钟拍摄5张图片的话,数据量也是大的惊人的.处理起来也是时间更长.但是如果在树莓派上通过脚本自行处理了,最后得到的视频就可以直接播放了. 如果你会推流处理,那还可以直接推到直播平台. 也是很好的.

切换到包含所有图像的文件夹,并将文件名重定向到一个文本文件。例如:

ls *.jpg > pics.list

在RASPBERRY PI上

虽然速度很慢(由于使用软件进行编码而不是使用Raspberry Pi硬件加速),但您可以使用各种可用工具将JPEG图像拼接在一起。其中有个软件叫avconv,需要安装, 安装好以后就可以拼接转码了。

sudo apt-get install libav-tools

现在,可以使用这些工具将JPEG文件转换为H264格式的视频文件。

avconv -r 24 -i image%04d.jpg -r 24 -vcodec libx264 -vf scale=800:480 timelapse.mp4

在Raspberry Pi 3上,它可以每秒编码多于一帧。其他Pi型号的性能会有所不同.

目前我这边使用的参数是:

  • -r 24在输入和输出文件中假设每秒二十四帧。
  • -i image%04.jpg输入文件规范(用于匹配捕获期间生成的文件)。
  • -vcodec libx264使用软件x264编码器进行编码。
  • -vf scale = 800:480  调整为输出720p。您还可以使用1920:1080或更低分辨率,具体取决于你自己的要求, 例如,我是要在52pi.taobao.com 买的800×480分辨率。请注意,Pi只能播放高达1080p的视频,但如果您打算以4K播放,则可以在此设置。
  • timelapse.mp4输出文件的名称。

avconv具有针对不同编码选项和其他设置的综合参数集。这些可以使用列出avconv --help

在另一台LINUX计算机上

您可以使用与Raspberry Pi相同的说明,或者替代包,例如mencoder

sudo apt-get install mencoder

现在运行以下命令:

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o timelapse.avi -mf type=jpeg:fps=24 mf://@pics.list

一旦完成,您应该有一个视频文件,timelapse.avi

然后你就可以用播放器播放查看了.

omxplayer -o hdmi  timelapse.avi

效果是不是杠杠滴?