- 博客(25)
- 资源 (4)
- 收藏
- 关注
原创 Tcar:智能车之基于mg995型号舵机的驱动控制模块
3、舵机模块 mg995直流电机 + 控制电路3.1 驱动程序 mg995有三条线: 电源线 GND线 控制线 要想控制舵机,就是操作控制线,只需要控制这一根。 控制线连接到CPU特定的管脚上去 '编程控制舵机,就变成了编程控制对应的CPU管脚' 控制原理: 1.控制线接收周期性的方波脉冲信号 2.一个周期20ms
2017-03-28 22:45:52 6112
原创 Tcar:智能车之基于L298N电机驱动芯片的驱动模块
2、电机驱动模块 - L298N电机驱动芯片 // env/motor.zip 两个直流电机,控制前轮的用于转向 控制后轮的用于前进后退 编程,让用户方便的控制小车的运动 2.1 电机的驱动 硬件的接法: 电机上需要的瞬间电流可能是安培级的 而CPU上的管脚输出的
2017-03-27 23:17:45 2949
原创 Tcar:智能车之基于rtl8188eu驱动的wifi模块
2、WIFI模块2.1 WIFI模块的驱动程序 http://www.realtek.com.tw https://github.com/lwfinger/rtl8188eu // wifi_hostapd_dnsmasq.rar/rtl8188eu.tar.bz2 git 分布式的版本控制软件,linus开发的
2017-03-26 18:10:06 3237
原创 Tcar:智能车之ds18b20温度传感器实现温度采集模块
1、温度采集模块 // env/ds18b20.zip1.1 硬件 温度传感器 'ds18b20' 一线式设备(1-wire) '独立式供电': VDD接独立的电源 '寄生供电': DQ连接到GPIO管脚当GPIO管脚上为高电平时 充电 (内部有电容)当GPIO管脚上为低电平时 放电 来维持ds18b20工作所需要的能量 寄生电源优势:布线简单 驱动程序
2017-03-24 22:40:39 1632
原创 Ehome:智能家居之嵌入式系统升级功能
10、系统功能升级通过网络进行升级:设备给服务器发送版本号,如果小于服务器的版本号,就使用文件操作通过socket网络通信进行文件的复制(下载),PC端需要建立服务器用来打开使用buf缓冲区来进行发送,当接收到开发板的server,然后进行文件覆盖替换(u盘挂载system执行的命令)。通过U盘来实现升级功能:10.1 U盘的手工挂载 #:' ls /dev/sd*
2017-03-23 22:51:52 687
原创 Ehome:智能家居之嵌入式软件项目发布
9、项目的发布 9.1 配置脚本,实现开机自启动 /etc/init.d/rcS: '开机自启动的程序可以放入该脚本 /etc/profile: '全局对所有用户有效的环境变量 开机自启动: $:' vi rootfs/etc/init.d/rcS最后加入 exec /home/etc/rcS $:' vi roo
2017-03-22 19:54:34 849
原创 Ehome:智能家居之手持终端计步器功能实现
8、计步器的功能实现 使用g-sensor实现 // 注意client的添加需要修改编译内核源码。 内核中自带了g-sensor的驱动程序,可以将内核中自带的驱动程序裁剪掉: $:' make menuconfig Device Drivers ---> Hardware Monitoring suppo
2017-03-21 23:16:55 492
原创 Ehome:智能家居之多媒体系统mp3-UI通信界面
智能家居mp3播放加一个简单的GUI界面播放: 1)开启新线程开始播放或者2) 唤醒被暂停的播放线程pthread_cond_signal(&conti);暂停:stat=1 // 状态机修改了播放线程中的output//alsa声卡的暂停,将缓冲区中提提交声卡播放数据全部提交给声卡 snd_pcm_drop(handle);//让播放线程进入睡眠状态,
2017-03-20 22:57:25 887
原创 以任意进制形式打印输出,如六进制
#include //#define NUM_TYPE 6 @编译时指定int main (void) { unsigned int n = 0, y = 0, res = 0; unsigned int cnt = 1; printf ("请输入一个非负数:"); scanf ("%d", &n); while (1) { y = n
2017-03-19 17:55:30 521
原创 TAB键转换为4个空格
#include int isCharTab (char tab) { return (('\t' == tab) ? 1 : 0); }int isStrTab (char* tab) { return (('\\' == *tab && 't' == *(tab+1)) ? 1 : 0); }void fill4Space (char* pDst) { int
2017-03-19 17:48:12 1853
原创 Ehome:智能家居之多媒体系统mp3音频播放
7. MP3功能的实现7.1 基本概念 PCM: 脉冲编码调制 声音是模拟量 计算机能处理的是数字量,涉及模拟量和数字量的相互转换 录音时是模拟量转数字量 播放时是数字量转模拟量 采样频率: 每秒钟抽取声波幅度样本的次数 当采样频率应该在4
2017-03-17 20:40:39 1398
原创 Ehome:智能家居之按键模拟红外实时报警系统 - beep
6. 红外报警功能用按键来模拟红外当按键按下,有人闯入,需要报警报警:beep响 (选择)发一个短信 (gsm) - 需要硬件和协议支持,暂空置。6.1 驱动程序按键驱动// drivers/buttons蜂鸣器驱动建议按照混杂设备的架构完成// drivers/beep6.2 应用程序实时监控,满足条件就报警使用多线程/Qtimer
2017-03-16 21:03:59 1626
原创 Ehome:智能家居之基于USB摄像头的实时视频监控功能
5. 视频客户端5.1 HTTP协议: // http.zip 超文本传输协议,基于TCP的传输通信模型。 通信的双方: 客户端要给服务器端发送request(请求) 服务器端根据客户端的请求回送response(响应) HTTP是一个'应用层'协议,由请求和响应构成。 HTTP协议是无状态协议。无状态是指协议对于事务
2017-03-15 22:52:07 4330
原创 Ehome:智能家居之基于USB摄像头免驱的视频采集服务器
4. 视频服务器4.1 摄像头的驱动['uvc子系统']: usb video class 内核中自带了满足uvc格式的摄像头驱动,如果你手中的摄像头满足uvc规范,该摄像头就是免驱,只需要对内核进行配置,将uvc模块对应的代码编译到uImage判断摄像头满足uvc格式规范? #:' lsusb 再将摄像头插入开发板 #:' ls
2017-03-14 23:11:10 1397
原创 Ehome:智能家居之led控制系统
3. LED的控制3.1 LED驱动程序 实质就是一个linux字符设备驱动 $:' cd project $:' mkdir drivers $:' cd drivers $:' mkdir leds $:' cd leds // ---> madir drivers/leds -p
2017-03-13 22:04:16 1362
原创 Ehome:智能家居嵌入式项目背景和开发流程
0. 项目背景智能家居的核心技术:【无线通信】 1)zigbee (非常复杂的协议,E802.15.4标准的短距离、低功耗局域网协议 - 紫蜂) ①低功耗。2节5号电池壳支持1个节点工作6~24个月。 ②低成本。 ③低速率。 ④近距离10~100m。
2017-03-12 20:02:19 2818
原创 Ehome:QT项目移植的开发环境与移植流程
0. 项目背景智能家居的核心技术:【无线通信】 1)zigbee (非常复杂的协议,E802.15.4标准的短距离、低功耗局域网协议 - 紫蜂) ①低功耗。2节5号电池壳支持1个节点工作6~24个月。 ②低成本。 ③低速率。 ④近距离10~100m。
2017-03-12 19:57:59 712
原创 多线程网络聊天(示范代码)
server 服务器端#include #include #include #include #include #include #include #include #include #define PORT 8848#define BACKLOG 10#define MAXDATASIZE 128#define MAXUSER 9void fuck_filter
2017-03-11 21:35:50 484
原创 Driver:内核等待队列、按键延时去抖、按下和释放去抖、用户态对设备的非阻塞方式访问
1、内核等待队列 recv (...) // 网卡收到数据该函数立即返回 // 未收到数据阻塞睡眠等待,一旦有数据立即读取 在Linux驱动程序中,可以使用等待队列来实现进程阻塞。 等待队列可以看作保存进程的容器,在阻塞进程时,将进程放入等待队列,当进程被唤醒时,从等待队列中取出进程。实际上,信号量等对进程的阻塞在内核中
2017-03-06 23:36:12 685
原创 【重要】C/C++/嵌入式,必会的理论概念
【C 语言】1、 C 和 C++有什么不同?1)C语言面向过程编程,重程序的实现;C++面向对象编程,重程序的设计;2)C是C++的一个子集;C++全面兼容C;3)C++相对于C引入了重载、内联函数、异常处理、类的封装/继承/多态、以及STL/容器类等…2、进程和线程的异同、关系? 1)进程:是系统资源分配和调度的基本单位,有自己的pid;
2017-03-05 22:05:42 2448
原创 Driver:内核的竞态和并发:中断屏蔽、原子操作、自旋锁、信号量
Linux内核的并发与竞态 《《linux设备驱动 - 第3版》.chm》第5章。 函数的可重入性: 判断一个函数是否有可重入性,关键在于该函数是否使用了全局变量。 如果该函数使用了全局变量,那么该函数不具有可重入性。 多进程访问同一个文件: 文件锁机制实现 共享内存:可以多进程访问,可以使用信号量
2017-03-04 23:43:26 529
原创 Driver:内核定时器
内核定时器 延时5s:5*HZ 系统时钟中断: arm core会不停的接收系统时钟的中断信号 arch/arm/mach-s5p6818/cpu.c .timer = &nxp_cpu_sys_timer voidtimer_initialize(void) {
2017-03-04 23:33:16 373
原创 Driver:linux中断处理-按键、中断处理的底半部登记方式
1、linux中断处理 - 按键裸板中按键中断的处理: 1) 按键中断的触发; 中断源级 触发方式的配置:上升沿、下降沿、双沿、高电平、低电平 中断屏蔽/中断使能配置 中断控制器级 IRQ/FIQ 上报给cpuX哪个核
2017-03-04 23:27:17 1082
原创 Driver:LED灯操作、内核空间和用户空间的数据交互、ioctl函数、设备文件安装与销毁
1、LED灯操作用户空间执行open时,led1亮;执行close时,led1灭。电路原理图: led1 ---> GPIOC12如何控制: cpu datasheet 特殊功能寄存器在linux下操作GPIO管脚有两种方式: 1)像裸板开发一样通过'指针 + 位操作'来完成特殊功能寄存器的设置。 问题在于:/* 要将特殊功能寄存
2017-03-04 21:33:09 1295
原创 【最易理解】单向线性链表 & 单链表反序 & 双向链表(完整代码)
"单向线性链表结构体"typedef int ElemType;typedef struct Node { ElemType data; struct Node* next;} Node;typedef struct Node* LinkList;"头插法创建链表 "void CreateListHead (LinkList *L, int n) { Li
2017-03-02 20:53:30 567
JVM-Java内存规范.png
2020-05-28
MVC模式用JSP实现用户管理(增删改查)核心逻辑图示.png
2020-05-09
Filter过滤器实现自动登陆核心逻辑.png
2020-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人