📌  相关文章
📜  使用Android App的IoT Project Google Firebase控制LED(1)

📅  最后修改于: 2023-12-03 14:49:47.760000             🧑  作者: Mango

使用Android App的IoT Project Google Firebase控制LED

简介

本项目通过使用Android App和Google Firebase实现对一个LED灯的远程控制。用户可以使用App登录并发送指令来控制LED灯的开关状态。

技术工具
  • Android App开发:使用Java和Android Studio进行开发
  • 数据存储:使用Google Firebase实时数据库
  • 硬件控制:树莓派(或其他支持GPIO的设备)连接一个LED灯
步骤
1. 创建Firebase项目
  1. 打开Firebase控制台(https://console.firebase.google.com/)并登录。
  2. 点击“添加项目”按钮,填写项目名称并创建项目。
  3. 在项目设置中,选择Android App并填写包名。
  4. 下载google-services.json文件并将其放置在Android App的app目录下。
2. 配置Android App
  1. 在Android Studio中打开项目,并在app/build.gradle文件中添加Firebase依赖:

    implementation 'com.google.firebase:firebase-database:19.7.0'
    
  2. 在App的MainActivity中初始化Firebase:

    import com.google.firebase.database.DatabaseReference;
    import com.google.firebase.database.FirebaseDatabase;
    
    public class MainActivity extends AppCompatActivity {
        // 声明Firebase数据库引用
        private DatabaseReference mDatabase;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            // 初始化Firebase数据库引用
            mDatabase = FirebaseDatabase.getInstance().getReference();
        }
    }
    
  3. 实现控制LED灯的方法:

    private void turnOnLED() {
        // 更新Firebase数据库中的LED状态为开启
        mDatabase.child("led").setValue("on");
    }
    
    private void turnOffLED() {
        // 更新Firebase数据库中的LED状态为关闭
        mDatabase.child("led").setValue("off");
    }
    
3. 连接硬件
  1. 将LED连接到树莓派(或其他支持GPIO的设备)的一个GPIO引脚上。
4. 设置Firebase规则
  1. 在Firebase控制台中选择数据库,并选择“规则”标签页。
  2. 将默认规则更改为以下规则,以限制只有已登录的用户才能更改LED状态:
    {
      "rules": {
        ".read": "auth != null",
        ".write": "auth != null"
      }
    }
    
5. 创建Android App界面
  1. 在App的activity_main.xml中添加两个按钮用于控制LED状态。
    <Button
        android:id="@+id/button_on"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="turnOnLED"
        android:text="Turn On" />
    
    <Button
        android:id="@+id/button_off"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="turnOffLED"
        android:text="Turn Off" />
    
6. 实时监听Firebase数据库的变化
  1. 在App的MainActivity中添加监听器来实时检测LED状态的变化:
    @Override
    protected void onStart() {
        super.onStart();
        
        // 添加值事件监听器
        mDatabase.child("led").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String status = dataSnapshot.getValue(String.class);
                // 根据LED状态更新界面
                if (status.equals("on")) {
                    // LED状态为开启
                } else if (status.equals("off")) {
                    // LED状态为关闭
                }
            }
            
            @Override
            public void onCancelled(DatabaseError error) {
                // 处理错误
            }
        });
    }
    
结论

通过这个项目,我们可以使用Android App远程控制一个LED灯。此外,我们还使用Google Firebase实时数据库来存储和同步LED的状态。使用Firebase使得数据实时更新并与硬件设备进行同步,提供了一个可靠且方便的远程控制方法。