2021年11月1日月曜日

esp32① 総合,intro,lm61,sdcard,phototransistor,passive sp,shock,

-https://garretlab.web.fc2.com/ はarduino/esp32 bible的存在

---------------------------------------------------------------------- 

http://microtechnica.xyz/?p=271 マイクロテクニカのdevkitc入門頁

購入したesp32devkitのピン配置はhttps://leico.github.io/TechnicalNote/Arduino/esp32-pinmapを参考にした コンパイル環境がpython2->3に変更されており

https://qiita.com/Vanilla1810/items/c9bcb430b8857064f4f0 を参考に

sudo apt install python-is-python3

https://www.na3.jp/entry/20191028/p1 にて

sudo apt-get install python-setuptools やら  sudo apt-get install python-pip

したがeasy_installははいらなかった(なんでや、たぶんpython3では非推奨)

つぎにpip install pyserial(not serial)をいれて無事コンパイルできた

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

LM61は5Vでもうごく、データシートをみて結線すべし

シリアルモニタは115200でないと文字化けするかも。。。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

p250のSDカード読み書き: 購入したのは

HiLetgo 3個セット Micro SD TFカードメモリシールドモジュール Arduinoに対応 SPIマイクロSDアダプタ 6PIN [並行輸入品]

だったので、以下のサイトを参考にした
https://relativelayout.hatenablog.com/entry/2016/09/18/180024
VCCを5Vにするのと、CSをピン5(SS)にするのでサンプルコードのCS_PINを4から5に
変更して成功した
-----------------------------------------------------------------------------------------
phototransistor::
https://wak-tech.com/archives/816#i  ではLEDのつもりで配線しているがあやまり
ただしくはhttps://zoe6120.com/2018/11/05/53/ にあるように、
phototransistorはながいほうがエミッタ(GND)なので逆に配線してOKだった
neopixel::
https://wak-tech.com/archives/1574 で無事終了 5Vにつけるのがコツのようだ
pir sensor of swithscience::
https://kghr.blog.fc2.com/blog-entry-160.html では5Vにしているが
https://lang-ship.com/blog/work/esp32-gpio-input/ を参考に3Vにしても成功
digitalReadは13を使用した
---------------------------------------------------------------------------------------------
パッシブブザーまたは圧電スピーカは極性がない::ドレミが簡単にできる
https://wak-tech.com/archives/757 を実施できた
https://garretlab.web.fc2.com/arduino/esp32/reference/cores/led_pwm/ledcWriteTone.html ledcWriteTone()
https://garretlab.web.fc2.com/arduino/esp32/reference/cores/led_pwm/ledcSetup.html  ledcSetup()  注:アクティブブザーは本来警報用であり極性あり、取り扱い注意
---------------------------------------------------------------------
圧電スピーカと1MΩ抵抗とツエナダイオードで安全な衝撃センサをつくる
https://qiita.com/umi_kappa/items/ba4bfa9f301880d94030 アルディーノは5Vの
ツエナ、エスプは3Vのツエナをもちいる

2021年10月28日木曜日

AT仕様esp8266.hでの成功を記録 Arduino実用入門Wifiでデータを送受信しよう より 

ATマシンとしてespr developperを使った場合のコード いまはArduino化している

もとにもどすの大変そう

 

#include <ESP8266.h> // 201頁のデコメントでソフトシリアル有効にするのが重要

#define SSID        "@”

#define PASSWORD    "@"

#define HOST_NAME "192.168.3.9"

#define HOST_PORT (9999)

SoftwareSerial mySerial( 3, 2 ); 

ESP8266 wifi( mySerial );

void setup(void)

{

    Serial.begin( 9600 );

    mySerial.begin(115200);

    // mySerial.println("AT+UART_CUR=9600,8,1,0,0"); // 不可解な部分

    delay(10);

    mySerial.begin(9600); 

    delay(10);

    if ( wifi.setOprToStation() ) {

        Serial.println( "OK" );

    } else {

        Serial.println( "Error" );

    }

    if ( wifi.joinAP( SSID, PASSWORD ) ) {

        //mySerial.println("AT+CIPSTA=192.168.1.200,192.168.1.1,255.255.255.0");

       // これも不可解な部分

        delay(10);

        Serial.println("success");

        // Serial.println( wifi.getLocalIP().c_str() );  // うまくいかんのでコメントアウト

    } else {

        Serial.println( "Failed" );

    }

}

void loop(void)

{

    char msg[128] = {0};

    strcat( msg, "Hello! from Arduino.");

    if ( wifi.createTCP( HOST_NAME, HOST_PORT ) ){

        Serial.println("OK: TCP Connect.");

        wifi.send( msg, strlen( msg ) );

        wifi.releaseTCP();

    } else {

        Serial.println("Faild: TCP Connect.");

    }

   while( 1 ){

       delay(10000);

   } // 再アクセスが禁止される

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

arduinoをサーバにする際は、はじめにもどってDHCPからespr developperに

わりあてられるIPをチェックする! hostname  -I は、あくまでPCのそれdr

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

google  drive into jituyo-arduino


2021年10月22日金曜日

IRremote by uno & IRremoteEsp8266 by esp32

 https://asukiaaa.blogspot.com/2018/05/arduino.html を参考に

サンプルコードのirremote/irrecvdumpを実践(ただしgpioは2に変更)

elegooの受信機はg:gnd,r:vcc,y:gpioだった

まず、2階の寝室の電灯のOn信号をひろう

NEC 214A56A9 32bit だった

ーーー 以下のコードでIR送信すると1.3m以内になると電灯がついた! ーーー

#include <IRremote.h> // irsenddemo.inoによれば

// An IR LED must be connected to Arduino PWM pin 3. であった

IRsend irsend;

void setup()

{

  Serial.begin(9600);

}

void loop() {

      irsend.sendNEC(0x214A56A9, 32); // NEC power code

      delay(4000);

}

つまり4秒ごとに、信号を送るコードだ 

mosfettを使用したら、若干到達距離が伸びた気が?

ーーーーーーーーーーーー 回路は ーーーーーーーーーーーー

gnd -> IRled短 anode > IRled長 cathode -> 100Ω -> gpio 3 :: 赤外線LED1本の場合

mosfetを使用する場合は、上記サイトを参考に

-----------------------------esp32の場合----------------------------------------------------------

(レシーバ)

https://wak-tech.com/archives/1627             のコードではEpsonだが同じ内容だった

https://kakikukeko.sakura.ne.jp/blog/arduino-ir-receiver/#gallery-1 も参考にすると、

レシーバの凸面の裏からみて、向かって左からVCC(3v))、GND、OUT(12pin)

VCCとGNDをまたぐように0.1マイクロFのコンデンサをいれると雑音がでなかった

irremote8266/irrecvdumpv2.inoで実行

(センダー)

http://marchan.e5.valueserver.jp/cabin/comp/jbox/arc213/doc21305.html#sect3

を参考にした 3.3KΩなかったので2k+1k+330Ωで代用した

10uFはいらんかった 10Ωの制限抵抗かけて2sc1815でドライブ

凸面の裏でひだりからECBの順で、エミッタはGNDに、Cは赤外線LEDにつなぎ

ベースには3.3kオームを介してシグナルをださせる!

#include <IRremoteESP8266.h>

#include <IRsend.h>

#include <IRutils.h>

const uint16_t kIrLed = 19; //赤外線LEDのピンを取得

IRsend irsend(kIrLed);   // 送信オブジェクト 以後はirsendで使用

bool success = true;

decode_type_t protocol = EPSON; // Epsonではだめだった

uint16_t size = 32;

const uint32_t value = 0x214A56A9;    //部屋の明かりをつけるコード

void setup() {

  Serial.begin(9600);

  irsend.begin(); // 赤外線LEDの設定

}

 

void loop() {

    success = irsend.send(protocol, value, size); //送信

  if (success){

      Serial.println("send success");

  }

  delay(1000);

}

(参考文献)

ESP-WROOM-32(ESP32)周辺回路作成 - Qiita ここにtransistorの必要性が書いてある





2021年10月10日日曜日

arduino④ 加速度 ssd1306 チャタリング

アマゾンで買った正体不明の加速度センサを3vでも5vでも駆動してみた

https://deviceplus.jp/hobby/entry017/ を参考に

アナログ3,4,5にx,y,zをつないだ うまくいった 

Z軸はx,yをうごかさずに回転する度合いを示す

-----------------------------------------------------------------------------

Arduinoでディスプレイ表示!OLED LCDディスプレイSSD1306を使ってみた!|ケンチーブログ (kenchi-blog.com)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

const int SW_PIN = 4; ここでマイクロ左(名前の書いてある面を表として)をGND

マイクロ真ん中を4ピンにいれると input_pullup , delay2箇所がないとチャタリング

int count = 0;

void setup() {

    pinMode( SW_PIN, INPUT); //  pinMode( SW_PIN, INPUT_PULLUP);

    Serial.begin( 9600 );

}

void loop() {

    if ( digitalRead( SW_PIN ) == LOW ){

        //delay( 100 );

        count = count + 1;

        Serial.print( "Count : " );

        Serial.println( count );

        while( digitalRead( SW_PIN ) == LOW ){

            delay( 100 );

        }

           // delay( 100 );    

    }

}

 

2021年10月1日金曜日

arduino➂npn,melody-IC,圧,曲げ,フォトリフレクタ,sound,rtc,I2C-convertor

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

https://www.petitmonte.com/robot/howto_transistor_npn.html NPNの基礎がくわしい

(3端子メロディ)ーーーーーーーーーーーーーーーーーーーーーーー

 const int MELODY_PIN = 5;

void setup() {

  // put your setup code here, to run once:

pinMode(MELODY_PIN, OUTPUT);

}

void loop() {

  // put your main code here, to run repeatedly:

  digitalWrite(MELODY_PIN, HIGH);

  delay(5000);

  digitalWrite(MELODY_PIN, LOW);

  delay(5000);

}

(圧センサ)ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

Arduino実践講座 p244 

20KΩとなっているのは10KΩでもでけた 

(曲げセンサは、そのままできた)ーーーーーーーーーーーーーーーーーーーーーー 

Arduino実践講座 p94 でOK

(フォトリフレクタ)ーーーーーーーーーーーーーーーーーーー

Arduino実践講座 p80 でOK 150のかわりに100Ωででけた

(音量)ーーーーーーーーーーーーーーーーーーーーーー

Arduino実践講座 p176 でOK

(RTC)ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

amazon手持ちは、esp32に準じたがセットは

http://jh7ubc.web.fc2.com/arduino/Arduino_RTC_DS1307.html でOKだった

読み出しだけもesp32に準じるが、wire(21,22)のかわりのwire(4,5)は不要だった 

なんでやろ? わからんが。。。。。

(I2Cレベルコンバータ)ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

arduino電子工作 実践篇 p181のI2Cレベルコンバータとちがい

秋月のFxma https://www.petitmonte.com/robot/howto_fxma2102.html

(+)の電源を共通にするのは間違い なくてうごいた (ー)だけ共通でOK

もしくはスイッチサイエンスのそれをつかう いずれも成功

ただし本書にあるBME280.hのcppファイルの<arduino.h>を<Arduino.h>に

書き直す必要があった スイッチサイエンスのそれが断然使いやすかった

2021年9月18日土曜日

arduino② portal site, touch sensor, processing,adt7310spi-temp

https://fabkura.gitbooks.io/arduino-docs/content/ アルディーノのみ

https://garretlab.web.fc2.com/ アルディーノとEsp32全般

このほか、おもろ家、プチモンテ、さとやまノートが参考になる

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

https://create.arduino.cc/projecthub/arcaegecengiz/how-to-use-a-touch-sensor-81b7f4


void setup() {

  // put your setup code here, to run once:

  pinMode(2,INPUT);

  Serial.begin(9600);  

  

}


void loop(){

  if(digitalRead(2)==HIGH){

   Serial.println("sensor touched");

  } else {

    Serial.println("sensor free!");

  }

  delay(500);

}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 

https://l-w-i.net/t/arduino/processing_001.txt

-------------------------------------------------------------------------------------

adt7310 for arduino  実用にあったコード

#include <SPI.h>

#define SS_PIN    9

void setup(void) {

    Serial.begin( 9600 ); // モニタもこれにしないと出ん

    pinMode( SS_PIN, OUTPUT);    

    SPI.setBitOrder( MSBFIRST );

    SPI.setClockDivider( SPI_CLOCK_DIV128 );

    SPI.setDataMode( SPI_MODE0 );

     SPI.begin();

    digitalWrite( SS_PIN, LOW );

    SPI.transfer(0xFF);

    digitalWrite( SS_PIN, HIGH );

    delay(100);

    

    digitalWrite( SS_PIN, LOW );

    SPI.transfer(0x0C);

    SPI.transfer(0x80);

    digitalWrite( SS_PIN, HIGH );

    delay(100);

    

    digitalWrite( SS_PIN, LOW );

    SPI.transfer(0x54);

    digitalWrite( SS_PIN, HIGH );

    delay(1000);

}


void loop(void) {

    unsigned char data_h, data_l;

    int data;

    float temp_data;

  

    digitalWrite( SS_PIN, LOW );


    data_h = SPI.transfer(0); 

    data_l = SPI.transfer(0); 

  

    digitalWrite( SS_PIN, HIGH );


    data = data_h << 8 | data_l;

    temp_data = (float)data / 128.0;

    


    Serial.print( temp_data );

    Serial.println(" C");

    

    delay(1000);

}

 

2021年8月22日日曜日

arduino① 8mhz-version,lc1602,atp3011,atp3012



FTDI で書き込むときは、minicoreをつかうようだが、FTDIこわれたので

arduino as ispで、atmega328p internal 8mhzで書き込んだ(minicoreでも、prominiでもいけた)

以前、以下のサイトをみてボードあげてた

https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoToBreadboard

https://mod0.hatenablog.com/entry/2020/02/01/224449  

ちなみに吉野さんの推薦するminicoreでもいけた  

> 載っているマイコンはatmega328p internal 8mhz 5v版でしょうか?
 :: データシートでは1.8~5.5Vです。8MHz3.3Vでも動作しました。
 
> それ以前にいただいたaruduinoクローンですがarefもつないでいますが ::

> dtrにコンデンサを直列するとパルス状の信号だけが届くそこでrx/txが開始するのでしょうか::DTRにこのコンデンサがないと書き込めません。DTRはRESETにつながっています。

:: RESETがかかるのを防止すると聞いたような気がします。

-----------lcd1602----------------------

 https://tamapoco.com/archives/7771 を参考にした

I2Cアドレスは0x27で成功した

LiquidCrystal_PCF8574 ライブラリでの実行を行った

LiquidCrystal_I2C.h については

http://7ujm.net/micro/i2clcd.html のほうがネットからダイレクトにライブラリ

インストできるので、こっちにした A4,A5をDと間違え、すこしあづった

ーーーー日本語LSI 注意すべきは、setup、loopいずれも一文だけしかしゃべれない!ーー

UnoクローンではVCCが低くatp3011を駆動できない 単3x3で駆動し

かつtx,rx,gndを配線する! なお嬉しいことにesp32でも5vつないで動いた!

さらにexp8266でもdefault tx,rxとvout-5v-で動いた! xiaopico,raspicoともに成功

ラズパイは報告サイトあるが aquestalk libでよい!

## code for xiaopico 

from machine import UART,Pin

import time

uart0= UART(0,9600)

# uart0= UART(0,9600,tx=Pin(0),rx=Pin(1)) 1と同等だ

uart0.write("?")

while True:

    uart0.write("iee..\r\n")

    time.sleep(1)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ーーーーーatp3011ーーーーー
https://asukiaaa.blogspot.com/2016/11/icatp3011arduino.html

スピーカ単独なら片方をAoutに、もう片方をGndにするが  

sc1815簡易アンプ併用時は

Aoutを1kΩを介してベースにつなぎ、スピーカの片方をコレクタに、

もう片方をVCCにする エミッタはGndにする

まずrx,txの連結ははずして下記の14と15をGNDにしてプリセット発声を確認後

つぎにいずれも5VにしてRX,TXを連結する

#include <SoftwareSerial.h>

SoftwareSerial softSerial(6,7); //RX, TX なぜか12,13はうごかん!

kvoid setup() {

  softSerial.begin(9600);

  softSerial.print("?"); //これがatp3011では必須という!

}

void loop() {

  softSerial.print("ie'----i\r");

  delay(2000);

}



------------atp3012-------------------------------------------------------------------------

#include <SoftwareSerial.h>

SoftwareSerial softSerial(6,7); //RX, TX なぜかatp3011では12,13はうごかん!

void setup() {

  softSerial.begin(9600);

  softSerial.print("?"); // atp3011では必須、atp3012では無視される

}

void loop() {

  softSerial.print("ie'----i\r");

  delay(2000);

}