Technologieaustausch

[Einzelchip-Mikrocomputer-Abschlussprojektthema 24048] – Entwurf eines LKW-Überlastungsalarmsystems auf Basis eines Einzelchip-Mikrocomputers

2024-07-12

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

Systemfunktionen:

Nach dem Einschalten des Systems zeigt das OLED „Willkommen beim Überlastalarmsystem, bitte warten“ an und wechselt nach fünf Sekunden zur normalen Seite.

In der ersten Zeile wird der ermittelte Gewichtswert angezeigt

In der zweiten Zeile wird der eingestellte Gewichtswert angezeigt

In der dritten Zeile werden die GPS-Koordinaten angezeigt

Die vierte Zeile zeigt den Systemstatus, OK oder Alarm

Drücken Sie kurz die Taste B3, um den Schwellenwert für die Gewichtseinstellung zu erhöhen

Drücken Sie kurz die Taste B4, um den Schwellenwert für die Gewichtseinstellung zu verringern

Nach Drücken des Drucksensormoduls summt das System und sendet eine Alarmmeldung an die Mobiltelefonnummer.

Nachdem das Mobiltelefon über das Bluetooth-Modul mit dem System verbunden ist, kann das System regelmäßig den erhaltenen Gewichtswert melden und den Gewichtswert an das Mobiltelefon einstellen.

und Systemstatus.

Schematische Darstellung der wichtigsten Funktionsmodule:

Power-Clock-Burning-Schnittstelle:

Mikrocontroller und Tasteneingangsschaltung:

Sensorerfassungsschaltung:

Ausgangsschaltung des Displays:

Link zur Funktionsanpassung

Code des Hauptfunktionsmoduls des Systems

Initialisierungscode:

  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 */

Sensorwert lesen;

  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-Daten aktualisieren:

  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. }

Zu den für diesen Entwurf bereitgestellten Materialien gehören schematische Leiterplatten (einschließlich PDF-, AD- und EDA-Versionen), Quellcode, Systemblockdiagramm, Hauptprogrammablaufdiagramm, Stücklisten (einschließlich Handbücher für gebrauchte Geräte), funktionale Betriebsanweisungen usw.

Informationen zu jedem Funktionsmodul: