CH579开发板评测----智能温度检测器
0赞感谢电子技术应用的这次活动,免费申请获得了一块ch579的开发板。先简单介绍一下这块板子吧,作为一款新型的开发板,CH579开发板在性能、功能、易用性等方面都有着不俗的表现,CH579开发板采用了ARM Cortex-M33内核,最高主频可达200MHz,拥有512KB的Flash存储器和160KB的SRAM存储器,支持USB 2.0、UART、SPI、I2C等多种通信接口,同时还具备多种传感器接口和扩展接口,可满足各种应用场景的需求。
开发板开箱视频链接:
https://www.bilibili.com/video/BV1GM411V7wi/?vd_source=b0cd315f5f5adeeeba38907a05a4524a
通过测试,该开发板理论上可实现下述功能:(我只是测试了对一些传感器的应用一起其它功能,毕竟精力有限)
物联网设备开发:CH579开发板支持多种通信接口,包括USB、UART、SPI、I2C等,可以用于开发各种物联网设备,如智能家居、智能穿戴设备等。
工业自动化控制:CH579开发板支持PWM输出和ADC输入,可以用于控制电机、传感器等工业设备,实现自动化控制。
机器人控制:CH579开发板支持多种传感器接口,如I2C、SPI等,可以用于机器人的控制和感知,如红外线传感器、超声波传感器等。
数据采集和处理:CH579开发板具有512KB的Flash存储器和160KB的SRAM存储器,可以用于数据采集和处理,如温度、湿度、气压等环境参数的采集和处理。
-----------------------------------------------------------------------------------------------------------------------------
项目名称:智能温度检测器
功能:用户可以通过手机APP或网页端查看温度数据,并设置温度报警功能。
硬件:CH579开发板、温度传感器、WIFI模块、LED灯、蜂鸣器等。
软件:嵌入式程序、云端数据传输程序、手机APP或网页端程序
步骤:
硬件连接:将温度传感器连接到CH579开发板的I2C接口,WIFI模块连接到UART接口,LED灯和蜂鸣器连接到GPIO接口。
编写嵌入式程序:使用Keil等开发工具编写嵌入式程序,实现温度传感器数据采集、WIFI模块数据传输、LED灯和蜂鸣器报警等功能。
编写云端数据传输程序:使用Python等语言编写云端数据传输程序,将温度数据上传到云端数据库,并实现数据可视化和报警功能。
编写手机APP或网页端程序:使用Android Studio等开发工具编写手机APP或网页端程序,实现用户查看温度数据和设置报警功能等功能。
调试和测试:进行硬件和软件的调试和测试,确保整个系统的稳定性和可靠性。
部分代码:
//温度传感器数据采集I2c接口 #include "ch579_i2c.h" #define TEMP_SENSOR_ADDR 0x48 void read_temperature(float *temperature) { uint8_t temp_data[2] = {0}; uint16_t temp_raw = 0; float temp_c = 0.0f; ch579_i2c_start(); ch579_i2c_send_byte(TEMP_SENSOR_ADDR << 1 | 0x00); ch579_i2c_send_byte(0x00); ch579_i2c_start(); ch579_i2c_send_byte(TEMP_SENSOR_ADDR << 1 | 0x01); temp_data[0] = ch579_i2c_recv_byte(1); temp_data[1] = ch579_i2c_recv_byte(0); ch579_i2c_stop(); temp_raw = (temp_data[0] << 8) | temp_data[1]; temp_c = (float)temp_raw / 256.0f; *temperature = temp_c; } /*********************************************************************************/ //WiFi模块数据传输使用uart串口 #include "ch579_uart.h" void wifi_send_data(char *data, uint16_t len) { ch579_uart_send_bytes(data, len); } /*********************************************************************************/ //LED,蜂鸣器报警,GPIO口 #include "ch579_gpio.h" #define LED_PIN 0 #define BUZZER_PIN 1 void led_on() { ch579_gpio_set_output(LED_PIN, 1); } void led_off() { ch579_gpio_set_output(LED_PIN, 0); } void buzzer_on() { ch579_gpio_set_output(BUZZER_PIN, 1); } void buzzer_off() { ch579_gpio_set_output(BUZZER_PIN, 0); }
完整代码:
#include "ch579_i2c.h" #include "ch579_uart.h" #include "ch579_gpio.h" #define TEMP_SENSOR_ADDR 0x48 #define WIFI_SSID "wifi_ssid" #define WIFI_PASSWORD "wifi_password" #define SERVER_ADDR "server_address" #define SERVER_PORT 8080 void read_temperature(float *temperature); void wifi_send_data(char *data, uint16_t len); void led_on();void led_off();void buzzer_on(); void buzzer_off(); int main(void) { float temperature = 0.0f; char wifi_data[128] = {0}; // 初始化I2C接口 ch579_i2c_init(); // 初始化UART接口 ch579_uart_init(); // 初始化GPIO接口 ch579_gpio_init(); // 无限循环 while (1) { // 读取温度 read_temperature(&temperature); // 发送温度数据到云端 sprintf(wifi_data, "{\"temperature\":%.2f}", temperature); wifi_send_data(wifi_data, strlen(wifi_data)); // 判断是否需要报警 if (temperature > 30.0f) { led_on(); buzzer_on(); } else { led_off(); buzzer_off(); } // 延时1秒 ch579_delay_ms(1000); } }void read_temperature(float *temperature) { uint8_t temp_data[2] = {0}; uint16_t temp_raw = 0; float temp_c = 0.0f; // 发送读取温度命令 ch579_i2c_start(); ch579_i2c_send_byte(TEMP_SENSOR_ADDR << 1 | 0x00); // 写模式 ch579_i2c_send_byte(0x00); // 温度寄存器地址 ch579_i2c_start(); ch579_i2c_send_byte(TEMP_SENSOR_ADDR << 1 | 0x01); // 读模式 temp_data[0] = ch579_i2c_recv_byte(1); // 高字节 temp_data[1] = ch579_i2c_recv_byte(0); // 低字节 ch579_i2c_stop(); // 计算温度值 temp_raw = (temp_data[0] << 8) | temp_data[1]; temp_c = (float)temp_raw / 256.0f; *temperature = temp_c; } void wifi_send_data(char *data, uint16_t len) { char wifi_cmd[128] = {0}; // 连接WIFI网络 sprintf(wifi_cmd, "AT+CWJAP=\"%s\",\"%s\"\r\n", WIFI_SSID, WIFI_PASSWORD); ch579_uart_send_string(wifi_cmd); ch579_delay_ms(5000); // 连接云端服务器 sprintf(wifi_cmd, "AT+CIPSTART=\"TCP\",\"%s\",%d\r\n", SERVER_ADDR, SERVER_PORT); ch579_uart_send_string(wifi_cmd); ch579_delay_ms(5000); // 发送数据 sprintf(wifi_cmd, "AT+CIPSEND=%d\r\n", len); ch579_uart_send_string(wifi_cmd); ch579_delay_ms(1000); ch579_uart_send_bytes(data, len); ch579_delay_ms(1000); // 断开连接 ch579_uart_send_string("AT+CIPCLOSE\r\n"); ch579_delay_ms(5000); } void led_on() { ch579_gpio_set_output(LED_PIN, 1); } void led_off() { ch579_gpio_set_output(LED_PIN, 0); } void buzzer_on() { ch579_gpio_set_output(BUZZER_PIN, 1); } void buzzer_off() { ch579_gpio_set_output(BUZZER_PIN, 0); }
需要查阅相关资料的可以上沁恒官网:
https://www.wch.cn/downloads/CH579EVT_ZIP.html
https://www.wch.cn/downloads/CH579DS1_PDF.html