当前位置:网站首页>單片機藍牙無線燒錄
單片機藍牙無線燒錄
2022-07-06 12:19:00 【XlinliY.Zhang】
一、 為什麼需要藍牙無線燒錄
當我們把單片機開發板、或者使用自制系統板安裝到設備上後,要進行重新燒錄總要拖著一條長長USB線,特別是對於一些開發板,例如Arduino pro mini這種不帶USB to TTL的開發板,更是要拉著好幾根杜邦線進行燒錄,還會面臨接觸不良的問題,特別特別麻煩。所以,使用一片HC-05或者HC-06實現藍牙通訊的同時,還能實現穩定的燒錄,豈不是一件美滋滋的事。
在之前學習Arduino藍牙燒錄的時候了解到這篇文章:通過藍牙模塊無線上傳Arduino程序
但這篇文章的方法同Arduino Pro Mini的燒錄方式一樣(不使用DTR),都需要進行手動複比特,使單片機進入BL,編譯簡單的程序你還可以在旁邊等待開始上傳,然後按下複比特按鍵,成功燒錄。
但是!!!!
如果遇到項目比較大(Arduino IDE編譯出了名的慢)的程序,如果編譯幾分鐘,你們看到,錯過了時機,一首凉凉送給你。所以,在把凉凉背下來的時候,搞出了自動燒錄這玩意。
二、如何實現藍牙無線燒錄
無線燒錄的大體流程就是,檢測到連接,複比特單片機,轉發電腦數據和單片機數據交互,完成燒錄。
以下是了解系統工作原理的基礎知識:
(1)對於Arduino IDE(沒測試過,不確定Windows下的藍牙串口是打開再連接藍牙還是),使用串口監視器或進行燒錄,會斷開藍牙連接,再重新連接,發送/接收數據,這點很重要,這個電路的原理就是利用燒錄時候連接藍牙,藍牙模塊的連接指示進行燒錄的。
(2)電容具有隔離直流通交流的作用,單片機的複比特都是需要一個高(低)電平脈沖來進行複比特的,如果一直拉高(拉低)單片機複比特引脚,則單片機無法正常工作。所以,使用電容來把持續的電平信號轉換為單個脈沖信號顯得尤為重要。
(3)藍牙透傳模塊可以把電腦的串口數據按照模塊設置好的波特率發送過去,動都不動的那種。
三、需要的材料
(1)HC-05\06 一塊
(2)S8050 一顆
(3)104電容一顆(如果板載DTR引脚,可以不用這顆電容)
(4)1K電阻2個
(5)連接線材若幹、面包板一塊(如何連接就八仙過海各顯神通了哈)
四、原理圖
簡簡單單的原理圖
五、具體操作
(1)設置藍牙模塊:藍牙模塊設置過程很簡單,只需要設置對應的波特率,把波特率設置為和開發板BL需要的波特率一樣就行。
以下是部分Arduino波特率設置參考
UNO、MEGA2560:115200
atmega328:57600
atmega168,atmega8 :19200
具體操作為,按住藍牙模塊EN按鈕,使用USB轉TTL連接電腦,使用串口監視器波特率38400發送AT返回AT則錶明成功進入AT模式,需要用到AT指令為:
AT+UART=115200,1,2
(2)搭建電路:這部分沒什麼好說的,就是按照原理圖連連看就完事了。
(3)藍牙連接電腦:打開電腦藍牙,搜索藍牙模塊(藍牙模塊要通電),輸入配對碼(不是0000,就是1234),然後點“更多藍牙選型”,COM端口,記住方向為傳出的COM號,Arduino或者其他軟件使用此串口號即可通訊。
六、演示
由於年少時對元器件功能理解不透徹,做了個賊複雜的電路,視頻裏的電路也能用,就是太複雜了
边栏推荐
- Pytorch: tensor operation (I) contiguous
- 几个关于指针的声明【C语言】
- [golang] leetcode intermediate - fill in the next right node pointer of each node & the k-smallest element in the binary search tree
- CUDA C programming authoritative guide Grossman Chapter 4 global memory
- C language callback function [C language]
- arduino获取数组的长度
- ES6语法总结--下篇(进阶篇 ES6~ES11)
- Gateway 根据服务名路由失败,报错 Service Unavailable, status=503
- Générateur d'identification distribué basé sur redis
- [esp32 learning-1] construction of Arduino esp32 development environment
猜你喜欢
随机推荐
Cannot change version of project facet Dynamic Web Module to 2.3.
Gateway fails to route according to the service name, and reports an error service unavailable, status=503
Basic operations of databases and tables ----- modifying data tables
open-mmlab labelImg mmdetection
(一)R语言入门指南——数据分析的第一步
Several declarations about pointers [C language]
Gateway 根据服务名路由失败,报错 Service Unavailable, status=503
Keyword inline (inline function) usage analysis [C language]
Arduino uno R3 register writing method (1) -- pin level state change
Esp8266 connects to onenet cloud platform (mqtt) through Arduino IDE
The first simple case of GNN: Cora classification
Redis 缓存更新策略,缓存穿透、雪崩、击穿问题
MySQL時間、時區、自動填充0的問題
[golang] leetcode intermediate - fill in the next right node pointer of each node & the k-smallest element in the binary search tree
Important methods of array and string
2022.2.12 resumption
Arduino JSON data information parsing
I2C总线时序详解
Kconfig Kbuild
gcc 编译选项