昨天我們看了圈圈和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 系統級別的操作。 例如,配置 uEnv。txt 并加載全驅動 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 做應用, 使用核間通信,就都用核間通信來做應用,然后分析和交流。
責任編輯:xj
原文標題:Funpack第一期精彩之二:Argon帶你用mqtt連OneNET,漂移菌帶你跑Linux和驅屏幕
文章出處:【微信公眾號:FPGA入門到精通】歡迎添加關注!文章轉載請注明出處。
-
Linux
+關注
關注
87文章
11312瀏覽量
209690 -
MQTT
+關注
關注
5文章
651瀏覽量
22533 -
GitHub
+關注
關注
3文章
471瀏覽量
16464 -
OneNET
+關注
關注
1文章
51瀏覽量
12818
原文標題:Funpack第一期精彩之二:Argon帶你用mqtt連OneNET,漂移菌帶你跑Linux和驅屏幕
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論