mirror of https://github.com/OpenIPC/wiki.git
				
				
				
			
						commit
						bc46f143a3
					
				|  | @ -79,6 +79,7 @@ OpenIPC Wiki | |||
| - [Xiaomi Mi Camera 2K (MJSXJ03HL)](https://github.com/OpenIPC/device-mjsxj03hl/) | ||||
| - [Wyze V3](en/device-wyze-integration.md) | ||||
| - [Digitus DN-16048 Optizoom](en/device-digitus-dn16048.md) | ||||
| - [XiongMai IPG-53H20AF](en/device-ipg-53h20af.md) | ||||
| 
 | ||||
| ### Software | ||||
| - [List of Software for Recording Video](en/software-video-recording.md) | ||||
|  |  | |||
|  | @ -0,0 +1,396 @@ | |||
| # XiongMai IPG-53H20AF | ||||
| 
 | ||||
| 2.0M Autofocal Module | ||||
|  | ||||
| 
 | ||||
| ## Hardware | ||||
| 
 | ||||
| | System | Description                          | | ||||
| |--------|--------------------------------------| | ||||
| | SoC    | HI3516CV100                          | | ||||
| | Sensor | IMX322                               | | ||||
| | Flash  | 16Mb (MX25L12835F)                   | | ||||
| 
 | ||||
| ### Network | ||||
| Ethernet working only with these parameters | ||||
| ``` | ||||
|     setenv phyaddru 1 | ||||
|     setenv phyaddrd 2 | ||||
|     setenv mdio_intf rmii | ||||
|     saveenv | ||||
| ``` | ||||
| 
 | ||||
| ### GPIOs | ||||
| 
 | ||||
| WARNING!!! Motor gpio pin states incorrect after boot, motor windings may burn out, init with [these](#motor-test) asap, or unplug motors connector before powering up. | ||||
| 
 | ||||
| | Nr        | Description   | Color   | | ||||
| |-----------|---------------|---------| | ||||
| | 38        | irCut_1       |         | | ||||
| | 39        | irCut_2       |         | | ||||
| | 9         | Zoom motor A1 | Green   | | ||||
| | 48        | Zoom motor A2 | Orange  | | ||||
| | 51        | Zoom motor B1 | Yellow  | | ||||
| | 43        | Zoom motor B2 | Violet  | | ||||
| | 52        | Foc motor A1  | Black   | | ||||
| | 55        | Foc motor A2  | Blue    | | ||||
| | 53        | Foc motor B1  | White   | | ||||
| | 54        | Foc motor B2  | Red     | | ||||
| 
 | ||||
| ### Motor test | ||||
| 
 | ||||
| Very slow movement due sysfs gpio manipulation | ||||
| 
 | ||||
| ``` | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # motor test for ipg-53h20af | ||||
| 
 | ||||
| gpio_WT_Am=9 | ||||
| gpio_WT_Ap=48 | ||||
| gpio_WT_Bm=51 | ||||
| gpio_WT_Bp=43 | ||||
| 
 | ||||
| gpio_FN_Am=52 | ||||
| gpio_FN_Ap=55 | ||||
| gpio_FN_Bm=53 | ||||
| gpio_FN_Bp=54 | ||||
| 
 | ||||
| 
 | ||||
| sleep_time=100 | ||||
| 
 | ||||
| mux() { | ||||
|   ipctool gpio mux $gpio_WT_Am | ||||
|   ipctool gpio mux $gpio_WT_Ap | ||||
|   ipctool gpio mux $gpio_WT_Bm | ||||
|   ipctool gpio mux $gpio_WT_Bp | ||||
|   ipctool gpio mux $gpio_FN_Am | ||||
|   ipctool gpio mux $gpio_FN_Ap | ||||
|   ipctool gpio mux $gpio_FN_Bp | ||||
|   ipctool gpio mux $gpio_FN_Bm | ||||
| } | ||||
| 
 | ||||
| unexport() { | ||||
|   echo "$gpio_WT_Am" >/sys/class/gpio/unexport | ||||
|   echo "$gpio_WT_Ap" >/sys/class/gpio/unexport | ||||
|   echo "$gpio_WT_Bm" >/sys/class/gpio/unexport | ||||
|   echo "$gpio_WT_Bp" >/sys/class/gpio/unexport | ||||
|   echo "$gpio_FN_Am" >/sys/class/gpio/unexport | ||||
|   echo "$gpio_FN_Ap" >/sys/class/gpio/unexport | ||||
|   echo "$gpio_FN_Bp" >/sys/class/gpio/unexport | ||||
|   echo "$gpio_FN_Bm" >/sys/class/gpio/unexport | ||||
| } | ||||
| 
 | ||||
| export_() { | ||||
|   echo "$gpio_WT_Am" >/sys/class/gpio/export | ||||
|   echo "$gpio_WT_Ap" >/sys/class/gpio/export | ||||
|   echo "$gpio_WT_Bm" >/sys/class/gpio/export | ||||
|   echo "$gpio_WT_Bp" >/sys/class/gpio/export | ||||
|   echo "$gpio_FN_Am" >/sys/class/gpio/export | ||||
|   echo "$gpio_FN_Ap" >/sys/class/gpio/export | ||||
|   echo "$gpio_FN_Bp" >/sys/class/gpio/export | ||||
|   echo "$gpio_FN_Bm" >/sys/class/gpio/export | ||||
| } | ||||
| 
 | ||||
| dir() { | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_WT_Am/direction | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_WT_Ap/direction | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_WT_Bm/direction | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_WT_Bp/direction | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_FN_Am/direction | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_FN_Ap/direction | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_FN_Bp/direction | ||||
|   echo "out" >/sys/class/gpio/gpio$gpio_FN_Bm/direction | ||||
| } | ||||
| 
 | ||||
| init() { | ||||
|   mux | ||||
|   unexport | ||||
|   export_ | ||||
|   dir | ||||
| } | ||||
| 
 | ||||
| set_zero_FN() { | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
| } | ||||
| set_zero_WT() { | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| } | ||||
| set_zero() { | ||||
|   set_zero_FN | ||||
|   set_zero_WT | ||||
| } | ||||
| 
 | ||||
| far() { | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
|    | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| } | ||||
| 
 | ||||
| near() { | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
|    | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
| } | ||||
| 
 | ||||
| tele() { | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
|    | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| wide() { | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
|    | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| 
 | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Am/value | ||||
| #  echo "1" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
| #  echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
| } | ||||
| 
 | ||||
| if [ $# -lt 1 ]; then | ||||
|   echo "usage : ./motor <direction> [step]" | ||||
|   echo "        -i init gpio" | ||||
|   echo "        -f far" | ||||
|   echo "        -n near" | ||||
|   echo "        -w wide" | ||||
|   echo "        -t tele" | ||||
|    | ||||
|   exit | ||||
| fi | ||||
| 
 | ||||
| if [ $1 = "-i" ]; then | ||||
|   init  | ||||
|   set_zero | ||||
|   exit | ||||
| fi | ||||
| 
 | ||||
| if [ $1 = "-f" ]; then | ||||
|   direction="far" | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| elif [ $1 = "-w" ]; then | ||||
|   direction="wide" | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| elif [ $1 = "-n" ]; then | ||||
|   direction="near" | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_FN_Ap/value | ||||
| elif [ $1 = "-t" ]; then | ||||
|   direction="tele" | ||||
|   echo "1" >/sys/class/gpio/gpio$gpio_WT_Ap/value | ||||
| fi | ||||
| 
 | ||||
| if [ $# -eq 2 ]; then | ||||
|   max=$2 | ||||
| else | ||||
|   max=10 | ||||
| fi | ||||
| 
 | ||||
| echo $max | ||||
| 
 | ||||
| i=0 | ||||
| while [ $i -lt $max ] | ||||
| do | ||||
|   $direction >/dev/null | ||||
|   true $(( i++ )) | ||||
| done | ||||
| 
 | ||||
| 
 | ||||
| # turn to full step and disable motor | ||||
| if [ $1 = "-f" ]; then | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bm/value | ||||
|   usleep $sleep_time | ||||
|   set_zero_FN | ||||
| elif [ $1 = "-w" ]; then | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bp/value | ||||
|   usleep $sleep_time | ||||
|   set_zero_WT | ||||
| elif [ $1 = "-n" ]; then | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_FN_Bp/value | ||||
|   usleep $sleep_time | ||||
|   set_zero_FN | ||||
| elif [ $1 = "-t" ]; then | ||||
|   echo "0" >/sys/class/gpio/gpio$gpio_WT_Bm/value | ||||
|   usleep $sleep_time | ||||
|   set_zero_WT | ||||
| fi | ||||
| ``` | ||||
											
												Binary file not shown.
											
										
									
								| After Width: | Height: | Size: 2.4 MiB | 
		Loading…
	
		Reference in New Issue