Raspberry Pi

热了好多年,其实物联网刚刚迈过谷底~

百般思念 提交于 2020-08-10 00:10:55
全球最具权威的IT研究与顾问咨询公司Gartner,发布了全球《2019物联网技术成熟度曲线》。在2019年7月,全球物联网技术已经历完过热期,进入了幻想破灭期,快到谷底了。 (图源自Gartner) Gartner曲钱实际是两条曲线的叠加。一条是反映商家炒作概念、融资及公众对技术的虚高期望值的“泡沫曲线”,另一条是生产商、技术和商业的成熟验证发展曲线。新技术多数在初起时,都会被炒作到顶点,随之泡沫慢慢被吹散,进入“谷底”阶段,后面逐渐稳定成长。 ( 图源自 Gartner ) 在物联网的狂热期,商界的炒作、噱头上市融资;政府、企业的概念,年青人的新潮。典型的共享单车风靡全国,智能音箱响遍大地,AR穿戴设备,无人驾驶好象就在实现……。热浪过后,在2017~2019年,人们发现有些是技术本身不成熟,像通信的覆盖不完整、现有无线传输的出错率高和时延过大等;有些是忽视了的安全问题,如数据隐私、恶意入侵、朔源可查、WiFi摄像头、人脸识别、语音识别等,导致出错甚至信息诈骗丛生;有些是家用电器智能化标准的不统一,每个品牌画地为牢,只选择本品牌的整套方案。不同品牌的家电产品,无法互联互通互控;人们有的需求不明确甚至非理性等;再加上一些商业运行模式的困惑,如“羊毛长在狗身上,猪买单”、融资、上市、砸钱抢地盘、抢数据等。一旦资金链断裂,技术局限和缺点暴露,出现负面报道,导致人们的兴趣逐渐减弱

什么是嵌入式编程?如何入门和提高?

左心房为你撑大大i 提交于 2020-08-09 22:29:28
>作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。 转载请注明出处。 原文: http://www.jianshu.com/p/d59378613d15 内容简介 什么是嵌入式 什么是交叉编译 入门和提高嵌入式 1. 什么是嵌入式 嵌入式可以说是目前涵盖面最广、最火的职业之一。那么,什么是嵌入式呢? 这个问题三言两语还真说不清楚。 嵌入式,英语是 embedded,表示“嵌入式的,植入的,内含的”。 因为首先,嵌入式有不少组合名词,例如嵌入式系统,嵌入式软件,Linux 嵌入式,Android 嵌入式,嵌入式 Web,等等。 通常对嵌入式的定义其实是对"嵌入式系统"的定义。 网上对嵌入式系统的中文定义实在是不好理解,比较官方的中文定义是: >嵌入式系统是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 我个人感觉:如果是从来没接触过嵌入式的朋友,看了上面这段定义,估计跟没看差不多,还是一头雾水。当年我刚开始学习嵌入式时看到这段解释也是这般感受。 当然了,这段定义是正确的,不过就是有点学究味,不够形象,不够"接地气"。 那么如何给嵌入式系统一个接地气的定义呢? 我可以先列举目前用到嵌入式系统的 IT 领域: 物联网 Android 嵌入式开发。 Linux 嵌入式开发。 智能手机,平板,智能手表

树莓派4B+ubuntu20.04读取ds18b20温度传感器数据

强颜欢笑 提交于 2020-08-09 20:53:25
树莓派4B+ubuntu20.04读取ds18b20温度传感器数据 测试环境 树莓派4B 8G + Ubuntu20.04 64位 1. 断电取下内存卡插入到win10电脑上,修改内存卡下的usercfg.txt文件 2. 在usercfg.txt下添加如下内容: #ds18b20 dtoverlay=w1-gpio-pullup,gpiopin=4 修改如下图所示: 3. 接线 将传感器模块:DQ引脚接GPIO.7引脚上、VCC接3.3V、GND接GND 4. 连接树莓派 ①挂载设备驱动 sudo modprobe w1-gpio sudo modprobe w1-therm ② 确认设备是否生效 cd /sys/bus/w1/devices/ ls 28-011939632f5b 就是外接的温度传感器设备,但并不是每个客户端都显示一样的,这个是传感器的序列号。 ③ 查看当前温度 cat 28-011939632f5b/w1_slave 第二行的 t=25062 就是当前的温度值,要换算成摄氏度,除以 1000 ,即当前温度为 25062 / 1000=25.062 摄氏度。 5. 编写测试代码 用C语言实现 ①编写代码 ds18b20.c //ds18b20.c #include <stdio.h> #include <stdlib.h> #include <string.h>

程序员如何告别无聊?何不创建一些有趣的东西呢?

▼魔方 西西 提交于 2020-08-09 20:21:20
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 是时候摆脱那些让你厌烦的无聊项目啦。你一定也有很多天马行空的奇思妙想,想要创建一些刺激且有趣的业余项目,但却不确定如何进行。 没关系,本文带着你“找找刺激”! 提高技能的最好方法就是实践。这些有趣又有挑战性的项目是你的最佳选择。 1. 数独 数独游戏大家都不会陌生吧,这些有趣的谜题也是获得算法经验的好方法。本项目的需求是创建一种算法,可用于生成有效的数独游戏。 如果你觉得这太简单了,还可以构建一种算法来解决这些数独游戏。可以执行此操作的一种方法是创建回溯算法。 你可以从中可学到: 学习和实现数独算法 为数独游戏增加一些难度,获得更大成就感 2. 目录应用 如今,创建目录已不再稀奇。但是,这个项目却不同,它可以使用Flutter来运行。Flutter是Google最新的UI工具包,可仅使用一个代码库创建本机移动应用程序。它使用Dart编程语言。最近Flutter可是很火呢! 你可以从中可学到: Flutter Dart编程语言 应用开发 3. 渐进式Web应用 渐进式Web应用程序很热门。由于控制渐进式网络应用程序的范围非常容易,因此这也非常适合作为业余项目创建。 计划构建渐进式Web应用程序时,可以选择Angular、React、Vue等顶级JavaScript框架中的一个

项目实战:Qt手机模拟器拉伸旋转框架

*爱你&永不变心* 提交于 2020-08-09 18:51:53
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/106817346 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) Qt开发专栏:项目实战(点击传送门) Qt开发专栏:开发技术(点击传送门) <br> 需求   手机模拟器伸缩旋转框架,中间为容器区域预留,给手机模拟器; <br> 目标效果    <br> 功能   1.四个角鼠标图标切换,并且点击可拉伸;   2.手机框区域,鼠标点击可以拽托;   3.透明窗口的使用;   4.横竖屏的切换,,使用F1功能键; <br> 原理   使用QRegion和QRect对鼠标区域进行判断;   使用QPainter进行绘制;   使用qss定制按钮样式;   对QWidget的paintEvent和resizeEvent使用; <br> 涉及技术博文   《 Qt实用技巧

Qt开发技术:QtSVG介绍、使用和Demo

霸气de小男生 提交于 2020-08-09 17:35:03
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/105537292 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中.. .(点击传送门) Qt开发专栏:开发技术(点击传送门) 前话 红胖子,来也! Qt的SVG介绍、基本使用和Demo演示。 Demo Demo1:QSvgGenerator 保存后的SVG文件为: Demo2:QSvgRenderer Demo3:QSvgWidget Qt SVG 可缩放矢量图形(SVG)是一种基于XML的二维矢量图形描述语言。Qt提供了用于在小部件和其他绘制设备中呈现和显示SVG图形的类。 概述 Qt SVG提供了用于呈现SVG文件的类。要包含模块类的定义,请使用以下指令: #include <QtSvg> 要链接到模块,请将此行添加到qmake

系统对 Device Tree Overlays 的支持方式

强颜欢笑 提交于 2020-08-09 12:26:50
问题来源: 野火 iMX 6ULL 开发板资料。 https://tutorial.linux.doc.embedfire.com/zh_CN/latest/linux_basis/fire-config_brief.html 5.3. fire-config机制 一般而言,fire-config旨在提供一些常见的系统功能配置服务,在进行配置过程中, 这可能会导致/boot/uEnv.txt或者是其他各种标准的linux配置文件被自动更改了, 某些选项需要重启才能生效,如果您修改了其中一个,fire-config 会在<Finish> 按钮被选择时,询问您是否要立即重启,如果您希望配置马上生效,确定重启系统即可。 5.4. Device Tree Overlays fire-config工具集成了Device Tree Overlays机制,用来管理一些硬件资源的分配和模块的加载, 从而缓解多个驱动程序争用系统资源的问题。 在传统开发模式中,这个机制通常是由设备树来完成的:在开发之前根据项目需求, 提前确定系统中所有用到的硬件设备。在设备树中把所有的外围设备信息以设备树特定的语法进行描述, 在设备树被编译为dtb文件后,被linux内核加载使用。 可以看到,在传统开发过程,一旦硬件资源发生变化,就要重新修改、编译、下载设备树。比较极端的情况是: 当项目中要支持多种的硬件模块

树莓派上手配置

微笑、不失礼 提交于 2020-08-09 10:38:30
烧录系统镜像 准备TF卡,直接官方下载个raspberry pi imager,很快就搞定。 无屏幕连接wifi 在/boot分区下创建一个文件 wpa_supplicant.conf,内容如下: country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="WIFI-1名称" psk="密码" key_mgmt=WPA-PSK //加密方式,跟路由器一致就行了 priority=1 //连接优先级,数字越大优先级越高(不可以是负数) } network={ ssid="WIFI-2名称" psk="密码" key_mgmt=WPA-PSK priority=2 scan_ssid=1 打通ssh 连接ssh 树莓派官方系统默认不开启ssh,开启的办法也很简单,在/boot下新建一个 SSH 文件就可以用ssh连接了。 ssh pi@raspberrypi.local 默认密码是 raspberry 用上面的命令,可以在不知道树莓派的准确ip地址的时候,也可以连接树莓派。 修改密码 sudo passwd pi #修改 pi 密码 sudo passwd root #设置 root 密码 su root #切换到 root 用户 su pi

树莓派3B安装OpenWrt打造超级路由器

♀尐吖头ヾ 提交于 2020-08-09 10:02:04
【温馨提示】 本文共1924字,21张图。预计阅读时间需要10分钟。 网上有很多树莓派安装 OpenWrt 的教程,我这里写一下个人安装体验以及踩过的坑🕳。希望对搜到这篇文章的你有一点点微小的帮助。 准备: 1 树莓派3B 2 TF卡 3 网线 4 笔记本 5 正常连接互联网的路由器 6 1. 准备OpenWrt固件 我这里的 OpenWrt 暂时是公司的大佬给编译好的,预置了 Luci 管理界面,AdBlock全局广告屏蔽、SSR全局路由器级别上 真正的互联网 等等插件。 之所以超级,是因为OpenWrt里面有超级多的插件,可以供你选择。定制好以后,不比市面上价值上千元的路由器差。 而我们的树莓派加上TF卡成本才不过300. 旧版固件:会提示SSR+未运行,现在已经重新编译,include了v2xxx。 OneDrive链接: https://1drv.ms/u/s!AlDziSRQfAcSw7l_eKFjouF2hXBNcw?e=nEszKd 蓝奏云链接: https://www.lanzous.com/i9x8nqj 新版固件:SSR+正常,添加了额外的插件。 Onedrive链接: https://1drv.ms/u/s!AlDziSRQfAcSw7oJkjwPn8JnQMUrRA?e=GxSUZd 蓝奏云链接: https://www.lanzous.com

说说两个冷门却又不冷门的预处理指令#pragma和#error!

家住魔仙堡 提交于 2020-08-09 02:13:32
本篇笔记分享两个冷门却又不冷门的预处理指令。 冷门是因为我们平时可能比较少用(或者说我们的编码能力还没到需要注重这些细节的水平),不冷门是因为这几个指令在一些优秀的C代码中用得很多。 比如在Linux内核代码中: #error指令 #error 指令让预处理器发出一条错误信息,并且会中断编译过程。下面我们从Linux代码中抽取出来一小段代码并做修改得到示例代码: 这段示例代码很简单,当RX_BUF_IDX宏的值不为0~3时,在预处理阶段就会通过#error 指令输出一条错误提示信息: "Invalid configuration for 8139_RXBUF_IDX" 下面编译看一看结果: 不清楚C语言编译的几个阶段的朋友可以阅读往期笔记: 【C语言笔记】编译过程 #pragma指令 #pragma指令应该是预处理指令中最复杂,其用法很多。下面简单看一下常见用法。 1、#pragma pack 我们可以利用#pragma pack来改变编译器的对齐方式: #pragma pack(n) /* 指定按n字节对齐 */ #pragma pack() /* 取消自定义字节对齐 */ 下面依旧以示例来说明。我们在之前的笔记: 《结构体内存对齐你真的弄懂了?看这道经典笔试题》 中也有提到结构体对齐的问题,那篇笔记我们没有自定字节对齐,按照编译器默认的对齐方式,代码为: 运行结果为: