一、引腳配置
| 引腳 | 含義 | 有效值 |
|---|---|---|
| A7 | 蜂鳴器 | 低電平點亮 |
| C13 | LED | 低電平點亮 |
| B7 B8 | OLED | SCL SDA |
| A2 A3 | Air868 | 串口2 |
| A9 A10 | 打印信息 | 串口1 |
| B10 B11 | esp8266 | 串口3 |
| B0 B1 | 按鍵 | 低電平有效 |
二、功能
1、開機啟動,顯示學生姓名,學號,聯(lián)系方式,連接wifi(可跳過),使用air868判斷當前經(jīng)緯度, led閃爍一下, 蜂鳴器響一次
2、系統(tǒng)啟動后,每隔3秒查詢一下當前位置是否超出設(shè)定范圍, led閃爍一次, 查詢是否wifi已經(jīng)連接;
3、當該裝置被移動時,LED常亮, 蜂鳴器長鳴
三、實現(xiàn)
3.1、 開機顯示OLED, IIC通信, 設(shè)置 OLED096_display_init()函數(shù)
3.2、 實現(xiàn)wifi判斷是否連接, 模式使用STA, 開機就開始連接wifi, 可以使用手機開熱點,但是提前在程序中設(shè)置好參數(shù) wifista_ssid和wifista_password
3.3、完成3.2wifi連接之后,初始化Air868, 進行12次獲取當前位置,去掉最大值和最小值,其他取平均值, 系統(tǒng)初始化完畢
3.4、每隔3s查詢一下Air868和wifi連接情況。
四、硬件
- AD繪圖
- STM32最小系統(tǒng)、OLED模塊、Air868模塊、兩個按鍵、一個蜂鳴器、esp8266模塊(注意:將A9 A10引腳引出,蜂鳴器使用3.3v驅(qū)動,Air868的VCC接5v,轉(zhuǎn)3.3接STM32, 系統(tǒng)完成后,只需要連接usb接Air868供電,就能給整個系統(tǒng)供電了。)
重要代碼
- 串口2 air868模塊, 命令回顯
void USART2_IRQHandler(void) //串口2中斷服務(wù)程序
{
u8 Res;
/////////////////////////////////////////////////////////////
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中斷(接收到的數(shù)據(jù)必須是0x0d 0x0a結(jié)尾)
{
Res =USART_ReceiveData(USART2); //讀取接收到的數(shù)據(jù)
if((USART2_RX_STA&0x8000)==0)//接收未完成
{
if(USART2_RX_STA&0x4000)//接收到了0x0d
{
if(Res!=0x0a)USART2_RX_STA=0;//接收錯誤,重新開始
else {
printf("%s**\r\n",USART2_RX_BUF);
USART2_RX_STA|=0x8000; //接收完成了
memset(USART2_RX_BUF,0,sizeof(USART2_RX_BUF));//清除buffer
USART2_RX_STA=0;
}
}
else //還沒收到0X0D
{
if(Res==0x0d)USART2_RX_STA|=0x4000;
else
{
USART2_RX_BUF[USART2_RX_STA&0X3FFF]=Res ;
USART2_RX_STA++;
if(USART2_RX_STA>(USART2_REC_LEN-1))USART2_RX_STA=0;//接收數(shù)據(jù)錯誤,重新開始接收
}
}
}
}
}