タクトスイッチでArduino UNOのLEDを制御する

#define LED_PIN 13
#define BUTTON 2

void setup() {
  // 初期化
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUTTON, INPUT);

}

void loop() {
  if (digitalRead(BUTTON) == HIGH) {
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }
}
dav

あれ? digitalRead(BUTTON) == LOWのはずなのに、HIGHで出力される
何故だ?

あ、配線が間違っていました。
うわ、これ電流や回路、ハードウェアの知識、かなり求められんじゃん。やべーな。。

Arduino UNOでLチカをやってみる

13番ポートを定義する。digitalWriteのHIGHは点灯、LOWは消滅

#define LED_PIN 13

void setup() {
  // 初期化
  pinMode(LED_PIN, OUTPUT);

}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);

}

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding

あれ、何故だ?
あ、シリアルポートがBlueTooth-Incoming-Portになっていたので、ツールから、USB Serialに変更します。

最大32256バイトのフラッシュメモリのうち、スケッチが924バイト(2%)を使っています。
最大2048バイトのRAMのうち、グローバル変数が9バイト(0%)を使っていて、ローカル変数で2039バイト使うことができます。

上手くいきました。
L地下は、プログラミングでいうHello Worldのようなものらしいです。

これがIoT開発かああああああああああああああ
なんかよくわからんぞ、これ

Arduino UNOの基盤

基盤上のボタン:リセットボタン
USBケーブル:PCに繋げる、電源を取ることもできる、プログラムの転送も行う
ACアダプター電源

ピン
Power: Arduino自体を電源と考えた場合に、”5V”がプラス, “GND(ground)”がマイナス(0V)
Analog: アナログセンサーのピンを0〜5に差し込む
Digital PWM: 0〜13がデジタル入出力

LEDランプ
電源に繋げると、”ON”と”L”が点灯する

dav

すげー、これだけでもArduino UNO買って良かった。感動。

ブレッドボード
両端の+,-は横に繋がっている
真ん中のA〜E、F〜Jは縦に繋がっている EとFは繋がっていない

LED
長い針がアノード: プラス
短い針がカソード: マイナス

抵抗
カラーコード: 茶1、黒0、赤10^2、金+-5%
-> 1kΩ誤差5%

タクトスイッチ

dav

ああああ、ArduinoのLED、購入したのに捨ててしまった。捨てなきゃ良かった。。。

Arduinoのセットアップ

Arduinoとは?
– 電子工作のあらゆる問題を解決する
– イタリアで開発された教育用のシングルボードコンピューター
– アクチュエータ、センサーを簡単に扱える

macにArduino IDEをダウンロードします
https://www.arduino.cc/en/Main/Software

IDEを起動します

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

ツール -> ボード がArduino Unoになっている事を確認
前準備はこれでOK

### ハードウェア
– Arduino Uno 基盤
– 電線(ジャンパーワイヤ)20本
– ブレッドボード(ジャンパーワイヤを差し込んで配線する)
– USBケーブル
– LM35DZ 温度センサIC
– 7セグメントLED
– タクトスイッチ
– 1.0kΩ抵抗

マイコンは ATMEL AVR MEGA シリーズ、C言語ベース
Arduinoができる事

ピンの電圧を 5V (電源電圧)か0Vにする(デジタル出力, 10-20mAぐらいまで出力できる)
ピンの電圧を 5V/0V に高速に切り替える(アナログ出力, 10-20mAぐらいまで出力できる)
ピンに加えられた電圧が約2.5V以上なら 1, そうでなければ 0 と判断する (デジタル入力)
ピンに加えられた電圧を測って 0 から 1023 の数値で表す(アナログ入力, 電圧計として使える)
時間を測ったり、数を数えたり、計算をしたりできる(プログラム)

Raspberry PiのOS機能

Raspberry PiはLXDEというデスクトップ環境を使っている。
CPU使用率がメニューバーに表示され、常時確認できる。
ブラウザは軽量なEpiphanyがインストールされている。リソース消費が低い。
Epiphanyの検索エンジンはDuckDuckGoがデフォルト
私はYoutuberでもあるので試しにYouTubeを開いてみたが、ラズパイだと流石にレンダリングが遅い。
画面キャプチャはScrotを使用する

外部ドライブ接続で簡単にファイル共有も可能
テキストエディはLeafpad
アクセサリに電卓などのアプリが入っている
パッケージインストールはapt-getを使う。ubuntuと一緒か。

$ dpkg -l | grep eject
ii lxplug-ejecter 0.3 armhf Ejecter plugin for lxpanel
$ apt-cache -n search eject
eject – ejects CDs and operates CD-Changers under Linux
node-loud-rejection – make unhandled promise rejections fail loudly
lxplug-ejecter – Ejecter plugin for lxpanel
lxplug-ejecter-dbgsym – Debug symbols for lxplug-ejecter

対応アーキテクチャにarmhf(ARM)が含まれていないと、Raspbianではインストールできない。

さて、一通りカバーしたので、電子工作入門に入りたい。
ラズパイの前にArduinoを触っておくか。
しかし、ラズパイ、準備が大変な割には、始めて見ると非常にあっけない。

Raspberry Piでヤフーを表示する

wifi接続を設定後、キーボードを日本語設定

model B+ だと、wifi接続できるから、wireless usb adapter は全く必要なかった。
私は使わなければすぐ断捨離する人間なのですが、usb adapter 、一度も使わずに捨てるのはさすがにもったいないか。

ちなみに、こちらがヤフーに接続した状態です。

sdr

コマンドラインはLinux なので、操作は特に違和感はありません。
ちなみにこの投稿もラズパイから書いています。
ただ、使っているディスプレイが小さいので、非常にやりづらい

とりあえず、最初は教科書に沿って勉強していきます。

[C言語]タグの中身をパースする

Webブラウザを作りたい
まず基本として、タグを表示させます

#include <stdio.h>

void parse_element(char *c){
	printf("%s\n", c);
}

int main(){

	char c[256] = "<html>Hello</html>";

	parse_element(c);

	return 0;
}

ここから、charのタグの中身をくりとります。
strchrで “>” 以降を取得して、先頭文字を削除し、”<" 以前を表示させます。

#include 
#include 

void parse_element(char *c){
	int len, i, j, k;
	char *tag;
	char moji[256];
	tag = strchr(c, (int)’>’);
	len = strlen(tag);
	for(i=1; i < len; i++){
		j = i-1;
		moji[j] = tag[i];
	}
	k = 0;
	while(moji[k] != '<'){
		printf("%c", moji[k]);
		k++;
	}
	printf("\n");

}

int main(){

	char c[256] = "Hello“;

	parse_element(c);

	return 0;
}

$ ./main
Hello

“<"と">“でパースして処理をしているのか。
Webブラウザって相当難しいね

マイコンモジュールArduino Uno

Arduino Unoを購入、入出力端子が少なく、Raspberry Piより安価

dav

マイコンチップ:ATmega328P
動作電圧:5V
入力電圧:7~12V (DCジャックもしくはVIN端子から入力)
デジタルI/Oピン:14本(うち6本はPWM出力可能)
アナログ入力ピン:6本(デジタルI/Oピンとしても利用可能)
DC出力電流:1つのI/Oピン当り20mA程度、I/Oピン全部の合計100mAまで
DC出力電流:3.3V出力ピン 50mA
Flashメモリ:32KB (うち0.5KBをブートローダーで使用)
SRAM:2KB
EEPROM:1KB
クロックスピード:16MHz

– Arduino Create(Arduinoのクラウド開発環境)を使うことができる
– センサー技術を組み合わせると色々できる

まずは初心者用のキットを動かすことから始めるのが王道か
手を広げすぎると、キャパオーバーになるから出来るところからやりた

Raspberry Piの基盤とOSインストール

SoC(System-on-a-Chip)と呼ばれるLSIはCPU、GPU、メモリを含む

Raspberry Pi 3 model BのCPUはARM社
– Broadcom BCM2837
– 1.2GHz 64-bit quad-core ARMv8 Cortex-A53
– メモリ1GB LPDDR2 SDRAM

DSI(Display Serial Interface)を備えたディスプレイは、タッチ操作が可能

取り敢えず、macからmicrobで電源供給して、OSインストールまでは出来た^^
ヒャッホー

sdr

USBキーボードがないとInputが出来ないので、キーボード待ちだけど、IoTコミュニティーに入る第一歩は踏み出せたかな。
がはははは

Raspberry Piをゼロから始めようとするとこうなる

まず、効率化を考えて、Raspberry Piと、ディスプレイ、HDMI端子、SDカード、USBカメラ、学習本を一気に購入

dav

### Raspberry Pi基礎知識
イギリスのラズベリーパイ財団によって開発
OSはラズビアンOS
GPIO端子を使って、センサーなど色々接続できる
ハードディスクの代わりにSDカードを使用
消費電力が低い
用途はパソコン、サーバー、電子工作など
GPIOの任意のピンの電圧ON/OFFができる

### ラズパイの学習ステップ
1.購入->2.セットアップ->3.パソコンを使って見る->4.電子工作

### ラズパイの周辺機器
電源アダプタ(○)、マウス(○)、キーボード(×)、ディスプレイ(○)、Wi-Fiアダプタ(×)、カメラ(○)

– 電源アダプタ : USBマイクロB型形状
– ディスプレイ :
  L HDMI端子(映像や音声などを1本のケーブルにまとめて送ることのできる通信規格)あり
  L 7inch HDMI LCDあり
  L マイクロB型のアダプタを新規購入
– SDカード: SunDisk Ultra 32GBあり
– WiFiアダプタ : TL-WN725Nを新規購入
– キーボード : メルカリで新規購入
– Raspberry Piケース : あり
– カメラ: USBカメラあり

て、さー始めるかと思ったら、まだ要るんかいな?
IoTは環境構築のハードルが高いですな。