Funpack第一期精彩之二:Argon带你用mqtt连OneNET,漂移菌带你跑Linux和驱屏幕

电子森林 2020-10-26 00:00
昨天我们看了圈圈和Rudy做的详细介绍,包括入门和连接阿里云。今天我们来看看嵌入式网络工程师Argon讲述怎么连上另一个IOT平台——OneNET,还有骑驴玩儿漂移的漂移菌带来的讲解以及他为大家准备的Github/Gitee仓库。



Argon


自我介绍

很有幸参与到这次Digi-key和硬禾学堂联合举办的这次开发板体验活动。 我叫Argon,来自浙江杭州是一名从事安防行业的嵌入式网络工程师。 从大学开始就对微电子充满了兴趣,在闲暇的时间也会利用手头的元器件自己搭建一些好玩的DIY产品。
 

实现功能叙述

1. Seeed STM32MP1开发板教程(0)前期准备篇:
https://blog.csdn.net/Argon_Ghost/article/details/109006612
2. Seeed STM32MP1开发板教程(1)Wi-Fi的使用:
https://blog.csdn.net/Argon_Ghost/article/details/108986471
3. Seeed STM32MP1开发板教程(2)GPIO的简单操作:
https://blog.csdn.net/Argon_Ghost/article/details/109009824
4. Seeed STM32MP1开发板教程(3)IIC设备AHT10的使用:
https://blog.csdn.net/Argon_Ghost/article/details/108986562

心得体会

工作从事的一直Linux网络开发,公司对代码的封装较为良好很少涉及到需要手动去驱动外设的情况。 通过这次活动我自己手动去编译设备树,修改设备树文。 我对设备树以及linux内核的编译有了更深层是的理解,同时也要感谢@圈圈BG3MDO、@漂移菌 大佬的细心指导,编写驱动的过程也是我们共同探索的过程。 在十一期间的多个夜晚我们和大洋彼岸的圈圈大佬视频会议来探讨设备树相关的技术难点,也让我想起了大学期间在实验室熬夜攻关的日子。 非常感谢硬禾举办的这次体验活动,让更多的学生以及工程师能了解到ST等大厂最新的产品和技术。

希望之后硬禾多增加宣传活动的力度,这个活动我也是从朋友那里得知的。之前对硬禾的了解非常有限,希望硬禾以此为契机来提高自己的知名度。



漂移菌


个人介绍

我是李伟斌, AKA 骑驴玩儿漂移,漂移菌。我是伍艾信息科技的一名工程师,我的日常就是打杂。长期使用树莓派,并熟悉 linux 的系统管理和网络应用,熟悉 python 编程和 C 语言编程,精通 shell 脚本编程。

STM32MP157C 上最先完成了一系列的 linux 系统级别的操作。
例如,配置 uEnvtxt 并加载全驱动 dtb 并开启 wifi ,联网后,更新了软件源,切换到清华国内的源。
安装了 vim 工具,编译工具等等,并进行了磁盘的扩展,默认磁盘空间大概只有 2GB,通过计算和配置,将磁盘扩展到 32GB,并通过 USB 接口实现了两个U 盘合并的磁盘整列。软 Raid
通过 stm32mp157c A7 核运行的 linux,搭建了一个简易 web 和群友共享资源。
后面实现了点灯,pwm 呼吸灯, spi 驱动屏幕等操作。

代码内容

1.   小夜灯 I2C 驱动(shell 脚本)

root@npi:/home/debian/bin# cat led.sh

#!/bin/bash


while true

do

i2cset -y 1 0x15 0x01 0xff
sleep 0.2
i2cset -y 1 0x15 0x02 0xff
sleep 0.2
i2cset -y 1 0x15 0x03 0xff
sleep 0.2
i2cset -y 1 0x15 0x04 0xff
sleep 0.2
i2cset -y 1 0x15 0x05 0xff
sleep 0.2
i2cset -y 1 0x15 0x06 0xff
sleep 0.2
i2cset -y 1 0x15 0x07 0xff
sleep 0.2
i2cset -y 1 0x15 0x08 0xff
sleep 0.2
i2cset -y 1 0x15 0x09 0xff
sleep 0.2
i2cset -y 1 0x15 0x0a 0xff
sleep 0.2
i2cset -y 1 0x15 0x0b 0xff
sleep 0.2
i2cset -y 1 0x15 0x0c 0xff
sleep 0.2
i2cset -y 1 0x15 0x0d 0xff
sleep 0.2
i2cset -y 1 0x15 0x0e 0xff
sleep 0.2
i2cset -y 1 0x15 0x0f 0xff
sleep 0.2
i2cset -y 1 0x15 0x10 0xff
sleep 0.2
i2cset -y 1 0x15 0x11 0xff
sleep 0.2
i2cset -y 1 0x15 0x12 0xff
sleep 0.2
i2cset -y 1 0x15 0x13 0xff
sleep 0.2
i2cset -y 1 0x15 0x14 0xff
sleep 0.2
i2cset -y 1 0x15 0x15 0xff
sleep 0.2
i2cset -y 1 0x15 0x16 0xff
sleep 0.2
i2cset -y 1 0x15 0x17 0xff
sleep 0.2
i2cset -y 1 0x15 0x18 0xff
sleep 0.2
i2cset -y 1 0x15 0x19 0xff
sleep 0.2
i2cset -y 1 0x15 0x01 0x00
sleep 0.2
i2cset -y 1 0x15 0x02 0x00
sleep 0.2
i2cset -y 1 0x15 0x03 0x00
sleep 0.2
i2cset -y 1 0x15 0x04 0x00
sleep 0.2
i2cset -y 1 0x15 0x05 0x00
sleep 0.2
i2cset -y 1 0x15 0x06 0x00
sleep 0.2
i2cset -y 1 0x15 0x07 0x00
sleep 0.2
i2cset -y 1 0x15 0x08 0x00
sleep 0.2
i2cset -y 1 0x15 0x09 0x00
sleep 0.2
i2cset -y 1 0x15 0x0a 0x00
sleep 0.2
i2cset -y 1 0x15 0x0b 0x00
sleep 0.2
i2cset -y 1 0x15 0x0c 0x00
sleep 0.2
i2cset -y 1 0x15 0x0d 0x00
sleep 0.2
i2cset -y 1 0x15 0x0e 0x00
sleep 0.2
i2cset -y 1 0x15 0x0f 0x00
sleep 0.2
i2cset -y 1 0x15 0x10 0x00
sleep 0.2
i2cset -y 1 0x15 0x11 0x00
sleep 0.2
i2cset -y 1 0x15 0x12 0x00
sleep 0.2
i2cset -y 1 0x15 0x13 0x00
sleep 0.2
i2cset -y 1 0x15 0x14 0x00
sleep 0.2
i2cset -y 1 0x15 0x15 0x00
sleep 0.2
i2cset -y 1 0x15 0x16 0x00
sleep 0.2
i2cset -y 1 0x15 0x17 0x00
sleep 0.2
i2cset -y 1 0x15 0x18 0x00
sleep 0.2
i2cset -y 1 0x15 0x19 0x00
sleep 0.2

done



2. 屏幕 ili9341 的驱动步骤简单讲述为:
   2.1 下载 seeed 官方主线内核
   2.2  生成.config 配置文件, 通过 zcat /proc/config.gz > .config
   2.3  编译内核并启用 framebuffer(小屏幕)fbtft_deivce 的驱动模块
   2.4  编译,建议交叉编译,我是直接在 mp157c 上进行编译的,时间为 244 分 34 秒
   2.5  替换内核和安装驱动模块
   2.6  挂载 spi 的 dtbo 设备树文件,并根据 dtbs 和 dtbi 文件找到引脚映射
   2.7 接驳设备并加载 fbtft_device 驱动
   2.8 利用 fbset 工具将终端映射到屏幕上: con2fbmap 1 1

3. OLED 0.96 屏幕驱动:
利用 luma 的驱动比较方便,通过python 驱动.避免了直接底层操作 I2C.

4. 创建了 github 和 gitee 的仓库,方便后续代码共享.
https://github.com/stm32mp/157c.git
https://gitee.com/yoyojacky/stm32mp157c.git

5. PWM 驱动,使用了核间通信机制,IPCC,在选择了 PA3 脚并切换至 TIM2/CH2,通过 cubeIDE 生成了代码后,加入了 pwm 的函数。
   5.1 点灯部分
/* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(led0_GPIO_Port,led0_Pin, GPIO_PIN_SET); HAL_Delay(200); HAL_GPIO_WritePin(led0_GPIO_Port,led0_Pin, GPIO_PIN_RESET); HAL_Delay(200); HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_SET); HAL_Delay(200); HAL_GPIO_WritePin(led1_GPIO_Port,led1_Pin, GPIO_PIN_RESET); HAL_Delay(200); }/* USER CODE END 3 */

   5.2  PWM 函数部分
void user_pwm_setvalue(uint16_t value){ TIM_OC_InitTypeDef sConfigOC;
sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = value; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);}/* USER CODE END 0 */

主程序部分写了个死循环
/* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ for(int i=0; i<2000; i+=20) { user_pwm_setvalue(i); HAL_Delay(10); } for(int i=2000; i>0; i-=20) { user_pwm_setvalue(i); HAL_Delay(10); } }

心得体会

对这次活动非常满意, 感觉很有意思!
 
活动建议:希望项目可以继续持续下去,并且持续更新和持续开展不同level 的应用要求,例如,使用 ble ,大家都用 ble 做应用, 使用核间通信,就都用核间通信来做应用,然后分析和交流。
 

END


硬禾学堂

硬禾团队一直致力于给电子工程师和相关专业的同学,带来规范的核心技能课程,帮助大家在学习和工作的各个阶段,都能有效地提升自己的职业能力。

硬禾学堂

我们一起在电子领域探索前进

关注硬禾服务号,随时直达课堂


     

  点击阅读原文参与Funpack第二期

电子森林 讲述电子工程师需要掌握的重要技能: PCB设计、FPGA应用、模拟信号链路、电源管理等等;不断刷新的行业新技术 - 树莓派、ESP32、Arduino等开源系统;随时代演进的热点应用 - 物联网、无人驾驶、人工智能....
评论
  • 01. 什么是过程能力分析?过程能力研究利用生产过程中初始一批产品的数据,预测制造过程是否能够稳定地生产符合规格的产品。可以把它想象成一种预测。通过历史数据的分析,推断未来是否可以依赖该工艺持续生产高质量产品。客户可能会要求将过程能力研究作为生产件批准程序 (PPAP) 的一部分。这是为了确保制造过程能够持续稳定地生产合格的产品。02. 基本概念在定义制造过程时,目标是确保生产的零件符合上下规格限 (USL 和 LSL)。过程能力衡量制造过程能多大程度上稳定地生产符合规格的产品。核心概念很简单:
    优思学院 2025-01-12 15:43 533浏览
  • PNT、GNSS、GPS均是卫星定位和导航相关领域中的常见缩写词,他们经常会被用到,且在很多情况下会被等同使用或替换使用。我们会把定位导航功能测试叫做PNT性能测试,也会叫做GNSS性能测试。我们会把定位导航终端叫做GNSS模块,也会叫做GPS模块。但是实际上他们之间是有一些重要的区别。伴随着技术发展与越发深入,我们有必要对这三个词汇做以清晰的区分。一、什么是GPS?GPS是Global Positioning System(全球定位系统)的缩写,它是美国建立的全球卫星定位导航系统,是GNSS概
    德思特测试测量 2025-01-13 15:42 500浏览
  • 根据Global Info Research(环洋市场咨询)项目团队最新调研,预计2030年全球无人机电池和电源产值达到2834百万美元,2024-2030年期间年复合增长率CAGR为10.1%。 无人机电池是为无人机提供动力并使其飞行的关键。无人机使用的电池类型因无人机的大小和型号而异。一些常见的无人机电池类型包括锂聚合物(LiPo)电池、锂离子电池和镍氢(NiMH)电池。锂聚合物电池是最常用的无人机电池类型,因为其能量密度高、设计轻巧。这些电池以输出功率大、飞行时间长而著称。不过,它们需要
    GIRtina 2025-01-13 10:49 201浏览
  • 随着通信技术的迅速发展,现代通信设备需要更高效、可靠且紧凑的解决方案来应对日益复杂的系统。中国自主研发和制造的国产接口芯片,正逐渐成为通信设备(从5G基站到工业通信模块)中的重要基石。这些芯片凭借卓越性能、成本效益及灵活性,满足了现代通信基础设施的多样化需求。 1. 接口芯片在通信设备中的关键作用接口芯片作为数据交互的桥梁,是通信设备中不可或缺的核心组件。它们在设备内的各种子系统之间实现无缝数据传输,支持高速数据交换、协议转换和信号调节等功能。无论是5G基站中的数据处理,还是物联网网关
    克里雅半导体科技 2025-01-10 16:20 449浏览
  • 新年伊始,又到了对去年做总结,对今年做展望的时刻 不知道你在2024年初立的Flag都实现了吗? 2025年对自己又有什么新的期待呢? 2024年注定是不平凡的一年, 一年里我测评了50余块开发板, 写出了很多科普文章, 从一个小小的工作室成长为科工公司。 展望2025年, 中国香河英茂科工, 会继续深耕于,具身机器人、飞行器、物联网等方面的研发, 我觉得,要向未来学习未来, 未来是什么? 是掌握在孩子们生活中的发现,和精历, 把最好的技术带给孩子,
    丙丁先生 2025-01-11 11:35 465浏览
  • 食物浪费已成为全球亟待解决的严峻挑战,并对环境和经济造成了重大影响。最新统计数据显示,全球高达三分之一的粮食在生产过程中损失或被无谓浪费,这不仅导致了资源消耗,还加剧了温室气体排放,并带来了巨大经济损失。全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,艾迈斯欧司朗基于AS7341多光谱传感器开发的创新应用来解决食物浪费这一全球性难题。其多光谱传感解决方案为农业与食品行业带来深远变革,该技术通过精确判定最佳收获时机,提升质量控制水平,并在整个供应链中有效减少浪费。 在2024
    艾迈斯欧司朗 2025-01-14 18:45 68浏览
  • 数字隔离芯片是现代电气工程师在进行电路设计时所必须考虑的一种电子元件,主要用于保护低压控制电路中敏感电子设备的稳定运行与操作人员的人身安全。其不仅能隔离两个或多个高低压回路之间的电气联系,还能防止漏电流、共模噪声与浪涌等干扰信号的传播,有效增强电路间信号传输的抗干扰能力,同时提升电子系统的电磁兼容性与通信稳定性。容耦隔离芯片的典型应用原理图值得一提的是,在电子电路中引入隔离措施会带来传输延迟、功耗增加、成本增加与尺寸增加等问题,而数字隔离芯片的目标就是尽可能消除这些不利影响,同时满足安全法规的要
    华普微HOPERF 2025-01-15 09:48 83浏览
  • 流量传感器是实现对燃气、废气、生活用水、污水、冷却液、石油等各种流体流量精准计量的关键手段。但随着工业自动化、数字化、智能化与低碳化进程的不断加速,采用传统机械式检测方式的流量传感器已不能满足当代流体计量行业对于测量精度、测量范围、使用寿命与维护成本等方面的精细需求。流量传感器的应用场景(部分)超声波流量传感器,是一种利用超声波技术测量流体流量的新型传感器,其主要通过发射超声波信号并接收反射回来的信号,根据超声波在流体中传播的时间、幅度或相位变化等参数,间接计算流体的流量,具有非侵入式测量、高精
    华普微HOPERF 2025-01-13 14:18 497浏览
  • ARMv8-A是ARM公司为满足新需求而重新设计的一个架构,是近20年来ARM架构变动最大的一次。以下是对ARMv8-A的详细介绍: 1. 背景介绍    ARM公司最初并未涉足PC市场,其产品主要针对功耗敏感的移动设备。     随着技术的发展和市场需求的变化,ARM开始扩展到企业设备、服务器等领域,这要求其架构能够支持更大的内存和更复杂的计算任务。 2. 架构特点    ARMv8-A引入了Execution State(执行状
    丙丁先生 2025-01-12 10:30 471浏览
  • 随着数字化的不断推进,LED显示屏行业对4K、8K等超高清画质的需求日益提升。与此同时,Mini及Micro LED技术的日益成熟,推动了间距小于1.2 Pitch的Mini、Micro LED显示屏的快速发展。这类显示屏不仅画质卓越,而且尺寸适中,通常在110至1000英寸之间,非常适合应用于电影院、监控中心、大型会议、以及电影拍摄等多种室内场景。鉴于室内LED显示屏与用户距离较近,因此对于噪音控制、体积小型化、冗余备份能力及电气安全性的要求尤为严格。为满足这一市场需求,开关电源技术推出了专为
    晶台光耦 2025-01-13 10:42 512浏览
  •   在信号处理过程中,由于信号的时域截断会导致频谱扩展泄露现象。那么导致频谱泄露发生的根本原因是什么?又该采取什么样的改善方法。本文以ADC性能指标的测试场景为例,探讨了对ADC的输出结果进行非周期截断所带来的影响及问题总结。 两个点   为了更好的分析或处理信号,实际应用时需要从频域而非时域的角度观察原信号。但物理意义上只能直接获取信号的时域信息,为了得到信号的频域信息需要利用傅里叶变换这个工具计算出原信号的频谱函数。但对于计算机来说实现这种计算需要面对两个问题: 1.
    TIAN301 2025-01-14 14:15 113浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦