為什麼要用樹莓派做平衡車呢?原因主要有下面幾點:第一, 我不忍心再讓它吃灰了;第二, 我想學習linux的應用開發;第三, 我想學習linux的驅動開發;第四, 樹莓派可玩性和可擴展性高;第五, 切實體會下嵌入式linux開發與裸機開發的區别,對比一下它們的優缺點;第六, 看看自己到底能不能做出個東西來。基于以上原因,我拿出了塵封已久的樹莓派開幹了。
材料清單:
樹莓派(3,4,zero應該都行);
MPU6050傳感器;
TB6612FNG或者L298N電機驅動(兩個我都試過,推薦前者);
電機、輪子和車架(這個某寶有賣,130塊,電機一定要帶編碼器);
5v穩壓電源模塊(電流最好2A以上);
12V锂電池;
面包闆(洞洞闆);
排針排座;
導線、杜邦線;
焊接工具(烙鐵、焊錫、松香等等);
OLED顯示屏(可選);
超聲波傳感器(可選);
自己畫電路闆(可選,好處是整潔緊湊,沒有太多連線,穩定可靠);
其他(可選,開關、按鍵、固定柱、螺絲螺母、電源插座等,這個看實際情況安排);
程序開發步驟:
1、 調通傳感器mpu6050
2、 控制電機
3、 獲取編碼器信号和測速
4、 編寫PID控制代碼
5、 調通oled
6、 控制超聲波
7、 調通藍牙
8、 調整代碼邏輯,優化代碼
電路原理圖和接線概要圖:
最終效果:
我的樹莓派兩輪平衡車可以實現遙控、避障了!!!
通過制作平衡車,可以學習掌握或者了解的知識點有:
1、 linux gpio控制;
2、 linux i2c;
3、 linux spi;
4、 linux 中斷;
5、 linux字符設備驅動;
6、 linux模塊開發;
7、 Linux藍牙控制;
8、 Linux線程;
9、 Linux信号;
10、Linux的系統api,其中有open、read、write、lseek、ioctl、select、poll、usleep、sleep、gettimeofday、mmap等等;
11、數字PID的實現;
12、PID控制參數整定;
13、濾波算法——卡爾曼、一階互補;
14、Makefile編寫;
15、驅動移植的方法;
16、電機方向和速度(pwm)的控制方法;
17、Linux gdb調試程序的方法;
18、如果自己畫闆子,電路闆原理圖與pcb繪制,電路闆焊接。
整個項目都使用c語言開發,需要對c語言比較熟悉。個人感覺平衡車還算是一個比較綜合的項目,資料豐富,難度适中,很适合學了一堆模塊卻不知道做個什麼小項目的小夥伴。
本文主要給大家一個大概的印象和思路,具體的細節我會分幾篇專欄詳細講解,歡迎大家一起學習、交流。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!