Coder Social home page Coder Social logo

iot_phat's Introduction

IoT pHAT

RedBear IoT pHAT, designed for the Raspberry Pi Zero (other RPi boards with 40-pin header will also work).

The RPi Zero is a nice board, it is small in size which is very good for developing IoT projects and prototypes. However, it lacks of wireless features such as WiFi and Bluetooth.

With the IoT pHAT, now, your RPi Zero will get more powerful than before. It adds WiFi and Bluetooth wireless technologies to the RPi Zero.

  • Front View

    image

  • Back View

    image

Block Diagram

image

Features

  • AMPAK AP6212A Wireless Module (Broadcom BCM43438 A1 chip inside)
    • WiFi (802.11bgn / 2.4GHz)
    • Bluetooth (4.1) and BLE support
  • Single antenna for concurrent WiFi and Bluetooth operations
    • Onboard PCB antenna
    • External antenna connector
    • Antenna switch for external antenna
  • 32 Kbit (4 KByte) EEPROM for DTOverlay configuration
  • 40-pin connector
    • WiFi: SDIO v2.0 - up to 20 MHz clock rate
    • Bluetooth: UART (up to 4 Mbps)
  • FCC/CE certified

How to play

Prerequisites

  • WiFi Router or Access Point (2.4 GHz enabled) and connected to the Internet

  • Raspberry Pi Zero or other models with 40 pin connector header

    • HDMI Cable
    • USB Keyboard
    • Power adapter (5V) with micro USB connector
  • SD Card with NOOBS or Raspbian installed (tested on NOOBS 2.4.1 with 21-06-2017 version of Raspbian)

  • Additional Items for RPi Zero

    • Mini HDMI to normal HDMI converter
    • Micro to Type-A USB converter
  • Optional

    • Bluetooth Keyboard
    • Bluetooth Mouse
    • Bluetooth Gamepad

Setting up the boards

image

  • Stack the IoT pHAT on top of the RPi Zero
  • Connect the board to your TV or monitor via the HDMI cable
  • Connect your RPi with a wired keyboard (For associating WiFi to access point and pair Bluetooth accessories)
  • Power on with an micro USB cable with power adpater

The IoT pHAT will also work on other 40-pin RPi boards such as RPi Model A+ and RPi 2.

image image

Updating the EEPROM

  • Check EEPROM firmware version

    • $ cat /proc/device-tree/hat/product
  • Follow this guide to update the EEPROM if your one is not the latest version.

WiFi

  • After booting up, the Linux kernel will read the configuration from the onboard EEPROM, it will turn on the WiFi driver

  • Now you can use WiFi to connect to your wireless router or access point directly.

  • You will see the WiFi driver (wlan0) is up by typing the follow command using the command line,

    $ ifconfig

  • if you are in the command line, you can add your WiFi credentials to this file, it will connect to the AP automatically.

    Edit the file,

    $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

    Add,

     network={
     	ssid="Your AP"
     	psk="Your PIN"
     	key_mgmt=WPA-PSK
     }
    

    Reboot,

    $ sudo reboot

  • After associating to your router/AP, your RPi will broadcast mDNS service, so you do not need to know the IP address and the default host name is raspberrypi.local, you can use ssh to control your RPi from your computer remotely, we only tested on macOS and Linux, for Windows, you need a ssh utility and mDNS tool (e.g. Apple Bonjour SDK).

    $ ssh [email protected]

    The default login password is, raspberry.

  • Trouble-shooting

    • if you do not see the wlan0 device using ifconfig, then use the following command, you should see there is a folder named iothat. It should be something wrong if you do not see it.

      $ ls /proc/device-tree/soc/

    • check if your board comes without the 40-pin connector soldered, make sure your soldering is correct and check the I2C ID EEPROM pins (see the pinout diagram for details).

Bluetooth

  • Also, upon booting up the board, the Kernel will read from the EEPROM for all settings for the Bluetooth including the UART which maps UART0 to GPIO 14 and 15.

  • You will see the Bluetooth is ready to use by using the Bluetooth manager (the Bluetooth icon) near to the clock (upper-right corner) or using the command line,

    $ hciconfig

    or

    $ systemctl status hciuart.service

Pairing Bluetooth Keyboard/Mouse/Gamepad

You can use the command line tool bluetoothctl or the Bluetooth manager to pair your Bluetooth accessories.

Keyboard

  • Example for using the command line, AA:BB:CC:DD:EE:FF here should be your Bluetooth keyboard MAC address. Make your keyboard into pairing mode first,

     $ sudo bluetoothctl
     [bluetooth]# agent KeyboardDisplay
     [bluetooth]# default-agent
     [bluetooth]# scan on
     [bluetooth]# pair AA:BB:CC:DD:EE:FF
     Enter the PIN code from the Bluetooth keyboard
     [bluetooth]# connect AA:BB:CC:DD:EE:FF
     [bluetooth]# trust AA:BB:CC:DD:EE:FF
     [bluetooth]# quit
    

Note: It seems that the BlueZ does not support BLE keyboard and mouse.

Gamepad (8Bitdo Zero)

Prerequisites:

  • Charging the gamepad for a while.
  • Make sure it is turned off (holding the START button for 2 seconds to power ON/OFF).

To pairing:

  • Set the gamepad to the correct mode by pressing and holding the START button until you see a white LED light on. Release the button, it will enter to the power off state.

  • Turn on the gamepad by holding the START button for 2 seconds.

  • Holding the SELECT button for 3 seconds to clear any previous pairing, you will see the white LED flash once, release it.

  • Use the follow steps:

     $ sudo bluetoothctl
     [bluetooth]# scan on
     [bluetooth]# pair AA:BB:CC:DD:EE:FF	
     [bluetooth]# connect AA:BB:CC:DD:EE:FF
     [bluetooth]# trust AA:BB:CC:DD:EE:FF
     [bluetooth]# quit
    
  • To test the gamepad

     $ sudo apt-get install joystick
     $ jstest /dev/input/js0
    
  • If you paired two gamepad, the 2nd one will be the /dev/input/js1 device.

Pinout

The following diagram shows the pins of the RPi 40-pin connector occupied by the IoT pHAT board.

Note that, the TXD on the RPi (as shown in the diagram) will connect to the RXD of the IoT pHAT, the same case applied to the RXD, CTS and RTS pins.

image

Specification

General

  • Model Name : IoT pHAT
  • Product Description : WiFi and Bluetooth connectivity add-on board for Raspberry Pi Zero
  • Dimension : 64 mm x 30 mm
  • WiFi Interface : SDIO v2.0
  • Bluetooth Interface : UART / PCM
  • Operating voltage : 3.3V
  • Operating temperature : -30˚C to 85˚C
  • Storage temperature : -40˚C to 85˚C
  • Humidity : Operating Humidity 10% to 95% Non-Condensing

WiFi

image

Bluetooth

image

Known Issues

  • Default EEPROM firmware is v0.2
    • The BT UART1 is not stable, modify the EEPROM with v0.3 which will use UART0 instead
    • The WiFi is not stable, modify the EEPROM with 0.3 to lower the SDIO clock from 40MHz to 20MHz.

Resources

RedBear

External

Limitations

  • FM is not supported with the board
  • Although the board supports Bluetooth keyboard, you still need to use a wired keyboard to set it up first.
  • The TXD and RXD pins are used by the IoT pHAT, so you will not be able to use serial debug and BT at the same time for your RPi. Also, you will not be able to connect to other serial devices such as a GPS module.

iot_phat's People

Contributors

carsonmcdonald avatar cheong2k avatar tedder avatar the-alchemist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iot_phat's Issues

Use gpio with iot hat on?

Hey, just wonderingredients if it's possible to use the gpio pins with the iot hat connected.

In an image of a pi zero and an iot hat connected, I dont see anyway to connect additions components to gpio....

Thank you.

bluez_ble mac_address AA:AA:AA:AA:AA:AA

Hi all,

I'am using the board on a PI Zero with QT 5.7.1 and I developped a BLE server.

Everything works well except the mac-address always : AA:AA:AA:AA:AA:AA:AA

I checked with hciconfig.

pi@raspberrypi:~ $ sudo hciconfig status
hci0: Type: Primary Bus: UART
BD Address: AA:AA:AA:AA:AA:AA ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:10266 acl:485 sco:0 events:589 errors:0
TX bytes:16384 acl:530 sco:0 commands:72 errors:0

It seems the bluez layer does not find the mac address.
Do you know how I can to set it ?

My Pi is running bluez-5.41 and I updated to firmware of the IoT_pHat.

Thank for your help,
Have a nice day,
Nicolas

Kernel Panic on Pi Zero W

When running the latest debian stretch image on the Pi Zero W I get a hexdump and kernel panic during the boot process.

Is the IoT pHat working with recalbox?

Hi,

I've tried a couple months ago to set my zero up with the hat to use with recalbox. Back then it didn't work. Does it work now with recalbox and the provided controllers from kickstarter?

I hope to hear from you.

With kind regards,
H

Request for footprint file

Hi,
I am trying to design a circuit using ap6212 module but can't find part file anywhere online.
Could you share the same?

Red bear WiFi hat no longer works

I have the same problem with red bear WiFi and BT on loading raspbian error 110 SDIO, It was working.
Using pizero with red bear hat.
Pi zero works with a usb WiFi dongle.

Reprogramming eeprom with dt

Hi,

I had to update eeproms on my pHATs. When I run command to reprogram eeprom (from your guide):
sudo ./eepflash.sh -f=IoT_pHAT-with-dt.eep -t=24c32 -w
I get error:

pi@raspberrypi:~/phat $ sudo ./eepflash.sh -f=IoT_pHAT-with-dt.eep -t=24c32 -w
This will disable the camera so you will need to REBOOT after this process completes.
This will attempt to write to i2c address 0x50. Make sure there is an eeprom at this address.
This script comes with ABSOLUTELY no warranty. Continue only if you know what you are doing.
Do you wish to continue? (yes/no): yes
Writing...
dd: writing to ‘/sys/class/i2c-adapter/i2c-0/0-0050/eeprom’: Connection timed out
1+0 records in
0+0 records out
0 bytes (0 B) copied, 2.03952 s, 0.0 kB/s
Error doing I/O operation.

Fix:

The script eepfalsh.sh have to be executed from root account not via sudo:
(To set password for root user run sudo passwd root )

pi@raspberrypi:~/phat $ su
Password:
root@raspberrypi:/home/pi/phat# ./eepflash.sh -f=IoT_pHAT-with-dt.eep -t=24c32 -w
This will disable the camera so you will need to REBOOT after this process completes.
This will attempt to write to i2c address 0x50. Make sure there is an eeprom at this address.
This script comes with ABSOLUTELY no warranty. Continue only if you know what you are doing.
Do you wish to continue? (yes/no): y
Please type yes or no.
Do you wish to continue? (yes/no): yes
Writing...
6+1 records in
6+1 records out
3344 bytes (3.3 kB) copied, 66.869 s, 0.1 kB/s
Done.

Also please add note that, writing eeprom take about 60-70sec to finish 😄 (Patience is not my virtue 😉 )

Remap GPIO pins used in EEPROM

Hi,

I need to be able to stack another hat on top of the IoT_pHAT, specifically the Pimoroni Blinkt. (https://github.com/pimoroni/blinkt). As you can see from the pinout (https://pinout.xyz/pinout/blinkt) pins 16 and 18 are in use on the Blinkt, which are also used by the IoT_pHAT.

I understand that as the IoT_pHAT comes with a EEPROM I should be able to modify the Device Tree to remap the GPIO pins to those I require, which should then free up the pins I need for the Blinkt.

What I don't understand is if the pins on the IoT_pHAT are all electrically connected (and so I should be able to remap ok) or physically disconnected (so remapping is not possible).

Would anyone know?

Access Point CM3+

Hello,

Can we use this HAT with a Raspberry Pi Compute Module 3+ as an Access Point if we connect the right pins ?

Thank you.

IoT pHAT Kodi

I'd like to use this with openelec and kodi, Any help?
I've got a raspberry pi zero and the IoT pHAT. Also I'm a noob so lots of explaining would be nice.

Wifi keeps disconnecting

Hey,
I have recently ordered the IoT pHAT and my wifi keeps disconnecting after a minute of SSH-ing into my Pi. I have tried a different Pi and the same happens. Would you happen to have any input on what I could try to debug what's wrong?

Best Regards

Problems using WIFI and BT at the same time

I'm having problems using WIFI and BT at the same time. I'm running a python application that scans for two BT MACs in order to find out if the phone they belong to are near or not. The goal is to have a working presence detection for home automation.

I already updated the Pi to the latest available firmware and kernel using rpi-update:

$ uname -a
Linux pizero 4.4.21+ #911 Thu Sep 15 14:17:52 BST 2016 armv6l GNU/Linux

The EEPROM has been updated as advised here as well:

$ cat /proc/device-tree/hat/product
IoT pHAT w/eep_v0.3

This is the lsb info for the distribution installed:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:    8.0
Codename:   jessie

The system is freshly installed with only the dependancies for the script installed.

UART bootup message:

$ dmesg | grep uart
[    0.000000] Kernel command line: 8250.nr_uarts=0 dma.dmachans=0x7f35 
bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0x900093 
bcm2708.serial=0x57cd67 smsc95xx.macaddr=B8:27:EB:57:CD:67 bcm2708_fb.fbswap=1 
bcm2708.uart_clock=48000000 bcm2708.disk_led_gpio=47 vc_mem.mem_base=0x1ec00000 
vc_mem.mem_size=0x20000000  dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

The application I'm using is sensorReporter.

This application runs a scan on Bluetooth once every 25 secs.

I'm observing that while the application is running there is major delay on WIFI that is not visible when the application is not running.

See below for mtr logs without the application running, then while the script runs and after the script has been stopped. All mtrs are pinging FROM another system TO the Pi zero!

Without BT activity:

$ mtr -n -c 1000 --report pizero
Start: Fri Sep 23 16:04:50 2016
HOST: 192.168.254.9           Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.254.50             0.1%  1000    5.2  12.0   1.9 118.7  17.9

With sensorReporter started:

# systemctl start sensorReporter

top - 16:58:55 up  3:00,  2 users,  load average: 0.00, 0.01, 0.00
Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.0 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:    445092 total,   101584 used,   343508 free,    14132 buffers
KiB Swap:   102396 total,        0 used,   102396 free.    48284 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1181 root      20   0    5100   2428   2088 R  0.7  0.5   0:00.10 top
 1063 root      20   0       0      0      0 S  0.3  0.0   0:00.63 kworker/u2:1
 1127 pi        20   0   12204   3724   3016 S  0.3  0.8   0:00.21 sshd
 1156 root      20   0   40728  10496   6420 S  0.3  2.4   0:00.87 sensorReporter.
    1 root      20   0   22756   3836   2680 S  0.0  0.9   0:06.58 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.90 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kdevtmpfs
    8 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
    9 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 perf
   10 root      20   0       0      0      0 S  0.0  0.0   0:00.01 khungtaskd
   11 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   12 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 crypto

As you can see there is not a major load on the Pi, nevertheless there is an RTT of more then 11secs! The Wifi Access point reports excess packet loss on this wifi client in this situation.

$ mtr -n -c 1000 --report pizero
Start: Fri Sep 23 18:56:08 2016
HOST: 192.168.254.9              Loss%   Snt   Last   Avg  Best  Wrst StDev
 1.|-- 192.168.254.50             0.9%  1000    2.1 249.1   1.6 11525 1204.0

top at the end of the mtr test:

top - 17:15:30 up  3:17,  3 users,  load average: 0.00, 0.00, 0.00
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  1.0 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:    445092 total,   106340 used,   338752 free,    14332 buffers
KiB Swap:   102396 total,        0 used,   102396 free.    49784 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1347 pi        20   0    5100   2164   1820 R  1.0  0.5   0:00.15 top
 1098 root      20   0       0      0      0 S  0.3  0.0   0:01.78 kworker/u2:0
 1156 root      20   0   40728  10500   6420 S  0.3  2.4   0:02.15 sensorRepor+
    1 root      20   0   22756   3836   2680 S  0.0  0.9   0:06.72 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:01.00 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kdevtmpfs
    8 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
    9 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 perf
   10 root      20   0       0      0      0 S  0.0  0.0   0:00.01 khungtaskd
   11 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   12 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 crypto
   13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kblockd
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 rpciod
   17 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kswapd0

After the python script is stopped everything returns to normal:


$ mtr -n -c 1000 --report pizero
Start: Fri Sep 23 19:17:51 2016
HOST: 192.168.254.9           Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.254.50             0.0%  1000    4.9  10.0   1.6 216.1  15.7

I have tested this with two pHATs and both show this problem.

Is there any info I can provide you with that helps diagnose the issue? I'll be happy to help since running this kind of application was the reason for getting the IoT pHAT.

Not working with NOOBS

The IoT_pHAT uses the same brcm43430 wifi chipset as is used in the RPi3 working over SDIO.
It works fine in Raspbian.
NOOBS can operate with the RPi3 wifi, so it should have the correct wifi driver and firmware files included.
The correct device-tree entries appear in the /proc subsystem for the IoT_pHAT showing that the NOOBS kernel can read the details from the HAT EEPROM (I already upgraded to v0.3).

So why doesn't the wifi appear in NOOBS?
Is there something missing in the NOOBS kernel that I need to add?

which way does the switch go?

There's no visible traces to indicate what way to set the antenna selector for "onboard". Most of the pictures show the switch in the "away from pin headers" position. Is that the internal?

Shutdown will cause kernel panic

$ sudo shutdown now

will cause kernel panic, this is also the problem of the content inside the EEPROM, now looking into this issue.

Monitor mode

Anyone know if this board can be used in monitor mode?

Doesn't work at all.

When I try to turn on the pi with the pHat on the Pi, it won't turn on, but when I try without the hat, it turns on normally. I have a Pi 2 running raspbian and kali Linux. What should I do?

Schematic to make a few changes

Hello,

Great work. I want to make some changes in the board layout and add more sensors connecting to RPi using I2C. Would it be possible for you to please provide the schematic and the board files?

Thanks.

Can not get Bluetooth working

I've tried everything in the issues, I have v0.3 of the eep, the clock is set correctly.

When I run
sudo hciconfig status
I get
Can't open HCI socket.: Address family not supported by protocol

The Pi is running DietPi if that makes any difference.

RASPBIAN STRETCH update from v3 to v5

Hello, I have a fresh install of RASPBIAN STRETCH, and wanted to reuse my old pi-hat, now in stretch it does not detect the hat as a bluetoth device. the driver version is 0.3 but the update commands do not work (in this OS version at least). Do you have some advice for me on how to fix that?

it seams that all the build files are not existing (where ever they should be)

thanks in advance

iot phat not updating from 0.3 to 0.4

After following the update instructions for iot Phat 0.3. to 0.4
the cat /proc/device-tree/hat/product did not show the update?

Still says v0.3:
pi@raspberrypiX:~ $ cat /proc/device-tree/hat/product
IoT pHAT w/eep_v0.3pi@raspberrypiX:~ $

I did run the 0.4 install instructions?

Problems in ArchArm

The IoT_pHAT seems to be not recognized as a wifi-device in ArchARM. What would be the next place to look into for debbuging?

  • device accessible
    $ cat /proc/device-tree/hat/product
    IoT pHAT w/eep_v0.3
    $ ls /proc/device-tree/soc/iothat/
    name pinctrl-0 pinctrl-names status
    $ cat /proc/device-tree/soc/iothat/status
    okay

  • not recognized as wifi device
    $ ifconfig -a
    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 344 bytes 29704 (29.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 344 bytes 29704 (29.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.