IoT Base Platform with RaspberryPi, WIZ850io : Echoback Application

​I know RaspberryPi platform for IoT. Recently WIZ850io is announced by WIZnet. So I implemented a RaspberryPi application by Ethernet SW modification because I can handle a source code easily. You can test the echoback application through RaspberryPi and WIZ850io. Please refer to the following step.

Step 1: Prepare Materials

Please refer to the following.

1. Raspberry Pi 3 Starter Kit

2. WIZ850io

3. UART2USB adapter

4. LAN cable

5. USB cable

Step 2: Hardware Connection

Please connect an USB, LAN cable, WIZ850io and UART2USB adapter.
You can get more HW info by the following site.

​https://pinout.xyz/pinout/spi 

​http://wizwiki.net/wiki/doku.php?id=products:wiz850io:start

Step 3: Prepare Development Environment

Raspberry Pi 3

https://www.raspberrypi.org/downloads/raspbian/

WiringPi Library

http://wiringpi.com/download-and-install/

Step 4: Software

WIZ850io ​ioLibrary

https://github.com/Wiznet/ioLibrary_Driver

Step 5: How to Run : Modification

Step 6: How to Run : Result


IoT Base Platform with GCC, WIZwiki-W7500

I know WIZwiki-W7500 platform for IoT. Recently WIZwiki-W7500 board is announced by WIZnet. So I implemented a firmware of WIZwiki-W7500 board by Ethernet SW modification because I can handle a source code easily. You can know the status of equipment even if it is so far. Please refer to the following step.

Step 1: Prepare Materials

Please refer to the following.

1. WIZwiki-W7500 board 

2. Easy Module shield 

3. UART2USB adapter 

4. LAN cable 

5. USB cable

Step 2: Hardware Connection

Please connect an USB, LAN cable, Easy shield and UART2USB adapter.

You can get more HW info by the following site.

http://wizwiki.net/wiki/doku.php?id=products:wizwiki_w7500:start

Step 3: Prepare Development Environment

Currently I use gcc-arm-none-eabi-6-2017-q1-update version.

Refer to http://opensrclab.tistory.com/33 for GCC install.

Step 4: Software

NTP Example

W7500_NTP.7z

DHT11 Temperature Example

To be continued.

To use WIZ550io in Arduino platform : Arduino UNO

I know Arduino platform for IoT. So I implemented a firmware of Arduino by Ethernet SW modification because I can handle a source code easily. You can know the status of equipment even if it is so far. Please refer to the following step.

Reference : https://forum.wiznet.io/t/Wiz550io-Arduino-due-Mysqlconnector-arduino-ide/3348

Step 1: Prepare Materials

Please refer to the following.

1. Arduino UNO

2. WIZ550io or ioShield-A

3. LAN cable

4. USB cable

Step 2: Hardware Connection

Please connect an LAN cable and USB cable

You can get more HW info by the following site.

https://www.arduino.cc/en/Main/ArduinoBoardUno

http://wizwiki.net/wiki/doku.php?id=products:wiz550io:start

First of all, prepare Arduino UNO and WIZ550io module.

Connect Arduino UNO and WIZ550io module like below.

Arduino UNO pin<->WIZ55io pin

3.3V<->3V3D

GND<->GND

13<->SCLK

12<->MISO

11<->MOSI

10<->SCSn

RESET<->RSTn

I recommand to use ioShield-A.

Step 3: Prepare Development Environment

https://www.arduino.cc/en/Guide/HomePage

Step 4: Software

I uploaded Arduino project. You can download this project file. And then import project into Arduino IDE.

After compile, you can execute a sample of WebServer.

WebServer.zip

Step 5: How to Run : Modification

Execute Arduino IDE.
Select Arduino IDE Menubar->Sketch->Include Library->Mange Libraries...
Search Ethernet2 library by string.
Install Ethernet2 library.

Find w5500.h, w5500.cpp
Windows OS
C:\Users\your username\Documents\Adruino\libraries\Ethernet2\utility\
Linux
/home/your username/Arduino/libraries/Ethernet2/src/utility/

Insert the following code in w5500.h

...
#define WIZ550ioWITH_MACADDRESS
...

Insert the following code in w5500.cpp

...
#if !defined(WIZ550ioWITH_MACADDRESS)
w5500.swReset();
#endif
...

For example, you can modify Ethernet.begin function of WebServer code without mac parameter.
Compile and upload by Arduino IDE.

Step 6: How to Run : Result


Contents

-. Build : WizFi630A 개발환경 구축

-. Upgrade : TFTP 활용


Upgrade : TFTP 활용

WizFi630A in OpenWrt

>> 참조 링크

https://wiki.openwrt.org/toh/wiznet/wiznet_wizfi630a

>> tftp 설치

>> /etc/xinetd.d/tftp 파일 생성 및 수정

>> tftp root 디렉토리 생성 및 서비스 실행

>> Upgrade binary 복사


>> Upgrade log

U-Boot 1.1.3 (Mar  1 2016 - 13:35:45)                                           

                                                                                

Board: Ralink APSoC DRAM:                                                       

 Return Real size =33554432 !!                                                  

32 MB                                                                           

relocate_code Pointer at: 81fb4000                                              

******************************                                                  

Software System Reset Occurred                                                  

******************************                                                  

spi_wait_nsec: 21                                                               

spi device id: ef 40 18 0 0 (40180000)                                          

find flash: W25Q128FV                                                           

raspi_read: from:30000 len:1000                                                 

.raspi_read: from:30000 len:1000                                                

.============================================                                   

Ralink UBoot Version: 3.5.0.0                                                   

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

ASIC 5350_MP (Port5<->None)                                                     

DRAM_CONF_FROM: Boot-Strapping                                                  

DRAM_TYPE: SDRAM                                                                

DRAM_SIZE: 256 Mbits                                                            

DRAM_WIDTH: 16 bits                                                             

DRAM_TOTAL_WIDTH: 16 bits                                                       

TOTAL_MEMORY_SIZE: 32 MBytes                                                    

Flash component: SPI Flash                                                      

Date:Mar  1 2016  Time:13:35:45                                                 

============================================                                    

icache: sets:256, ways:4, linesz:32 ,total:32768                                

dcache: sets:128, ways:4, linesz:32 ,total:16384                                

                                                                                

 ##### The CPU freq = 360 MHZ ####                                              

 estimate memory size =32 Mbytes                                                

                                                                                

Please choose the operation:                                                    

   1: Load system code to SDRAM via TFTP.                                       

   2: Load system code then write to Flash via TFTP.                            

   3: Boot system code via Flash (default).                                     

   4: Entr boot command line interface.                                         

   7: Load Boot Loader code then write to Flash via Serial.                     

   9: Load Boot Loader code then write to Flash via TFTP.                       

                                                                                

You choosed 2  <<= 2번선택                                                                   

                                                                                

 0                                                                              

raspi_read: from:40028 len:6                                                    

.                                                                               

                                                                                

2: System Load Linux Kernel then write to Flash via TFTP.                       

 Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)           

 Please Input new ones /or Ctrl-C to discard                                    

        Input device IP (10.10.10.123) ==:192.168.0.20  <<= 임의 IP 할당                          

        Input server IP (10.10.10.3) ==:192.168.0.2  <<= tftp서버 IP 입력                                

        Input Linux Kernel filename () ==:wizfi630a.bin  <<= 복사된 binary 파일명 입력                         

                                                                                

 netboot_common, argc= 3                                                        

                                                                                

 NetTxPacket = 0x81FE5F40                                                       

                                                                                

 KSEG1ADDR(NetTxPacket) = 0xA1FE5F40                                            

                                                                                

 NetLoop,call eth_halt !                                                        

                                                                                

 NetLoop,call eth_init !                                                        

Trying Eth0 (10/100-M)                                                          

                                                                                

 Waitting for RX_DMA_BUSY status Start... done                                  

                                                                                

                                                                                

 Header Payload scatter function is Disable !!                                  

                                                                                

 ETH_STATE_ACTIVE!!                                                             

Using Eth0 (10/100-M) device                                                    

TFTP from server 192.168.0.2; our IP address is 192.168.0.20                    

Filename 'wizfi630a.bin'.                                                       

                                                                                

 TIMEOUT_COUNT=10,Load address: 0x80100000                                      

Loading: *                                                                      

ArpTimeoutCheck                                                                 

T T T T Got ARP REPLY, set server/gtwy eth addr (bc:5f:f4:da:9c:bb)             

Got it                                                                          

#################################################################               

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         #################################################################      

         ########################################                               

done                                                                            

Bytes transferred = 4194308 (400004 hex)                                        

NetBootFileXferSize= 00400004                                                   

raspi_erase_write: offs:50000, count:400004                                     

raspi_erase: offs:50000 len:400000                                              

................................................................                

raspi_write: to:50000 len:400000                                                

................................................................                

raspi_read: from:50000 len:10000                                                

.raspi_read: from:60000 len:10000                                               

.raspi_read: from:70000 len:10000                                               

.raspi_read: from:80000 len:10000                                               

.raspi_read: from:90000 len:10000                                               

.raspi_read: from:a0000 len:10000                                               

.raspi_read: from:b0000 len:10000                                               

.raspi_read: from:c0000 len:10000                                               

.raspi_read: from:d0000 len:10000                                               

.raspi_read: from:e0000 len:10000                                               

.raspi_read: from:f0000 len:10000                                               

.raspi_read: from:100000 len:10000                                              

.raspi_read: from:110000 len:10000                                              

.raspi_read: from:120000 len:10000                                              

.raspi_read: from:130000 len:10000                                              

.raspi_read: from:140000 len:10000                                              

.raspi_read: from:150000 len:10000                                              

.raspi_read: from:160000 len:10000                                              

.raspi_read: from:170000 len:10000                                              

.raspi_read: from:180000 len:10000                                              

.raspi_read: from:190000 len:10000                                              

.raspi_read: from:1a0000 len:10000                                              

.raspi_read: from:1b0000 len:10000                                              

.raspi_read: from:1c0000 len:10000                                              

.raspi_read: from:1d0000 len:10000                                              

.raspi_read: from:1e0000 len:10000                                              

.raspi_read: from:1f0000 len:10000                                              

.raspi_read: from:200000 len:10000                                              

.raspi_read: from:210000 len:10000                                              

.raspi_read: from:220000 len:10000                                              

.raspi_read: from:230000 len:10000                                              

.raspi_read: from:240000 len:10000                                              

.raspi_read: from:250000 len:10000                                              

.raspi_read: from:260000 len:10000                                              

.raspi_read: from:270000 len:10000                                              

.raspi_read: from:280000 len:10000                                              

.raspi_read: from:290000 len:10000                                              

.raspi_read: from:2a0000 len:10000                                              

.raspi_read: from:2b0000 len:10000                                              

.raspi_read: from:2c0000 len:10000                                              

.raspi_read: from:2d0000 len:10000                                              

.raspi_read: from:2e0000 len:10000                                              

.raspi_read: from:2f0000 len:10000                                              

.raspi_read: from:300000 len:10000                                              

.raspi_read: from:310000 len:10000                                              

.raspi_read: from:320000 len:10000                                              

.raspi_read: from:330000 len:10000                                              

.raspi_read: from:340000 len:10000                                              

.raspi_read: from:350000 len:10000                                              

.raspi_read: from:360000 len:10000                                              

.raspi_read: from:370000 len:10000                                              

.raspi_read: from:380000 len:10000                                              

.raspi_read: from:390000 len:10000                                              

.raspi_read: from:3a0000 len:10000                                              

.raspi_read: from:3b0000 len:10000                                              

.raspi_read: from:3c0000 len:10000                                              

.raspi_read: from:3d0000 len:10000                                              

.raspi_read: from:3e0000 len:10000                                              

.raspi_read: from:3f0000 len:10000                                              

.raspi_read: from:400000 len:10000                                              

.raspi_read: from:410000 len:10000                                              

.raspi_read: from:420000 len:10000                                              

.raspi_read: from:430000 len:10000                                              

.raspi_read: from:440000 len:10000                                              

.raspi_read: from:450000 len:10000                                              

.raspi_erase: offs:450000 len:10000                                             

.                                                                               

raspi_write: to:450000 len:10000                                                

.                                                                               

raspi_read: from:450000 len:10000                                               

.Done!                                                                          

## Booting image at bc050000 ...                                                

raspi_read: from:50000 len:40                                                   

.   Image Name:   MIPS OpenWrt Linux-4.4.14                                     

   Created:      2017-05-24  14:54:37 UTC                                       

   Image Type:   MIPS Linux Kernel Image (lzma compressed)                      

   Data Size:    1216606 Bytes =  1.2 MB                                        

   Load Address: 80000000                                                       

   Entry Point:  80000000                                                       

raspi_read: from:50040 len:12905e                                               

...................   Verifying Checksum ... OK                                 

   Uncompressing Kernel Image ... OK                                            

No initrd                                                                       

## Transferring control to Linux (at address 80000000) ...                      

## Giving linux memsize in MB, 32                                               

linux_argv[0] = <NULL>                                                          

linux_env = �7�����7��7��7��7�                                             

                                                                                

Starting kernel ...                                                             

                                                                                

[    0.000000] Linux version 4.4.14 (bingdo@bingdo-desktop) (gcc version 5.3.0 7

[    0.000000] SoC Type: Ralink RT5350 id:1 rev:3                               

[    0.000000] bootconsole [early0] enabled                                     

[    0.000000] CPU0 revision is: 0001964c (MIPS 24KEc)                          

[    0.000000] MIPS: machine is WIZnet WizFi630A                                

[    0.000000] Determined physical RAM map:                                     

[    0.000000]  memory: 02000000 @ 00000000 (usable)                            

[    0.000000] Initrd not found or empty - disabling initrd                     

[    0.000000] Zone ranges:                                                     

[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000001ffffff]           

[    0.000000] Movable zone start for each node                                 

[    0.000000] Early memory node ranges                                         

[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000001ffffff]          

[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000001ffffff] 

[    0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.  

[    0.000000] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bys

[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pa8

[    0.000000] Kernel command line: console=ttyS1,115200 rootfstype=squashfs,jf2

[    0.000000] PID hash table entries: 128 (order: -3, 512 bytes)               

[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)    

[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)      

[    0.000000] Writing ErrCtl register=00001fd0                                 

[    0.000000] Readback ErrCtl register=00001fd0                                

[    0.000000] Memory: 28488K/32768K available (2751K kernel code, 125K rwdata,)

[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1       

[    0.000000] NR_IRQS:256                                                      

[    0.000000] CPU Clock: 360MHz                                                

[    0.000000] clocksource: systick: mask: 0xffff max_cycles: 0xffff, max_idle_s

[    0.000000] systick: running - mult: 214748, shift: 32                       

[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_s

[    0.000016] sched_clock: 32 bits at 180MHz, resolution 5ns, wraps every 1193s

[    0.007697] Calibrating delay loop... 239.61 BogoMIPS (lpj=1198080)          

[    0.080250] pid_max: default: 32768 minimum: 301                             

[    0.084964] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)      

[    0.091394] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) 

[    0.107822] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, ms

[    0.117766] pinctrl core: initialized pinctrl subsystem                      

[    0.124158] NET: Registered protocol family 16                               

[    0.172470] rt2880_gpio 10000600.gpio: registering 22 gpios                  

[    0.177905] rt2880_gpio 10000600.gpio: registering 22 irq handlers           

[    0.184411] rt2880_gpio 10000660.gpio: registering 6 gpios                   

[    0.189744] rt2880_gpio 10000660.gpio: registering 6 irq handlers            

[    0.198693] clocksource: Switched to clocksource MIPS                        

[    0.206356] NET: Registered protocol family 2                                

[    0.212343] TCP established hash table entries: 1024 (order: 0, 4096 bytes)  

[    0.219234] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)         

[    0.225384] TCP: Hash tables configured (established 1024 bind 1024)         

[    0.231857] UDP hash table entries: 256 (order: 0, 4096 bytes)               

[    0.237520] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)          

[    0.244274] NET: Registered protocol family 1                                

[    0.249568] rt-timer 10000100.timer: maximum frequency is 3662Hz             

[    0.257280] futex hash table entries: 256 (order: -1, 3072 bytes)            

[    0.308059] squashfs: version 4.0 (2009/01/31) Phillip Lougher               

[    0.313856] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORI.

[    0.330225] io scheduler noop registered                                     

[    0.334010] io scheduler deadline registered (default)                       

[    0.339600] ralink-usb-phy usbphy: invalid resource                          

[    0.345128] gpio-export gpio-export: 0 gpio(s) exported                      

[    0.350846] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled         

[    0.359634] 10000500.uart: ttyS0 at MMIO 0x10000500 (irq = 13, base_baud = 23

[    0.370336] console [ttyS1] disabled                                         

[    0.373835] 10000c00.uartlite: ttyS1 at MMIO 0x10000c00 (irq = 20, base_baud3

[    0.383580] console [ttyS1] enabled                                          

[    0.383580] console [ttyS1] enabled                                          

[    0.390681] bootconsole [early0] disabled                                    

[    0.390681] bootconsole [early0] disabled                                    

[    0.409919] spi spi0.0: force spi mode3                                      

[    0.414730] m25p80 spi0.0: w25q128 (16384 Kbytes)                            

[    0.419732] 4 ofpart partitions found on MTD device spi0.0                   

[    0.425341] Creating 4 MTD partitions on "spi0.0":                           

[    0.430301] 0x000000000000-0x000000030000 : "uboot"                          

[    0.439213] 0x000000030000-0x000000040000 : "uboot-env"                      

[    0.448455] 0x000000040000-0x000000050000 : "factory"                        

[    0.457685] 0x000000050000-0x000001000000 : "firmware"                       

[    0.544317] 2 uimage-fw partitions found on MTD device firmware              

[    0.550504] 0x000000050000-0x00000017909e : "kernel"                         

[    0.559061] 0x00000017909e-0x000001000000 : "rootfs"                         

[    0.568034] mtd: device 5 (rootfs) set to be root filesystem                 

[    0.574143] 1 squashfs-split partitions found on MTD device rootfs           

[    0.580560] 0x000000440000-0x000001000000 : "rootfs_data"                    

[    0.595952] rt3050-esw 10110000.esw: link changed 0x00                       

[    0.605040] mtk_soc_eth 10100000.ethernet eth0: mediatek frame engine at 0xb5

[    0.614744] rt2880_wdt 10000120.watchdog: Initialized                        

[    0.622927] NET: Registered protocol family 10                               

[    0.635855] NET: Registered protocol family 17                               

[    0.640790] bridge: automatic filtering via arp/ip/ip6tables has been deprec.

[    0.653831] 8021q: 802.1Q VLAN Support v1.8                                  

[    0.676668] VFS: Mounted root (squashfs filesystem) readonly on device 31:5. 

[    0.685944] Freeing unused kernel memory: 180K (80373000 - 803a0000)         

[    3.086112] init: Console is alive                                           

[    3.090385] init: - watchdog -                                               

[    5.267686] usbcore: registered new interface driver usbfs                   

[    5.273678] usbcore: registered new interface driver hub                     

[    5.279483] usbcore: registered new device driver usb                        

[    5.296553] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver       

[    5.306132] ehci-platform: EHCI generic platform driver                      

[    5.322256] phy phy-usbphy.0: remote usb device wakeup disabled              

[    5.328333] phy phy-usbphy.0: UTMI 16bit 30MHz                               

[    5.332995] ehci-platform 101c0000.ehci: EHCI Host Controller                

[    5.339032] ehci-platform 101c0000.ehci: new USB bus registered, assigned bu1

[    5.347391] ehci-platform 101c0000.ehci: irq 26, io mem 0x101c0000           

[    5.368833] ehci-platform 101c0000.ehci: USB 2.0 started, EHCI 1.00          

[    5.377718] hub 1-0:1.0: USB hub found                                       

[    5.382540] hub 1-0:1.0: 1 port detected                                     

[    5.397544] init: - preinit -                                                

[    6.496392] rt3050-esw 10110000.esw: link changed 0x00                       

Press the [f] key and hit [enter] to enter failsafe mode                        

Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level    

[    6.827233] random: procd urandom read with 11 bits of entropy available     

[    8.136889] rt3050-esw 10110000.esw: link changed 0x02                       

[   10.217278] mount_root: jffs2 not ready yet, using temporary tmpfs overlay   

[   10.275670] procd: - early -                                                 

[   10.279068] procd: - watchdog -                                              

[   11.380848] procd: - ubus -                                                  

[   11.440191] procd: - init -                                                  

Please press Enter to activate this console.                                    

[   12.710961] ip6_tables: (C) 2000-2006 Netfilter Core Team                    

[   12.744086] Loading modules backported from Linux version wt-2016-05-12-0-g76

[   12.751976] Backport generated by backports.git backports-20160216-0-ge3c56e4

[   12.767462] ip_tables: (C) 2000-2006 Netfilter Core Team                     

[   12.792994] nf_conntrack version 0.5.0 (447 buckets, 1788 max)               

[   12.869623] xt_time: kernel timezone is -0000                                

[   12.982450] PPP generic driver version 2.4.2                                 

[   12.993168] NET: Registered protocol family 24                               

[   13.050600] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 5350, rev 0500 d

[   13.058559] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 5350 detected   

[   21.372585] rt3050-esw 10110000.esw: link changed 0x00                       

[   22.989706] rt3050-esw 10110000.esw: link changed 0x02                       

[   31.880146] device eth0.1 entered promiscuous mode                           

[   31.885078] device eth0 entered promiscuous mode                             

[   31.921814] br-lan: port 1(eth0.1) entered forwarding state                  

[   31.927623] br-lan: port 1(eth0.1) entered forwarding state                  

[   33.918775] br-lan: port 1(eth0.1) entered forwarding state                  

[   58.161822] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0   

[   58.179218] jffs2_build_filesystem(): unlocking the mtd device... done.      

[   58.186007] jffs2_build_filesystem(): erasing all blocks after the end marke 

[   79.588798] random: nonblocking pool is initialized



Contents

-. Build : WizFi630A 개발환경 구축

-. Upgrade : TFTP 활용


Build : WizFi630A 개발환경 구축

WizFi630A in OpenWrt

>> 참조 링크

https://wiki.openwrt.org/toh/wiznet/wiznet_wizfi630a

WizFi630A in WIZnet

>> 참조 링크

http://wizwiki.net/wiki/doku.php?id=products:wizfi630a:start


라이브러리 설치 in Ubuntu

>> Ubuntu 16.04 사용

>> 소스 코드 다운로드

>> 추가 패키지 다운로드

>> Config 설정

>> Target System / Subtarget / Target Profile / LuCi 등 필요한 Config 설정

>> pre-build

>> build

>> binary 확인


Contents

-. 이론 : W7500 Ethernet 활용

-. SW 실습 1차 : ARM mbed 활용

-. SW 실습 2차 : GCC 활용

-. HW 실습 : 회로설게, Artwork (Option)


SW 실습 2차 : GCC 활용

데모 소개

>> mbed

GCC 소개

>> 참조링크

http://opensrclab.tistory.com/category/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4%20HW/%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD

S2E(Serial to Ethernet) 소개

>> 참조링크

https://github.com/bingdo/IIoT_WIZwiki-W7500_Eclipse

>> Insert MAC address

WIZ7500_DEMO_S2E(gcc).bin

>> Modify IP, Port, Working Mode

>> Test operation of S2E function

예제실습

>> Quiz6

S2E + DHT Sensing 구현하기

Hint : DHT library 사용 (Academy_DHT.7z)

Academy_DHT.7z

>> 참조링크

>> Quiz7

S2E + DHT + TCP Client 구현하기

Hint : S2E Client Mode 사용

>> 참조링크


Contents

-. 이론 : W7500 Ethernet 활용

-. SW 실습 1차 : ARM mbed 활용

-. SW 실습 2차 : GCC 활용

-. HW 실습 : 회로설게, Artwork (Option)


SW 실습 1차 : ARM mbed 활용

ARM mbed 소개

>> 참조링크

https://www.mbed.com/en/

개발환경

>> 참조링크

https://docs.mbed.com/

https://developer.mbed.org/handbook/Homepage

예제실습

>> Quiz2

Serial로 온드/습도 확인하기

Hint : DHT library 사용

>> Easy Module Shield

>> 참조링크

https://developer.mbed.org/users/moisesmarangoni/code/DHT/

W7500_DHT.7z


>> Quiz3

TCP Client를 이용해서 Server에 Data 전송하기

Hint : WIZnetInterface library 사용

>> 참조링크

W7500_TCPC.7z


ThingPlus

>> 참조링크

http://wiznetacademy.com/index.php?module=lecture&act=dispLectureView&lecture_seq=2255&schedule_seq=3

예제실습

>> Quiz4

MQTT 포팅하기

Hint : MQTT library 사용

>> 참조링크

https://developer.mbed.org/users/bangbh/code/w7500-paho-mqtt/

W7500_MQTT.7z


>> Quiz5

SD Card에서 MAC address, destination IP, Port 얻어오기

Hint : SDFileSystem library 사용

>> 참조링크

https://developer.mbed.org/teams/WIZnet/code/SDFileSystem_HelloWorld_WIZwiki-W7500/?platform=WIZwiki-W7500

W7500_SDFile.7z


To be continued.

Contents

-. 이론 : W7500 Ethernet 활용

-. SW 실습 1차 : ARM mbed 활용

-. SW 실습 2차 : GCC 활용

-. HW 실습 : 회로설게, Artwork (Option)


WIZNETIAN IoT Design Contest

>> For Makers, By Makers

http://wiznetian.com/


IoT Design Contest @CyberMakerSpace.com

>> Curation is Creation

http://cybermakerspace.com/


이론 : W7500 Ethernet 활용

스마트공장 알아보기

>> 4차 산업혁명과 Industry 4.0

>> Industry 4.0과 스마트팩토리

>> 카운트다운! 4차 산업혁명


[KBS 다큐1] 카운트다운! 4차 산업혁명 1편 메이커 시대가 온다... 작성자 girujang

>> 서기 2000년대의 생활의 이모저모

출처 : 이정문 화백 (1965년)

>> 미래 스마트공장(1/2)

>> 스마트공장의 차별성(2/2)

>> 핵심 10대기술 평가(1/2)

>> 핵심 10대기술 평가(2/2)

>> 스마트팩토리의 적용예

https://www.youtube.com/watch?v=oU95Ms0oia4

https://www.youtube.com/watch?v=_xc9JokbMmw


https://www.youtube.com/watch?v=MKu2yEM6Pas&list=PLgzkB4sJ6NWKCKjWtIkU5fI2egB4XPuvO

>> 틈새시장 공략 성공 사례

http://news.mk.co.kr/newsRead.php?sc=30000001&year=2017&no=186611&sID=501

https://www.youtube.com/watch?v=1Agni2Coyfw

W7500 소개

>> 참조링크

http://wizwiki.net/wiki/doku.php?id=products:w7500:start

https://github.com/Wiznet/W7500

>> Features

ARM Cortex-M0

48MHz maximum frequency

Hardwired TCP/IP Core

8 Sockets

SRAM for socket: 32 KB

MII (Medium-Independent Interface)

Memories

Flash: 128 KB

RAM 16KB

ROM for boot code: 6 KB

Clock, reset and supply management

POR (Power-On Reset)

Internal Voltage Regulator : 3.3V to 1.5V

8-to-24MHz external crystal oscillator

Internal 8MHz RC Oscillator

ADC

            12bit, 8ch, 1Mbps

GPIO

53 I/Os (16 IO x 3ea, 5 IO x 1ea)

Debug mode

Serial Wire Debug (SWD)

Timer/PWM

4 Timers (32-bit or 16-bit down-counter)

8 PWMs (32-bit counter/timers with programmable 6-bit prescaler)

Communication Interfaces

3 UART (2 UARTs with FIFO and Flow Control, 1 simple UART)

2 SPI

2 I2C (Master/Slave, Fast-mode (400 kbps))

Package

64 TQFP (7x7 mm)

WIZwiki-W7500 소개

>> 참조링크

http://wizwiki.net/wiki/doku.php?id=products:wizwiki_w7500:start

https://developer.mbed.org/platforms/?tvend=38

Ethernet 활용

>> 참조링크

https://www.mbed.com/en/

https://developer.mbed.org/ 회원가입

>> 클라우드 개발환경 접속

>> Import Programs or Libraries

>> Import mbed_blinky

20170303_mbed_blinky_WIZWIKI_W7500.bin

>> Modify LED pins

>> Import TCPEchoServer-WIZwiki-W7500

>> Modify MAC address

>> Monitor Debugging COM Port

>> Quiz1

Serial로 현재 시간 표시하기

Hint : NTP 사용

W7500_NTP.7z


To be continued.

Introduction

IoT 세상에서 DIY Maker들은 자신이 만든 디바이스나 작품들이 어떻게든 외부와 연결되기를 바랄 것이다. 필자 또한 항상 프로젝트를 진행할 때 인터넷을 사용할 수 있게 즉, 연결성에 중점을 두곤 한다.

하지만 DIY Maker들에게 외부 연결성을 고려할 만큼 전문성이 없는 경우가 많을 것이다. 간단한 작업으로 이런 문제를 해결할 수 있다면 금상첨화가 아닐까 한다.

WIZ820io는 이런 문제를 해결하기 위한 여러 방편 중 하나이다. 손쉬운 Ethernet solution을 제공하니 한 번쯤 사용해 보기를 권장한다.

 

What is Ethernet?

Wikipedia의 정의로 보면, Ethernet is a family of computer networking technologies commonly used in local area networks (LANs) and metropolitan area networks (MANs).[1] It was commercially introduced in 1980 and first standardized in 1983 as IEEE 802.3,[2] and has since been refined to support higher bit rates and longer link distances. Over time, Ethernet has largely replaced competing wired LAN technologies such as token ring, FDDI and ARCNET.

Ethernet은 쉽게 얘기하면 인터넷에 연결할 수 있는 방편 중 하나로 보면 될 것이다.

집에 보면 컴퓨터나 AP를 연결하기 위한 LAN 케이블이 있으니 직접 눈으로 확인해 보는 것도 좋을 것이다.

 

What is WIZ820io?

WIZ820ioWIZnet 회사에서 만들어서 판매하고 있는 Ethernet solution 중 하나이다. MCUSPI Interface를 통해 TCP/IP를 이용하여 외부 인터넷에 연결할 수 있다.

WIZ820io is a compact size network module that includes a W5200 (TCP/IP hardwired chip and PHY embedded), a transformer and RJ45. It can be used as a component and no effort is required to interface W5200 and Transformer. The WIZ820io is an ideal option for users who want to develop their Internet enabling systems rapidly. WIZ820io is hardware compatible with WIZ850io.

http://www.shopwiznet.com/wiz820io

 

Curation on WIZnet Museum

누구나 쉽게 WIZ820io 활용해서 IoT 디바이스들에게 연결성을 제공하고 있는 사이트를 소개하고자 한다. 실제 구현에 필요한 SW, HW 내용들을 포함하고 있기에 관심이 있는 사람이라면 한 번쯤 따라 해 보는 것도 좋으리라 생각한다.

 

Tutorial: Controlling Servo / Webcam via webserver, Wiz820io and Garagino

This project is a server with Garagino and Wiznet Ethernet module, and thus an HTML page that displays the buttons that control the servos connected to the Pan / Tilt.

http://wiznetmuseum.com/portfolio-items/tutorial-controlling-servo-webcam-via-webserver-wiz820io-and-garagino/

Webcam의 방향을 제어해 볼 수 있는 프로젝트로 인터넷 연결을 위해서 WIZ820io를 사용하고 있다. Arduino Ethernet 보드를 사용할 수도 있는 점을 알려주고 있으며 비교적 프로젝트가 잘 정리 되어 있다.

 

Bascom project – Ethernet Shield & WIZ820io

BASCOM-AVR© is the original Windows BASIC COMPILER for the AVR family. It is designed to run on XP/VISTA/WIN7 and WIN8. This product description is updated in 2014. But we do not change it each time we update the software. In the on line help you can find a list of all statements and functions.

http://wiznetmuseum.com/portfolio-items/bascom-project-ethernet-shield-wiz820io/

아두이노에 WIZ820io를 연결하여 Ethernet 사용을 손쉽게 적용한 프로젝트로 하기 링크로 연결하면 보다 자세한 프로젝트 내용을 볼 수 있다. 아두이노의 AVR MCU 이외에도 다양한 MCU에 포팅이 가능하다.

http://wiki.mcselec.com/Getting_started_with_Arduino_and_WIZ820io

 

WIZ820io: Porting Guide about EmIDE and Nucleo Board

This is a simple project based on EmIDE(gcc) since commercial compiler is not free which shows how to port from EmIDE and Nucleo Board using WIZnet network module product, WIZ820io.

http://wiznetmuseum.com/portfolio-items/1-wiz820io-porting-guide-about-emide-and-nucleo-board/

상기 프로젝트에서 AVR MCU를 사용했듯이 Nucleo보드의 ST MCU를 사용하여 WIZ820io 프로젝트가 진행되었다. IoT 플랫폼으로 사용되고 있는 mbed Nucleo 보드를 사용하면 보다 쉽게 프로토타입을 구성하여 빠르게 Ethernet 제품을 구상할 수 있다.

'Curation Contents' 카테고리의 다른 글

To understand IoT through Blynk Platform easily  (2) 2017.01.10


Introduction

평범한 일상을 상상해 보자. 날씨가 화창한 주말 가족들은 근교로 피크닉을 가려고 준비하고 있다. 아빠는 정원에서 텐트를 점검 중이고 엄마는 점심으로 먹을 음식 장만에 한창이다. 아이들은 모처럼 만의 나들이에 들떠있다. 모든 준비가 끝나고 집을 떠나 한참을 달린 순간, 아빠는 현관문을 잠그지 못한 걸, 엄마는 가스밸브를 안 잠근 걸, 아이들은 애완용 앵무새에게 먹이를 주지 못한 걸 생각하고 차를 돌리게 된다. 만약 원격으로 현관문, 가스밸브의 상태를 확인한 후 잠글 수 있고 애완용 앵무새를 영상으로 확인 후 먹이까지 줄 수 있다면 편안한 피크닉을 보장할 수 있을 것이다.

 

What is IoT?

IoT(사물인터넷)은 이미 세간에 널리 알려진 network connectivity의 개념이라 할 수 있다. Wikipedia의 정의로 보면, The internet of things (IoT) is the network of physical devices, vehicles, buildings and other items—embedded with electronics, software, sensors, and network connectivity that enables these objects to collect and exchange data. 개인적인 이해도로 보면 말단 센서 등의 디바이스 데이터를 네트워크를 통해 교환할 수 있게 하고 이를 분석한다면 사용자에게 맞춤식 서비스를 제공할 수 있을 것으로 본다.

이런 서비스의 대표적인 예가 최근 통신사에서 제공하고 있는 홈IoT 서비스이다. 사용자들에게 어떤 서비스가 제공될 수 있을 지를 동영상을 통해 쉽게 이해할 수 있다.

https://www.youtube.com/watch?v=tTS8yJyFg-M

https://www.youtube.com/watch?v=deolstthDr4

 

What is Blynk Platform?

IoT의 개념을 좀더 쉽게 이해하기 위해서 Blynk Platform을 이용해 볼 수 있다. IoT 서비스의 많은 부분이 스마트폰과의 연동으로 이루어지고 있기 때문에 무료로 사용할 수 있는 Blynk 스마트폰앱을 이용해 봄으로써 IoT의 이해도를 높일 수 있겠다. BlynkKickstarter에서 Cloud 펀딩에 성공한 대표적인 스마트폰앱으로 사용자가 앱 상의 Widget을 손쉽게 구성하여 아두이노 등의 임베디드 디바이스들을 원격으로 제어해 볼 수 있는 장점이 있다. 좀 더 자세한 내용은 동영상을 참조 바란다.

https://ksr-video.imgix.net/projects/657114/video-471034-h264_high.mp4

 

Curation on WIZnet Museum

누구나 쉽게 Blynk앱을 활용해서 IoT 디바이스들을 제어해 볼 수 있는 Tutorial이 제공되는 사이트를 소개하고자 한다. 실제 구현에 필요한 SW, HW 내용들을 포함하고 있기에 관심이 있는 사람이라면 한 번쯤 따라 해 보는 것도 좋으리라 생각한다.

 

Getting started with Blynk and Arduino. Switch the lights ON over the Internet

This project shows a simple home automation demo built with an Ethernet shield and relay module. A user can control lights with Arduino using Blynk on your iPhone.

http://wiznetmuseum.com/portfolio-items/getting-started-with-blynk-and-arduino-switch-the-lights-on-over-the-internet/

가장 보편적인 Blynk 예제로 Blynk앱의 GPIO핀을 제어해서 디바이스와 연결된 릴레이를 On/Off 시키는 예제이다. 보통은 LEDOn/Off 시키는데 한발 더 나아가서 릴레이를 제어함으로써 일반 가정의 조명도 관리할 수 있음을 보여주고 있다.

 

Rain Waring Display on Mobile for your Home Garden

A system that warns for unexpected rains to help out your garden. The system displays real time values on mobile.

http://wiznetmuseum.com/portfolio-items/2-rain-warning-display-on-mobile-for-your-home-garden/

IoT 디바이스에 센서를 연결시켜서 값을 확인할 수 있다. 원하는 센서를 연결시키고 데이터를 원격지에서 모니터링 할 수 있는 기본적인 구성을 보여주고 있다.

 

Smart Parking

A system that tells you about the parking slots of an area.

http://wiznetmuseum.com/portfolio-items/smart-parking/

현재도 이용되고 있는 주차 확인 서비스의 구성을 확인할 수 있도록 구성되어 있다. 센서의 값을 서버나 스마트폰에서 확인할 수 있게 함으로써 사용자들의 편의를 도울 수 있다.

'Curation Contents' 카테고리의 다른 글

How to use WIZ820io easily  (0) 2017.02.16

+ Recent posts