技術共有

【シングルチップマイコン卒業研究課題24048】 ・シングルチップマイコンによるトラック過負荷警報システムの設計

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

システム機能:

システムの電源がオンになると、OLED に「過負荷警報システムへようこそ。お待ちください」と表示され、5 秒後に通常のページに入ります。

1行目は取得した重量値を表示します。

2行目には設定された重量値が表示されます

3行目はGPS座標を表示します。

4 行目は、システムのステータス (OK またはアラーム) を示します。

B3 ボタンを短く押すと、重量設定のしきい値が増加します。

B4 ボタンを短く押すと、重量設定のしきい値が下がります。

圧力センサーモジュールを押すと、システムがブザー音を鳴らし、携帯電話番号にアラームメッセージを送信します。

携帯電話が Bluetooth モジュールを通じてシステムに接続されると、システムは取得した重量値と設定重量値を携帯電話に定期的に報告できます。

そしてシステムステータス。

主な機能モジュールの概略図:

パワークロック書き込みインターフェース:

マイコンとキー入力回路:

センサー取得回路:

表示出力回路:

機能カスタマイズリンク

システムメイン機能モジュールコード

初期化コード:

  1. /* USER CODE BEGIN 1 */
  2. /* USER CODE END 1 */
  3. /* MCU Configuration--------------------------------------------------------*/
  4. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  5. HAL_Init();
  6. /* USER CODE BEGIN Init */
  7. InitVar();
  8. /* USER CODE END Init */
  9. /* Configure the system clock */
  10. SystemClock_Config();
  11. /* USER CODE BEGIN SysInit */
  12. /* USER CODE END SysInit */
  13. /* Initialize all configured peripherals */
  14. MX_GPIO_Init();
  15. MX_USART1_UART_Init();
  16. MX_USART2_UART_Init();
  17. MX_USART3_UART_Init();
  18. MX_ADC1_Init();
  19. /* USER CODE BEGIN 2 */
  20. //uart2打开接收中断
  21. HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);
  22. //uart3打开接收中断
  23. HAL_UART_Receive_IT(&huart3, (uint8_t*)&uart3RecBuff, 1);
  24. InitOled();
  25. InitOledDisp();
  26. //初始化ESP8266
  27. ESP8266_Init();
  28. HAL_Delay(100);
  29. OledFill(0x00); //全屏熄灭
  30. RELAY1_ON();
  31. /* USER CODE END 2 */

センサー値を読み取ります。

  1. //读传感器值,AD值
  2. void ReadSensorVal(void)
  3. {
  4. getWeightVal = ReadADCChannel(ADC_CHANNEL_0);
  5. if(getWeightVal>setWeightVal)
  6. {
  7. BUZZER_ON();
  8. sysAlarm = true;
  9. if(sendMessage==false)
  10. {
  11. sendMessage = true;
  12. sim900a_SendMessage();
  13. }
  14. }
  15. else
  16. {
  17. BUZZER_OFF();
  18. sysAlarm = false;
  19. sendMessage = false;
  20. }
  21. }

BLE データを更新します。

  1. void UpdateBleData(void)
  2. {
  3. static uint8_t bleCnt = 0;
  4. bleCnt++;
  5. if(bleCnt>=BLE_UPDATE_INTER)
  6. {
  7. bleCnt = 0;
  8. printf("GetWeight:%04drn", getWeightVal);
  9. printf("SetWeight:%04drn", setWeightVal);
  10. if(sysAlarm==false)
  11. {
  12. printf("System is OK!rn");
  13. }
  14. else
  15. {
  16. printf("System is NG!rn");
  17. }
  18. }
  19. }

この設計のために提供される資料には、回路図 PCB (PDF、AD、EDA バージョンを含む)、ソース コード、システム ブロック図、メイン プログラム フローチャート、部品表 (使用デバイスのマニュアルを含む)、機能操作説明書などが含まれます。

各機能モジュールに関する情報: