开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

【码云周刊第 47 期】6个开源项目提升物联网开发效率

每周为您推送最有价值的开源技术内参!
码云Gitee 发布于 1周前 阅读 2419 评论 4 点赞 1

借助 frp 随时随地访问自己的树莓派

看了一个[「树莓派」是什么以及普通人怎么玩?] 的高票回答,双十一时间,果断买了一个树莓派 3.周一(11.13) 到的货.我目前只想实现一个简单的功能 -- 想从任意位置访问我的树莓派. 就像一个潘多拉魔盒,第一步肯定是拿到钥匙!
ios122 发布于 1周前 阅读 119 评论 2

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

2.树莓派3安装archlinux配置web、samba和aria2

本文永久更新地址:https://my.oschina.net/bysu/blog/1572517 archlinux一些常规配置,请看《1.树莓派3安装archlinux通用配置部分》 1.配置web服务(基于LAMP) 英文文档比较丰富:https://wiki.archlinux.org/index.php/Apache_HTTP_Server 1.1 先安装Apache、PHP pacman -Sy php php-apache php-gd 【上面命令会自动安装Apache、PHP】 先启动一下Apache看报什么错误 [root@alarm alarm]# apachectl AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ba27:ebff:fe34:38d5. Set the 'ServerName' directive globally to suppress this message 配置apache: vi /etc/httpd/conf/httpd.conf 查找ServerName,会看到#ServerName www.example.com:80。把前面的注释#去掉,然后改成你自己的主机名,如果是本机可以改成: SeverName localhost:80 https://wiki.archlinux.org/index.php/Apache_HTTP_Server 在 /etc/httpd/conf/httpd.conf中找到下面这行,并注释掉: #LoadModule mpm_event_module modules/mod_mpm_event.so 找到下面这行,把前面的#去掉。 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so To ...
不最醉不龟归 发布于 2周前 阅读 202

Jetson TX2 安装tensorflow

在Jetson TX2上安装tensorflow,需要在源码编译,至少我看到现在的教程都是在源码上编译,编译的时间会很久.  源码编译安装tensorflow可以参考[我另外一个教程](https://my.oschina.net/u/1046919/blog/1154302),这里主要说一些注意要项. ---- **bazel和tensorflow** bazel 和tensorflow的版本注意不要太高,我这里就是bazel和tensorflow的版本选的太高,导致安装完出现问题,虽然不知道是不是依赖没有打完整的缘故,但是在这里还是建议选择低一些的版本. 我这边选择的是bazel-5.4,tensorflow1.3 ---- **内存空间不足** 网上说编译tensorflow可能会出现内存空间不够用的情况,所以需要做一个交换文件,但是实际上我并没有碰到,但是还是记录一下 ``` #Create an 8GB swapfile fallocate -l 8G swapfile #Change permission of the swapfile chmod 600 swapfile #Create swap area mkswap swapfile #Activate the swap area sudo swapon swapfile # deactive the swap are sudo swapoff swapfile #Confirm swap area being used swapon -s ``` ---- **修改tensorflow/stream_executor/cuda/cuda_gpu_executor.cc** 在tensorflow/stream_executor/cuda/cuda_gpu_...
KyJason 发布于 1个月前 阅读 103

Freertos阅读笔记4~ Systick异常处理,任务调度流程

4 freertos任务调度源码分析 freertos之所以能够准确的按照配置的时间片进行任务调度完全依靠硬件支持。硬件上的某个计数器会提供周期性中断,在中断处理中解决任务调度 如:task1切换到task2,task2再切换到task1,如此循环往复,在外部就表现的如同多个任务在一起执行。 在CM3/CM4上有提供内部异常定时器:systick。使用systick作为实时系统的运行心脏再好不过,因为人家的名字就叫做系统滴答定时器,可谓门当户对。其它定时器也可以完成类似功能,因为freertos只关注能否提供周期中断,并不会在意中断产生着是白猫还是黑猫。使用systick的一个好处是在开发低功耗功能时它将不会受到影响。 在调度器启动之前已经使能了systick,systick中断发生后进入xPortSysTickHandler异常。在xPortSysTickHandler中没有发生任务切换,它只是利用xTaskIncrementTick函数处理了readylist与delaylist上的任务结点,需要进行任务切换时会交给pendSV来完成。 (调度器流程图)(拖动放大)   4.1 xTaskIncrementTick 在进入xTaskIncrementTick之前首先屏蔽了中断,防止发生中断嵌套破坏内核链表。 xTaskIncrementTick中率先自增了xTickCount。xTickCount能够准确表示systick发生了多少次...
橘子O 发布于 2个月前 阅读 110

深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化

2.FREERTOS任务创建、内核链表初始化 硬件环境:cortex m4 FreeRTOS版本:v8.0.1 今天开始阅读freertos,阅读同时做下笔记,等哪天碰到移植问题再翻出来看看。   2.1 任务、链表结构体 源码中使用tskTCB来存储一个任务的所有信息,xLIST存储内核链表数据。一个系统最基本的功能是它的任务调度,在任务切换时最重要的则是内核链表,用图描述下这两个结构体,这样看起来比代码更清晰。(TCB中有省略成员) (TCB结构体) -------------------------------------------------分割线---------------------------------------------------- (LIST结构体) 一个TCB中包含了两个xLIST_ITEM作为链表节点,操作xLIST_ITEM中的指针指向既为控制一个任务进出某个链表。相比xLIST_ITEM,在xLIST中使用了精简版的结点xMINI_LIST_ITEM。   2.2 xTaskGeneEricCreate 任务创建流程分析 xTaskGeneEricCreate 函数用来创建一个新任务,在调度器启动前和启动后都可以创建。 Freertos在调度器启动后至少会有一个任务(IDLE)处于准备调度状态,即使开发者不去创建自己的任务。 xTaskGeneEricCreate源码流程:(拖动可以放大图片) (任务创建流程图)   2.2.1 prvAllocateTCBAndStack 分配空间 Free...
橘子O 发布于 2个月前 阅读 88 评论 2

深度解剖~ FreeRtos阅读笔记1

上帝不仅给了我一颗低频的cpu还送了个劣质的晶振,可悲可叹!无奈在家休养,不然的话晶振偷停我可就驾鹤西去了。。。不过这也是个好机会,在家靠着窗户晒着太阳,偶尔读读源码,都很好。就是工资没了~   接连几个项目都使用了freertos,作为刚刚毕业一张白纸的我只能先去摸索一些api怎么去调用,需要填入哪些参数,才能达到自己的目的。程序不出问题就完事大吉了,不过稍有异常出现例如某个任务莫名奇妙的被挂起,超出预想,只凭借对api的了解很难追查问题的根源,所以我决定适当深入了解下freertos,顺便学习下大神们的编码风格,免得光头强总说:看你的代码像吃屎。我觉得看一些源码至少能给屎加点孜然。。。 上电复位 要让FreeRtos跑起来,首先要。。。给板子上电! 接触了一些芯片,发现它们都是将初始的异常向量表放在自己flash(也有可能是rom)的0地址,芯片上电复位在0地址,0地址开始的四个字节存放运行栈地址,紧跟着4字节是复位后要执行的第一行代码的地址(bootloader),引用一张cortexM3指南的一张图片:   要执行的第一行代码一般是汇编实现的初始化工作,因为此时并没有对MSP进行配置,所以还不具备C运行环境,因此这些工作只能由汇编来代替:初始化内存...
橘子O 发布于 2个月前 阅读 51 评论 1 点赞 1

Linux中WIFI功能工具与操作

当设备支持wifi功能时,在嵌入式linux开发中经常使用wireless tools和wpa_supplicant工具来管理和配置wifi功能与参数,本文简要介绍wifi操作的这些工具。
水海云 发布于 3个月前 阅读 116

小米温湿度传感器协议分析后续

博主上一编博文分析了小米的温湿度协议,提出了些疑问,本期解答
临峰不畏 发布于 5个月前 阅读 767 评论 4 点赞 1

在MicroPython中用面向对象方法控制microbit显示

据拉里·沃尔(一位非常著名的程序员)说,懒惰是一种美德。懒惰的程序员提出节省劳力的解决方案。 如果你想节省自己和别人的时间,让micropython代码易于重复使用、阅读。 本文假设您已经熟悉对象、类和组合的概念,并且知道如何用Python编写类定义。如果您不熟悉Python的对象定位(O O),您可能会发现代码很难遵循。我在本文后面对O作了简短的介绍。 有几种学习Python的方法。这里有一个“官方”教程,但是我不确定初学者是否会觉得很容易理解。有一本看起来不错的书。它需要大量的时间和金钱投入,但是我认为如果你需要提高你的Python技能是值得的。 我可能会着手写我自己的介绍,但这是一个重大项目,需要一段时间。现在,即使您不熟悉O,也应该能够跟踪大多数文章并运行示例代码。 Python(micropython)对物理计算非常有用   Python是当之无愧的物理计算应用中一个非常流行的语言。 Python很容易学习,它很有表现力,可以在Linux、Mac OS和微软Windows上免费使用。 Python让树莓派充满活力,大量代码树莓派的代码都是用Python实现的。 最近,micropython带来了语言的几个流行的单片机平台,包括BBC microbit。 但… 大多数已发表micropython脚本使用Python程序风格...
shaoziyang 发布于 5个月前 阅读 218

小米温湿度传感器协议分析

家里部署了简单的智能家居系统,买了个小米的温湿度传感器,尝试将其接入到自己&...
临峰不畏 发布于 5个月前 阅读 923 评论 3 点赞 3

用官方的SSD1306.py 驱动 OLED

这几天看了一下micropython的I2C OLED驱动(SPI的类似),发现有几个版本。一个是官方的版本,还有早期网上流传的版本。 网上的版本使用了pyb.I2C驱动,是将Arduino的OLED驱动移植过来,只能用在STM32上;而官方的驱动使用了machine.I2C,这样有更好的兼容性,适合不同的硬件平台,还可以用软件I2C。 因为没有看到有人介绍官方的SSD1306驱动,所以我就简单的介绍一下I2C接口的OLED使用方法,SPI的也是类似的。下面以比较常见的0.96寸的128x64 I2C OLED为例: 从github下载micropython的源码(或者只下载其中的ssd1306.py文件),然后将ssd1306.py复制到PYB Nano或其它micropython板 连接I2C和电源到I2C的OLED上,如果没有硬件I2C,使用任意GPIO也可以。 在终端里输入下面代码 from machine import I2C i2c=machine.I2C(-1, sda=machine.Pin("PB9"), scl=machine.Pin("PB8"), freq=400000)   from ssd1306 import SSD1306_I2C oled = SSD1306_I2C(128, 64, i2c) oled.text("Hello PYB Nano", 0, 0) oled.show() 如果可以看到Hello这一段文字,就说明驱动成功了。   SSD1306.py中带有的函数不多,主要函数有: text(string, x, y),在(x, y)处显示字符串,注意text()函数...
shaoziyang 发布于 7个月前 阅读 126 点赞 1

MicroPython开发板大盘点:你想要的开发板都在这里了!

MicroPython是在单片机上跑的Python。官方的开发板是PYBoard,但是这个板子比较少见,价格也比较贵。幸好MicroPython支持多种开发板,我们可以在其他开发板上很好的运行MicroPython,效果是一样的。下面是MicroPython支持的一些常见开发板
bodasisiter 发布于 7个月前 阅读 373 评论 4 点赞 1

关于MicroPython是否可以真正用在产品开发的讨论

这几天,在MicroPython官方论坛上,发起了关于MicroPython是否可以真正用在产品开发上(Is MicroPython ready for real world deployment)的讨论,非常有趣。我觉得值得大家看看,所以简单的翻译和整理了一下。 问: If I wanted to deploy a large number of devices and have them run reliably, would MicroPython be a risky choice? 在设备上运行MicroPython是否可靠? 答: We are using Micropython in several projects (medical & industrial certified measurement equipment) for ~2 years. It was a bold decision, but it already paid off. 有网友回答说:我们在多个项目中(医疗和工业测量认证设备)使用Micropython超高2年了。这是一个大胆的决定,但是它已经得到了回报。 坏处: 提升了硬件资源需求 缺乏面向对象的编程技能 好处 开发效率 可追溯性 可测试性 可移植性 许可和支持(开源) 问: don't the other benefits  exist for C/C++ (with or without an widely used OS/RTOS) ? e.g. clang or gcc, FreeRTOS, etc? 是否有其他类似C/C++的功能?如 clang或gcc、FreeRTOS等 答: MPY outperforms all the tools we know (even the ones we can't af...
shaoziyang 发布于 9个月前 阅读 262 评论 4 点赞 1

在SensorTile上使用MicroPython(一)

介绍在SensorTile上编写传感器驱动的方法
shaoziyang 发布于 9个月前 阅读 143 评论 1 点赞 1

有人给我留言要电源软件,于是就有了这篇软件合集

电源开发离不开设计,那么都有那些软件来支持工程师们的工作呐?我整理了下电源电路设计常用软件合集,希望可以帮助大家~   SPICE模拟电路仿真 用于模拟电路仿真的SPICE(Simulation Program with Integrated Circuit Emphasis)软件于1972年由美国加州大学伯克利分校的计算机辅助设计小组利用FORTRAN语言开发而成,主要用于大规模集成电路的计算机辅助设计。 SPICE的正式实用版SPICE 2G在1975年正式推出,但是该程序的运行环境至少为小型机。1985年,加州大学伯克利分校用C语言对SPICE软件进行了改写,1988年SPICE被定为美国国家工业标准。与此同时,各种以SPICE为核心的商用模拟电路仿真软件,在SPICE的基础上做了大量实用化工作,从而使SPICE成为最为流行的电子电路仿真软件。   现在用得较多的是PSPICE6.2,在同类产品中是功能最为强大的模拟和数字电路混合仿真 EDA软件,它可以进行各种各样的电路仿真、激励建立、温度与噪声分析、模拟控制、波形输出、数据输出、并在同一窗口内同时显示模拟与数字的仿真结果。无论对哪种器件哪些电路进行仿真,都可以得到精确的仿真结果,并可以自行建立元器件及元器件库。   PSPICE信息电子电路设计软件 PSPICE则是由美国Microsim公...
朱朱耀磷 发布于 10个月前 阅读 846

手把手教你看懂并理解Arduino PID控制库——引子

介绍 本文主要依托于Brett Beauregard大神针对Arduino平台撰写的PID控制库Arduino PID Library及其对应的帮助博客Improving the Beginner’s PID。在没有Brett Beauregard帮助之前,也尝试过按照PID控制基本理论写过PID控制程序,并成功应用于工业设备中,但从未深入考虑过将其写成适合工业控制的通用库。根据Brett Beauregard的理念,此PID库主要想为以下两类人服务: 想要从事Arduino PID控制的同志,提供一个快速入门的方法 已经拥有自己的PID控制算法,想要从中获取到一些新点子的同志。 本文在上述基础上,主要有以下几方面工作: 对Brett Beauregard的PID控制库代码进行必要的说明 对其博客教程核心思想进行必要的说明 对其依托PID控制库改进的autoPID控制库进行必要的说明。 背景 接触过PID控制的工程师应当都会对下面的公式印象深刻: 上述公式的具体说明就不加以说明了,请各位参考维基百科的PID controller。大部分同志可能会写出如下代码(或者类似),包括我自己 /*working variables*/ unsigned long lastTime; double Input, Output, Setpoint; double errSum, lastErr; double kp, ki, kd; void Compute() { /*How long since we last calculated*/ ...
欧阳天华 发布于 11个月前 阅读 2587 评论 3 点赞 1

【码云周刊第 1 期】推荐7款你不能错过的开源硬件架构

![码云周一见](https://static.oschina.net/uploads/img/201701/01193132_EE3z.jpg "码云周一见") 近年来,不断有智能硬件产品刷新着我们对于未来生活的期待,从智能手机到智能手表,从智能手环到智能空气净化器,毫无疑问,智能硬件在互联网时代以一种令人惊异的速度飞速发展,并给我们生活带来了更多的方便和乐趣。今天,小一也带着满满的诚意,为大家带来十足的技术干货!来,为了码出新世界,干了这一碗“技术鸡汤”。 **一、项目名称:**Cupkee 智能硬件操作系统 ![Cupkee 智能硬件操作系统](https://static.oschina.net/uploads/img/201612/19080718_E8Vq.png "Cupkee 智能硬件操作系统") **项目简介:**Cupkee 是一个C 语言编写的智能硬件操作系统,它专门设计用于微控制器硬件板,并在其上构筑了类似 nodejs 的运行环境,同时在内部包含一个简化的 javascript 解释器作为 shell。大多数硬件板不具备人机交互设施,而 cupkee 借用了板卡的 usb 作为 console 口,使用 PC 或 Mac 通过 usb 连接硬件板,使用常规的终端程序即可与 cupkee 进行交互,使得开发者可以随时对硬件编程并获得即时响应。它将板卡上的硬件资源抽象为设备,并定义了一组标准方法供开发者使用。 ...
码云Gitee 发布于 11个月前 阅读 1420 点赞 2

Micropython开发板DIY智能温控小风扇

    实验目的    1. 学习在PC机系统中扩展简单I/O 接口的方法。    2. 进一步学习编制数据输出程序的设计方法。      3. 学习DS18B20的接线方法,并利用DS18B20检测当前温度。    4.学习三极管9014的用法。    5.通过18B20智能控制直流电机驱动小风扇。 详细例程:http://www.micropython.net.cn/support/example/260.html    所需元器件    TPYBoard板子一块    直流电机一个    面包板一块    数据线一条    三极管9014(NPN)一个    杜邦线若干 TPYBoard官方购买链接: https://item.taobao.com/item.htm?spm=686.1000925.0.0.ASVvps&id=534727234963    学习DS18B20的接线方法,检测当前温度       先看一下DS18B20针脚含义,如上图:    TPYBoard的针脚与DS18B20的针脚对应关系如下:    TPYBoard       DS18B20      ————————————————         # 3V3   or any Pin  => VDD         # any   Pin          =>   DO    #   GND              => GND    还是看不明白的话,直接上针脚编号    TPYBoard       DS18B20       —————————...
bodasisiter 发布于 12个月前 阅读 425 点赞 1

Zigbee抓包分析——介绍

使用Ubiqua进行抓包分析
临峰不畏 发布于 1年前 阅读 951 评论 9 点赞 2

【码云周刊第 47 期】6个开源项目提升物联网开发效率

每周为您推送最有价值的开源技术内参!
码云Gitee 发布于 1周前 阅读 2419 评论 4 点赞 1

raspberry pi 入门注意事项

一、新系统SSH连接被拒绝的解决方法         将全新的树莓派系统烧录,开机然后用SSH远程连接,结果SSH连接提示“connection refused”,导致连接树莓派失败。出现错误的原因是自 2016-11-25 官方发布的 Raspbian 系统镜像,系统默认禁用了 SSH 服务。 As of the November 2016 release, Raspbian has the SSH server disabled by default. 出错的详细信息为:ssh: connect to host 192.168.0.11 port 22: Connection refused 官方的解决方案是:SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition 如果有显示器,开机后,在树莓派配置中将SSH开启即可。但在没有显示器,首次开机需要用SSH登陆的时候,就需要在系统烧录完毕后,进入到boot分区盘, 新建一个名为ssh的空白文件就行了。 完成后再将SD卡插回树莓派,就可以正常使用SSH了。 参考:http://www.tuicool.com/articles/M7bQFbI 二、树梅派设置静态IP 树莓派默认使用的是dhcp自动分配ip。 根据/etc/network/interfaces的提示: 首先,新的配置方法我们不需要改变/etc/network/interfaces文件中的任何内容,只要打开/etc/dhcpcd.conf这个文件,然后在其末尾添加...
趴一会 发布于 2天前 阅读 7

OpenSSH 高级运用两则

OpenSSH(OpenBSD Secure Shell)使用 SSH 通过计算机网络加密通信的实现。它是替换由 SSH Communications Security 所提供的商用版本的开放源代码方案。目前 OpenSSH 是 OpenBSD 的子项目。大家都只知道 SSH 可以基于密码或密钥登录远程主机使用,但是你知道吗?其实 SSH 还可以在运用在公网服务器连接私有IP虚拟机,还可以实现命令行 SSH 代理。 00×1、公网服务器连接私有IP虚拟机 试验环境为两台 CentOS 系统: 一台为公网服务器 rabbit :45.xxx.xxx.212 一台为 VirtualBox NAT 模式下的 CentOS 虚拟机 CentosA:10.0.2.15 NAT 普遍使用在有多台主机但只通过一个公有 IP 地址访问因特网的私有网络中,它允许了多台主机共享一个公用 IP 地址(即虚拟机的所有数据包最后都由网络中那台有公网 IP 地址主机转发出互联网)。 首先在 NAT 后面的虚拟机内建立端口转发,通过如下命令: ssh -gfN -R < 公网映射端口>:127.0.0.1:< 本地端口> < 目标公网> 命令中“SSH”参数介绍 -g:允许远程主机连接到本地建立的转发端口 -fN:不登录不执行脚本或命令(经常连用) -C:压缩数据传输(小带宽可用)   -R:程序级端口转发 ,“port:host:hostport”方法(必须使用) 在我们的例...
linux-tao 发布于 2天前

SPDK 解析(1)----PCIE入门

SPDK......未完待续
一只小江 发布于 2周前 阅读 17

2.树莓派3安装archlinux配置web、samba和aria2

本文永久更新地址:https://my.oschina.net/bysu/blog/1572517 archlinux一些常规配置,请看《1.树莓派3安装archlinux通用配置部分》 1.配置web服务(基于LAMP) 英文文档比较丰富:https://wiki.archlinux.org/index.php/Apache_HTTP_Server 1.1 先安装Apache、PHP pacman -Sy php php-apache php-gd 【上面命令会自动安装Apache、PHP】 先启动一下Apache看报什么错误 [root@alarm alarm]# apachectl AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ba27:ebff:fe34:38d5. Set the 'ServerName' directive globally to suppress this message 配置apache: vi /etc/httpd/conf/httpd.conf 查找ServerName,会看到#ServerName www.example.com:80。把前面的注释#去掉,然后改成你自己的主机名,如果是本机可以改成: SeverName localhost:80 https://wiki.archlinux.org/index.php/Apache_HTTP_Server 在 /etc/httpd/conf/httpd.conf中找到下面这行,并注释掉: #LoadModule mpm_event_module modules/mod_mpm_event.so 找到下面这行,把前面的#去掉。 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so To ...
不最醉不龟归 发布于 2周前 阅读 202

mdev实现U盘或SD卡自动挂载

mdev是busybox中udev管理程序的精简版,也是通过读取内核信息来创建设备文件,可以实现设备节点自动创建和自动挂载,只是在实现的过程中有点差异,在发生热插拔时,mdev是被hotplug直接调用,这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的哪个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。 mdev的用法请参考busybox/doc/mdev.txt文件。mdev的用途主要有两个: - 初始化/dev目录 - 动态更新/dev目录,支持热拔插,即接入、卸下设备时执行的某些动作。 ## 使能mdev机制 1. Linux内核支持选项 要使用mdev需要内核支持sysfs文件系统,为了减少对flash的读写,还要支持tmpfs文件系统。配置内核支持选项如下: - CONFIG_EMBEDDED=y - CONFIG_SYSFS=y - CONFIG_TMPFS=y 2. 根文件系统busybox支持选项 Linux System Utilities ---> [*] mdev [*] Support /etc/mdev.conf [*] Support command execution at device addition/removal 3. 配置文件系统支持 在启动脚本如/etc/init.d/rcS中添加如下内容: mount -t tmpfs mdev /dev mount -t sysfs sysfs /sys mkdir /...
水海云 发布于 2个月前 阅读 13

深度解剖~ FreeRtos阅读笔记5 FreeRtos内存管理详解

5  Freertos 内存管理 芯片中最为稀缺珍贵的往往是存储资源,为了更好的利用它们,开发者不得不变得吝啬分配、斤斤计较到每一个字节。 FreeRtos V8.0.1针对动态内存分配提供了四种方案,分别放在heap1、heap2、heap3、heap4文件中。   5.1 分配方式  heap1 heap1分配方法最为简单,代码量也相对较小,heap1只能申请不能回收,适合任务、队列等不需要执行删除操作的工程。 ucHeap占据的整块内存既为可申请的堆空间,空间大小由configTOTAL_HEAP_SIZE定义。 分配之前首先对堆的起始地址做偶对齐,这有可能会使一些起始的字节作为“占位”而丢弃掉,最终得到堆有效空间使用configADJUSTED_HEAP_SIZE代替。 (堆初始化)   Heap1分配时使用xNextFreeByte始终记录堆中可分配的首地址,起始值为0。 若初始化后需要申请20字节: (申请20字节)   第二次申请30字节: (申请30字节)     5.2 分配方式 heap2 Heap2中每个内存块都有对应结构体的记录链表和块大小,链表将空闲块按照块大小升序相连。Start和end结构体作为索引独立于堆区,end作为结束标识xBlockSize总是等于堆区总大小。 Heap2初始化堆区后图: (heap2初始化后)   5.2.1 heap2申请内存 如果程序需要申请A、...
橘子O 发布于 1个月前 阅读 94

借助 frp 随时随地访问自己的树莓派

看了一个[「树莓派」是什么以及普通人怎么玩?] 的高票回答,双十一时间,果断买了一个树莓派 3.周一(11.13) 到的货.我目前只想实现一个简单的功能 -- 想从任意位置访问我的树莓派. 就像一个潘多拉魔盒,第一步肯定是拿到钥匙!
ios122 发布于 1周前 阅读 119 评论 2

深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化

2.FREERTOS任务创建、内核链表初始化 硬件环境:cortex m4 FreeRTOS版本:v8.0.1 今天开始阅读freertos,阅读同时做下笔记,等哪天碰到移植问题再翻出来看看。   2.1 任务、链表结构体 源码中使用tskTCB来存储一个任务的所有信息,xLIST存储内核链表数据。一个系统最基本的功能是它的任务调度,在任务切换时最重要的则是内核链表,用图描述下这两个结构体,这样看起来比代码更清晰。(TCB中有省略成员) (TCB结构体) -------------------------------------------------分割线---------------------------------------------------- (LIST结构体) 一个TCB中包含了两个xLIST_ITEM作为链表节点,操作xLIST_ITEM中的指针指向既为控制一个任务进出某个链表。相比xLIST_ITEM,在xLIST中使用了精简版的结点xMINI_LIST_ITEM。   2.2 xTaskGeneEricCreate 任务创建流程分析 xTaskGeneEricCreate 函数用来创建一个新任务,在调度器启动前和启动后都可以创建。 Freertos在调度器启动后至少会有一个任务(IDLE)处于准备调度状态,即使开发者不去创建自己的任务。 xTaskGeneEricCreate源码流程:(拖动可以放大图片) (任务创建流程图)   2.2.1 prvAllocateTCBAndStack 分配空间 Free...
橘子O 发布于 2个月前 阅读 88 评论 2

Freertos阅读笔记4~ Systick异常处理,任务调度流程

4 freertos任务调度源码分析 freertos之所以能够准确的按照配置的时间片进行任务调度完全依靠硬件支持。硬件上的某个计数器会提供周期性中断,在中断处理中解决任务调度 如:task1切换到task2,task2再切换到task1,如此循环往复,在外部就表现的如同多个任务在一起执行。 在CM3/CM4上有提供内部异常定时器:systick。使用systick作为实时系统的运行心脏再好不过,因为人家的名字就叫做系统滴答定时器,可谓门当户对。其它定时器也可以完成类似功能,因为freertos只关注能否提供周期中断,并不会在意中断产生着是白猫还是黑猫。使用systick的一个好处是在开发低功耗功能时它将不会受到影响。 在调度器启动之前已经使能了systick,systick中断发生后进入xPortSysTickHandler异常。在xPortSysTickHandler中没有发生任务切换,它只是利用xTaskIncrementTick函数处理了readylist与delaylist上的任务结点,需要进行任务切换时会交给pendSV来完成。 (调度器流程图)(拖动放大)   4.1 xTaskIncrementTick 在进入xTaskIncrementTick之前首先屏蔽了中断,防止发生中断嵌套破坏内核链表。 xTaskIncrementTick中率先自增了xTickCount。xTickCount能够准确表示systick发生了多少次...
橘子O 发布于 2个月前 阅读 110

Java访问USB设备

# 编者注 由于需要对某usb设备获取的数值进行转发和广播,则选择最熟悉的java作为切入语言解决。历经辛苦,测试成功。 # JSR-80 通过查看Java的标准协会在制定标准的时候是具有JSR-80的制定的。API为javax.usb。但是通过当前(JDK 8作为默认),无论是J2ME、J2SE、J2EE都没有对JSR进行实现。 [JSR80](http://javax-usb.sourceforge.net/) ## API [javax.usb API](http://javax-usb.sourceforge.net/jdoc/) ## Simple [javax-usb-example](http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-example/) ## 问题 通过阅读,能够得知没有Windows实现,或者Windows实现有问题,则需要其他方式。我们通过usb4java库的实现,在通过usb4java-javax的连接实现javax.usb # usb4java [usb4java 官网](http://usb4java.org) [usb4java - quick start guide](http://usb4java.org/quickstart/index.html) 通过快速开始了解到usb4java的两种api,底层API是针对libusb的,高层API是针对javax.usb [High-level (javax-usb) API](http://usb4java.org/quickstart/javax-usb.html) **注意**:必须添加javax.usb.properties # 实施 开发环境为Windows ## 引用库 以下是Gradle的链式引用...
抢小孩糖吃 发布于 2天前 阅读 10

Raspberry Pi 3B下LEDE编译

openwrt现在维护的不如LEDE快,编译openwrt会出现很多错误,许多软件包的地址在官网都不存在了,所以推荐编译LEDE,出问题较少。 下载编译环境的一些依赖软件 sudo apt-get install subversion sudo apt-get install git-core sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk 下载源代码到lede目录 git clone https://github.com/lede-project/source.git lede 更新最新的包定义并安装所有包  cd lede ./scripts/feeds update -a ./scripts/feeds install -a  检查编译工具是否齐全,并生成默认配置文件.config make defconfig 进入配置工具选项菜单,根据菜单选择目标平台 make menuconfig 树莓派3B的配置有点坑,藏的太深了,找了半天,实际上芯片是BCM2837,设置如下就可以 最后一步编译,一次成功,没有任何错误,就是时间长点 make  ...
googlewell 发布于 2天前 阅读 2

【码云周刊第 47 期】6个开源项目提升物联网开发效率

每周为您推送最有价值的开源技术内参!
码云Gitee 发布于 1周前 阅读 2419 评论 4 点赞 1

Jetson TX2 安装jetpack,cuda,opencv

进入ubuntu系统后,默认是16.04的系统,不过都是在命令行下,需要安装图形界面。 在命令行应该有用户名和密码,还有安装教程,基本上是这样 ``` 用户:nvidia 密码:nvidia cd ${HOME}/NVIDIA_INSTALLER sudo ./installer.sh ``` 之后就可以进入图形界面。 然后需要刷机和安装cuda的,这里推荐使用Jetpack,[下载地址](https://developer.nvidia.com/embedded/jetpack) 在使用jetpack之前你需要另外一台装有ubuntu的电脑,然后在这电脑上安装jetpack,而不是TX2上。 **注意将电脑和TX2都连到同一网段,同一路由器就行。** 下载之后执行sh文件,然后会跳出![输入图片说明](https://static.oschina.net/uploads/img/201710/22092717_xk4n.png "在这里输入图片标题") 输入密码解压 之后会跳出![输入图片说明](https://static.oschina.net/uploads/img/201710/22092925_bxxW.png "在这里输入图片标题") 这里host-ubuntu的自己的电脑,可以选择什么都不装,Action那栏是no action的状态。 不刷机的话Target-Jetson TX2下Linux for Tegre host Side ... , Flash OS Image to Target也要选择no action。 最后的install on Target可以自己选择安装,建议除了opencv可以之后自己装,...
KyJason 发布于 1个月前 阅读 98

借助 frp 随时随地访问自己的树莓派

看了一个[「树莓派」是什么以及普通人怎么玩?] 的高票回答,双十一时间,果断买了一个树莓派 3.周一(11.13) 到的货.我目前只想实现一个简单的功能 -- 想从任意位置访问我的树莓派. 就像一个潘多拉魔盒,第一步肯定是拿到钥匙!
ios122 发布于 1周前 阅读 119 评论 2

Jetson TX2 安装tensorflow

在Jetson TX2上安装tensorflow,需要在源码编译,至少我看到现在的教程都是在源码上编译,编译的时间会很久.  源码编译安装tensorflow可以参考[我另外一个教程](https://my.oschina.net/u/1046919/blog/1154302),这里主要说一些注意要项. ---- **bazel和tensorflow** bazel 和tensorflow的版本注意不要太高,我这里就是bazel和tensorflow的版本选的太高,导致安装完出现问题,虽然不知道是不是依赖没有打完整的缘故,但是在这里还是建议选择低一些的版本. 我这边选择的是bazel-5.4,tensorflow1.3 ---- **内存空间不足** 网上说编译tensorflow可能会出现内存空间不够用的情况,所以需要做一个交换文件,但是实际上我并没有碰到,但是还是记录一下 ``` #Create an 8GB swapfile fallocate -l 8G swapfile #Change permission of the swapfile chmod 600 swapfile #Create swap area mkswap swapfile #Activate the swap area sudo swapon swapfile # deactive the swap are sudo swapoff swapfile #Confirm swap area being used swapon -s ``` ---- **修改tensorflow/stream_executor/cuda/cuda_gpu_executor.cc** 在tensorflow/stream_executor/cuda/cuda_gpu_...
KyJason 发布于 1个月前 阅读 103

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

2.树莓派3安装archlinux配置web、samba和aria2

本文永久更新地址:https://my.oschina.net/bysu/blog/1572517 archlinux一些常规配置,请看《1.树莓派3安装archlinux通用配置部分》 1.配置web服务(基于LAMP) 英文文档比较丰富:https://wiki.archlinux.org/index.php/Apache_HTTP_Server 1.1 先安装Apache、PHP pacman -Sy php php-apache php-gd 【上面命令会自动安装Apache、PHP】 先启动一下Apache看报什么错误 [root@alarm alarm]# apachectl AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ba27:ebff:fe34:38d5. Set the 'ServerName' directive globally to suppress this message 配置apache: vi /etc/httpd/conf/httpd.conf 查找ServerName,会看到#ServerName www.example.com:80。把前面的注释#去掉,然后改成你自己的主机名,如果是本机可以改成: SeverName localhost:80 https://wiki.archlinux.org/index.php/Apache_HTTP_Server 在 /etc/httpd/conf/httpd.conf中找到下面这行,并注释掉: #LoadModule mpm_event_module modules/mod_mpm_event.so 找到下面这行,把前面的#去掉。 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so To ...
不最醉不龟归 发布于 2周前 阅读 202

Raspberry Pi 3B下LEDE编译

openwrt现在维护的不如LEDE快,编译openwrt会出现很多错误,许多软件包的地址在官网都不存在了,所以推荐编译LEDE,出问题较少。 下载编译环境的一些依赖软件 sudo apt-get install subversion sudo apt-get install git-core sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk 下载源代码到lede目录 git clone https://github.com/lede-project/source.git lede 更新最新的包定义并安装所有包  cd lede ./scripts/feeds update -a ./scripts/feeds install -a  检查编译工具是否齐全,并生成默认配置文件.config make defconfig 进入配置工具选项菜单,根据菜单选择目标平台 make menuconfig 树莓派3B的配置有点坑,藏的太深了,找了半天,实际上芯片是BCM2837,设置如下就可以 最后一步编译,一次成功,没有任何错误,就是时间长点 make  ...
googlewell 发布于 2天前 阅读 2

Java访问USB设备

# 编者注 由于需要对某usb设备获取的数值进行转发和广播,则选择最熟悉的java作为切入语言解决。历经辛苦,测试成功。 # JSR-80 通过查看Java的标准协会在制定标准的时候是具有JSR-80的制定的。API为javax.usb。但是通过当前(JDK 8作为默认),无论是J2ME、J2SE、J2EE都没有对JSR进行实现。 [JSR80](http://javax-usb.sourceforge.net/) ## API [javax.usb API](http://javax-usb.sourceforge.net/jdoc/) ## Simple [javax-usb-example](http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-example/) ## 问题 通过阅读,能够得知没有Windows实现,或者Windows实现有问题,则需要其他方式。我们通过usb4java库的实现,在通过usb4java-javax的连接实现javax.usb # usb4java [usb4java 官网](http://usb4java.org) [usb4java - quick start guide](http://usb4java.org/quickstart/index.html) 通过快速开始了解到usb4java的两种api,底层API是针对libusb的,高层API是针对javax.usb [High-level (javax-usb) API](http://usb4java.org/quickstart/javax-usb.html) **注意**:必须添加javax.usb.properties # 实施 开发环境为Windows ## 引用库 以下是Gradle的链式引用...
抢小孩糖吃 发布于 2天前 阅读 10

raspberry pi 入门注意事项

一、新系统SSH连接被拒绝的解决方法         将全新的树莓派系统烧录,开机然后用SSH远程连接,结果SSH连接提示“connection refused”,导致连接树莓派失败。出现错误的原因是自 2016-11-25 官方发布的 Raspbian 系统镜像,系统默认禁用了 SSH 服务。 As of the November 2016 release, Raspbian has the SSH server disabled by default. 出错的详细信息为:ssh: connect to host 192.168.0.11 port 22: Connection refused 官方的解决方案是:SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition 如果有显示器,开机后,在树莓派配置中将SSH开启即可。但在没有显示器,首次开机需要用SSH登陆的时候,就需要在系统烧录完毕后,进入到boot分区盘, 新建一个名为ssh的空白文件就行了。 完成后再将SD卡插回树莓派,就可以正常使用SSH了。 参考:http://www.tuicool.com/articles/M7bQFbI 二、树梅派设置静态IP 树莓派默认使用的是dhcp自动分配ip。 根据/etc/network/interfaces的提示: 首先,新的配置方法我们不需要改变/etc/network/interfaces文件中的任何内容,只要打开/etc/dhcpcd.conf这个文件,然后在其末尾添加...
趴一会 发布于 2天前 阅读 7

linkit smart 7688 折腾

      这货是联发科出的物联网 开发版 ,CPU是 580MHZ 的 MIPS 处理器,默认的固件是 openwrt ,可以当作一个路由器来用了 ,,2015 年发布, 2016 年更新了一版固件 现在应该是没人管的状态了 。  openwrt 也老了,最新的代码 在最新的 Debian 系统上已经编译不过去了,建议转向 LEDE 。然后就是这货核心的 WI-FI  功能,关键的驱动是闭源的,然后openwrt 自己整了个 mt76 驱动,可惜很不完善 各种崩溃,想稳定还是直接刷官方的固件吧 ,折腾性 大打折扣,别想自己升级内核了      国内有个山寨版 widora ,添加了以太网网口和音频处理模块,固件是通用的。
sincoder 发布于 3周前 阅读 5

[玩硬件]Arduino初级套试玩。

emmmm,去年买的玩具,一直摆到哪里不管过,今天晚上一时兴起玩了下。
z201 发布于 2个月前 阅读 19

Ubuntu 17.04/17.10的升级和Docker安装

Ubuntu 17.04与16.04版本变化较大,容易导致升级失败。 下面把一些过程中的折腾记录下来,备忘: 升级准备 sudo apt update && sudo apt dist-upgrade 长期支持版本默认设置为仅升级到LTS版本。 要获知有一个较新的非LTS Ubuntu版本可用,您必须使用软件更新程序工具手动设置“选择加入”: 打开“软件和更新” 选择“更新”选项卡 找到标题为“通知我新的Ubuntu版本” 在下拉菜单中,从“长期支持版本”切换到“任何新版本” 手动升级 sudo do-release-upgrade 然后,重启。就一直挂在启动界面了,再也起不来了。 然后,做了个启动U盘,使用UltraISO做的,但是用于安装时中途出错。 把U盘全部分区删除,格式化一遍成NTFS。再重新做启动U盘。 启动安装过程顺利,最后 Install  grub /dev/dm 0出错,重启失败。 再次安装,选英文版安装(网上有人说英文版没问题),选中lvm(原来磁盘用了lvm,不知道有没有关系),成功!!! 进去装docker、synaptic、gparted等。 安装docker CE 添加Docker’s 官方的 GPG key: $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 检查下看 sudo apt-key fingerprint 0EBFCD88 添加软件源 sudo add-apt-rep...
openthings 发布于 2个月前 阅读 13 评论 1

mdev实现U盘或SD卡自动挂载

mdev是busybox中udev管理程序的精简版,也是通过读取内核信息来创建设备文件,可以实现设备节点自动创建和自动挂载,只是在实现的过程中有点差异,在发生热插拔时,mdev是被hotplug直接调用,这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的哪个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。 mdev的用法请参考busybox/doc/mdev.txt文件。mdev的用途主要有两个: - 初始化/dev目录 - 动态更新/dev目录,支持热拔插,即接入、卸下设备时执行的某些动作。 ## 使能mdev机制 1. Linux内核支持选项 要使用mdev需要内核支持sysfs文件系统,为了减少对flash的读写,还要支持tmpfs文件系统。配置内核支持选项如下: - CONFIG_EMBEDDED=y - CONFIG_SYSFS=y - CONFIG_TMPFS=y 2. 根文件系统busybox支持选项 Linux System Utilities ---> [*] mdev [*] Support /etc/mdev.conf [*] Support command execution at device addition/removal 3. 配置文件系统支持 在启动脚本如/etc/init.d/rcS中添加如下内容: mount -t tmpfs mdev /dev mount -t sysfs sysfs /sys mkdir /...
水海云 发布于 2个月前 阅读 13

深度解剖~ FreeRtos阅读笔记1

上帝不仅给了我一颗低频的cpu还送了个劣质的晶振,可悲可叹!无奈在家休养,不然的话晶振偷停我可就驾鹤西去了。。。不过这也是个好机会,在家靠着窗户晒着太阳,偶尔读读源码,都很好。就是工资没了~   接连几个项目都使用了freertos,作为刚刚毕业一张白纸的我只能先去摸索一些api怎么去调用,需要填入哪些参数,才能达到自己的目的。程序不出问题就完事大吉了,不过稍有异常出现例如某个任务莫名奇妙的被挂起,超出预想,只凭借对api的了解很难追查问题的根源,所以我决定适当深入了解下freertos,顺便学习下大神们的编码风格,免得光头强总说:看你的代码像吃屎。我觉得看一些源码至少能给屎加点孜然。。。 上电复位 要让FreeRtos跑起来,首先要。。。给板子上电! 接触了一些芯片,发现它们都是将初始的异常向量表放在自己flash(也有可能是rom)的0地址,芯片上电复位在0地址,0地址开始的四个字节存放运行栈地址,紧跟着4字节是复位后要执行的第一行代码的地址(bootloader),引用一张cortexM3指南的一张图片:   要执行的第一行代码一般是汇编实现的初始化工作,因为此时并没有对MSP进行配置,所以还不具备C运行环境,因此这些工作只能由汇编来代替:初始化内存...
橘子O 发布于 2个月前 阅读 51 评论 1 点赞 1

深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化

2.FREERTOS任务创建、内核链表初始化 硬件环境:cortex m4 FreeRTOS版本:v8.0.1 今天开始阅读freertos,阅读同时做下笔记,等哪天碰到移植问题再翻出来看看。   2.1 任务、链表结构体 源码中使用tskTCB来存储一个任务的所有信息,xLIST存储内核链表数据。一个系统最基本的功能是它的任务调度,在任务切换时最重要的则是内核链表,用图描述下这两个结构体,这样看起来比代码更清晰。(TCB中有省略成员) (TCB结构体) -------------------------------------------------分割线---------------------------------------------------- (LIST结构体) 一个TCB中包含了两个xLIST_ITEM作为链表节点,操作xLIST_ITEM中的指针指向既为控制一个任务进出某个链表。相比xLIST_ITEM,在xLIST中使用了精简版的结点xMINI_LIST_ITEM。   2.2 xTaskGeneEricCreate 任务创建流程分析 xTaskGeneEricCreate 函数用来创建一个新任务,在调度器启动前和启动后都可以创建。 Freertos在调度器启动后至少会有一个任务(IDLE)处于准备调度状态,即使开发者不去创建自己的任务。 xTaskGeneEricCreate源码流程:(拖动可以放大图片) (任务创建流程图)   2.2.1 prvAllocateTCBAndStack 分配空间 Free...
橘子O 发布于 2个月前 阅读 88 评论 2

深度解剖~ FreeRtos阅读笔记3 freertos调度器启动、中断优先级管理、中断优先级分组

3. freertos调度器启动、中断优先级管理、中断优先级分组   永远不要小看不起眼的东西,哪怕是短短的一行代码! (某些图片分辨率过大显示不清楚,保存到本地或拖动可放大)。   很多例程将vTaskStartScheduler函数作为main执行的最后一行代码,因为执行了vTaskStartScheduler后主权便交给了freertos调度器,程序永远不会在这个函数中得到返回。 vTaskStartScheduler主要动作有:创建IDLE任务,初始化systick等重要寄存器,手动触发中断重新配置MSP并返回到handle模式执行第一个任务。如图展示源码主要流程: (调度器启动流程) 流程分析: 3.1 创建IDLE任务 vTaskStartScheduler函数中创建了名为IDLE的任务,这个任务的功能先不管它,先饶它不死等对源码逐个击破后它就会不攻自破。   3.2 关中断 某些不可重入代码段或定义的一些全局变量,在使用它们之前往往先进入临界区保护下,以免突发事件产生时破坏当前正要处理的数据。比如一些全局变量,如果在中断里或多个任务中都被使用到,当任务正在处理某个全局数组的数据时,此时中断发生并更新了数组中的数据,这样中断返回后就会产生一些不可预料的结果。 记得在实习那会写过不少这样的错误代码,没有考虑代码能不能重入,结...
橘子O 发布于 2个月前 阅读 138

Arduino 基于陀螺仪的定位

姿态解算代码 ``` #include "Wire.h" #include "I2Cdev.h" unsigned long now, lastTime = 0; float dt; //微分时间 int16_t ax, ay, az, gx, gy, gz; //加速度计陀螺仪原始数据 float aax=0, aay=0,aaz=0, agx=0, agy=0, agz=0; //角度变量 long axo = 0, ayo = 0, azo = 0; //加速度计偏移量 long gxo = 0, gyo = 0, gzo = 0; //陀螺仪偏移量 float pi = 3.1415926; float AcceRatio = 16384.0; //加速度计比例系数 float GyroRatio = 131.0; //陀螺仪比例系数 uint8_t n_sample = 8; //加速度计滤波算法采样个数 float aaxs[8] = {0}, aays[8] = {0}, aazs[8] = {0}; //x,y轴采样队列 long aax_sum, aay_sum,aaz_sum; //x,y轴采样和 float a_x[10]={0}, a_y[10]={0},a_z[10]={0} ,g_x[10]={0} ,g_y[10]={0},g_z[10]={0}; //加速度计协方差计算队列 float Px=1, Rx, Kx, Sx, Vx, Qx; //x轴卡尔曼变量 float Py=1, Ry, Ky, Sy, Vy, Qy; //y轴卡尔曼变量 float Pz=1, Rz, Kz, Sz, Vz, Qz; //z轴卡尔曼变量 void setup() { Wire.begin(); Serial.begin(115200); accelgyro.initialize(); //初始化 unsigned short times = 200; //采样次数 for(int i=0;i...
海森堡测不准兔子 发布于 2个月前 阅读 30

SPDK 解析(1)----PCIE入门

SPDK......未完待续
一只小江 发布于 2周前 阅读 17

Linux中WIFI功能工具与操作

当设备支持wifi功能时,在嵌入式linux开发中经常使用wireless tools和wpa_supplicant工具来管理和配置wifi功能与参数,本文简要介绍wifi操作的这些工具。
水海云 发布于 3个月前 阅读 116

Jetson TX2 摄像头读取

对于TX2来说,如果你外接一个USB摄像头那么和在电脑上操作一样,但是要读取板上的摄像头就有点问题了,纠结了好久。 首先测试一下摄像头,打开Jetson TX1的终端 写入命令:nvgstcapture-1.0 ,摄像头就会起来了 简单的使用了手册中的几个命令 1. --prev_res 预览视屏的分辨率,高度和宽度,用的是CSI摄像头的话范围是 2 to 12 (5632x4224) e.g., nvgstcapture-1.0 --prev-res=3 2. --cus-prev-res 自定义预览分辨率,宽度和高度,仅支持CSI摄像头 e.g., nvgstcapture-1.0 --cus-prev-res=1920x1080 多个命令同时使用的话用!隔开 想关掉摄像头的额话,直接在终端输入q再按回车 想捕获图片的话,在终端输入j再按回车,图片将保存当前目录下 ---- **使用Opencv读取摄像头** 记得一定要安装gstreamer这个依赖 ``` #include #include using namespace cv; using namespace std; int main(int argc, char** argv) { VideoCapture cap("nvcamerasrc ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720,format=(string)I420, framerate=(fraction)24/1 ! nvvidconv flip-method=2 ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)...
KyJason 发布于 1个月前 阅读 9

解析企业使用开源软件的潜在风险

很多企业都选择使用开源软件(OSS)构建更加灵活的产品,但其中也存在潜在的风险,软件供应商和IoT制造商都有必要去了解一下隐藏在软件供应链中的风险。 已知风险 例如,犯罪分子就完全可以利用Apache Struts CVE-2017-5638漏洞来获取Equifax客户的个人资料。众所周知,Apache Struts是一种广泛使用的开源组件 – Web服务器的框架,它可以用于接收和提供公司内部系统中的商业数据。归根到底,还是因为这个开源组件所存在的漏洞以致于使其成为网络攻击的主要目标。 主要发现 根据Flexera的一份最新报告显示,在商业和IoT软件产品中所发现的代码有百分之五十都是与开源软件有关的。但调查显示只有37%的受访者表示曾获取并使用开源软件。而63%的公司说,他们并没有获取或使用开源软件,或者说他们根本就不知道有这种情况的存在。 并且据了解,目前基本没有人对开源软件的安全性负责:39%的受访者表示,在他们公司内部没有人会对开源软件的安全性负责,或者可以说他们压根就不知道应该是由谁来负责。 除此之外,开源软件的贡献者也不是遵循最佳实践:33%的受访者表示自己的公司曾为开源项目做出了贡献。但是,又有63%的受访者表示他们的公司压根并没有开源采购或使用政策,...
Harriet666 发布于 3周前 阅读 3

OpenSSH 高级运用两则

OpenSSH(OpenBSD Secure Shell)使用 SSH 通过计算机网络加密通信的实现。它是替换由 SSH Communications Security 所提供的商用版本的开放源代码方案。目前 OpenSSH 是 OpenBSD 的子项目。大家都只知道 SSH 可以基于密码或密钥登录远程主机使用,但是你知道吗?其实 SSH 还可以在运用在公网服务器连接私有IP虚拟机,还可以实现命令行 SSH 代理。 00×1、公网服务器连接私有IP虚拟机 试验环境为两台 CentOS 系统: 一台为公网服务器 rabbit :45.xxx.xxx.212 一台为 VirtualBox NAT 模式下的 CentOS 虚拟机 CentosA:10.0.2.15 NAT 普遍使用在有多台主机但只通过一个公有 IP 地址访问因特网的私有网络中,它允许了多台主机共享一个公用 IP 地址(即虚拟机的所有数据包最后都由网络中那台有公网 IP 地址主机转发出互联网)。 首先在 NAT 后面的虚拟机内建立端口转发,通过如下命令: ssh -gfN -R < 公网映射端口>:127.0.0.1:< 本地端口> < 目标公网> 命令中“SSH”参数介绍 -g:允许远程主机连接到本地建立的转发端口 -fN:不登录不执行脚本或命令(经常连用) -C:压缩数据传输(小带宽可用)   -R:程序级端口转发 ,“port:host:hostport”方法(必须使用) 在我们的例...
linux-tao 发布于 2天前

raspberry pi 入门注意事项

一、新系统SSH连接被拒绝的解决方法         将全新的树莓派系统烧录,开机然后用SSH远程连接,结果SSH连接提示“connection refused”,导致连接树莓派失败。出现错误的原因是自 2016-11-25 官方发布的 Raspbian 系统镜像,系统默认禁用了 SSH 服务。 As of the November 2016 release, Raspbian has the SSH server disabled by default. 出错的详细信息为:ssh: connect to host 192.168.0.11 port 22: Connection refused 官方的解决方案是:SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition 如果有显示器,开机后,在树莓派配置中将SSH开启即可。但在没有显示器,首次开机需要用SSH登陆的时候,就需要在系统烧录完毕后,进入到boot分区盘, 新建一个名为ssh的空白文件就行了。 完成后再将SD卡插回树莓派,就可以正常使用SSH了。 参考:http://www.tuicool.com/articles/M7bQFbI 二、树梅派设置静态IP 树莓派默认使用的是dhcp自动分配ip。 根据/etc/network/interfaces的提示: 首先,新的配置方法我们不需要改变/etc/network/interfaces文件中的任何内容,只要打开/etc/dhcpcd.conf这个文件,然后在其末尾添加...
趴一会 发布于 2天前 阅读 7

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

Java访问USB设备

# 编者注 由于需要对某usb设备获取的数值进行转发和广播,则选择最熟悉的java作为切入语言解决。历经辛苦,测试成功。 # JSR-80 通过查看Java的标准协会在制定标准的时候是具有JSR-80的制定的。API为javax.usb。但是通过当前(JDK 8作为默认),无论是J2ME、J2SE、J2EE都没有对JSR进行实现。 [JSR80](http://javax-usb.sourceforge.net/) ## API [javax.usb API](http://javax-usb.sourceforge.net/jdoc/) ## Simple [javax-usb-example](http://javax-usb.cvs.sourceforge.net/javax-usb/javax-usb-example/) ## 问题 通过阅读,能够得知没有Windows实现,或者Windows实现有问题,则需要其他方式。我们通过usb4java库的实现,在通过usb4java-javax的连接实现javax.usb # usb4java [usb4java 官网](http://usb4java.org) [usb4java - quick start guide](http://usb4java.org/quickstart/index.html) 通过快速开始了解到usb4java的两种api,底层API是针对libusb的,高层API是针对javax.usb [High-level (javax-usb) API](http://usb4java.org/quickstart/javax-usb.html) **注意**:必须添加javax.usb.properties # 实施 开发环境为Windows ## 引用库 以下是Gradle的链式引用...
抢小孩糖吃 发布于 2天前 阅读 10

Raspberry Pi 3B下LEDE编译

openwrt现在维护的不如LEDE快,编译openwrt会出现很多错误,许多软件包的地址在官网都不存在了,所以推荐编译LEDE,出问题较少。 下载编译环境的一些依赖软件 sudo apt-get install subversion sudo apt-get install git-core sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk 下载源代码到lede目录 git clone https://github.com/lede-project/source.git lede 更新最新的包定义并安装所有包  cd lede ./scripts/feeds update -a ./scripts/feeds install -a  检查编译工具是否齐全,并生成默认配置文件.config make defconfig 进入配置工具选项菜单,根据菜单选择目标平台 make menuconfig 树莓派3B的配置有点坑,藏的太深了,找了半天,实际上芯片是BCM2837,设置如下就可以 最后一步编译,一次成功,没有任何错误,就是时间长点 make  ...
googlewell 发布于 2天前 阅读 2

macOS下的串口终端screen

之前说到了macOS安装minicom,其实macOS自带了一个串口终端:`screen`。下面简单说一下它的使用。 打开串口终端 screen /dev/tty.usbserial 115200 退出终端 control-a d
JenkinZhou 发布于 1周前 阅读 9

macOS下开发STM32

sw4stm32+stlinkv2
JenkinZhou 发布于 1周前 阅读 2

【码云周刊第 47 期】6个开源项目提升物联网开发效率

每周为您推送最有价值的开源技术内参!
码云Gitee 发布于 1周前 阅读 2419 评论 4 点赞 1

Micropython教程之TPYBoard制作蓝牙+红外循迹小车

  1.实验目的   学习在PC机系统中扩展简单I/O接口的方法。   进一步学习编制数据输出程序的设计方法。   学习蓝牙模块的接线方法及其工作原理。   学习L298N电机驱动板模块的接线方法。   学习蓝牙控制小车的工作原理。   2.所需元器件   TPYBoardv102板子1块   蓝牙串口透传模块(HC-06)1个   L298N电机驱动板模块1个   智能小车底盘1个   数据线1条   杜邦线若干   智能蓝牙小车APP(Android版)点击下载      3.蓝牙串口模块原理   (1)引出接口包括EN,5V,GND,TX,RX,STATE,我们小车只用到RX,TX,GND,5V四个针脚   (2)模块默认波特率位9600,默认配对密码为1234,默认名称位为HC-06   (3)led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口,当我们用安卓手机软件发送指令时,通过串口给TPYBoard发送指令,TPYBoard收到指令通过L298BN模块来驱动小车前进,后退,向左,向右或者停止。   如下表接线:    蓝牙模块(HC-06) TPYBoardv10x 5V VIN(+5V) GND GND RX Y9(UART(3)-TX) TX Y10(UART(3)-RX)     4.四路红外循迹模块   (1)当模块检测到前方障碍物信号时,电路板上红色指示灯点亮,同时OUT端口持续输...
bodasisiter 发布于 1周前 阅读 4

借助 frp 随时随地访问自己的树莓派

看了一个[「树莓派」是什么以及普通人怎么玩?] 的高票回答,双十一时间,果断买了一个树莓派 3.周一(11.13) 到的货.我目前只想实现一个简单的功能 -- 想从任意位置访问我的树莓派. 就像一个潘多拉魔盒,第一步肯定是拿到钥匙!
ios122 发布于 1周前 阅读 119 评论 2

2.树莓派3安装archlinux配置web、samba和aria2

本文永久更新地址:https://my.oschina.net/bysu/blog/1572517 archlinux一些常规配置,请看《1.树莓派3安装archlinux通用配置部分》 1.配置web服务(基于LAMP) 英文文档比较丰富:https://wiki.archlinux.org/index.php/Apache_HTTP_Server 1.1 先安装Apache、PHP pacman -Sy php php-apache php-gd 【上面命令会自动安装Apache、PHP】 先启动一下Apache看报什么错误 [root@alarm alarm]# apachectl AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::ba27:ebff:fe34:38d5. Set the 'ServerName' directive globally to suppress this message 配置apache: vi /etc/httpd/conf/httpd.conf 查找ServerName,会看到#ServerName www.example.com:80。把前面的注释#去掉,然后改成你自己的主机名,如果是本机可以改成: SeverName localhost:80 https://wiki.archlinux.org/index.php/Apache_HTTP_Server 在 /etc/httpd/conf/httpd.conf中找到下面这行,并注释掉: #LoadModule mpm_event_module modules/mod_mpm_event.so 找到下面这行,把前面的#去掉。 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so To ...
不最醉不龟归 发布于 2周前 阅读 202

SPDK 解析(1)----PCIE入门

SPDK......未完待续
一只小江 发布于 2周前 阅读 17

为什么甲骨文在开源上刷两面派

甲骨文爱开源,除了这个数据库巨头讨厌开源的时候,当然是这样的。从最近它游说美国联邦政府反对开源这一做法来看,似乎大部分时间它是讨厌开源的。 没错,甲骨文最近加入了云原生计算基金会(CNCF),加大对 Kubernetes 的支持力度;没错,它长期以来都在支持着 Linux(并向其贡献代码);没错,甲骨文还选择了开放 Java —— 把 Java EE 捐赠给了 Eclipse 基金会。 然而,看起来热爱开源的甲骨文却在不断游说美国政府考虑这一观点,“从成本的角度来看,不用计算就可以证明没必要使用开源软件,因为其带来的支持成本,加上放弃特性、功能、自动化和安全所带来的机会成本压倒了任何假定的成本节省。” 甲骨文高级副总裁 Kenneth Glueck 致信前微软首席财务官、现任特朗普美国科技委员会主任的 Christopher Liddell,堂而皇之地表达了这一诉求。 美国政府正在向外界征求 IT 现代化计划方面的意见。回信给 Liddell 的其他 IT 公司包括 AT&T、思科、微软和 VMware。 换句话说,从回信的内容来看,甲骨文希望我们相信:开源会导致成本更高,并带来安全性更低和功能不完整的软件。除此之外,甲骨文还认为,私营部门之所以运作不畅,正是使用开源软件导致的。但它似乎忘记了这一点...
linux-tao 发布于 2周前 阅读 3

linkit smart 7688 折腾

      这货是联发科出的物联网 开发版 ,CPU是 580MHZ 的 MIPS 处理器,默认的固件是 openwrt ,可以当作一个路由器来用了 ,,2015 年发布, 2016 年更新了一版固件 现在应该是没人管的状态了 。  openwrt 也老了,最新的代码 在最新的 Debian 系统上已经编译不过去了,建议转向 LEDE 。然后就是这货核心的 WI-FI  功能,关键的驱动是闭源的,然后openwrt 自己整了个 mt76 驱动,可惜很不完善 各种崩溃,想稳定还是直接刷官方的固件吧 ,折腾性 大打折扣,别想自己升级内核了      国内有个山寨版 widora ,添加了以太网网口和音频处理模块,固件是通用的。
sincoder 发布于 3周前 阅读 5

Linux/RaspberryPi设置环境变量

Linux/RaspberryPi设置环境变量的几个地方: /etc/profile /etc/local /etc/local.rc /etc/bash.bashrc /home/pi/.profile 查看环境变量:env  
openthings 发布于 3周前 阅读 4

树莓派用服务方式设置开机启动

一、首先写个简单的python 脚本 脚本很简单,就是树莓派上一个灯闪烁程序,需要学gpio可以看我之前的博客 文件保存在/home/pi/script/ledblink.py #!/usr/bin/env python    import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(21,GPIO.OUT) while True:   try:     GPIO.output(21,True)     time.sleep(1)     GPIO.output(21,False)     time.sleep(1)   except (KeyboardInterrupt, SystemExit):     GPIO.close()     print "exit" 启动脚本可以是python,可以是shell,也可以是C语言C++编译的可执行文件。   二 、开机启动脚本 保存脚本为/etc/init.d/ledblink文件 #!/bin/bash # /etc/init.d/ledblink    ### BEGIN INIT INFO # Provides: embbnux # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: ledblink initscript # Description: This service is used to manage a led ### END INIT INFO    case "$1" in     start)         echo "Starting LED Blink"         /home/pi/script/ledblink.py &...
openthings 发布于 3周前 阅读 2

1.树莓派3安装archlinux通用配置部分

本文永久地址:https://my.oschina.net/bysu/blog/1560594 安装过程请参考:https://my.oschina.net/bysu/blog/1557801 买了个树莓派3主要是想用来当家用NAS和学习编程。由于树莓派性能有限,故此分两种环境配置。现在先配置通用环境部分。 强插入:虚拟内存分区(该节点未验证,网上看到,记录为日后不时之需) 创建交换文件 交换文件可以在物理内存不足的时候将部分内存暂存到交换文件中,避免系统由于内存不足而完全停止工作。 之前我们通常采用单独一个分区的方式作为交换分区,现在更推荐采用交换文件的方式,更便于我们的管理。 分配一块空间用于交换文件,执行: fallocate -l 512M /swapfile (请将512M换成需要的大小,只能以M或G为单位) 更改权限,执行:交换文件的大小可以自己决定,推荐4G以下的物理内存,交换文件与物理内存一致,4G以上的物理内存,交换文件4-8G。 chmod 600 /swapfile mkswap /swapfile 设置交换文件,执行: 启用交换文件,执行: swapon /swapfile vim /etc/fstab 最后我们需要编辑/etc/fstab为交换文件设置一个入口,使用vim打开文件: 注意编辑fstab文件的时候要格外注意不要修改之前的内容,直接在最后新起一行加入以下内容: /swapfil...
不最醉不龟归 发布于 3周前 阅读 9

linux中的设备节点说明

linux中的设备节点说明
趴一会 发布于 3周前 阅读 3

archlinux通过pacman -Sy 安装sudo报错

package: /path/to/file exists in filesystem Errors occurred, no packages were upgraded. 不知道干了什么之后,只要通过pacman -Sy 安装(譬如安装sudo 还有mutt)都会报上述的错误。摸了一个晚上都解决不了。后来查看wiki,说明如下: pacman 检测到文件冲突,而且按照设计,pacman 不会覆盖文件。这是设计功能,不是缺陷。 先用 (pacman -Qo 文件的完整路径 检查哪个软件包提供了文件。如果是其它软件包,请报告问题。如果不是其它软件包提供,将已经存在的文件重命名并重新升级。如果一切顺利,可以删掉备份文件。 如果是通过 make install 等非 pacman 方式安装的软件,安装的文件不属于任何软件包!需要先手动删除这些文件,这样就可以正常安装软件了。不属于任何软件包的文件列表一文中提供了查找这些文件的脚本。 每一个安装的软件包都会提供一个 /var/lib/pacman/local/$package-$version/files 文件,包含此软件包的元数据。如果文件损坏或者丢失,将会导致升级时出现file exists in filesystem 错误。此错误通常只会影响一个软件包,除了手动删除或移动所有的问题文件,可以作为特例使用pacman -S --force $package让 pacman 强制覆盖这些文件。 警告: --f...
不最醉不龟归 发布于 3周前 阅读 3

Arduino开发板批量生产

开发产品也并不是非得集成个Arduino开发板,一个核心的控制芯片足以。 其实Arduino的核心就是ATMega的AVR单片机,只要写入程序,单片机IC只需要外置一个石英振荡器,就可以工作,所以你测试成功的Arduino程序其实Upload到Arduino以后就可以把AVR单片机拆下来,之后再制作PCB将其插上去就可以了。如果设计的PCB上留有复位接口和串口,还能用UNO板来对已经焊接在PCB上的AVR单片机编程,无需重新插上UNO板。
lwaif 发布于 3周前 阅读 6

解决WIN10系统下PL2303_USB转串口驱动兼容性问题

版权声明:本文为博主 一銤阳光 学习整理的文章,如需转载,请注明出处、附上CSDN博文链接(http://blog.csdn.net/csdnhuaong/article/details/68945601)。 出现的问题 -自己安装完驱动后能正常使用,但是重新插拔之后又不能正常使用了 -所以按照这个思路,我把WIN10的自动更新给关掉了,但是当你接入PL2303,WIN10还是会自动安装驱动 -后来是每次使用时,先到设备管理器把驱动删除,然后拔下PL2303,重新插上,当WIN10弹出驱动安装,给它立马关掉。这样是能用了,但是太麻烦,每次都要重新进行这个过程。 后来在网上查找解决方案,说把驱动退回就可以了,但是退回之后,下一次还会自己安装 问题的原因 后来仔细分析,发现了问题的真正原因,就是我们自己安装的PL2303的驱动是兼容的, 而WIN10自动更新的驱动不兼容,并且后者会把前者覆盖掉,导致驱动设备不能正常工作。 解决方案 就是想办法把我们自己的驱动覆盖掉WIN10更新的。操作步骤如下图所示 选择更新驱动程序 选择手动查找 选择从计算机列表中选取 选择那个旧版的驱动,点击下一步,这样的话你就成功了。 如果不放心,你可以把转换器插拔几次试试看^_^ 驱动免积分下载 WIN10_ PL2303.ZIP...
openthings 发布于 3周前 阅读 2

JavaScript在物联网中的应用

在那篇《最流行的编程语言JavaScript能做什么?》里,我们列举了JavaScript在不同领域的使用情况,今天让我们来详解一下JavaScript在物联网中的应用。
Phodal 发布于 1年前 阅读 4381 评论 8 点赞 2

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

​黑科技:程序猿如何打造属于自己的分体键盘

之前一直想买个机械键盘,听说机械键盘敲代码和玩游戏都特别爽,也是装B神器。同时也觉得普通的键盘打字打久了手腕会有点酸酸的,因为敲键盘时都是要弯着手腕的,一点也不符合人体工程学。于是乎就想买一个分体的机械键盘,结果找了半天都没有比较中意的,找到几个人体工程学键盘,都是薄膜的,而且价格高得离谱,不就多个人体工程学光环嘛。。。
腾讯Bugly 发布于 2年前 阅读 5464 评论 40 点赞 16

Linux下TTL串口登录pcDuino V2

在没有显示器和网线的情况下,串口是连接pcDuino V2的不二选择。本文主要记录了我在LINUX下通过USB-TTL转接连接pcDuino V2 的过程步骤,仅供参考!
HilerChen 发布于 3年前 阅读 3730 评论 12 点赞 3

树莓派使用DHT11温湿度传感器

通过树莓派的GPIO口连接DHT11温湿度传感器,读取温湿度数据。成功使用wiringpi实现,pi4j失败。
李鱼跃龙门 发布于 3年前 阅读 18496 评论 18 点赞 13

dell服务器远程获取硬件状态

以dell的R620型号的服务器做的测试 登陆上dell服务器ilo的IP地址,首先打开ipmi,ilo2是直接支持ipmi2.0的 此框需要点击 “IDRAC设置”->“网络”->“IPMI设置”在”启用LAN上IPMI“后的复选框打钩,才能启动ipmi 好像是内置到了ilo2,应该是,这个不是太确定,但是我能确定的是,ipmitool获取数据的时候直接可以使用ilo的账户密码 [root@manrhca script]# ipmitool  -I lan -H 192.168.232.200 -U root -P calvin sdr SEL              | Not Readable      | ns Intrusion        | 0x00              | ok Fan1A RPM        | 2160 RPM          | ok Fan2A RPM        | 2160 RPM          | ok Fan3A RPM        | 2160 RPM          | ok Fan4A RPM        | 2160 RPM          | ok Fan5A RPM        | 2160 RPM          | ok Fan6A RPM        | 2280 RPM          | ok Inlet Temp       | 21 degrees C      | ok Exhaust Temp    ...
薄皮儿脆沙瓤 发布于 4年前 阅读 8886 评论 2 点赞 4

[翻译完成] 用红外遥控器遥控树莓派

概述 本篇教程将会讲解如何用一部红外遥控器来遥控操作树莓派上安装的影音中心. 在开始之前, 你需要按此教程把树莓派搭建为影音中心. 需要的零件 在搭建好了影音中心之后, 你需要去买些零件. 名称 数量 红外传感器 http://adafruit.com/products/157 1 红外遥控器 http://adafruit.com/products/389 1 母对母杜邦线 http://adafruit.com/products/794 1 硬件连接 红外传感器只有三个引角, 都需要连上树莓派的GPIO管脚. 我们需要用到母对母杜邦线把它们连上. 好的杜邦线连上红外传感器会使得连接更可靠些. 按下图所示进行连接. 跳线的颜色无关紧要, 只是不同颜色更容易区分. 要注意在树莓派上用红外传感器需要3.3V电压, 千万别用5V. LIRC 树莓派和遥控器的通讯通过LIRC (Linux Infrared Remote Control)完成. 大多数树莓派发行版都已经预装了, 所以在Rasbmc上我们就不需要再安装了, 只需做些设置即可. 为了确保红外硬件正常工作, 我们可以用SSH连接安装好XBMC的树莓派来测试下. 如果你从没用过SSH,请看此教程. 在XBMC的系统信息界面我们可以获得树莓派的IP地址. 我们需要关掉红外功能, 要不然我们无法通过SSH使用LIRC. 进入XMBC的设置界面, 然后将"Enable GPIO TSOP IR Re...
八宝粥 发布于 4年前 阅读 14564 评论 16

[翻译完成] 树莓派搭建hadoop集群

Hadoop是由Java实现的, 所以在树莓派上运行就和在其他x86平台上运行一样简单. 首先, 我们需要安装支持树莓派的JVM. 可以选用OpenJDK或者Oracle的JDK 8. 我个人推荐JDK8, 其速度稍微快些, 但是OpenJDK安装更容易些. 1. 安装Java 安装OpenJDK十分简单, 只要执行以下命令 pi@raspberrypi ~ $ sudo apt-get install openjdk-7-jdk pi@raspberrypi ~ $ java -version java version "1.7.0_07" OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-1+rpi1) OpenJDK Zero VM (build 22.0-b10, mixed mode) 另外, 我们可以选择安装Oracle的JDK 8. 可以从这获得: https://jdk8.java.net/fxarmpreview/index.html pi@raspberrypi ~ $sudo tar zxvf jdk-8-ea-b36e-linux-arm-hflt-*.tar.gz -C /opt pi@raspberrypi ~ $sudo update-alternatives --install "/usr/bin/java"  "java" "/opt/jdk1.8.0/bin/java" 1  pi@raspberrypi ~ $ java -version java version "1.8.0-ea" Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e) Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode) 如果你两个都装了, 用以...
八宝粥 发布于 4年前 阅读 9839 评论 19 点赞 4

基于Android平台的无线传感器网络(ZigBee)监控系统

ZigBee协议实现的WSN,由ZigBee协议的传感节点组成,完成数据采集、处理、上传,执行控制命令。 JavaWeb实现的服务端,由RS232通信,数据解析,持久化层,面向移动终端的Web通信等模块组成。web部分包括了HTTP及XMPP协议的推送服务。 Android平台上的WSN监控软件。
Change_Ty 发布于 4年前 阅读 10616 评论 44 点赞 4
顶部