找回密码
 立即注册
搜索
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋

【Io开发笔记】机智云智能浇花器实战(3)-自动生成代码移植

状或难 2022-8-5 09:12:42
实验室 0
<div style="padding-left: 60px;">
<div class="vditor-reset"style="max-width: 800px;">第一篇内容:总体设计/系统功能介绍/机智云自助开发平台-开发利器GAgent等等
点击下载:【Io开发笔记】机智云智能浇花器实战(1)-基础Demo实现
第二篇内容:
继电器实现/功能测试/DHT11驱动代码实现/OLED屏幕显示传感器数据/中文字模制作等等
点击下载:机智云智能浇花器实战(2)-基础Demo实现
一,BH1750光照传感器原理图

二,BH1750传感器代码

  • #include "bh1750.h"
  • #include "delay.h"

  • uint8_t    BUF[8];               //接收数据缓存区
  • int         mcy;     //进位标志

  • / 开始信号 /
  • void BH1750_Start()
  • {
  • BH1750_SDA_H;                                               //拉高数据线
  • BH1750_SCL_H;                                               //拉高时钟线
  • Delay_nus(5);                                         //延时
  • GPIO_ResetBits(BH1750_PORT, BH1750_SDA_PIN);                    //产生下降沿
  • Delay_nus(5);                                         //延时
  • GPIO_ResetBits(BH1750_PORT, BH1750_SCL_PIN);                    //拉低时钟线
  • }

  • / 停止信号 /
  • void BH1750_Stop()
  • {
    1. [/diy]8
    复制代码
  1. [/diy]7
复制代码

    1. [/diy]6
    复制代码
BH1750_SCL_H;                                             //拉高时钟线
  1. [/diy]5
复制代码

    1. [/diy]4
    复制代码
GPIO_SetBits(BH1750_PORT, BH1750_SDA_PIN);                    //产生上升沿
  1. [/diy]3
复制代码

  • }

  • /******************
  • 发送应答信号
  • 入口参数:ack (0:ACK 1:NAK)
  • ******************/
  • void BH1750_SendACK(int ack)
  • {
    1. [/diy]2
    复制代码
GPIO_InitTypeDef GPIO_InitStruct;
  1. [/diy]1
复制代码

    1. [/diy]0
    复制代码
BH1750_SDA_H;
  1. 一下活动板块都不显示   888   25   1218  282 9
复制代码

    1. [/diy]70
    复制代码
BH1750_SDA_L;
  1. [/diy]71
复制代码

    1. [/diy]72
    复制代码
return;
  1. [/diy]73
复制代码

    1. [/diy]74
    复制代码
mcy = 1 ;
  1. [/diy]75
复制代码

  • BH1750_SCL_L;                    //拉低时钟线
  • Delay_nus(5);                 //延时
  • GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
  • GPIO_Init(BH1750_PORT,&GPIO_InitStruct);
    1. [/diy]76
    复制代码
return mcy;
  1. [/diy]77
复制代码

    1. [/diy]78
    复制代码
GPIO_SetBits(BH1750_PORT,BH1750_SDA_PIN);
  1. [/diy]79
复制代码

    1. [/diy]60
    复制代码
GPIO_ResetBits(BH1750_PORT,BH1750_SDA_PIN);
  1. [/diy]61
复制代码

    1. [/diy]62
    复制代码
BH1750_SCL_H;               //拉高时钟线
  1. [/diy]63
复制代码

    1. [/diy]64
    复制代码
BH1750_SCL_L;                //拉低时钟线
  1. [/diy]65
复制代码
<ol start="95">}
BH1750_RecvACK();
}

uint8_t BH1750_RecvByte()
{
uint8_t i;
uint8_t dat = 0;
uint8_t bit;

GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPU;   /这里一定要设成输入上拉,否则不能读出数据/
GPIO_InitStruct.GPIO_Pin   = BH1750_SDA_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(BH1750_PORT,&GPIO_InitStruct );

GPIO_SetBits(BH1750_PORT,BH1750_SDA_PIN);          //使能内部上拉,准备读取数据,
for (i=0; iyear,ptime->month,ptime->day,ptime->hour,ptime->minute,ptime->second,ptime->ntp);</p>
  1. [/diy]17
复制代码

    1. [/diy]10
    复制代码
case MODULE_INFO:
  1. [/diy]705
复制代码

    1. [/diy]10
    复制代码
#if MODULE_TYPE
  1. [/diy]707
复制代码

    1. [/diy]10
    复制代码
//Format By gprsInfo_t
  1. [/diy]709
复制代码

    1. [/diy]10
    复制代码
GIZWITS_LOG("WIF MODULE ...
");
  1. [/diy]711
复制代码

    1. [/diy]10
    复制代码
GIZWITS_LOG("moduleType : [%d]
",ptModuleInfo->moduleType);
  1. [/diy]713
复制代码

    1. [/diy]10
    复制代码
break;
  1. [/diy]715
复制代码

    1. [/diy]10
    复制代码
break;
  1. [/diy]717
复制代码

  • }

  • return 0;
  • }


  • void userHandle(void)
  • {
  • /*
    1. [/diy]10
    复制代码
currentDataPoint.valueTemp = ;//Add Sensor Data Collection
  1. [/diy]719
复制代码

    1. [/diy]10
    复制代码
currentDataPoint.valueLight_Intensity = ;//Add Sensor Data Collection
  1. [/diy]721
复制代码

    1. [/diy]10
    复制代码
currentDataPoint.valueRelay_1         = 0;
  1. [/diy]723
复制代码

    1. [/diy]10
    复制代码
currentDataPoint.valueHumi            = 0;
  1. [/diy]725
复制代码

  • }

  • void gizTimerMs(void)
  • {
    1. [/diy]10
    复制代码
timerMsCount++;
  1. [/diy]727
复制代码

  • }

  • void mcuRestart(void)
  • {
    1. [/diy]10
    复制代码
__set_FAULTMASK(1);
  1. [/diy]729
复制代码

  • }

  • void TIMER_IRQ_FUN(void)
  • {
  • gizTimerMs();
  • }

  • void UART_IRQ_FUN(void)
  • {
  • uint8_t value = 0;
  • gizPutData(&value, 1);
  • }

  • int32_t uartWrite(uint8_t *buf, uint32_t len)
  • {
    1. [/diy]10
    复制代码
uint32_t i = 0;
  1. [/diy]731
复制代码

    1. [/diy]10
    复制代码
{
  1. [/diy]733
复制代码

    1. [/diy]10
    复制代码
}
  1. [/diy]735
复制代码

    1. [/diy]10
    复制代码
{
  1. [/diy]737
复制代码

    1. [/diy]10
    复制代码
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET); //循环发送,直到发送完毕
  1. [/diy]739
复制代码

    1. [/diy]10
    复制代码
{
  1. [/diy]741
复制代码

    1. [/diy]10
    复制代码
while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET); //循环发送,直到发送完毕
  1. [/diy]717
复制代码

    1. [/diy]10
    复制代码
}
  1. [/diy]745
复制代码

  • }


复制代码
5,修改

  • #ifndef _GIZWITS_PRODUCT_H
  • #define _GIZWITS_PRODUCT_H

  • #ifdef __cplusplus
  • extern "C" {
  • #endif

  • #include
  • //#include "stm32f1xx.h"
  • #include"gizwits_protocol.h"

  • /**


    • MCU software version

  • */
  • #define SOFTWARE_VERSION "03030000"
  • /**


    • MCU hardware version

  • */
  • #define HARDWARE_VERSION "03010100"


  • /**


    • Communication module model

  • */
  • #define MODULE_TYPE 0 //0,WIFI ;1,GPRS


  • /**@name TIM3 related macro definition


    • @{

  • */
  • #define TIMER                                             TIM3
  • #define TIMER_IRQ                                   TIM3_IRQn
  • #define TIMER_RCC                                   RCC_APB1Periph_TIM3
  • #define TIMER_IRQ_FUN                         TIM3_IRQHandler
  • /**@} */

  • /**@name USART related macro definition


    • @{

  • */
  • #define UART_BAUDRATE                         9600
  • #define UART_PORT                             2
  • #define UART                                  USART2
  • #define UART_IRQ                              USART2_IRQn
  • #define UART_IRQ_FUN                          USART2_IRQHandler

  • #if (UART_PORT == 1)
  • #define UART_GPIO_Cmd          RCC_APB2PeriphClockCmd
  • #define UART_GPIO_CLK          RCC_APB2Periph_GPIOA

  • #define UART_AFIO_Cmd          RCC_APB2PeriphClockCmd
  • #define UART_AFIO_CLK          RCC_APB2Periph_AFIO

  • #define UART_CLK_Cmd           RCC_APB2PeriphClockCmd
  • #define UART_CLK               RCC_APB2Periph_USART1

  • #define UART_GPIO_PORT         GPIOA
  • #define UART_RxPin             GPIO_Pin_10
  • #define UART_TxPin             GPIO_Pin_9
  • #endif

  • #if (UART_PORT == 2)
  • #define UART_GPIO_Cmd          RCC_APB2PeriphClockCmd
  • #define UART_GPIO_CLK          RCC_APB2Periph_GPIOA

  • #define UART_AFIO_Cmd          RCC_APB2PeriphClockCmd
  • #define UART_AFIO_CLK          RCC_APB2Periph_AFIO

  • #define UART_CLK_Cmd           RCC_APB1PeriphClockCmd
  • #define UART_CLK               RCC_APB1Periph_USART2

  • #define UART_GPIO_PORT         GPIOA
  • #define UART_RxPin             GPIO_Pin_3
  • #define UART_TxPin             GPIO_Pin_2
  • #endif


  • #if (UART_PORT == 3)

  • #define UART_GPIO_Cmd          RCC_APB2PeriphClockCmd
  • #define UART_GPIO_CLK          RCC_APB2Periph_GPIOC

  • #define UART_AFIO_Cmd          RCC_APB2PeriphClockCmd
  • #define UART_AFIO_CLK          RCC_APB2Periph_AFIO

  • #define UART_CLK_Cmd           RCC_APB1PeriphClockCmd
  • #define UART_CLK               RCC_APB1Periph_USART3

  • #define UART_GPIO_PORT         GPIOC
  • #define UART_RxPin             GPIO_Pin_11
  • #define UART_TxPin             GPIO_Pin_10

  • #endif
  • /**@} */

  • /** User area the current device state structure*/
  • extern dataPoint_t currentDataPoint;

  • voidgizTimerMs(void);
  • uint32_tgizGetTimerCount(void);
  • voidtimerInit(void);
  • voiduartInit(void);

  • voiduserInit(void);
  • voiduserHandle(void);
  • voidmcuRestart(void);

  • int32_tuartWrite(uint8_t *buf, uint32_t len);
  • int8_tgizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len);

  • #ifdef __cplusplus
  • }
  • #endif

  • #endif


复制代码
5,修改gizwits_product.h
Listitem
Listitem
Listitem
Listitem
Listitem

  • /**



    • @file         gizwits_protocol.c



    • @Brief        Corresponding gizwits_product.c header file (including product hardware and software version definition)





    • @date         2017-07-19











    • @NOTE         机智云.只为智能硬件而生



      1. [/diy]10
      复制代码

Gizwits Smart Cloud  for Smart Products
  1. [/diy]747
复制代码



      1. [/diy]10
      复制代码

www.gizwits.com
  1. [/diy]749
复制代码

  • */
  • int32_t gizPutData(uint8_t *buf, uint32_t len)
  • {
    1. [/diy]10
    复制代码
int32_t count = 0;
  1. [/diy]751
复制代码
{
  1. [/diy]752
复制代码
return -1;
  1. [/diy]753
复制代码
count = rbWrite(&pRb, buf, len);
  1. [/diy]754
复制代码
{
  1. [/diy]755
复制代码
return -1;
  1. [/diy]756
复制代码
return count;
  1. [/diy]757
复制代码
{
  1. [/diy]758
复制代码
return -1;
  1. [/diy]759
复制代码
memset((uint8_t *)head, 0, sizeof(protocolHead_t));
  1. [/diy]760
复制代码
head->head[1] = 0xFF;
  1. [/diy]761
复制代码

  • }

  • /**


    • @brief Protocol ACK check processing function




    • @param [in] data            : data adress



    • @param [in] len             : data length




    • @return 0, suceess; other, failure

  • */
  • static int8_t gizProtocolWaitAck(uint8_t *gizdata, uint32_t len)
  • {
    1. [/diy]10
    复制代码
if(NULL == gizdata)
  1. [/diy]763
复制代码
GIZWITS_LOG("ERR: data is empty
");
  1. [/diy]764
复制代码
}
  1. [/diy]765
复制代码
memcpy((uint8_t *)gizwitsProtocol.waitAck.buf, gizdata, len);
  1. [/diy]766
复制代码
gizwitsProtocol.waitAck.flag = 1;
  1. [/diy]767
复制代码
return 0;
  1. [/diy]768
复制代码
{
  1. [/diy]769
复制代码
return -1;
  1. [/diy]770
复制代码
/** Greater than 1 byte to do bit conversion **/
  1. [/diy]771
复制代码
{
  1. [/diy]772
复制代码
{
  1. [/diy]773
复制代码
return -1;
  1. [/diy]774
复制代码
}
  1. [/diy]775
复制代码
{
  1. [/diy]776
复制代码
info->num++;
  1. [/diy]777
复制代码
}
  1. [/diy]778
复制代码

  • }

  • /**


    • @brief contrasts the current data with the last data




    • @param [in] cur: current data point data



    • @param [in] last: last data point data




    • @return: 0, no change in data; 1, data changes

  • */
  • static int8_t ICACHE_FLASH_ATTR gizCheckReport(dataPoint_t *cur, dataPoint_t *last)
  • {
    1. [/diy]10
    复制代码
int8_t ret = 0;
  1. [/diy]780
复制代码
uint32_t currentTime = 0;
  1. [/diy]781
复制代码
{
[code]实验室

使用道具 举报

您需要登录后才可以回帖 立即登录
2022-8-5 15:45:37
太赞了
2022-8-6 01:26:27
不错
2022-8-6 20:38:56
感谢您的无私精神...
2022-8-7 18:31:10
这个不错,谢谢共享
2022-8-8 16:23:24
支持一下,期待更多东西
2022-8-9 15:14:18
期待中......
2022-8-10 14:05:11
这个好好支持一下
2022-8-13 05:41:39
顶起  很好的帖
2022-8-15 21:18:07
1234下一页
返回顶部