HongKong fans make cool animations on the M5.
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5Stack_HongKongFansAnimations.mp4
Twitter: https://twitter.com/M5Stack/status/1122811388718501892?s=20
HongKong fans make cool animations on the M5.
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5Stack_HongKongFansAnimations.mp4
Twitter: https://twitter.com/M5Stack/status/1122811388718501892?s=20
#M5Stack で作る #二足歩行ロボット NX10 まだ手がないがとりあえず動かした。 The #bipedrobot made with M5Stack. NX10. It has no hand attached yet. I made it work. (link: http://blog.robotakao.jp/blog-entry-336) blog.robotakao.jp/blog-entry-336… #ロボット #robot #fusion360
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5Stack_AddedLegs.mp4
Twitter: https://twitter.com/robotakao/status/1122641580936945664?s=20
Qrcode recognition running on the M5Camera. Code on github: (link: https://github.com/m5stack/m5stack-cam-qr) github.com/m5stack/m5stac…
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/QrcodeReaderByM5Camera.mp4
Twitter: https://twitter.com/M5Stack/status/1121996974864125952
M5Stack Faces Kit Part#1 – Unboxing and First Test with ESPlorer IDE and PuTTY
(link: https://youtu.be/IG6ZS4PJAJ8) youtu.be/IG6ZS4PJAJ8 via
@YouTube
#ESP32 #Stackable #Python #Arduino #MicroPython #Module #M5STACK #IDE #microcontroller #opensource #developer #iot #programming #hardware #computerscience #esp8266
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5StackFacesKit_Unboxing.mp4
Twitter: https://twitter.com/Pi4IoT/status/1121857932155662336
M5Stackに先日新しく買ったServo Driver Shieldを付けて動作確認。
(ThingiverseにSG90 一つで動く簡単アームがあったので出力)
やっぱ楽しい😃
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5Stack_Servo_SG90.mp4
Twitter: https://twitter.com/AjiNekomemo/status/1121746103009857537
I had moved the grbl into the linear module, u can control 999 modules on a rs485 bus.
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/LinearModule_RS485.mp4
Twitter: https://twitter.com/M5Stack/status/1121796847087960064
新しく届いた M5StickC、ボタンを押した時に消費電流が増える問題が解決してた。速やかな修正…!
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5StickC_Current_Check.mp4
Twitter: https://twitter.com/lovyan03/status/1121282802966614018
@OttoDIY Una versión basada en M5Stack (ESP32) , sin shield alguno, controlando directamente los servos y con la potencia de M5Stack:
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5Stack_Robot.mp4
Twitter: https://twitter.com/ArduinoGuay/status/1120945550113804291
ESP32でカメラが使えた!しかもこの記事のコードを使ったらディープラーニングによる数字認識ができてしまった。やっぱりESP32すげぇよ…
https://qiita.com/yoku_/items/547358444bd8b811c0e0
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/NumberRecognition.mp4
Twitter: https://twitter.com/kerikun11/status/1120683294927011841
I introduce a simple analog style digital tester (voltage meter, DVM) created using the compact development module "M5Stack" integrated LCD equipped with ESP32 manufactured by Espressif systems.
M5Stack is a compact development module that includes a color LCD display, microSD card slot, and speakers in a 5.4cm x 5.4cm chassis. The SoC "ESP32" installed supports Wi-Fi (2.4 GHz band) and BLE, enabling the development of applications using an LCD display and wireless communication.
The back side has its own expansion connector (M-BUS), and it can extend the function by "Stacking" a dedicated module.
The following picture is the operation screen and the expansion board of the DVM.
The main functions are as follows.
As hardware, I created an expansion board connected to "M-BUS" for voltage input and range switching. There are two inputs, considering the case of using two channels of ADC with an oscilloscope etc.
In general, priority was given to simple realization with parts that can be purchased normally in Akihabara. The following is a circuit diagram of the expansion board.
In the circuit diagram, a connector is added to attach the LiPo battery to the BAT pin in consideration of replacing the base module. No additional LiPo battery is required when using stacked base modules.
The target specifications were as follows when creating the hardware part.
In order to minimize the voltage drop of the measurement object by connecting this unit, the input impedance should be 100kΩ or more.
Specifically, 100kΩ is inserted in series to the input. The input range is simply adjusted by switching the resistor connected in parallel between the AD converter input and GND.
Since the AD converter input of M5Stack does not have very good linearity, I decided each resistance value to use in the range up to 3V. The following figure shows the measurement range, the ratio of the input value to the A / D converter, and the value of the dividing resistance required for it. Assuming that the measurement range is three steps (4 V / 10 V / 20 V), the combined resistance value is 300 kΩ / 50 kΩ / 30 kΩ.
Auto range switching was realized by switching the dividing resistors with FET. The FET uses BSS138 (Nch MOSFET). As the ON resistance is approximately 8Ω, which is sufficiently smaller than the division resistance value, the influence on the measured value is negligible.
BSS 138 can be purchased from Akizuki Electronic Commerce.
http://akizukidenshi.com/catalog/g/gI-04232/
A protection diode is added between the input and 3.3V / GND to protect the overvoltage and reverse voltage to the AD converter input. Initially we experimented with a 3.3V zener diode, but because the leakage current was large and the voltage drop at the series resistance affected the measured value, we constructed a protection circuit using two switching diodes.
The diode uses 1N4148. This can also be purchased from Akizuki e-commerce.
http://akizukidenshi.com/catalog/g/gI-07084/
The M-BUS pins used for AD converter input and range switching have been determined as follows. I use only ch1 this time.
As a point of IO selection, try to avoid the following pins as much as possible.
Especially for "Pin for mode setting at startup", if the polarity of pull-up / pull-down at startup is incorrect, M5Stack itself will not start up. There are a large number of pins used for internal devices, and the number of freely usable pins is limited, so be careful when creating an expansion board.
Although the #12 pin used for range switching 3 of ch2 this time is Strapping Pin, it was determined that there is no problem in circuit configuration because it is the default Pull Down.
Use Arduino IDE as a development environment. To program with Arduino IDE, it is necessary to add "M5Stack library" to the "Arduino Core for the ESP32" environment. The official documentation for building the Arduino IDE environment for M5Stack is available from M5Stack.
https://docs.m5stack.com/#/en/quick_start/m5core/m5stack_core_get_started_Arduino_Windows
The target specifications were as follows when creating software.
The sketches created this time and the necessary design data are available on github.
https://github.com/tomorrow56/M5Stack_DVM
The analog meter style display is based on "TFT_Meter_linear.ino" included in the M5Stack example.
"TFT_Meter_linear.ino" is located below the example sketch, so load it and save it with an arbitrary name in "Save As".
[File]-> [Example]-> [M5 Stack-> [Advanced]-> [Display]-> [TFT_Meter_linear]
The following describes the main modification points of the created sketch.
Since the sketch of the base is "hydrometer", search for "% RH" and rewrite it as "Vdc". (3 places)
Modify the analogMeter() function that displays the analog meter screen as follows.
Comment out the following, as the color coding has little meaning in voltage display.
/*
// Green zone limits
if (i >= 0 && i < 25) {
M5.Lcd.fillTriangle(x0, y0, x1, y1, x2, y2, TFT_GREEN);
M5.Lcd.fillTriangle(x1, y1, x2, y2, x3, y3, TFT_GREEN);
}
// Orange zone limits
if (i >= 25 && i < 50) {
M5.Lcd.fillTriangle(x0, y0, x1, y1, x2, y2, TFT_ORANGE);
M5.Lcd.fillTriangle(x1, y1, x2, y2, x3, y3, TFT_ORANGE);
}
*/
Since the label of the meter is fixed, this is used as a variable so that it can be switched according to the measurement range.
/*
case -2: M5.Lcd.drawCentreString("0", x0, y0 - 12, 2); break;
case -1: M5.Lcd.drawCentreString("1", x0, y0 - 9, 2); break;
case 0: M5.Lcd.drawCentreString("2", x0, y0 - 7, 2); break;
case 1: M5.Lcd.drawCentreString("3", x0, y0 - 9, 2); break;
case 2: M5.Lcd.drawCentreString("4", x0, y0 - 12, 2); break;
*/
case -2: M5.Lcd.drawCentreString(MeterLabel[0], x0, y0 - 12, 2); break;
case -1: M5.Lcd.drawCentreString(MeterLabel[1], x0, y0 - 9, 2); break;
case 0: M5.Lcd.drawCentreString(MeterLabel[2], x0, y0 - 7, 2); break;
case 1: M5.Lcd.drawCentreString(MeterLabel[3], x0, y0 - 9, 2); break;
case 2: M5.Lcd.drawCentreString(MeterLabel[4], x0, y0 - 12, 2); break;
Since the digital display value in the plotNeedle() function that draws the "Needle" of the analog meter needs to be changed according to the range, you will comment out and move to the loop() function here.
// M5.Lcd.setTextColor(TFT_BLACK, TFT_WHITE);
// char buf[8]; dtostrf(value, 4, 0, buf);
// M5.Lcd.drawRightString(buf, M_SIZE*40, M_SIZE*(119 - 20), 2);
pinMode(RANGE_PIN1, OUTPUT);
pinMode(RANGE_PIN2, OUTPUT);
digitalWrite(RANGE_PIN1, LOW);
digitalWrite(RANGE_PIN2, LOW);
M5.Lcd.setTextColor(TFT_GREEN, TFT_BLACK);
M5.Lcd.drawCentreString("HOLD", 70, 220, 2);
Press the A button to switch the HOLD variable false / true, and when HOLD == true, stop updating the read value from the AD converter and hold the display value (HOLD).
if(Hold == false){
Vread = analogRead(ADC_PIN0);
}
~~~~Omission~~~~
M5.update();
if (M5.BtnA.wasPressed()) {
Hold = !Hold;
if(Hold == true){
M5.Lcd.setTextColor(TFT_YELLOW, TFT_BLACK);
}else{
M5.Lcd.setTextColor(TFT_BLACK, TFT_BLACK);
}
M5.Lcd.drawCentreString("DATA HOLDING...", 160, 180, 4);
}
The measured characteristics of the input voltage value and AD conversion value of the ESP32's AD converter mounted on M5Stack are shown below.
The following characteristics can be read from this graph.
This time, the following measures were taken to simplify the process.
Specifically, the AD conversion value (Vread) read in the loop() function is converted to the AD converter input voltage (Vdc) with the following code. Even with a simple approximation, it could be measured with an accuracy of about +/- 10mV by measurement.
if(Vread < 5){
Vdc = 0;
}else if(Vread <= 1084){
Vdc = 0.11 + (0.89 / 1084) * Vread;
}else if(Vread <= 2303){
Vdc = 1.0 + (1.0 / (2303 - 1084)) * (Vread - 1084);
}else if(Vread <= 3179){
Vdc = 2.0 + (0.7 / (3179 - 2303)) * (Vread - 2303);
}else if(Vread <= 3659){
Vdc = 2.7 + (0.3 / (3659 - 3179)) * (Vread - 3179);
}else if(Vread <= 4071){
Vdc = 3.0 + (0.2 / (4071 - 3659)) * (Vread - 3659);
}else{
Vdc = 3.2;
}
The value of the RANGE variable is automatically changed according to the input voltage of the AD converter, and the RangeChange flag is set to true. It has a simple hysteresis characteristic so that the voltage near the boundary of range switching does not flutter.
if(Vdc > 3.0 && RANGE < 2){
RANGE = RANGE + 1;
RangeChange = true;
}
if(Vdc < 0.75 && RANGE > 0){
RANGE = RANGE - 1;
RangeChange = true;
}
Switches between the split resistance value and the screen display label / input range according to the value of the RANGE variable.
switch (RANGE){
case 0:
PARA_RES = TERM_RES1;
MeterLabel[0] = "0";
MeterLabel[1] = "1";
MeterLabel[2] = "2";
MeterLabel[3] = "3";
MeterLabel[4] = "4";
digitalWrite(RANGE_PIN1, LOW);
digitalWrite(RANGE_PIN1, LOW);
VdcDisp = VdcCalc * (100 / 4);
break;
case 1:
PARA_RES = 1/ ((1 / TERM_RES1) + (1 / TERM_RES2));
MeterLabel[0] = "0";
MeterLabel[1] = "2.5";
MeterLabel[2] = "5";
MeterLabel[3] = "7.5";
MeterLabel[4] = "10";
digitalWrite(RANGE_PIN1, HIGH);
digitalWrite(RANGE_PIN2, LOW);
VdcDisp = VdcCalc * (100 / 10);
break;
case 2:
PARA_RES = 1/ ((1 / TERM_RES1) + (1 / TERM_RES2) + (1 / TERM_RES3));
MeterLabel[0] = "0";
MeterLabel[1] = "5";
MeterLabel[2] = "10";
MeterLabel[3] = "15";
MeterLabel[4] = "20";
digitalWrite(RANGE_PIN1, HIGH);
digitalWrite(RANGE_PIN2, HIGH);
VdcDisp = VdcCalc * (100 / 20);
break;
}
The input voltage is calculated according to the resistance division ratio of the setting range and the digital value is displayed on the screen.
VdcCalc = Vdc / PARA_RES * (SERIES_RES + PARA_RES);
M5.Lcd.drawRightString(String(VdcCalc), M_SIZE*40, M_SIZE*(119 - 20), 2);
Analogously move the meter needle gradually according to the update cycle, not at once. The flutter of the measured value flickers the indication of the needle, so a +/- 1 "dead zone" is provided.
if(VdcDisp > VdcLCD + 1){
VdcLCD = VdcLCD + 1;
}else if(VdcDisp < VdcLCD - 1){
VdcLCD = VdcLCD - 1;
}
If the RangeChange flag is true, call the analogMeter() function to rewrite the panel part of the meter. Then call the plotNeedle() function to draw the "Needle" of the analog meter.
if(RangeChange == true){
M5.Speaker.tone(NOTE, 1);
analogMeter();
old_analog = -999;
RangeChange = false;
}
plotNeedle(VdcLCD, 0); // It takes between 2 and 12ms to replot the needle with zero delay
Even without using a special IC, we were able to create a somewhat practical measuring instrument (DVM) that only switched the basic functions and resistance division of the ESP32. Although it is said that the AD converter built into ESP32 is said to have poor linearity, it can be measured with practical accuracy by simply correcting it.
By using M5Stack, it can be made into a compact module with a screen display, and it is used quite conveniently, for example, to check the voltage easily on the go.
Furthermore, in the sense of taking advantage of the features of M5Stack, we are planning to add the following functions.
These functions will be released on github as needed.
https://github.com/tomorrow56/M5Stack_DVM
Yamazaki Masao
@tomorrow56
I design and sell various Shields around $10 range.
https://www.facebook.com/thousandiy/
https://thousandiy.wordpress.com/
M5StickCで作ったチューナーのソースコード。
試しの実験で作成したもので、人様のソースをツギハギした色々アレなものですが、これ以上手をかける時間もなさそうなので、ちょっと現状のまま置いておきます。
https://github.com/onoreorg/M5StickCTuner
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5StickC_sound_tuner2.mp4
Twitter: https://twitter.com/onoreorg/status/1120332437999853568
@ajb2k3 I know, Let's do it slowly and surely!!
moddable 加速度センサーのデモを動かしてみた。ドライバはM5Stack Fire(MPU6050)向けに書かれてたけど、数カ所書き換えるだけでほぼそのままM5Stack gray(MPU9250)にも対応できた。 #M5Stack #ModdableSDK
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5Stack_moddable_IMU_demo.mp4
Twitter: https://twitter.com/meganetaaan/status/1120333581988106241
Real Camera by M5Stack! Coming soon.
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/M5Stack_Real_Camera.mp4
Twitter: https://twitter.com/M5Stack/status/1120289016757272576
DMA転送で画面描画するサンプルとULPで音楽再生するサンプルを合わせてみた。
DMA転送の合間にdelay(2)入れて1フレームあたり30msecのdelayを実行しているけども問題なく約30fpsで描画と音楽再生してる。
音はかなりノイジー…もうちょっと何とかする方法ないかしら…
Video: https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/Twitch201904/DMA_transfer_ULP_music_player.mp4
Twitter: https://twitter.com/lovyan03/status/1119895541553319941