久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10832|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

基于STM32+ESP8266 wifi的智能魚缸源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:201598 發(fā)表于 2018-10-22 20:58 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
    本設(shè)計主要是由STM32f103c8t6,wifi模塊用的ESP8266,主要控制魚缸的燈光,換水,換氧,過濾,水位的功能,通過機制云開發(fā)平臺設(shè)置數(shù)據(jù)點如圖,完成超聲波控制液位,溫度DS18B20檢測水溫,最初想法水溫也可以控制,但是最后加熱棒功率不夠,無法加熱水,放棄此功能,有興趣得可以自己加,最后液晶顯示頁面主要是顯示上次換水時間,換水次數(shù),加氧時間,水溫。

單片機源程序如下:

  1. #include "main.h"
  2. #include "stm32f1xx_hal.h"

  3. /* USER CODE BEGIN Includes */
  4. #include "hal_key.h"
  5. #include "gizwits_product.h"
  6. #include "common.h"
  7. #include "UltrasonicWave.h"
  8. #include "ds18b20.h"
  9. #include "timer.h"
  10. #include "ctrl.h"
  11. #include "oled.h"
  12. #include "stm32_hal_legacy.h"

  13. /* USER CODE END Includes */

  14. /* Private variables ---------------------------------------------------------*/
  15. TIM_HandleTypeDef htim2;

  16. UART_HandleTypeDef huart1;
  17. UART_HandleTypeDef huart2;

  18. /* USER CODE BEGIN PV */
  19. /* Private variables ---------------------------------------------------------*/
  20. #define GPIO_KEY_NUM 2 ///< Defines the total number of key member        
  21. keyTypedef_t singleKey[GPIO_KEY_NUM]; ///< Defines a single key member array pointer
  22. keysTypedef_t keys;  
  23. /* USER CODE END PV */


  24. /* Private function prototypes -----------------------------------------------*/
  25. void SystemClock_Config(void);
  26. static void MX_GPIO_Init(void);
  27. static void MX_TIM2_Init(void);
  28. static void MX_USART1_UART_Init(void);
  29. static void MX_USART2_UART_Init(void);
  30. static void MX_NVIC_Init(void);


  31. /* USER CODE BEGIN PFP */
  32. /* Private function prototypes -----------------------------------------------*/

  33. /* USER CODE END PFP */

  34. /* USER CODE BEGIN 0 */
  35. /**
  36. * key1 short press handle
  37. * @param none
  38. * @return none
  39. */
  40. void key1ShortPress(void)
  41. {
  42.     GIZWITS_LOG("KEY1 PRESS ,Production Mode\n");
  43.     gizwitsSetMode(WIFI_PRODUCTION_TEST);
  44. }

  45. /**
  46. * key1 long press handle
  47. * @param none
  48. * @return none
  49. */
  50. void key1LongPress(void)
  51. {
  52.     GIZWITS_LOG("KEY1 PRESS LONG ,Wifi Reset\n");
  53.     gizwitsSetMode(WIFI_RESET_MODE);

  54. }

  55. /**
  56. * key2 short press handle
  57. * @param none
  58. * @return none
  59. */
  60. void key2ShortPress(void)
  61. {
  62.     GIZWITS_LOG("KEY2 PRESS ,Soft AP mode\n");
  63.     #if !MODULE_TYPE
  64.     gizwitsSetMode(WIFI_SOFTAP_MODE);
  65.     #endif
  66. }

  67. /**
  68. * key2 long press handle
  69. * @param none
  70. * @return none
  71. */
  72. void key2LongPress(void)
  73. {
  74.     //AirLink mode
  75.     GIZWITS_LOG("KEY2 PRESS LONG ,AirLink mode\n");
  76.     #if !MODULE_TYPE
  77.     gizwitsSetMode(WIFI_AIRLINK_MODE);
  78.     #endif
  79. }

  80. /**
  81. * Key init function
  82. * @param none
  83. * @return none
  84. */
  85. void keyInit(void)
  86. {
  87.     singleKey[0] = keyInitOne(NULL, KEY1_GPIO_Port, KEY1_Pin, key1ShortPress, key1LongPress);
  88.     singleKey[1] = keyInitOne(NULL, KEY2_GPIO_Port, KEY2_Pin, key2ShortPress, key2LongPress);
  89.     keys.singleKey = (keyTypedef_t *)&singleKey;
  90.     keyParaInit(&keys);
  91. }
  92. /* USER CODE END 0 */


  93. int main(void)
  94. {
  95.   /* USER CODE BEGIN 1 */

  96.   /* USER CODE END 1 */

  97.   /* MCU Configuration----------------------------------------------------------*/

  98.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  99.   HAL_Init();

  100.   /* USER CODE BEGIN Init */

  101.   /* USER CODE END Init */

  102.   /* Configure the system clock */
  103.   SystemClock_Config();

  104.   /* USER CODE BEGIN SysInit */

  105.   /* USER CODE END SysInit */

  106.   /* Initialize all configured peripherals */
  107.   MX_GPIO_Init();
  108.         Wave_Init();
  109.   DS18B20_Init();
  110.         MX_Relay_Init();
  111.   OLED_Init();
  112.         OLED_Clear();
  113.   MX_TIM2_Init();
  114.         MX_TIM3_Init();
  115.         MX_TIM4_Init();
  116. //        TIM3_PWM_Init(36000,0);
  117.   MX_USART1_UART_Init();
  118.   MX_USART2_UART_Init();

  119.   /* Initialize interrupts */
  120.   MX_NVIC_Init();

  121.   /* USER CODE BEGIN 2 */

  122.         uartInit();
  123.         userInit();
  124.         gizwitsInit();
  125.         keyInit();
  126.                 OLED_Clear();
  127.   /* USER CODE END 2 */
  128.   while (1)
  129.   {

  130.                 gizwitsGetNTP();
  131.                 Display_Oled();
  132.                 Wave_ctr();
  133. if(flag3==0)
  134. {
  135.                 Ctr_Level();
  136. }
  137.                 userHandle();

  138.                 gizwitsHandle((dataPoint_t *)¤tDataPoint);
  139.   }
  140.   /* USER CODE END 3 */

  141. }

  142. /** System Clock Configuration
  143. */
  144. void SystemClock_Config(void)
  145. {

  146.   RCC_OscInitTypeDef RCC_OscInitStruct;
  147.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  148.     /**Initializes the CPU, AHB and APB busses clocks
  149.     */
  150.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  151.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  152.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  153.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  154.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  155.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  156.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  157.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  158.   {
  159.     _Error_Handler(__FILE__, __LINE__);
  160.   }

  161.     /**Initializes the CPU, AHB and APB busses clocks
  162.     */
  163.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  164.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  165.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  166.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  167.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  168.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  169.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  170.   {
  171.     _Error_Handler(__FILE__, __LINE__);
  172.   }

  173.     /**Configure the Systick interrupt time
  174.     */
  175.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  176.     /**Configure the Systick
  177.     */
  178.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  179.   /* SysTick_IRQn interrupt configuration */
  180.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  181. }

  182. /** NVIC Configuration
  183. */
  184. static void MX_NVIC_Init(void)
  185. {
  186.   /* TIM2_IRQn interrupt configuration */
  187.   HAL_NVIC_SetPriority(TIM2_IRQn, 1, 0);
  188.   HAL_NVIC_EnableIRQ(TIM2_IRQn);
  189.   /* USART2_IRQn interrupt configuration */
  190.   HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
  191.   HAL_NVIC_EnableIRQ(USART2_IRQn);
  192. }

  193. /* TIM2 init function */
  194. static void MX_TIM2_Init(void)
  195. {

  196.   TIM_ClockConfigTypeDef sClockSourceConfig;
  197.   TIM_MasterConfigTypeDef sMasterConfig;

  198.   htim2.Instance = TIM2;
  199.   htim2.Init.Prescaler = 7200-1;
  200.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  201.   htim2.Init.Period = 10-1;
  202.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  203.   htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  204.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  205.   {
  206.     _Error_Handler(__FILE__, __LINE__);
  207.   }

  208.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  209.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  210.   {
  211.     _Error_Handler(__FILE__, __LINE__);
  212.   }

  213.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  214.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  215.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  216.   {
  217.     _Error_Handler(__FILE__, __LINE__);
  218.   }

  219. }

  220. /* USART1 init function */
  221. static void MX_USART1_UART_Init(void)
  222. {

  223.   huart1.Instance = USART1;
  224.   huart1.Init.BaudRate = 115200;
  225.   huart1.Init.WordLength = UART_WORDLENGTH_8B;
  226.   huart1.Init.StopBits = UART_STOPBITS_1;
  227.   huart1.Init.Parity = UART_PARITY_NONE;
  228.   huart1.Init.Mode = UART_MODE_TX_RX;
  229.   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  230.   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  231.   if (HAL_UART_Init(&huart1) != HAL_OK)
  232.   {
  233.     _Error_Handler(__FILE__, __LINE__);
  234.   }

  235. }

  236. /* USART2 init function */
  237. static void MX_USART2_UART_Init(void)
  238. {

  239.   huart2.Instance = USART2;
  240.   huart2.Init.BaudRate = 9600;
  241.   huart2.Init.WordLength = UART_WORDLENGTH_8B;
  242.   huart2.Init.StopBits = UART_STOPBITS_1;
  243.   huart2.Init.Parity = UART_PARITY_NONE;
  244.   huart2.Init.Mode = UART_MODE_TX_RX;
  245.   huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  246.   huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  247.   if (HAL_UART_Init(&huart2) != HAL_OK)
  248.   {
  249.     _Error_Handler(__FILE__, __LINE__);
  250.   }

  251. }

  252. /** Configure pins as
  253.         * Analog
  254.         * Input
  255.         * Output
  256.         * EVENT_OUT
  257.         * EXTI
  258. */
  259. static void MX_GPIO_Init(void)
  260. {

  261.   GPIO_InitTypeDef GPIO_InitStruct;

  262.   /* GPIO Ports Clock Enable */
  263.   __HAL_RCC_GPIOD_CLK_ENABLE();
  264.   __HAL_RCC_GPIOA_CLK_ENABLE();
  265.   __HAL_RCC_GPIOB_CLK_ENABLE();

  266.   /*Configure GPIO pin : KEY1_Pin */
  267.   GPIO_InitStruct.Pin = KEY1_Pin;
  268.   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  269.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  270.   HAL_GPIO_Init(KEY1_GPIO_Port, &GPIO_InitStruct);

  271.   /*Configure GPIO pin : KEY2_Pin */
  272.   GPIO_InitStruct.Pin = KEY2_Pin;
  273.   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  274.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  275.   HAL_GPIO_Init(KEY2_GPIO_Port, &GPIO_InitStruct);

  276. }

  277. /* USER CODE BEGIN 4 */

  278. /* USER CODE END 4 */

  279. /**
  280.   * @brief  This function is executed in case of error occurrence.
  281.   * @param  None
  282.   * @retval None
  283.   */
  284. void _Error_Handler(char * file, int line)
  285. {
  286.   /* USER CODE BEGIN Error_Handler_Debug */
  287.   /* User can add his own implementation to report the HAL error return state */
  288.   while(1)
  289.   {
  290.   }
  291.   /* USER CODE END Error_Handler_Debug */
  292. }

  293. #ifdef USE_FULL_ASSERT

  294. /**
  295.    * @brief Reports the name of the source file and the source line number
  296.    * where the assert_param error has occurred.
  297.    * @param file: pointer to the source file name
  298.    * @param line: assert_param error line source number
  299.    * @retval None
  300.    */
  301. void assert_failed(uint8_t* file, uint32_t line)
  302. {
  303.   /* USER CODE BEGIN 6 */
  304.   /* User can add his own implementation to report the file name and line number,
  305.     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  306.   /* USER CODE END 6 */

  307. }

  308. #endif

  309. /**
  310.   * @}
  311.   */

  312. /**
  313.   * @}
  314. */

  315. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

復(fù)制代碼

所有資料51hei提供下載:
智能魚缸 2018.6.1.rar (3.7 MB, 下載次數(shù): 433)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏24 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:435457 發(fā)表于 2018-11-29 10:48 | 只看該作者
很厲害,
回復(fù)

使用道具 舉報

板凳
ID:451875 發(fā)表于 2018-12-25 08:11 | 只看該作者
謝謝
回復(fù)

使用道具 舉報

地板
ID:445069 發(fā)表于 2019-3-27 17:19 | 只看該作者
stm32 + esp8266,通過 wifi 遠程控制設(shè)備。
這是物聯(lián)網(wǎng)必需的解決方案。
回復(fù)

使用道具 舉報

5#
ID:147329 發(fā)表于 2019-3-28 22:55 | 只看該作者
樓主你好,這里面有沒有app的源碼?我考慮是否下載
回復(fù)

使用道具 舉報

6#
ID:597631 發(fā)表于 2019-8-10 16:16 | 只看該作者
樓主你好,單片機源程序在哪個位置
回復(fù)

使用道具 舉報

7#
ID:624935 發(fā)表于 2019-10-16 11:18 | 只看該作者
很好,很厲害,好
回復(fù)

使用道具 舉報

8#
ID:759613 發(fā)表于 2020-5-25 18:13 | 只看該作者
大佬你做的智能魚缸有沒有手機端APP,發(fā)我一個不勝感激
回復(fù)

使用道具 舉報

9#
ID:823492 發(fā)表于 2020-9-27 09:32 | 只看該作者
大神,這個怎么在keil5中打不開呢?求解,急急急!
回復(fù)

使用道具 舉報

10#
ID:685171 發(fā)表于 2020-11-21 18:10 | 只看該作者
請問這個有實物圖和接線圖嗎?
回復(fù)

使用道具 舉報

11#
ID:861916 發(fā)表于 2020-12-17 09:33 | 只看該作者
請問有實物圖和接線圖嗎
回復(fù)

使用道具 舉報

12#
ID:851229 發(fā)表于 2021-3-17 15:39 | 只看該作者
有原理圖和APP嗎,大佬?
回復(fù)

使用道具 舉報

13#
ID:162811 發(fā)表于 2021-3-24 12:29 | 只看該作者
養(yǎng)魚的話,這個很實用。
回復(fù)

使用道具 舉報

14#
ID:17204 發(fā)表于 2021-3-24 14:17 | 只看該作者
好東西啊 感謝分享思路。。。
回復(fù)

使用道具 舉報

15#
ID:164062 發(fā)表于 2021-4-6 09:35 | 只看該作者
能增加個連動功能就好了,比如分別單獨定時控制加氧、燈光及過濾,還有溫度與加溫功能連動
回復(fù)

使用道具 舉報

16#
ID:783253 發(fā)表于 2021-4-9 16:49 | 只看該作者
謝謝樓主提供的思路
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人av一区二区亚洲精 | 亚洲精品一区二区三区丝袜 | 国产一级淫片免费视频 | 国产精品久久久久久吹潮日韩动画 | 国内激情av片 | 国产高清一二三区 | 亚洲成人av| a级片在线| 亚洲一区二区av | 自拍偷拍精品 | h视频免费在线观看 | 久久毛片 | 精品久草 | 国产一区二区三区在线看 | 国产探花在线精品一区二区 | 午夜日韩| 天天色天天射天天干 | 亚洲免费人成在线视频观看 | 中文字幕11页 | 亚洲精品久久久久久久久久久 | 99精品电影| 亚洲 欧美 另类 综合 偷拍 | 日韩国产黄色片 | 亚洲成av人片在线观看无码 | 国产精品无码永久免费888 | 精品一区二区三区免费视频 | 国产日韩精品一区二区 | 亚洲激情综合 | 视频三区| 欧美日韩精品一区二区 | 亚洲三级在线 | 国产视频第一页 | 丁香综合 | 亚洲午夜精品视频 | 免费播放一级片 | 欧美激情一区二区 | 91xxx在线观看 | 天堂色区 | 欧洲毛片 | 亚洲国产精品激情在线观看 | 91美女在线 |