Makato-kan が 2022年04月16日16時21分45秒 に編集
ご注意の追加
本文の変更
elchika様よりM5StickC Plusをいただきましたので、屋外で長い時間使えるように 太陽電池パネルと充電器を接続し、充電できるか試してみました。 ### 部品表: M5StickC Plus DHT11: 温度・湿度センサー 10kΩ抵抗 1個 80mm x 45mm 太陽電池パネル 2枚 Solar Charger HW-736 海外通販にて購入(1枚150円位) ※抵抗はDHT11のプルアップ用です。 ### 回路図: 充電基板のバッテリー出力をM5Stickの5VINに接続します。 DHT11のデータ線は10kΩでプルアップしてG26に接続します。 太陽電池パネルは電流容量を増やす為並列接続して充電基板のソーラに接続します。 ![キャプションを入力できます](https://camo.elchika.com/a5f1d13f8f09453f8e8cc826d1b706f5cc098b59/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66373831653764372d303336352d343131662d613663362d3663623238333931346464342f35663133666631652d386132612d346564662d383466322d346630623431663363393436/) ### ArduinoIDE設定: まだArduinoIDEにMtStickC-Plusの環境を設定していない場合は以下の項目を設定します。 環境設定: ```` arduino:追加のボードマネージャーのURL https://dl.espressif.com/dl/package_esp32_index.json ```` ボードマネージャーの追加で "ESP32"を検索して表示される下図を追加します。 ![キャプションを入力できます](https://camo.elchika.com/e23afbdf2927e9f67459904852d9f66b8c8a921b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66373831653764372d303336352d343131662d613663362d3663623238333931346464342f31336266636632352d613539342d343965372d623838332d306539316134643962393831/) ライブラリの管理で M5StickCPlusを検索して表示される下図を追加します。 ![キャプションを入力できます](https://camo.elchika.com/a33462c03c8ab9238321a5998a8ec41d2acc7be3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66373831653764372d303336352d343131662d613663362d3663623238333931346464342f65386637636235642d653362382d343730622d613832632d313035363865396531376566/) DHT11のライブラリを追加します。 ![キャプションを入力できます](https://camo.elchika.com/0f9ce979c7bc5d41db47b4654579a486146c85fa/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66373831653764372d303336352d343131662d613663362d3663623238333931346464342f66356634346334662d376530612d343634372d626164612d653036366363666434326132/) ### プログラム: プログラムはArduinoIDEにある"プログラム例"→M5StickC-Plus→BASICS→AXP192にDHT11温度センサーのプログラムを加えました。 充電するだけなら、DHT11もプログラムも不要です。 ```arduino:太陽電池パネルと充電基板接続したよ /* ******************************************************************************* * Copyright (c) 2021 by M5Stack * Equipped with M5StickC-Plus sample source code * 配套 M5StickC-Plus 示例源代码 * Visit the website for more information:https://docs.m5stack.com/en/core/m5stickc_plus * 获取更多资料请访问:https://docs.m5stack.com/zh_CN/core/m5stickc_plus * * describe: APX192. * date:2021/9/14 ******************************************************************************* */ #include <M5StickCPlus.h> #include "AXP192.h" TFT_eSprite tftSprite = TFT_eSprite(&M5.Lcd); //DHT11 #include "DHT.h" #define DHTPIN 26 //G26ピンに接続します。 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); /* After M5StickC Plus is started or reset the program in the setUp () function will be run, and this part will only be run once. 在 M5StickC Plus 启动或者复位后,即会开始执行setup()函数中的程序,该部分只会执行一次。 */ void setup() { M5.begin(); //Init M5StickC Plus. 初始化 M5StickC Plus M5.lcd.setRotation(1); //Rotate the screen. 将屏幕旋转 tftSprite.createSprite(240, 135); //Create a 240x135 canvas. 创建一块160x80的画布 tftSprite.setRotation(3); M5.Axp.EnableCoulombcounter(); //Enable Coulomb counter. 启用库仑计数器 //DHT11 dht.begin(); } /* After the program in setup() runs, it runs the program in loop() The loop() function is an infinite loop in which the program runs repeatedly 在setup()函数中的程序执行完后,会接着执行loop()函数中的程序 loop()函数是一个死循环,其中的程序会不断的重复运行 */ void loop() { tftSprite.fillSprite(BLACK); //Fill the canvas with black. 将画布填充为黑色 tftSprite.setCursor(0, 0, 1); //Set the cursor position and use the 1-point font. 设置光标位置并采用1号字体 tftSprite.printf("AXP Temp: %.1fC \r\n", M5.Axp.GetTempInAXP192()); //Get the temperature of AXP192. 获取AXP192的温度 tftSprite.printf("Bat:\r\n V: %.3fV I: %.3fmA\r\n", M5.Axp.GetBatVoltage(), M5.Axp.GetBatCurrent()); //Output voltage and current of Bat. 输出Bat的电压和电流 tftSprite.printf("USB:\r\n V: %.3fV I: %.3fmA\r\n", M5.Axp.GetVBusVoltage(), M5.Axp.GetVBusCurrent()); //Output current and voltage of USB. 输出USB的电流和电压 tftSprite.printf("5V-In\r\n: V: %.3fV I: %.3fmA\r\n", M5.Axp.GetVinVoltage(), M5.Axp.GetVinCurrent()); tftSprite.printf("Bat power %.3fmwv\r\n", M5.Axp.GetBatPower()); //DHT11 tftSprite.printf("Temp: %.2fC Humi: %.1f%%",dht.readTemperature(),dht.readHumidity()); tftSprite.pushSprite(40, 20); // 0x01V long press(1s), 0x02 press if(M5.Axp.GetBtnPress() == 0x02){ esp_restart(); } if(M5.BtnA.wasPressed()){ // close tft voltage output M5.Axp.SetLDO2(false); }else if(M5.BtnB.wasPressed()){ // close tft voltage output M5.Axp.SetLDO2(true); } M5.update(); //Detect whether the keystroke state has changed. 检测按键状态是否发生变化 delay(100); } ``` ### 実物: ![キャプションを入力できます](https://camo.elchika.com/f9f1be5f527beeb1d9c6b89491e0d6d38768b5c4/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f66373831653764372d303336352d343131662d613663362d3663623238333931346464342f63323531383633632d393332652d343565382d386137652d376538666333656634623639/) ###動作 : 電池がなくなった状態で太陽光を当ててみました。 晴天でお昼頃の太陽位置ですと、パネル1枚で60mA位 並列接続すると120mA位5V-INに流れました。
### ご注意:
この充電方法が正しいか検証できていません、もしもわかる方おりましたら 指摘いただけると助かります。
この充電方法が正しいか検証できていません、もしもわかる方おりましたら指摘いただけると助かります。
直接本体に太陽光が当たると、本体が熱くなりますのでご注意ください。
BAT端子に接続しても充電されないようです、回路図が無いので不明ですが逆接続防止のダイオードでも入っているかのようです。