前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >android源码下载方式

android源码下载方式

作者头像
阳光岛主
发布于 2019-02-19 08:09:02
发布于 2019-02-19 08:09:02
2.2K00
代码可运行
举报
文章被收录于专栏:米扑专栏米扑专栏
运行总次数:0
代码可运行

演示视频

PPT

PPT

一. 设计背景

现如今由于新冠疫情影响,疫情催生着在线教育,让很多学习场景从学校、教室转移至家庭、宿舍。作为开学即隔离的学生党感受颇深QAQ,每天的网课和作业对用眼需求更大,昏暗的宿舍和巨亮的屏幕更是增大了眼睛的压力。于是就有了开发此demo的想法,同时感谢TencentOS团队提供的这次机会开启了我学习嵌入式操作系统,以及学习NXP系列MCU的旅程。

二. 项目功能

项目总体功能框图
项目总体功能框图

坐姿检测

通过HC-SR04超声波模块实时检测使用者与台灯之间的距离判断坐姿,提醒使用者调整坐姿。

暗环境开灯提醒

再也不会忘记太阳落山时开灯了。。。

柔和调光

现在市面的大多数台灯都只是分几档亮度,拥有无极调光的台灯价格都不太友好。于是增加了PWM无极调光,光线柔和变换,减轻用眼负担。

小程序控制

TencentOS-Tiny作为物联网操作系统依托腾讯强大的物联网云平台可以让项目更简单的接入微信小程序,不用下载第三方APP即可做到远程遥控。

三. 硬件部分

EVB-AIoT 开发板

EVB-AIoT开发板
EVB-AIoT开发板
  • 核心板采用的RT1062处理器属于i.MX RT 系列 MCU,是由 NXP 推出的跨界处理器,跨界是指该系列MCU的定位既非传统的微控制器、也非传统的微处理器,i.MX RT 系列 MCU 则综合了两者的优势,既具备高频率(最高主频600M)、高处理性能,也具备中断响应迅速、实时性高的特点。
  • 1M RAM 16M SDRAM 64MB qspi flash 128MB spi flash。
  • 板载Type-C接口CMSIS DAP仿真器。
  • 板载PCIE接口,可扩展4G类物联网模组。
  • 板载物联网俱乐部WAN Interface接口,可支持NB-IoT、WiFi、4G cat1、LoRa等模组。
  • 板载物联网俱乐部E53 Interface接口,可扩展全系E53传感器。
  • 板载标准24P DVP摄像头接口,可支持最高500万像素摄像头。
  • 板载RGB显示接口,可转换HDMI输出。
  • 板载高性能音频解码芯片,可做语音识别测试。
  • 预留SD卡、用户按键、SPI Flash。

HC-SR04超声波传感器

HC-SR04超声波传感器
HC-SR04超声波传感器

HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。

  • 采用 I/O 口 TRIG 触发测距,给最少 10us 的高电平信呈
  • 模块自动发送 8个40khz 的方波,自动检测是否有信号返回
  • 有信号返回,通过I/O口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2

I/O连接如下:

HC-SR04 引脚连接
HC-SR04 引脚连接

蜂鸣器模块

蜂鸣器模块
蜂鸣器模块

有源蜂鸣器一枚,低电平触发。

I/O连接如下:

蜂鸣器 引脚连接
蜂鸣器 引脚连接

BH1750环境光传感器

BH1750环境光传感器
BH1750环境光传感器

BH1750环境光传感器内置16位的模数转换器,通过IIC接口能够直接输出一个数字信号,不需要再做复杂的计算。能够直接通过光度计来测量。光强度的单位是流明"lux"。当物体在均匀的光照下它能够在每平方米获得1lux的光通量,它们的光强度是1lux。量程为 1-65535lux。

I/O连接如下:

E53_SC1 引脚连接
E53_SC1 引脚连接

ESP8266 WiFi模块

ESP8266 WiFi模块
ESP8266 WiFi模块

ESP8266系列无线模块是一个经济高效的WIFI SOC模块,支持标准IEEE802.11b/g/n协议,内置完整的TCP/IP协议栈。 用户可以使用此系列模块向现有设备添加网络功能,也可以构建独立的网络控制器。

I/O连接如下:

ESP8266 引脚连接
ESP8266 引脚连接

四. 软件部分

软件开发使用了MCUXpresso Config Tools v10和Keil MDK进行了开发,MCUXpresso Config Tools是NXP的一款类似STM32CubeMX的配置工具,但它的功能要更加强大,可以直接生成一些SDK工程,可以快速学习一些外设和库函数的使用方法,可以极大的提高开发效率。

MCUXpresso Config Tools
MCUXpresso Config Tools
任务结构
任务结构

mqttclient_task

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void mqttclient_task(void)
{
    int error;
    mqtt_client_t *client = NULL;
    mqtt_message_t msg;
    k_event_flag_t match_flag;
    char  host_ip[20];
    uint16_t lux;
    memset(&msg, 0, sizeof(msg));
    esp8266_sal_init(HAL_UART_PORT_2);
    esp8266_join_ap("*******", "*******");//WiFi SSID, WiFi Password
    bh1750_init();
    mqtt_log_init();
    client = mqtt_lease();  
    tos_event_create(&report_result_event, (k_event_flag_t)0u);    
    /* Domain Format: <your product ID>.iotcloud.tencentdevices.com */
    tos_sal_module_parse_domain("7VIN7U0AXQ.iotcloud.tencentdevices.com",host_ip,sizeof(host_ip));
    
    /*
        These infomation is generated by mqtt_config_gen.py tool in "TencentOS-tiny\tools" directory.
    */
    mqtt_set_port(client, "1883");
    mqtt_set_host(client, host_ip);
    mqtt_set_client_id(client, "7VIN7U0AXQdev001");
    mqtt_set_user_name(client, "7VIN7U0AXQdev001;21010406;12365;4294967295");
    mqtt_set_password(client,  "8d5dfc28d97785d5b0b57fcfd449485c18a0a998;hmacsha1");
    mqtt_set_clean_session(client, 1);

    error = mqtt_connect(client);
    
    MQTT_LOG_D("mqtt connect error is %#0x", error);
    
    error = mqtt_subscribe(client, "$thing/down/property/7VIN7U0AXQ/dev001", QOS0, tos_topic_handler);
    
    MQTT_LOG_D("mqtt subscribe error is %#0x", error);
    
    while (1) {
        bh1750_start(ONCE_H_MODE);
        tos_task_delay(160);
        bh1750_read_lux(&lux);
        printf("bh1750 lux is %d\r\n",lux);
        
        memset(&msg, 0, sizeof(msg));
        snprintf(report_buf, sizeof(report_buf), REPORT_DATA_TEMPLATE,lux);
 		
			/*光亮度数据参考:
			*晚上: 0.001-0.02;
			*月夜: 0.02-0.3;
			*多云室内: 5-50;
			*多云室外: 50-500;
			*晴天室内: 100-1000;
			*阅读书籍时的照明度:50-60;
			*家庭录像标准照明度:1400
			*/
				if(lux <= 50){								
					GPIO_PinWrite(GPIO3, 2, 1);
				}else{
					GPIO_PinWrite(GPIO3, 2, 0);
				}
				
        msg.qos = QOS0;
        msg.payload = (void *) report_buf;
        error = mqtt_publish(client, "$thing/up/property/7VIN7U0AXQ/dev001", &msg);
        MQTT_LOG_D("mqtt publish error is %#0x", error);
        
        tos_event_pend(&report_result_event, 
                       report_success|report_fail,
                       &match_flag,
                       TOS_TIME_FOREVER,
                       TOS_OPT_EVENT_PEND_ANY | TOS_OPT_EVENT_PEND_CLR);
        
        if (match_flag == report_success) {
            printf("report to Tencent IoT Explorer success\r\n");
        
        }else if (match_flag == report_fail){
            printf("report to Tencent IoT Explorer fail\r\n");
        }
        
        tos_task_delay(2000); 
    }
}

blink_task

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void blink_entry(void *arg){
		while(1){
			if(lastbrightness < brightness){
				for(temp = lastbrightness ; temp < brightness ; temp++){
					PWM_UpdatePwmDutycycle(PWM4, kPWM_Module_3, kPWM_PwmA, kPWM_SignedCenterAligned, temp);//更新占空比 
					PWM_SetPwmLdok(PWM4,kPWM_Control_Module_3, true);
					tos_task_delay(5);
				}
			}else if(lastbrightness > brightness){
				for(temp = lastbrightness ; temp > brightness ; temp--){
					PWM_UpdatePwmDutycycle(PWM4, kPWM_Module_3, kPWM_PwmA, kPWM_SignedCenterAligned, temp);//更新占空比 
					PWM_SetPwmLdok(PWM4,kPWM_Control_Module_3, true);
					tos_task_delay(5);
				}
			}
			lastbrightness = brightness;		
		}	 
}

distance_task

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void Distance_judge_entry(void *arg){
	int distance_flag;
	while(1){
		Distance_measurement();//超声波测距
					
		if(distance < 1000){
			distance_flag++;
		}
		
		if(distance_flag >= 10){
			GPIO_PinWrite(GPIO2, 29, 0U);
			delay_us(500000);
			distance_flag = 0;
		}
		else if(distance_flag < 10){
			GPIO_PinWrite(GPIO2, 29, 1U);
		}			
		PRINTF("%d\n",distance);					
	}
}

五. 小程序部分

腾讯云物联网平台提供了交互开发的功能,可以直接在腾讯连连小程序中开发标准面板,也可以自己写H5上传自定义面板,这里我使用了标准面板。标准面板在调试时非常方便,后期可以自制H5面板。

标准面板开发
标准面板开发
小程序面板
小程序面板

六. 活动总结

本着学习嵌入式操作系统参加了此次活动,有幸进入初赛获得EVB-AIoT开发板。通过这次活动我学习到了很多新的知识,也通过其他大佬的作品了解了很多之前不了解的技术和规范(比如在单片机部署AI模型、清晰的项目概况、分析问题的方法),对我未来的学习提供了丰富的资源。感谢TencentOS-Tiny团队和NXP提供的学习资料以及直播课程,让我从基本0基础学习了NXP RT系列单片机的开发以及TencentOS-Tiny的移植和使用。虽然活动中途出现了些小插曲(自己修核心板QAQ)没有做成最初设想的作品,但还是算基本完成了任务。

不积跬步无以至千里,通过这次活动初步了解了嵌入式操作系统,今后将继续深入学习TencentOS-Tiny。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011年09月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android源码下载与编译全过程
摘要:本文是根据自己亲手编译源码过程所总结的一个开发笔记(包括编译流程,可能遇到的错误,以及错误解决的办法等),首先介绍了基于Ubuntu9.10的编译环境的建立,再次介绍了整个源码的获取方式,最后讲解了源码的编译过程(包括源码的打包处理,u-boot的编译,Linux的kernel的编译,android文件系统的编译)。本文各个操作的开发环境是基于VMware7.10虚拟机的Ubuntu9.10环境。当然不同的版本的Linux可能操作过程有点差异,所遇到的错误可能不同,但是各个操作思想是一致的。
用户4148957
2022/06/14
1.9K0
Android源码下载详细步骤
Android源码下载支持的系统目前只有Ubuntu和Mac OS两种操作系统, 本次以Ubuntu系统为例. 官方网站: http://source.android.com/source/downloading.html 下载单独项目的源码:https://github.com/android 下载Git(版本控制工具). 调出命令行: ctrl + alt + T sudo apt-get install git (下载地址在源中,"系统设置/软件和更新",路径:/etc/apt/sources.l
乱码三千
2021/07/29
1.2K0
Windows下成功安装Repo和下载Android源码方法总结LineageOS 14.1下载
官方的定义:Repo是谷歌用python脚本写的调用git的一个脚本,可以实现管理多个git库。
杨永贞
2022/01/07
10.3K1
Windows下成功安装Repo和下载Android源码方法总结LineageOS 14.1下载
[Android 源码] Android源码下载「建议收藏」
@page { margin-top: 0.79in margin-right: 0.79in margin-bottom: 0.79in margin-left: 0.79in } P{margin-bottom:0.08in;direction:ltr;color:rgba(0, 0, 0, 1);widows:0;orphans:0} P.western{font-family:"DejaVu Serif", serif;font-size:12pt;so-language:en-US} P.cjk{font-family:"DejaVu Sans";font-size:12pt;so-language:zh-CN} P.ctl{font-family:"Lohit Hindi";font-size:12pt;so-language:hi-IN} A:link{so-language:zxx}
全栈程序员站长
2022/09/20
2.6K0
Android 源码下载
参考文档:https://source.android.google.cn/setup/downloading 源码地址
艳龙
2021/12/16
1.5K0
Android源码学习之环境搭建(Ubuntu下载Android源码)
已经有一个多月没有看Android的知识了,之前在杭州时就买了邓凡平的《深入理解Android卷I 》一直没来得及研究。后来因为公司要求,要为新的项目做准备,做各种业务的KT和技术的training,虽然新技术本身的难度不大,但是业务知识很是复杂,搞的头大,到现在终于有了一些头绪。趁现在有时间来研究下Android的源码。之前没有接触过Linux系统,我的本本现在用的是Windows系统,已经用习惯了。所以先安装虚拟机VMWare8.0,在虚拟机上安装的Ubuntu10.04(32)。安装过程相对简单,一般不会出现什么问题,真的不行删掉重新安装,我就安装了两次Ubuntu,没什么大不了的。接下来说重点,Ubuntu上下载Android源码。
全栈程序员站长
2022/08/23
7210
Windows下安装Ubuntu、图形界面、下载Android源码,看这一篇就够了
自己手里有一台Windows电脑,但是工作开发都是Linux系统下进行,想着给自己的Windows电脑安装Linux系统,说干就干。
八归少年
2022/10/08
2.1K0
Windows下安装Ubuntu、图形界面、下载Android源码,看这一篇就够了
在macOS 10.12 上编译 Android 5.1
官方文档虽然也有介绍,但是macOS平台上的编译环境问题还存在很多坑。本文介绍下如何在在macOS 10.12 上编译 Android 5.1源码,导入源码到Android Studio中,把系统烧录到Nexus6手机中。 ---- 搭建编译环境 创建分区 AOSP源码需要一个支持大小写敏感的文件系统,100G是至少要的。官网有详细的介绍,这里简单列一下。 $ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g
felix
2018/06/08
2.1K0
团队协作Repo服务器搭建
Repo只是一个工具,可以管理多个Git仓库。它是谷歌为管理庞大的安卓源码而封装的一套脚本,Git才是实际的版本管理工具。文章只是描述了大概步骤,部分细节不做讲解。
程序手艺人
2019/02/21
3.4K0
Windows下载Android源代码
官方下载:http://code.google.com/p/msysgit/downloads/list,
全栈程序员站长
2022/07/09
7880
国内镜像加速Android源码下载
6.查看想要下载的源码的Tag和Builds,网址:====点击查看,需要翻蔷====,这里 @安卓猴 给你们截下图,自己放大查看:
GitOPEN
2019/01/29
4.4K0
国内镜像加速Android源码下载
【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码
a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo .注意执行该文件需要python2.5以上版本,如果是2.4.3的python版本就无法执行这个文件脚本;
韩曙亮
2023/03/27
2.7K0
【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码
最新最全的Android4.0 API源代码下载和完整Android4.0源代码下载教程
这时刚刚整理好的最新的,包含所有的API的源代码,第一次上传的那个Android4.0 API 源代码有部分API没有包含,请点击下面的链接下载最新的。
飞雪无情
2018/08/28
4310
是时候下载Android 9.0系统源码了
这篇文章我们来学习如何下载AOSP 源码,如果你还没有Linux 环境,请查看趁周末,用VirtualBox安装 Ubuntu吧!这篇文章,另外如果你不需要编译源码,或者不需要最新的源码,可以直接从百度网盘:https://pan.baidu.com/s/1ngsZs 将源码下载下来。
Android技术干货分享
2019/05/10
4.3K0
是时候下载Android 9.0系统源码了
Android 编译Android7.0版本源码
  首先说说为什么要编译Android7.0的源码,因为当我们去做系统定制开发的时候,就需要这么去做,举个例子,你们公司有一个客户是做电视机顶盒的,现在购买了你们公司的产品,要求你们公司提供相关的Android系统驱动,类似音频驱动、视频驱动之类的文件,能让这个文件再客户的机顶盒上正常使用,针对这个问题我们要怎么做呢?
晨曦_LLW
2023/07/10
4950
Android 编译Android7.0版本源码
AOSP源码下载的正确打开方式
将REPO_URL的值修改为REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
devecor
2020/01/24
1.1K0
音视频开发之旅(57) -如何方便的查看AndroidNative源码
对Framework层的了解学习是我们进阶的一个重要阶段。通过 AS 查看 Framework 代码体验非常好,无论是索引还是界面都让人很满意,但是当你跟踪代码,发现进入 native 逻辑时,就会发现 Android Studio 对 native 代码的支持非常不好,不能索引不支持符号搜索不能跳转等。
音视频开发之旅
2021/09/09
1.3K0
音视频开发之旅(57) -如何方便的查看AndroidNative源码
Android源码折腾(一)下载和编译
我下载和编译用的是ubuntu20.04系统,之前在win上一直存在问题,甚至在下载环节就出问题,无法通过。
笔头
2022/06/12
2.5K0
windows下如何下载android源码
在网上找了好久都没有找到如何批量下载,只是找到有位通过角本执行来进行下载的。 试了一下在我机器上运行有问题,所以索性自己搞了一个出来。 首先根据官方的说法要下载git,这个无论如何是要下载的。 点击安装,安装完成后, 在盘符上建立文件夹,我建在E:\android src下 右键选择Git bash 弹出如下界面 下面就是整理下载的过程了,如果只需要下载其中的一个包,那么就不需要做下面的操作了,如果想下载全部源码就需要做一下处理,因为windows下是没有rep
cloudskyme
2018/03/20
1.7K0
windows下如何下载android源码
Ubuntu Touch环境搭建
最近搞了一下Nexus 5的MultiRom Manger,体验了一把Ubuntu Touch和Android L,总体感觉还不错,不过Android L的NFC驱动还有问题,Ubuntu Touch优化还不足,画面有点卡,而且无法关背光。于是萌生了参与Ubuntu Touch驱动开发的念头,也算是把工作当成一种兴趣吧。
sickworm
2019/02/27
1.5K0
推荐阅读
相关推荐
Android源码下载与编译全过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验