[本文來自本人的公眾號,感興趣的可以關注,定期釋出一些技術文章]

安卓手機自動翻頁器設計

引言

之前有這麼一個挑戰活動:使用者若使用京東閱讀App每天閱讀30分鐘,每天閱讀滿300頁(兩者都要滿足),連續堅持180天,可以返手機全款。

在正常情況下,我們鼓勵使用者認真閱讀;然而,如果遇到某天很忙或者不太想閱讀,那麼這項任務就比較痛苦了。

為了輕鬆地完成該挑戰,技術黨開始想辦法了。我想到了2個辦法:使用 mcu 控制線控耳機進行翻頁;使用步進電機帶動電容筆進行翻頁(此方法簡直無解了)。

系統需求

有這麼一個裝置,它能在開啟閱讀App後,模擬使用者行為,在35min左右自動完成320頁的翻頁任務(適當冗餘)。

方案設計

1。 方案對比

安卓手機自動翻頁器設計

2。 MCU+耳機

安卓手機自動翻頁器設計

3。 成本

mcu:10元

線控耳機:10元

軟體開發:10元

詳細設計

1。 邏輯圖

安卓手機自動翻頁器設計

2。 硬體設計

MCU主控晶片:STM32F103RCT6

GPIO模組

3。 軟體設計

開發環境:Keil

功能模組:

定時器模組

隨機數模組

這裡貼出主迴圈程式碼(最具價值部分)。

while (1)

{

// 1。滿足條件,不再執行

if((gPageTotal >= PAGE_CNT) && (gRunTotalSec >= PAGE_TIME))

{

enableRunFlag = 1;

gTimerCntSec = 0;

GPIO_SetBits(GPIOA, GPIO_Pin_0); //點亮綠燈

}

else

{

}

// 2。翻頁邏輯

if((gTimerCntSec >= gRandomSec) && (0 == enableRunFlag))

{

gTimerCntSec = 0;

if(ledFlag == 0)

{

ledFlag = 1;

GPIO_SetBits(GPIOA, GPIO_Pin_0); //點亮綠燈

}

else

{

ledFlag = 0;

GPIO_ResetBits(GPIOA, GPIO_Pin_0); //關閉綠燈

}

GPIO_ResetBits(GPIOA, GPIO_Pin_4); // 模擬按鍵按下:翻頁

Delay_Ms(100);

GPIO_SetBits(GPIOA, GPIO_Pin_4); //模擬按鍵彈起;

gPageTotal++;

gRandomSec = gRandomTmp; // 更新一次

}

else

{

srand(gRunTotalSec); // 選取種子

gRandomTmp = ((rand() % 5) + FIRST_PAGE_SEC); //產生5~10的整數;

}

}

測試

安卓手機自動翻頁器設計

注:演示影片可在公眾號中檢視。

小結

嵌入式真的很有趣!可以完成很多有創意的產品。

技術是把雙刃劍,我們鼓勵正確使用技術造福人們,反對將此技術或工具用來謀取私利!

對此產品感興趣的小夥伴,可以成本價獲取。